Index: zh_TW.UTF-8/books/porters-handbook/book.xml =================================================================== --- zh_TW.UTF-8/books/porters-handbook/book.xml +++ zh_TW.UTF-8/books/porters-handbook/book.xml @@ -1,1139 +1,1418 @@ - + + - - FreeBSD Porter's Handbook - +--> + + + + + + + + + + + + + + + + +]> + + + + FreeBSD Porter 手冊 + - FreeBSD 文件計劃 + The FreeBSD Documentation Project - April 2000 + $FreeBSD$ - - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - FreeBSD 文件計劃 - + 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 The FreeBSD Documentation Project - &trademarks; + + + 版權所有 - &legalnotice; + Redistribution and use in source (XML DocBook) and 'compiled' + forms (XML, HTML, PDF, PostScript, RTF and so forth) with or without + modification, are permitted provided that the following conditions are + met: + + + Redistributions of source code (XML DocBook) must retain the + above copyright notice, this list of conditions and the following + disclaimer as the first lines of this file unmodified. + + + + Redistributions in compiled form (transformed to other DTDs, + converted to PDF, PostScript, RTF and other formats) must + reproduce the above copyright notice, this list of conditions and + the following disclaimer in the documentation and/or other + materials provided with the distribution. + + + + + THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION + PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, + BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + DAMAGE. + + + + + + FreeBSD 是 FreeBSD 基金會的註冊商標。 + UNIX 是 The Open Group 在美國和其他國家的註冊商標。 + Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JRE, JSP, JVM, Netra, OpenJDK, Solaris, StarOffice, SunOS 和 VirtualBox 是 Sun Microsystems, Inc. 在美國和其他國家的註冊商標。 + Many of the designations used by + manufacturers and sellers to distinguish their products are claimed + as trademarks. Where those designations appear in this document, + and the FreeBSD Project was aware of the trademark claim, the + designations have been followed by the or the + ® symbol. + + $FreeBSD$ - - 楔子 + + + - 在 FreeBSD 上面,每個人都可以提交新的 port, - 或假如該 port 並沒有人維護的話,可以自願維護 — - 這點並不需要任何 commit 的權限,就可以來做這件事情。 + 楔子 - + 幾乎每個 FreeBSD 愛用者都是透過 FreeBSD Ports Collection 來裝各式應用程式("ports")。如同 FreeBSD 的其他部分一樣, 這些 ports 都主要來自許多志工的努力成果,所以在閱讀這份文件時, 請務必感恩在心。 - - 自行打造 port + 在 FreeBSD 上面,每個人都可以提交新的 port, 或假如該 port 並沒有人維護的話,可以自願維護 —— 這點並不需要任何 commit 的權限,就可以來做這件事情。 + - 那麼,開始對自行製作 port 或更新有一些興趣了嗎?太好囉! - 下面將介紹一些建立 port 時該注意的事項。如果是想升級現有的 port - ,那麼也請參閱 說明。 + + - - 本文內所提及的環境變數 - (VAR)部份, - 只有一些可以替換(overridden)。大部份的環境變數(非全部)通常都會寫在 - /usr/ports/Mk/bsd.port.mk 內,其他的也是差不多。 - 請注意:該檔並非使用一般的 tab 設定值,而是採用 1 個 tab 等於 4 個 - space。 Emacs 與 - Vim 應該都會在載入該檔時順便讀取相關設定值。 - &man.vi.1; 及 &man.ex.1; 這兩個程式也都可以打 - :set tabstop=4 以修改設定值。 - - + - - 打造 Port 快速上手篇 + 製作新的 Port - 本節主要介紹如何來快速打造 port,然而, - 很多時候這些內容並不是很夠用,建議閱讀本文件中更深奧的地方。 + 開始對製作新的 port 或更新現有 port 有一些興趣了嗎?太好囉! - 首先取得該應用程式的原始程式碼壓縮檔(tarball),並把它放到 - DISTDIR,預設路徑應該是 - /usr/ports/distfiles + 下面將介紹一些建立 port 時該注意的事項。如果是想升級現有的 port ,那麼也請參閱 說明。 - - 下面的例子,是假設並不需要再修改該應用程式的原始碼,就可以在 - FreeBSD 上編譯成功的;假如還需要另外修改才能成功編譯的話, - 那麼請參考下一章的說明。 - + 因為這份文件可能講得不是十分詳細,可能需要參考 /usr/ports/Mk/bsd.port.mk 這檔是所有 port 的 Makefile 檔都會用到的。就算你不是每天不斷 hacking Makefile,也可以也可以從中獲得很多相關知識。 此外,若有其他特定 port 的問題,也可以到 FreeBSD ports mailing list 來獲得答案。 - - 編寫 <filename>Makefile</filename> + + 本文內所提及的環境變數 (VAR)部份, 只有一些可以替換(overridden)。大部份的環境變數(非全部)通常都會寫在 /usr/ports/Mk/bsd.port.mk 內,其他的也是差不多。 請注意:該檔並非使用一般的 tab 設定值,而是採用 1 個 tab 等於 4 個 space。 EmacsVim 應該都會在載入該檔時順便讀取相關設定值。 vi1ex1 這兩個程式也都可以打 :set tabstop=4 以修改設定值。 + - 最簡單的 Makefile 大概是像這樣: + 想要找簡單的開始上手嗎? 到 請求協助的 ports 清單 瞧瞧,看看是否有你可以幫上忙的。 + - # New ports collection makefile for: oneko -# Date created: 5 December 1994 -# Whom: asami -# -# $FreeBSD$ -# -PORTNAME= oneko -PORTVERSION= 1.1b -CATEGORIES= games -MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ + + + -MAN1= oneko.1 -MANCOMPRESSED= yes -USE_IMAKE= yes + 打造 Port 快速上手篇 + 本節主要介紹如何來快速打造 port,然而實際應用時這快速方法可能不足,完整的 慢速打造 Port 的步驟在 詳述。 + + 首先取得該應用程式的原始程式碼壓縮檔(tarball),並把它放到 DISTDIR,預設路徑應該是 /usr/ports/distfiles. + + + 這些步驟假設軟體可以直接編譯。也就是不需要任何修改就可以直接在 FreeBSD 上執行。如果需要修改,請參見 + + + + It is recommended to set the DEVELOPER + make1 variable in /etc/make.conf + before getting into porting. + + # echo DEVELOPER=yes >> /etc/make.conf + + This setting enables the developer mode + that displays deprecation warnings and activates some further + quality checks on calling make. + + + + 編寫 <filename>Makefile</filename> + + 最簡單的 Makefile 大概是像這樣: + + # $FreeBSD$ + +PORTNAME= oneko +PORTVERSION= 1.1b +CATEGORIES= games +MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ + +MAINTAINER= youremail@example.com +COMMENT= Cat chasing a mouse all over the screen + .include <bsd.port.mk> - 嗯,大致就是這樣,看看你已經領略多少了呢? - 看到 $FreeBSD$ 這一行的話,別想太多 - ,它是 RCS ID 用途,當該 port 正式進入 port tree 時, - CVS 就會自動轉換為相關字串囉。 有關這點的細節部份,可以參閱 sample Makefile 章節。 - + + In some cases, the Makefile of an + existing port may contain additional lines in the header, + such as the name of the port and the date it was created. + This additional information has been declared obsolete, and + is being phased out. + - - 撰寫該軟體的說明檔 + 嗯,大致就是這樣,看看你已經領略多少了呢? 看到 $FreeBSD$ 這一行的話,別想太多 ,當該 port 正式進入 port tree 時, Subversion 就會自動轉換為相關字串囉。 有關這點的細節部份,可以參閱 sample Makefile 章節。 + - 無論是否打算再加工做成 package,有 2 個檔案是任何實體 port (Slave - port則不一定)都必須要具備的。 這 2 個檔分別是 - pkg-descr 檔及 pkg-plist - 檔。 這兩個檔案檔名前面都有 pkg- - 以跟其他檔案做區別。 + + 撰寫說明檔 - - <filename>pkg-descr</filename> + 無論是否打算再加工做成 package,有兩個檔案是任何 port 都必須要具備的。 這兩個檔分別是 pkg-descrpkg-plist 。 他們檔名前面都有 pkg- 以跟其他檔案做區別。 - 這是此 port 的詳細說明檔,請用一段或幾段文字來說明該 port - 的作用,並附上 WWW 網址(若有的話)。 + + <filename>pkg-descr</filename> - - 請注意,這檔絕非「該軟體的說明手冊」或是「如何編譯、使用該 - port 的說明」。 若是從該軟體的 README - 或 manpage 直接複製過來的話,請注意,因為它們通常都寫得太詳細、 - 格式較特別(比如 manpage 會自動調整空白), - 請儘量避免這些冗長贅詞或採用特殊格式。若該軟體有官方版首頁的話, - 請在此列出來。 每個網址請用 WWW: 作為開頭, - 這樣子相關工具程式就會自動處理完畢。 - + 這是此 port 的詳細說明檔,請用一段或幾段文字來說明該 port 的作用 - 該 port 的 pkg-descr 內容,大致如下面例子 - : + + 請注意,這檔絕非「該軟體的說明手冊」或是「如何編譯、使用該 port 的說明」! 若是從該軟體的 README 或 manpage 直接複製過來的話,請注意。他們常常不是正確的 port 描述或是格式並不適合。例如,manpage會對齊空白,這用monospace字型來看會特別糟糕。 + - This is a port of oneko, in which a cat chases a poor mouse all over + A well-written pkg-descr describes + the port completely enough that users would not have to + consult the documentation or visit the website to understand + what the software does, how it can be useful, or what + particularly nice features it has. Mentioning certain + requirements like a graphical toolkit, heavy dependencies, + runtime environment, or implementation languages help users + decide whether this port will work for them. + + Include a URL to the official WWW homepage. Prepend + one of the websites (pick the most + common one) with WWW: (followed by single + space) so that automated tools will work correctly. If the + URI is the root of the website or directory, it must be + terminated with a slash. + + + If the listed webpage for a port is not available, try + to search the Internet first to see if the official site + moved, was renamed, or is hosted elsewhere. + + + 這是 pkg-descr 內容的例子 : + + This is a port of oneko, in which a cat chases a poor mouse all over the screen. : (etc.) WWW: http://www.oneko.org/ - + - - <filename>pkg-plist</filename> + + <filename>pkg-plist</filename> - 這是該 port 所會裝的所有檔案清單,另外因為 package - 會由這清單所產生,因此也被稱為『packing list - (打包清單)』。 以 ${PREFIX} 為基準點, - 而用相對路徑表示。(${PREFIX} 通常是 - /usr/local/usr/X11R6) - 但是如果該程式有安裝 man page 的話,則要以類似 - MANn= 的方式寫在 - Makefile 內,不能列在 - pkg-plist 哦。 - 除了列出檔案以外,也要把該 port 所會建立的目錄也列進去, - 方式有兩種:一種是寫在 pkg-plist 內的方式, - 比如:@dirrm。 至於另外一種方式,則是寫在 - Makefile 內,比如: - PLIST_FILES= 之類的方式。 + 這是該 port 所會裝的所有檔案清單,另外因為 package 會由這清單所產生,因此也被稱為『packing list (打包清單)』。路徑是相對於安裝的 prefix (通常是 /usr/local )。 - 該 port 的 pkg-plist 內容, - 大致如下面例子: + 這是一個簡單的例子: - bin/oneko + bin/oneko +man/man1/oneko.1.gz lib/X11/app-defaults/Oneko lib/X11/oneko/cat1.xpm lib/X11/oneko/cat2.xpm -lib/X11/oneko/mouse.xpm -@dirrm lib/X11/oneko +lib/X11/oneko/mouse.xpm - 關於 packing list 方面,可以參閱 &man.pkg.create.1; 會有詳解 - 。 + 關於 packing list 方面,可以詳閱 pkg-create8 manual page 。 - - 建議清單內的檔名,依照字母順序作排序,那麼下次要升級時, - 會比較清楚、方便來更新這份清單。 - + + 建議清單內的檔名,依照字母順序作排序,那麼下次要升級時, 會比較清楚、方便來更新這份清單。 + - - 手動生這份清單實在太苦了。尤其若該 port 會裝一大堆檔案的話, - 請多善用 自動產生 packing - list 會比較省時省力唷。 - + + 手動產生這份清單實在太苦了。尤其若該 port 會裝一大堆檔案的話, 請多善用 自動產生 packing list 會比較省時省力唷。 + - 只有在一種情況下可以省略不用生 pkg-plist - 檔: 若安裝的 port 相當單純,只有裝一些檔案, - 以及都在同一目錄下的話,那麼可以在 Makefile - 內改用 PLIST_FILES 及 - PLIST_DIRS 來取代。 - 比如,可以在上述的 oneko port 內不必附上 - pkg-plist ,而只需在 - Makefile 內加入下列幾行: + 只有在一種情況下可以省略 pkg-plist 檔: 若安裝的 port 相當單純,只有裝一些檔案,那麼可以在 Makefile 內改用 PLIST_FILES 來取代。 比如,可以在上述的 oneko port 內不必附上 pkg-plist ,而只需在 Makefile 內加入下列幾行: - PLIST_FILES= bin/oneko \ - lib/X11/app-defaults/Oneko \ - lib/X11/oneko/cat1.xpm \ - lib/X11/oneko/cat2.xpm \ - lib/X11/oneko/mouse.xpm -PLIST_DIRS= lib/X11/oneko + PLIST_FILES= bin/oneko \ + man/man1/oneko.1.gz \ + lib/X11/app-defaults/Oneko \ + lib/X11/oneko/cat1.xpm \ + lib/X11/oneko/cat2.xpm \ + lib/X11/oneko/mouse.xpm - 當然,若該 port 並無安裝自屬的目錄的話,就不必設 - PLIST_DIRS 囉。 + + Usage of PLIST_FILES should not be + abused. When looking for the origin of a file, people + usually try to grep through the + pkg-plist files in the ports tree. + Listing files in PLIST_FILES in the + Makefile makes that search more + difficult. + - 然而,使用 PLIST_FILES、 - PLIST_DIRS 是必須付出代價: - 不能使用 &man.pkg.create.1; 內所說的 command sequences。 - 因此,這招僅適用於較簡單的 port ,以及簡化該 port 的作法。 - 此外,這招還有一個好處:可以減少 ports collection 的整體檔案總數。 - 所以,在考慮是否一定要用 pkg-plist 之前, - 可以先斟酌這個替代方案看看。 + + If a port needs to create an empty directory, or creates + directories outside of ${PREFIX} during + installation, refer to + for more information. + - 後面會介紹到如何運用 pkg-plist、 - PLIST_FILES 這些技巧以因應 更複雜的狀況。 - - + 然而,使用這個方法列出 port 的檔案和目錄是必須付出代價: 不能使用 pkg-create8 描述的關鍵字。 因此,這招僅適用於較簡單的 port ,以及簡化該 port 的作法。 此外,這招還有一個好處:可以減少 ports collection 的整體檔案總數。 所以,在考慮是否要用 pkg-plist 之前, 可以先斟酌這個替代方案看看。 - - 產生 checksum 用途的 distinfo 檔 + 後面會介紹到如何運用 pkg-plistPLIST_FILES 這些技巧以因應更複雜的狀況。 + + - 只要打『make makesum』就好了, - 接下來就會自動產生相對應的 distinfo 檔了唷 - 。 - + + 產生 checksum 檔 - - 檢驗 port 是否完整、可行 + 只要打 make makesum 就好了, 接下來就會自動產生相對應的 distinfo 檔了唷 。 + - 接下來,必須檢驗是否有符合 port 的遊戲規則,包括打包該 port - 為 package。 以下有幾個需要確認的重要地方: + + 測試 Port - - - 若該 port 沒裝的東西,不要列在 pkg-plist - 內。 - + 接下來,必須檢驗是否有符合 port 的遊戲規則,包括打包該 port 為 package。 以下有幾個需要確認的重要地方: - - 若該 port 有裝的東西,請務必列在 - pkg-plist 內。 - + + + 若該 port 沒裝的東西,不要列在 pkg-plist 內。 + + + 若該 port 有裝的東西,請務必列在 pkg-plist 內。 + + + + The port can be installed using the + install target. This verifies + that the install script works correctly. + + + + The port can be deinstalled properly using the + deinstall target. This + verifies that the deinstall script works correctly. + + + + The port does not access network resources after the + fetch target. This is important + for package builders, such as ports-mgmt/poudriere. + + + + Make sure that make package can be + run as a normal user (that is, not as + root). If that + fails, NEED_ROOT=yes must be added to + the port Makefile. + + + + + 建議的測試順序 + + + make stage + + + + make check-orphans + + + + make package + + + + make install + + + + make deinstall + + + + pkg add package-filename + + + + make package (as user) + + + + 確認在任何階段都沒有任何警告出現。 + + Thorough automated testing can be done with + ports-mgmt/tinderbox or + ports-mgmt/poudriere from the + Ports Collection. These applications maintain + jails where all of the steps shown above + can be tested without affecting the state of the host + system. + + + + 以 <command>portlint</command> 來作檢查 Port + + 請用 portlint 來檢查該 port 是否有遵循我們的規則。 ports-mgmt/portlint 是 ports collection 的其中一個套件。 它主要可以用來檢驗 Makefile 內容是否正確以及 package 是否有正確命名。 + + + + 提交新的 Port + + 提交新的 Port 前,請閱讀 DOs and DON'Ts 章節。 + + 現在你很高興終於打造出 port 來囉,唯一剩下要做的就是把它正式放到 FreeBSD ports tree 內,才能讓每個人都能分享使用這個 port。 我們不需要 work 目錄或是檔名像 pkgname.tgz 的 package ,請現在刪除他們。 + + Next, build the shar1 file. Assuming the port is + called oneko, cd to the + directory above where the oneko directory + is located, and then type: + shar `find oneko` > oneko.shar + + + + To submit oneko.shar, use the bug submit + form (category Ports Tree). + Add a short + description of the program to the Description field of the PR + (perhaps a short version of COMMENT), and + do not forget to add oneko.shar as an + attachment. + + + Giving a good description in the summary of the problem + report makes the work of port committers a lot easier. We + prefer something like New port: + category/portname short description of + the port for new ports. Using this + scheme makes it easier and faster to begin the work of + committing the new port. + + + 再次強調一點:不必附上原始 source 的 distfile ,也就是 work 目錄。 同時,也不必附上 make package 時產生的 package。新的 port 請使用 shar1 ,不要用 diff1 + + 送出 port 之後,請耐心等候佳音。 有時候可能需要等個幾天或幾個月時間,才會在 FreeBSD ports tree 上正式出現。 等待中的 port PR 清單可以在 查閱。 + + 在看過新的 port 之後,如果需要的話,我們會回覆您,然後會將它提交到 port tree 。 您的大名會被列在 Additional FreeBSD Contributors 列表上,以及其他檔案中。 + + + + + + + + Slow Porting + + Ok...事實上並不太可能這麼簡單,port 方面可能需要作些修改才能正常使用。 因此, 本節將一步一步來介紹如何修改上一章的樣本以正常使用。 + + + How Things Work + + First, this is the sequence of events which occurs when the + user first types make in the port's + directory. Having + bsd.port.mk in another window while + reading this really helps to understand it. + + 別太擔心,不是很多人都真的了解 bsd.port.mk 在做什麼... :-) + + + + The fetch target is run. The + fetch target is responsible for + making sure that the tarball exists locally in + DISTDIR. If + fetch cannot find the required + files in DISTDIR it will look up the URL + MASTER_SITES, which is set in the + Makefile, as well as our FTP mirrors where we put distfiles + as backup. It will then attempt to fetch the named + distribution file with FETCH, assuming + that the requesting site has direct access to the Internet. + If that succeeds, it will save the file in + DISTDIR for future use and + proceed. + + + + The extract target is run. + It looks for the port's distribution file (typically a + gzipped tarball) in + DISTDIR and unpacks it into a temporary + subdirectory specified by WRKDIR + (defaults to work). + + + + The patch target is run. + First, any patches defined in PATCHFILES + are applied. Second, if any patch files named + patch-* are + found in PATCHDIR (defaults to the + files subdirectory), they are applied + at this time in alphabetical order. + + + + The configure target is run. + This can do any one of many different things. + + - 該 port 可以用 reinstall 來重新安裝 - 。 + If it exists, scripts/configure + is run. - 該 port 在移除之後,確定都可 cleans up。 + If HAS_CONFIGURE or + GNU_CONFIGURE is set, + WRKSRC/configure is run. - + + - - 建議的測試步驟順序: + + The build target is run. + This is responsible for descending into the port's private + working directory (WRKSRC) and building + it. + - - make install - + + The stage target is run. + This puts the final set of built files into a temporary + directory (STAGEDIR, see + ). The hierarchy of this directory + mirrors that of the system on which the package will be + installed. + - - make package - + + The package target is run. + This creates a package using the files from the temporary + directory created during the + stage target and the port's + pkg-plist. + - - make deinstall - + + The install target is run. + This installs the package created during the + package target into the host + system. + + - - pkg_add package-name - - + The above are the default actions. In addition, + define targets + pre-something + or + post-something, + or put scripts with those names, in the + scripts subdirectory, and they will be + run before or after the default actions are done. - - make deinstall - + For example, if there is a + post-extract target defined in the + Makefile, and a file + pre-build in the + scripts subdirectory, the + post-extract target will be called + after the regular extraction actions, and + pre-build will be executed before + the default build rules are done. It is recommended to + use Makefile targets if the actions are + simple enough, because it will be easier for someone to figure + out what kind of non-default action the port requires. - - make reinstall - + The default actions are done by the + do-something + targets from bsd.port.mk. + For example, the commands to extract a port are in the target + do-extract. If + the default target does not do the job right, redefine the + do-something + target in the Makefile. - - make package - - + + The main targets (for example, + extract, + configure, etc.) do nothing more + than make sure all the stages up to that one are completed and + call the real targets or scripts, and they are not intended to + be changed. To fix the extraction, fix + do-extract, but never ever change + the way extract operates! + Additionally, the target + post-deinstall is invalid and is + not run by the ports infrastructure. + - 確認在 package 和 - deinstall 這兩個階段都沒有任何錯誤訊息出現。 - 完成第三步驟之後,檢查一下是否所裝的檔案、目錄都有移除完畢。 此外, - 第四步驟完成後,也檢查一下以 package 裝的該軟體,是否都能正常運作 - 。 + Now that what goes on when the user types make + install is better understood, let us go through the + recommended steps to create the perfect port. + - 最周密的自動方式就是透過裝 - ports tinderbox。 它會建立 - jails 並管理之,以便您可以測試上述所有步驟, - 而不會真正影響您本身的作業系統。 詳情請參考 - ports/ports-mgmt/tinderbox - + + 取得原始碼 - - 以 <command>portlint</command> 來作檢驗 + Get the original sources (normally) as a compressed tarball + (foo.tar.gz or + foo.tar.bz2) and + copy it into DISTDIR. Always use + mainstream sources when and where + possible. - 請用 portlint 來檢查該 port - 是否有遵循上述遊戲規則。 說到這 - ports-mgmt/portlint,它是 - ports collection 的其中一個套件。 它主要可以用來檢驗 Makefile 內容是否正確以及 package 是否有正確命名。 - + Set the variable + MASTER_SITES to reflect where the original + tarball resides. Shorthand definitions exist + for most mainstream sites in bsd.sites.mk. + Please use these sites—and the associated + definitions—if at all possible, to help avoid the problem + of having the same information repeated over again many times in + the source base. As these sites tend to change over time, this + becomes a maintenance nightmare for everyone involved. See + for details. - - 提交(Submit) port + If there is no FTP/HTTP site that is well-connected to + the net, or can only find sites that have irritatingly + non-standard formats, put a copy on a reliable + FTP or HTTP server (for example, a home + page). - 首先,請確認是否有瞭解 DOs and DON'Ts 該章部分。 + If a convenient and reliable place to put + the distfile cannot be found, we can house it ourselves on + ftp.FreeBSD.org; however, this is the + least-preferred solution. The distfile must be placed into + ~/public_distfiles/ of someone's + freefall account. Ask the person who + commits the port to do this. This person will also set + MASTER_SITES to + LOCAL/username + where username is + their FreeBSD cluster login. - 現在你很高興終於打造出 port 來囉,唯一剩下要做的就是把它正式放到 - FreeBSD ports tree 內,才能讓每個人都能分享使用這個 port。 請先拿掉 - work 目錄或檔名像是 - pkgname.tgz 的 package 可以砍掉。 接著, - 只要用 shar `find port_dir` 來產生 shar 格式, - 並配合 &man.send-pr.1; 程式以提交出去。(&man.send-pr.1; - 的部分可以參閱 - 錯誤報告和意見發表) + If the port's distfile changes all the time without any + kind of version update by the author, consider putting the + distfile on a home page and listing it as the first + MASTER_SITES. Try to talk the + port author out of doing this; it really does help to establish + some kind of source code control. Hosting a specific version will + prevent users from getting + checksum mismatch errors, and also reduce + the workload of maintainers of our FTP site. Also, if there is + only one master site for the port, it is recommended to + house a backup on a home page and list it as the second + MASTER_SITES. - 記得在填寫 PR 時『分類(Category)』選 ports, - 還有『種類(Class)』填 change-request - (千萬別傻傻地把該 PR 的『Confidential(機密)』設為 yes!), - 此外在『描述(Description)』 - 那邊寫上該程式的簡潔說明,而 shar 檔則附在『修正(Fix) - 』欄位內。 + If the port requires additional patches that are + available on the Internet, fetch them too and put them in + DISTDIR. Do not worry if they come from a + site other than where the main source tarball comes, we have a + way to handle these situations (see the description of PATCHFILES below). + - - 若 Synopsis 欄清楚描述該 PR 重點的話,那麼會讓整個流程更為順暢。 - new ports 的話,我們習慣用: - New port: <category>/<portname> - <該 port 的簡介> ,而更新 port 的話,則是 - Update port: <category>/<portname> - <本次 update 的簡介>。 - 若你也採用這樣的格式的話,那麼會被受理的機會就會越高囉。 - + + Modifying the Port - 再次強調一點:不必附上原始 source 的 distfile - ,也就是 work 目錄。 同時,也不必附上 - make package 時產生的 package + Unpack a copy of the tarball in a private directory and make + whatever changes are necessary to get the port to compile + properly under the current version of FreeBSD. Keep + careful track of steps, as they will be + needed to automate the process shortly. Everything, including + the deletion, addition, or modification of files has to be + doable using an automated script or patch file when the port is + finished. - 送出 port 之後,請耐心等候佳音。 - 有時候可能需要等個幾天或幾個月時間,才會在 FreeBSD ports tree - 上正式出現。 此外,隨時可以查閱 - 等待 committed to FreeBSD 的 port 列表。 + If the port requires significant user + interaction/customization to compile or install, take + a look at one of Larry Wall's classic + Configure scripts and perhaps do + something similar. The goal of the new ports + collection is to make each port as plug-and-play + as possible for the end-user while using a minimum of disk + space. - 一旦我們開始處理你送來的 port 之後,如果有一些意見需要溝通的話, - 那麼會先 feedback 給你, - 之後確定都沒問題,就會放到 port tree 內囉! - 你的大名會被記在 Additional FreeBSD Contributors - 列表上,以及其他檔案。聽起來,挺不賴的不是嗎!? :-) - - + + Unless explicitly stated, patch files, scripts, and other + files created and contributed to the FreeBSD ports + collection are assumed to be covered by the standard BSD + copyright conditions. + + - - Slow Porting + + Patching - Ok...事實上並不太可能這麼簡單,port - 方面可能需要作些修改才能正常使用。 因此, - 本節將一步一步來介紹如何修改上一章的樣本以正常使用。 + In the preparation of the port, files that have been added + or changed can be recorded with diff1 for later feeding + to patch1. Doing this with a typical file involves + saving a copy of the original file before making any changes + using a .orig suffix. - - How things work + % cp file file.orig - 首先,先介紹一下在你所作的 port 目錄內打 make - 時,所會作哪些事情的順序吧。 - 你可以另開一窗來看 bsd.port.mk - 內容,以便瞭解我們下面在講什麼。 + After all changes have been made, cd back + to the port directory. Use make makepatch to + generate updated patch files in the files + directory. - 但別太擔心是否完全看懂 - bsd.port.mk 在做啥,很多人都還沒完全看完... - :-> + + General Rules for Patching - + Patch files are stored in PATCHDIR, + usually files/, from where they will be + automatically applied. All patches must be relative to + WRKSRC. Typically + WRKSRC is a subdirectory of + WRKDIR, the directory where the distfile is + extracted. Use make -V WRKSRC to see the + actual path. The patch names are to follow these + rules: - - 首先,進行 fetch 階段。 - fetch 是確認 tarball 檔有沒有已在 - DISTDIR 內了?若 fetch - 在 DISTDIR 找不到的話,它會搜尋 Makefile - 內的 MASTER_SITES URL - ,或者是主 FTP 站專門放備份 distfiles 的目錄 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ - 。 假設都找不到的話,但是網路有接上 Internet 的話,它會試著用 - FETCH 來抓所指定的檔案。 - 抓到之後,它會把檔案存到 DISTDIR - 以便開始使用或日後運用。 - + + + Avoid having more than one patch modify the same file. + For example, having both + patch-foobar.c and + patch-foobar.c2 making changes to + ${WRKSRC}/foobar.c makes them fragile + and difficult to debug. + - - 其次,進行 extract 階段,它會從 - DISTDIR 內找出該 port 所需的檔案(通常是 gzip - 格式的 tarball),然後解壓縮到 WRKDIR - 所設定的臨時目錄名稱(預設是 work 目錄)內 - 。 - + + When creating names for patch files, replace each + underscore (_) with two underscores + (__) and each slash + (/) with one underscore + (_). For example, to patch a file + named src/freeglut_joystick.c, name + the corresponding patch + patch-src_freeglut__joystick.c. Do + not name patches like patch-aa or + patch-ab. Always use the path and + file name in patch names. Using make + makepatch automatically generates the correct + names. + - - 之後,進行 patch 階段, - 一開始會先套用 PATCHFILES 所指定的任何 patch - 檔。 接著是 PATCHDIR(預設是 - files 子目錄) 內的檔名為 - patch-* - 之類的檔案,會以字母順序而逐一套用 patch。 - + + A patch may modify multiple files if the changes are + related and the patch is named appropriately. For + example, + patch-add-missing-stdlib.h. + - - 接著是 configure 階段,可以照 port - 的類型來作各種不同設定以調整,比如: + + Only use characters [-+._a-zA-Z0-9] + for naming patches. In particular, do not use + :: as a path separator, + use _ instead. + + - - - 若有放 scripts/configure 的話, - 那麼就會跑裡面的設定。 - - - 若有設 HAS_CONFIGURE 或是 - GNU_CONFIGURE 的話,那麼就會跑 - WRKSRC/configure - + Minimize the amount of non-functional whitespace changes + in patches. It is common in the Open Source world for + projects to share large amounts of a code base, but obey + different style and indenting rules. When taking a working + piece of functionality from one project to fix similar areas + in another, please be careful: the resulting patch may be full + of non-functional changes. It not only increases the size of + the ports repository but makes it hard to find out what + exactly caused the problem and what was changed at all. - - 若有設 USE_IMAKE 的話,那麼就會跑 - XMKMF (預設是 xmkmf - -a) 。 - - - + If a file must be deleted, do it in the + post-extract target rather than as + part of the patch. - - 最後是 build 階段,它會在該 - port 的 working directory(由 WRKSRC 所設定) - 內開始編譯。 若有設 USE_GMAKE 的話, - 那麼就會改用 GNU make 來編譯, - 否則就用系統本身的 make 來編譯。 - - + - 上面講的都是打 make 時的預設階段。 - 此外,還可以設定各階段之前、之後要作的事情:透過定義 - pre-something 或 - post-something, - 或者把這些檔名的 script 丟到 scripts 子目錄去, - 這樣子它們就會在各預設階段的之前、之後進行囉。 + + Manual Patch Generation - 舉例來說,若在 Makefile 內設定 - post-extract,而且在 - scripts 子目錄內又有 - pre-build 檔的話,那麼在作解壓縮之後,就會開始 - post-extract 階段以進行解壓縮後的後續動作, - 而在跑 build 階段之前,就會先執行 pre-build - 這隻 script 作先期準備。 通常較簡單的修改動作,建議直接放在 - Makefile 內就好了, - 因為這樣會比較方便加上這些原本沒有的階段,同時也方便他人協助除錯 - 。 + + Manual patch creation is usually not necessary. + Automatic patch generation as described earlier in this + section is the preferred method. However, manual patching + may be required occasionally. + - 預設的各階段動作都是照 bsd.port.mk 內的 - do-something - 之類所定義的。 舉例:do-extract - 就是定義怎麼把檔案解壓縮的。 - 若對預設方式覺得不妥的話,都可以在該 port 的 - Makefile 重新定義。 + Patches are saved into files named + patch-* where + * indicates the pathname of the + file that is patched, such as + patch-Imakefile or + patch-src-config.h. - - The main targets (e.g., - extract, - configure, etc.) do nothing more than - make sure all the stages up to that one are completed and call - the real targets or scripts, and they are not intended to be - changed. If you want to fix the extraction, fix - do-extract, but never ever change - the way extract operates! - + After the file has been modified, diff1 is used to + record the differences between the original and the modified + version. causes diff1 to produce + unified diffs, the preferred form. - 現在,你已經知道打 make 到底會作些什麼事囉, - 接下來會教你如何作更完美的 port。 - + % diff -u file.orig file > patch-pathname-file - - 取得原始的 source 檔 + When generating patches for new, added files, + is used to tell diff1 to treat the + non-existent original file as if it existed but was + empty: - 取得原始的 source 檔(通常檔名是 - foo.tar.gz - 或 foo.tar.Z - 之類的壓縮檔),然後會把抓下來的檔案放在 DISTDIR - 內。 記得:抓的時候,儘量使用『該軟體主要的正式網站』上面的來源檔 - ,以確保檔案有效、可信。 + % diff -u -N newfile.orig newfile > patch-pathname-newfile - 需要設 MASTER_SITES 以指定原始檔案是放在何處。 - 相關網址在 bsd.sites.mk - 內有一些方便的速記表可以使用。 請盡可能多用對應這些網址的變數, - 以避免同樣的一堆網址有重複很多次出現在 port tree 內。 - 否則,這些網址只要一有改變的話,那麼就會成為維護 port 的夢魘。 + Do not add $FreeBSD$ RCS + strings in patches. When patches are added to the + Subversion repository with + svn add, the + fbsd:nokeywords property is set to + yes automatically so keywords in the patch + are not modified when committed. The property can be added + manually with svn propset fbsd:nokeywords yes + files.... - 如果該檔並沒有放在公開的 FTP 站或網站(HTTP)上, - 或者該檔並非一般標準格式的話, - 那麼可以考慮複製該檔,然後放到你可掌握、可信任的 FTP 站或網站(HTTP) - 上,比如:你自己的網頁空間。 + Using the recurse () option to + diff1 to generate patches is fine, but please look at + the resulting patches to make sure there is no unnecessary + junk in there. In particular, diffs between two backup files, + Makefiles when the port uses + Imake or GNU configure, + etc., are unnecessary and have to be deleted. If it was + necessary to edit configure.in and run + autoconf to regenerate + configure, do not take the diffs of + configure (it often grows to a few thousand + lines!). Instead, define + USE_AUTOTOOLS=autoconf:261 and take the + diffs of configure.in. - 若找不到地方(方便、可信任)來放檔案的話, - 那麼可以 house(暫放) 在 - ftp.FreeBSD.org 上的 committer 自屬空間內; - 然而,這是最不理想的解法。 - 檔案要放到該 committer 的 freefall 上的 - ~/public_distfiles/ 目錄內才可以。 - 請與協助 commit 你的 port 的那位 committer 聯繫, - 以便把檔案放到他的目錄內。 - 那位 committer 同時也會把 MASTER_SITES 設為 - MASTER_SITE_LOCAL,並且把 - MASTER_SITE_SUBDIR 設為他自己的 - freefall 帳號名稱。 + - 若該 port 的原始檔打包會經常重包,但原作者卻沒更新版號的話, - 請考慮把該檔改放到自己的網頁空間,並且把自己網頁空間列為 - MASTER_SITES 的第一順位。 - 或者請與原作者聯繫:請他不要這樣做(不斷重包同樣的檔案);如此一來, - 才有助於建立一定程度的 source code 版本控制。 - 把檔案另外複製一份放到自屬網頁空間的話,不但可有效防止使用者會發生 - checksum mismatch(檔案經檢查有問題) - 的錯誤訊息,也可降低我們 FTP 站維護者的工作量。此外,若該 port - 的檔案僅有一個主要網址, - 那麼建議:請在自屬網站上放上備份檔,並修改 - MASTER_SITES 把你的網址列為第二順位。 + + Simple Automatic Replacements - 若該 port 需要一些額外 `patches'(可透過 Internet 下載),並放在 - DISTDIR 內,不必擔心這些 patch - 檔是否得都跟原始檔一樣來自同一網站, - 這些情況有另外的解法(請看下面的 PATCHFILES 介紹部分)。 - + Simple replacements can be performed directly from the + port Makefile using the in-place mode of + sed1. This is useful when changes use the value of a + variable: - - 量身打造 port + post-patch: + @${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README - 解開壓縮檔,然後開始逐一修改,使該 port 在目前所用的 FreeBSD - 版本上得以順利編譯。 - 所做的每個動作請都 仔細記錄, - 如此一來才能迅速自動套用這些修改。 - 在完成 port 之後,每項動作包括:對於檔案的刪除、增加、修改, - 要記得存為自動化的 script 或者 patch 檔形式,以利他人直接套用。 + Quite often, software being ported uses the CR/LF + convention in source files. This may cause problems with + further patching, compiler warnings, or script execution (like + /bin/sh^M not found.) To quickly convert + all files from CR/LF to just LF, add this entry to the port + Makefile: - 若該 port 需要使用者的互動、自訂功能來編譯、安裝的話, - 那麼建議揣摩看看 Larry Wall 的經典之作 - Configure scripts 來完成類似效果。 - Ports collection 的目的之一,就是讓每個 port 儘量用最小空間, - 來做出軟體的 plug-and-play(即插即用) + USES= dos2unix - - 除非有明確聲明,否則你所提交給 FreeBSD ports collection 的 - patch 檔、相關 script 檔及其他檔案,都會假設是以標準的 BSD - 版權形式來發佈。 - - + A list of specific files to convert can be given: - - Patching + USES= dos2unix +DOS2UNIX_FILES= util.c util.h - 在 port 的準備過程中,新增或變更過的檔案, - 可以利用 &man.diff.1; 將這些變動列出, - 以便後續讓 &man.patch.1; 使用。 - 所有你想套用的 patch 都應該命名為 - patch-*,其中 - * 表示要 patch 檔案的路徑及檔名名稱, - 例如 patch-Imakefile 或 - patch-src-config.h。 - 這些檔案都應該儲存在 PATCHDIR - (通常是 files/,放在其內的檔案都會自動被套用。 - 所有 patch 檔路徑都是相對於 - WRKSRC (通常會將 port 的 tarball 解壓到裡面, - port 的建置也會在這裡完成)。 - 為了能讓修正和更新更順利,你應該避免多個 patch 修正同一個檔案 - (舉例來說,patch-file 和 - patch-file2 同時更動 - WRKSRC/foobar.c)。 + Use DOS2UNIX_REGEX to convert a group + of files across subdirectories. Its argument is a + find1-compatible regular expression. More on the + format is in re_format7. This option is useful for + converting all files of a given extension. For example, + convert all source code files, leaving binary files + intact: - 請只使用 [-+._a-zA-Z0-9] 這些字元來命名 - patch 檔,不要使用這些字元以外的字元。 - 千萬不要將你的 patch 檔命名成 patch-aa 或是 - patch-ab 等名稱, - 請使用路徑和名稱相關的命名。 + USES= dos2unix +DOS2UNIX_REGEX= .*\.([ch]|cpp) - 不要將 RCS 字串放進你的 patch 檔。CVS 會在這些檔案送入 - ports tree 的時候弄亂檔案內容,而且在將它們重新 check out - 出來後,會因檔案內容的差異造成 patch 失敗。 - RCS 字串是以錢字號 ($) 括起來的, - 通常以 $Id 或 - $RCS 為開頭。 + A similar option is DOS2UNIX_GLOB, + which runs find for each element listed + in it. - 你可以使用 &man.diff.1; 搭配 recurse () 選項 - 來產生 patch 檔,但請再次檢視產生出的 patch 檔,確保你沒有產生 - 任何不必要的垃圾資訊在裡面。特別是對那些經由 - Imake 或 GNU configure - 所產生的 Makefile 檔產生 patch, - 都是不必要的,這類的 patch 檔都應該被刪除。假如你必須透過修改 - configure.in 再執行 - autoconf 來重新產生 - configure,不要對 - configure 產生 patch 檔 (這往往會長成數千行!); - 請定義 USE_AUTOTOOLS=autoconf:261 並對 - configure.in 產生 patch 檔。 + USES= dos2unix +DOS2UNIX_GLOB= *.c *.cpp *.h + + - 請儘量不要對無用的 whitespace 作修改,因為在 Open Source 界各個 - project 都會使用很多相同的 code base,這些可能卻是採用不同的編排方式 - 、coding style。 若要試圖改變這些編排風格的話,請小心: - 這些只會是徒勞無功的更改。 此外不僅會造成 CVS repository 空間浪費, - 也會讓人難以找出真正問題癥結所在,以及分辨不出這段 patch 到底在作什麼 - 。 + + 設定 - 假如你必須刪除一個檔案,那麼你可以在 - post-extract 階段做這件事, - 而不是在 patch 階段。 + Include any additional customization commands in the + configure script and save it in the + scripts subdirectory. As mentioned above, + it is also possible do this with Makefile targets + and/or scripts with the name pre-configure + or post-configure. + - 你可以直接在 port 的 - Makefile 中完成簡單的置換工作,只需使用 - &man.sed.1; 的 in-place mode 即可。這在只需 patch 一個變數的值時相當有用。 - 例如: + + 處理使用者輸入 - post-patch: - @${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README - @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|' ${WRKSRC}/configure + If the port requires user input to build, configure, or + install, set IS_INTERACTIVE in the + Makefile. This will allow + overnight builds to skip it. If the user + sets the variable BATCH in his environment (and + if the user sets the variable INTERACTIVE, then + only those ports requiring interaction are + built). This will save a lot of wasted time on the set of + machines that continually build ports (see below). - 在移植軟體時,特別是那些在 &windows; 平台開發的軟體, - 時常會遇到一種情況,就是在大部份的 source file 中, - 使用 CR/LF 做為斷行。這會影響往後的 patching、compiler warnings、以及 - scripts execution (找不到 /bin/sh^M 的情況) 等。 - 為了快速轉換 CR/LF 為 LF,可以把 - USE_DOS2UNIX=yes 加到 port 的 - Makefile 檔中。 - 你也可以設定成只針對指定的檔案做轉換: + It is also recommended that if there are reasonable default + answers to the questions, + PACKAGE_BUILDING be used to turn off the + interactive script when it is set. This will allow us to build + the packages for CDROMs and FTP. + + - USE_DOS2UNIX= util.c util.h + + + - USE_DOS2UNIX= yes -DOS2UNIX_REGEX= .*\.(c|cpp|h) - + 設定 Makefile - - 設定 + Configuring the Makefile is pretty + simple, and again we suggest looking at existing examples + before starting. Also, there is a + sample Makefile in this + handbook, so take a look and please follow the ordering of + variables and sections in that template to make the port easier + for others to read. - 將任何額外的自訂指令包含進你的 - configure script 中,且將它儲存在 - scripts 的子資料夾裡。 如同上面提到的, - 你也可以在 Makefile 或者是在 - 名稱為 pre-configure 或 - post-configure 的 script 檔中做同樣的事。 - + Consider these problems in sequence during the + design of the new Makefile: - - 處理使用者輸入 + + The Original Source - 如果該 port 需要使用者作出選擇才能安裝的話, - 則必須在 Makefile 加上 - IS_INTERACTIVE 變數。 如此一來若使用者有設定 - BATCH 環境變數的話,就會略過該 port 而繼續 - overnight builds(若使用者把該環境變數值設為 - BATCH 的話,那麼 只有 - 那些需要與使用者互動的 port 才會編譯。)。 - 這使得那些需要不停編譯 port 的機器會省下許多時間(後面會說明這點) - 。 + Does it live in DISTDIR as a standard + gzipped tarball named something like + foozolix-1.2.tar.gz? If so, go on + to the next step. If not, the distribution file format might + require overriding one or more of + DISTVERSION, DISTNAME, + EXTRACT_CMD, + EXTRACT_BEFORE_ARGS, + EXTRACT_AFTER_ARGS, + EXTRACT_SUFX, or + DISTFILES. - 此外建議,若是這些互動問題有合適的預設選項的話, - 那應確認一下 PACKAGE_BUILDING 變數該如何設, - 才能配合該變數而決定是否停止互動。 如此一來才可以自動編譯出 - CDROM 與 FTP 上的套件。 - - + In the worst case, create a custom + do-extract target to override the + default. This is rarely, if ever, necessary. + - - 設定 Makefile + + 命名 - 設定 Makefile 是件非常簡單的事, - 建議您在開始前,先看看範例。Also, there is a - sample Makefile in this - handbook, so take a look and please follow the ordering of variables - and sections in that template to make your port easier for others to - read. + The first part of the port's Makefile + names the port, describes its version number, and lists it in + the correct category. - Now, consider the following problems in sequence as you design - your new Makefile: + + <varname>PORTNAME</varname> and + <varname>PORTVERSION</varname> - - The original source + Set PORTNAME to the base + name of the port. Set PORTVERSION to the + version number of the port unless + DISTVERSION is used (see + ). - Does it live in DISTDIR as a standard - gzip'd tarball named something like - foozolix-1.2.tar.gz? If so, you can go on - to the next step. If not, you should look at overriding any of - the DISTVERSION, DISTNAME, - EXTRACT_CMD, - EXTRACT_BEFORE_ARGS, - EXTRACT_AFTER_ARGS, - EXTRACT_SUFX, or DISTFILES - variables, depending on how alien a format your port's - distribution file is. (The most common case is - EXTRACT_SUFX=.tar.Z, when the tarball is - condensed by regular compress, not - gzip.) + + The package name must be unique across the entire ports + tree. Make sure that the PORTNAME is not + already in use by an existing port. If the name has already + been used, add either + PKGNAMEPREFIX + or PKGNAMESUFFIX. + + - In the worst case, you can simply create your own - do-extract target to override the - default, though this should be rarely, if ever, - necessary. - + + <varname>PORTREVISION</varname> and + <varname>PORTEPOCH</varname> - - Naming + + <varname>PORTREVISION</varname> - The first part of the port's Makefile names - the port, describes its version number, and lists it in the correct - category. + PORTREVISION is a + monotonically increasing value which is reset to 0 with + every increase of PORTVERSION, typically + every time there is a new official vendor release. If + PORTREVISION is non-zero, the value is + appended to the package name. Changes to + PORTREVISION are used by automated tools + like pkg-version8 to determine that a new package is + available. - - <varname>PORTNAME</varname> and <varname>PORTVERSION</varname> + PORTREVISION must be increased each + time a change is made to the port that changes the generated + package in any way. That includes changes that only affect + a package built with non-default + options. - You should set PORTNAME to the - base name of your port, and PORTVERSION - to the version number of the port. - + Examples of when PORTREVISION + must be bumped: - - <varname>PORTREVISION</varname> and - <varname>PORTEPOCH</varname> + + + Addition of patches to correct security + vulnerabilities, bugs, or to add new functionality to + the port. + - - <varname>PORTREVISION</varname> + + Changes to the port Makefile to + enable or disable compile-time options in the + package. + - The PORTREVISION variable is a - monotonically increasing value which is reset to 0 with - every increase of PORTVERSION (i.e. - every time a new official vendor release is made), and - appended to the package name if non-zero. - Changes to PORTREVISION are - used by automated tools (e.g. &man.pkg.version.1;) - to highlight the fact that a new package is - available. + + Changes in the packing list or the install-time + behavior of the package. For example, a change to a + script which generates initial data for the package, + like ssh1 host keys. + - PORTREVISION should be increased - each time a change is made to the port which significantly - affects the content or structure of the derived - package. + + Version bump of a port's shared library dependency + (in this case, someone trying to install the old package + after installing a newer version of the dependency will + fail since it will look for the old libfoo.x instead of + libfoo.(x+1)). + - Examples of when PORTREVISION - should be bumped: + + Silent changes to the port distfile which have + significant functional differences. For example, + changes to the distfile requiring a correction to + distinfo with no corresponding + change to PORTVERSION, where a + diff -ru of the old and new versions + shows non-trivial changes to the code. + + - - - Addition of patches to correct security - vulnerabilities, bugs, or to add new functionality to - the port. - + Examples of changes which do not require a + PORTREVISION bump: - - Changes to the port Makefile to enable or disable - compile-time options in the package. - + + + Style changes to the port skeleton with no + functional change to what appears in the resulting + package. + - - Changes in the packing list or the install-time - behavior of the package (e.g. change to a script - which generates initial data for the package, like ssh - host keys). - + + Changes to MASTER_SITES or other + functional changes to the port which do not affect the + resulting package. + - - Version bump of a port's shared library dependency - (in this case, someone trying to install the old - package after installing a newer version of the - dependency will fail since it will look for the old - libfoo.x instead of libfoo.(x+1)). - + + Trivial patches to the distfile such as correction + of typos, which are not important enough that users of + the package have to go to the trouble of + upgrading. + - - Silent changes to the port distfile which have - significant functional differences, i.e. changes to - the distfile requiring a correction to - distinfo with no corresponding change to - PORTVERSION, where a diff - -ru of the old and new versions shows - non-trivial changes to the code. - - + + Build fixes which cause a package to become + compilable where it was previously failing. As long as + the changes do not introduce any functional change on + any other platforms on which the port did previously + build. Since PORTREVISION reflects + the content of the package, if the package was not + previously buildable then there is no need to increase + PORTREVISION to mark a change. + + - Examples of changes which do not require a - PORTREVISION bump: + A rule of thumb is to decide whether a change + committed to a port is something which + some people would benefit from having. + Either because of an enhancement, fix, + or by virtue that the new package will actually work at + all. Then weigh that against that fact that it will cause + everyone who regularly updates their ports tree to be + compelled to update. If yes, + PORTREVISION must be bumped. - - - Style changes to the port skeleton with no - functional change to what appears in the resulting - package. - + + People using binary packages will + never see the update if + PORTREVISION is not bumped. Without + increasing PORTREVISION, the + package builders have no way to detect the change and + thus, will not rebuild the package. + + - - Changes to MASTER_SITES or - other functional changes to the port which do not - affect the resulting package. - + + <varname>PORTEPOCH</varname> - - Trivial patches to the distfile such as correction - of typos, which are not important enough that users of - the package should go to the trouble of - upgrading. - + From time to time a software vendor or FreeBSD porter will + do something silly and release a version of their software + which is actually numerically less than the previous + version. An example of this is a port which goes from + foo-20000801 to foo-1.0 (the former will be incorrectly + treated as a newer version since 20000801 is a numerically + greater value than 1). - - Build fixes which cause a package to become - compilable where it was previously failing (as long as - the changes do not introduce any functional change on - any other platforms on which the port did previously - build). Since PORTREVISION reflects - the content of the package, if the package was not - previously buildable then there is no need to increase - PORTREVISION to mark a - change. - - + + The results of version number comparisons are not + always obvious. pkg version (see + pkg-version8) can be used to test the comparison of + two version number strings. For example: - A rule of thumb is to ask yourself whether a change - committed to a port is something which everyone - would benefit from having (either because of an - enhancement, fix, or by virtue that the new package will - actually work at all), and weigh that against that fact - that it will cause everyone who regularly updates their - ports tree to be compelled to update. If yes, the - PORTREVISION should be bumped. - + % pkg version -t 0.031 0.29 +> - - <varname>PORTEPOCH</varname> + The > output indicates that + version 0.031 is considered greater than version 0.29, + which may not have been obvious to the porter. + - From time to time a software vendor or FreeBSD porter - will do something silly and release a version of their - software which is actually numerically less than the - previous version. An example of this is a port which goes - from foo-20000801 to foo-1.0 (the former will be - incorrectly treated as a newer version since 20000801 is a - numerically greater value than 1). + In situations such as this, + PORTEPOCH must be increased. + If PORTEPOCH is nonzero it is appended to + the package name as described in section 0 above. + PORTEPOCH must never be decreased or + reset to zero, because that would cause comparison to a + package from an earlier epoch to fail. For example, the + package would not be detected as out of date. The new + version number, 1.0,1 in the above + example, is still numerically less than the previous + version, 20000801, but the ,1 suffix is + treated specially by automated tools and found to be greater + than the implied suffix ,0 on the earlier + package. - In situations such as this, the - PORTEPOCH version should be increased. - If PORTEPOCH is nonzero it is appended - to the package name as described in section 0 above. - PORTEPOCH must never be decreased or reset - to zero, because that would cause comparison to a package - from an earlier epoch to fail (i.e. the package would not - be detected as out of date): the new version number (e.g. - 1.0,1 in the above example) is still - numerically less than the previous version (20000801), but - the ,1 suffix is treated specially by - automated tools and found to be greater than the implied - suffix ,0 on the earlier package. + Dropping or resetting PORTEPOCH + incorrectly leads to no end of grief. If the discussion + above was not clear enough, please consult the + FreeBSD ports mailing list. - Dropping or resetting PORTEPOCH - incorrectly leads - to no end of grief; if you do not understand the above discussion, - please keep after it until you do, or ask questions on - the mailing lists. + It is expected that PORTEPOCH will + not be used for the majority of ports, and that sensible use + of PORTVERSION can often preempt it + becoming necessary if a future release of the software + changes the version structure. However, care is + needed by FreeBSD porters when a vendor release is made without + an official version number — such as a code + snapshot release. The temptation is to label + the release with the release date, which will cause problems + as in the example above when a new official + release is made. - It is expected that PORTEPOCH will - not be used for the majority of ports, and that sensible - use of PORTVERSION can often pre-empt - it becoming necessary if a future release of the software - should change the version structure. However, care is - needed by FreeBSD porters when a vendor release is made - without an official version number — such as a code - snapshot release. The temptation is to label the - release with the release date, which will cause problems - as in the example above when a new official release is - made. + For example, if a snapshot release is made on the date + 20000917, and the previous version of the + software was version 1.2, do not use + 20000917 for + PORTVERSION. The correct way is a + PORTVERSION of + 1.2.20000917, or similar, so that the + succeeding release, say 1.3, is still a + numerically greater value. + - For example, if a snapshot release is made on the date - 20000917, and the previous version of the software was - version 1.2, the snapshot release should be given a - PORTVERSION of 1.2.20000917 or similar, - not 20000917, so that the succeeding release, say 1.3, is - still a numerically greater value. - + + <varname>PORTREVISION</varname> 和 <varname>PORTEPOCH</varname> 的使用範例 - - Example of <varname>PORTREVISION</varname> and - <varname>PORTEPOCH</varname> usage + The gtkmumble port, version + 0.10, is committed to the ports + collection: - The gtkmumble port, version - 0.10, is committed to the ports - collection: + PORTNAME= gtkmumble +PORTVERSION= 0.10 - PORTNAME= gtkmumble -PORTVERSION= 0.10 + PKGNAME 變成 gtkmumble-0.10. - PKGNAME becomes - gtkmumble-0.10. + A security hole is discovered which requires a local + FreeBSD patch. PORTREVISION is bumped + accordingly. - A security hole is discovered which requires a local - FreeBSD patch. PORTREVISION is bumped - accordingly. + PORTNAME= gtkmumble +PORTVERSION= 0.10 +PORTREVISION= 1 - PORTNAME= gtkmumble -PORTVERSION= 0.10 -PORTREVISION= 1 + PKGNAME 變成 gtkmumble-0.10_1 - PKGNAME becomes - gtkmumble-0.10_1 + A new version is released by the vendor, numbered + 0.2 (it turns out the author actually + intended 0.10 to actually mean + 0.1.0, not what comes after + 0.9 - oops, too late now). Since the new minor + version 2 is numerically less than the + previous version 10, + PORTEPOCH must be bumped to manually + force the new package to be detected as + newer. Since it is a new vendor release of + the code, PORTREVISION is reset to 0 (or + removed from the Makefile). - A new version is released by the vendor, numbered 0.2 - (it turns out the author actually intended - 0.10 to actually mean - 0.1.0, not what comes after - 0.9 - oops, too late now). Since the new minor - version 2 is numerically less than the - previous version 10, the - PORTEPOCH must be bumped to manually - force the new package to be detected as newer. Since it - is a new vendor release of the code, - PORTREVISION is reset to 0 (or removed - from the Makefile). + PORTNAME= gtkmumble +PORTVERSION= 0.2 +PORTEPOCH= 1 - PORTNAME= gtkmumble -PORTVERSION= 0.2 -PORTEPOCH= 1 + PKGNAME 變成 gtkmumble-0.2,1 - PKGNAME becomes - gtkmumble-0.2,1 + The next release is 0.3. Since + PORTEPOCH never decreases, the version + variables are now: - The next release is 0.3. Since - PORTEPOCH never decreases, the version - variables are now: + PORTNAME= gtkmumble +PORTVERSION= 0.3 +PORTEPOCH= 1 - PORTNAME= gtkmumble -PORTVERSION= 0.3 -PORTEPOCH= 1 + PKGNAME 變成 gtkmumble-0.3,1 - PKGNAME becomes - gtkmumble-0.3,1 + + If PORTEPOCH were reset to + 0 with this upgrade, someone who had + installed the gtkmumble-0.10_1 package + would not detect the gtkmumble-0.3 + package as newer, since 3 is still + numerically less than 10. Remember, + this is the whole point of PORTEPOCH in + the first place. + + + - - If PORTEPOCH were reset - to 0 with this upgrade, someone who had - installed the gtkmumble-0.10_1 package would not detect - the gtkmumble-0.3 package as newer, since - 3 is still numerically less than - 10. Remember, this is the whole point of - PORTEPOCH in the first place. - - - + + <varname>PKGNAMEPREFIX</varname> 和 <varname>PKGNAMESUFFIX</varname> - - <varname>PKGNAMEPREFIX</varname> and <varname>PKGNAMESUFFIX</varname> + Two optional variables, PKGNAMEPREFIX + and PKGNAMESUFFIX, are combined with + PORTNAME and PORTVERSION + to form PKGNAME as + ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}. + Make sure this conforms to our + guidelines for a good + package name. In particular, the use of a + hyphen (-) in + PORTVERSION is not + allowed. + Also, if the package name has the + language- or the + -compiled.specifics part (see + below), use PKGNAMEPREFIX and + PKGNAMESUFFIX, respectively. Do not make + them part of PORTNAME. + - Two optional variables, PKGNAMEPREFIX and - PKGNAMESUFFIX, are combined with - PORTNAME and - PORTVERSION to - form PKGNAME as - ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}. - Make sure this conforms to our guidelines for a good package - name. In particular, you are not allowed to use a - hyphen (-) in - PORTVERSION. Also, if the package name - has the language- or the - -compiled.specifics part (see below), use - PKGNAMEPREFIX and - PKGNAMESUFFIX, respectively. Do not make - them part of PORTNAME. - + + 套件命名慣例 - - <varname>LATEST_LINK</varname> + These are the conventions to follow when + naming packages. This is to make the package directory + easy to scan, as there are already thousands of packages and + users are going to turn away if they hurt their eyes! - 在某些情況,可能會同時存在有不同版本的同一程式。 - 由於它們可能會有同樣的 PORTNAME、 - PKGNAMEPREFIX,甚至 - PKGNAMESUFFIX 也相同,所以得讓這些程式有所不同, - 才能讓 port 的 index 以及 package 能順利產生。 遇到這類情況, - the optional LATEST_LINK variable should be set to - a different value for all ports except the main - one — see the editors/vim5 and - editors/vim ports, and the - www/apache* family for examples of its use. - Note that how to choose a main version — - most popular, best supported, - least patched, and so on — is outside the - scope of this handbook's recommendations; we only tell you how to - specify the other ports' versions after you have picked a - main one. - + Package names take the form of + language_region-name-compiled.specifics-version.numbers. - - Package Naming Conventions + The package name is defined as + ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}. + Make sure to set the variables to conform to that + format. - The following are the conventions you should follow in naming your - packages. This is to have our package directory easy to scan, as - there are already thousands of packages and users are going to - turn away if they hurt their eyes! + + + language_region- - The package name should look like - language_region-name-compiled.specifics-version.numbers. + + FreeBSD strives to support the native language of its + users. The language- part is + a two letter abbreviation of the natural language + defined by ISO-639 when the port is specific to a + certain language. Examples are ja + for Japanese, ru for Russian, + vi for Vietnamese, + zh for Chinese, ko + for Korean and de for German. - The package name is defined as - ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}. - Make sure to set the variables to conform to that format. + If the port is specific to a certain region within + the language area, add the two letter country code as + well. Examples are en_US for US + English and fr_CH for Swiss + French. - - - FreeBSD strives to support the native language of its users. - The language- part should be a two - letter abbreviation of the natural language defined by ISO-639 if - the port is specific to a certain language. Examples are - ja for Japanese, ru for - Russian, vi for Vietnamese, - zh for Chinese, ko for - Korean and de for German. + The language- part is + set in PKGNAMEPREFIX. + + - If the port is specific to a certain region within the - language area, add the two letter country code as well. - Examples are en_US for US English and - fr_CH for Swiss French. + + name - The language- part should - be set in the PKGNAMEPREFIX variable. - + + Make sure that the port's name and version are + clearly separated and placed into + PORTNAME and + PORTVERSION. The only + reason for PORTNAME to contain a + version part is if the upstream distribution is really + named that way, as in the + textproc/libxml2 or + japanese/kinput2-freewnn + ports. Otherwise, PORTNAME cannot + contain any version-specific information. It is quite + normal for several ports to have the same + PORTNAME, as the + www/apache* ports do; in + that case, different versions (and different index + entries) are distinguished by + PKGNAMEPREFIX + and PKGNAMESUFFIX values. - - The first letter of the name part - should be lowercase. (The rest of the name may contain - capital letters, so use your own discretion when you are - converting a software name that has some capital letters in it.) - There is a tradition of naming Perl 5 modules by - prepending p5- and converting the double-colon - separator to a hyphen; for example, the - Data::Dumper module becomes - p5-Data-Dumper. - + There is a tradition of naming + Perl 5 modules by prepending + p5- and converting the double-colon + separator to a hyphen. For example, the + Data::Dumper module becomes + p5-Data-Dumper. + + - - Make sure that the port's name and version are clearly - separated and placed into the PORTNAME and - PORTVERSION variables. The only reason for - PORTNAME to contain a version part is if - the upstream distribution is really named that way, as in - the textproc/libxml2 or - japanese/kinput2-freewnn ports. Otherwise, - the PORTNAME should not contain any - version-specific information. It is quite normal for several - ports to have the same PORTNAME, as the - www/apache* ports do; in that case, - different versions (and different index entries) are - distinguished by the PKGNAMEPREFIX, - PKGNAMESUFFIX, and - LATEST_LINK values. - + + -compiled.specifics - - If the port can be built with different hardcoded defaults (usually - part of the directory name in a family of ports), the - -compiled.specifics part should state - the compiled-in defaults (the hyphen is optional). Examples are - papersize and font units. + + If the port can be built with different hardcoded defaults + (usually part of the directory name in a family of + ports), the + -compiled.specifics part + states the compiled-in defaults. The hyphen is + optional. Examples are paper size and font + units. - The -compiled.specifics part - should be set in the PKGNAMESUFFIX - variable. - + The -compiled.specifics + part is set in PKGNAMESUFFIX. + + - - The version string should follow a dash - (-) and be a period-separated list of - integers and single lowercase alphabetics. In particular, - it is not permissible to have another dash inside the - version string. The only exception is the string - pl (meaning patchlevel), which can be - used only when there are no major and - minor version numbers in the software. If the software - version has strings like alpha, beta, rc, or pre, take - the first letter and put it immediately after a period. - If the version string continues after those names, the - numbers should follow the single alphabet without an extra - period between them. + + -version.numbers - The idea is to make it easier to sort ports by looking - at the version string. In particular, make sure version - number components are always delimited by a period, and - if the date is part of the string, use the - yyyy.mm.dd - format, not - dd.mm.yyyy - or the non-Y2K compliant - yy.mm.dd - format. - - + + The version string follows a dash + (-) and is a period-separated list of + integers and single lowercase alphabetics. In + particular, it is not permissible to have another dash + inside the version string. The only exception is the + string pl (meaning + patchlevel), which can be used + only when there are no major and + minor version numbers in the software. If the software + version has strings like alpha, + beta, rc, or + pre, take the first letter and put it + immediately after a period. If the version string + continues after those names, the numbers follow + the single alphabet without an extra period between + them (for example, 1.0b2). - Here are some (real) examples on how to convert the name + The idea is to make it easier to sort ports by + looking at the version string. In particular, make sure + version number components are always delimited by a + period, and if the date is part of the string, use the + 0.0.yyyy.mm.dd + format, not + dd.mm.yyyy + or the non-Y2K compliant + yy.mm.dd + format. It is important to prefix the version with + 0.0. in case a release with an actual + version number is made, which would be + numerically less than + yyyy. + + + + + + Package name must be unique among all of the ports + tree, check that there is not already a port with the same + PORTNAME and if there is add one of PKGNAMEPREFIX + or PKGNAMESUFFIX. + + + Here are some (real) examples on how to convert the name as called by the software authors to a suitable package name: - + + 套件命名範例 + - Distribution Name + Distribution Name PKGNAMEPREFIX PORTNAME PKGNAMESUFFIX PORTVERSION - Reason + 原因 @@ -1140,86 +1419,95 @@ mule-2.2.2 - (empty) + (空) mule - (empty) + (空) 2.2.2 - No changes required + No changes required + mule-1.0.1 + (空) + mule + 1 + 1.0.1 + mule 已存在 + + + EmiClock-1.0.2 - (empty) + (空) emiclock - (empty) + (空) 1.0.2 - No uppercase names for single programs + No uppercase names for single programs rdist-1.3alpha - (empty) + (空) rdist - (empty) + (空) 1.3.a - No strings like alpha + No strings like alpha allowed es-0.9-beta1 - (empty) + (空) es - (empty) + (空) 0.9.b1 - No strings like beta + No strings like beta allowed mailman-2.0rc3 - (empty) + (空) mailman - (empty) + (空) 2.0.r3 - No strings like rc + No strings like rc allowed v3.3beta021.src - (empty) + (空) tiff - (empty) + (空) 3.3 - What the heck was that anyway? + What the heck was that anyway? tvtwm - (empty) + (空) tvtwm - (empty) + (空) pl11 - Version string always required + Version string always required piewm - (empty) + (空) piewm - (empty) + (空) 1.0 - Version string always required + Version string always required xvgr-2.10pl1 - (empty) + (空) xvgr - (empty) + (空) 2.10.1 - pl allowed only when no + pl allowed only when no major/minor version numbers @@ -1227,3920 +1515,5982 @@ gawk-2.15.6ja-gawk - (empty) + (空)2.15.6 - Japanese language version + 日文版 psutils-1.13 - (empty) + (空) psutils -letter 1.13 - Papersize hardcoded at package build time + Paper size hardcoded at package build + time pkfonts - (empty) + (空) pkfonts 300 1.0 - Package for 300dpi fonts + Package for 300dpi fonts - +
- If there is absolutely no trace of version information in the - original source and it is unlikely that the original author will ever - release another version, just set the version string to - 1.0 (like the piewm example above). Otherwise, ask - the original author or use the date string - (yyyy.mm.dd) + If there is absolutely no trace of version information in + the original source and it is unlikely that the original + author will ever release another version, just set the version + string to 1.0 (like the + piewm example above). Otherwise, ask the + original author or use the date string the source file was + released on + (0.0.yyyy.mm.dd) as the version.
- + - - Categorization + + 分類 - - <varname>CATEGORIES</varname> + + <varname>CATEGORIES</varname> - When a package is created, it is put under - /usr/ports/packages/All and links are made from - one or more subdirectories of - /usr/ports/packages. The names of these - subdirectories are specified by the variable - CATEGORIES. It is intended to make life easier - for the user when he is wading through the pile of packages on the - FTP site or the CDROM. Please take a look at the current list of categories and pick the ones - that are suitable for your port. + When a package is created, it is put under + /usr/ports/packages/All and links are + made from one or more subdirectories of + /usr/ports/packages. The names of these + subdirectories are specified by the variable + CATEGORIES. It is intended to make life + easier for the user when he is wading through the pile of + packages on the FTP site or the CDROM. Please take a look at + the current list of + categories and pick the ones that are suitable for + the port. - This list also determines where in the ports tree the port is - imported. If you put more than one category here, it is assumed - that the port files will be put in the subdirectory with the name in - the first category. See below for more - discussion about how to pick the right categories. - + This list also determines where in the ports tree the port + is imported. If there is more than one category here, + the port files must be put in the subdirectory + with the name of the first category. See + below for more + discussion about how to pick the right categories. + - - Current list of categories + + 目前分類清單 - Here is the current list of port categories. Those - marked with an asterisk (*) are - virtual categories—those that do not have - a corresponding subdirectory in the ports tree. They are only - used as secondary categories, and only for search purposes. + Here is the current list of port categories. Those marked + with an asterisk (*) are + virtual categories—those that do + not have a corresponding subdirectory in the ports tree. They + are only used as secondary categories, and only for search + purposes. + + For non-virtual categories, there is a one-line + description in COMMENT in that + subdirectory's Makefile. + + + + + + + 分類 + 描述 + + + + + + + accessibility + Ports to help disabled users. + + + + + afterstep* + + Ports to support the AfterStep + window manager. + + + + + arabic + 阿拉伯文支援。 + + + + + archivers + Archiving tools. + + + + + astro + Astronomical ports. + + + + + audio + Sound support. + + + + + benchmarks + Benchmarking utilities. + + + + + biology + Biology-related software. + + + + + cad + Computer aided design tools. + + + + + chinese + 中文支援。 + + + + + comms + Communication software. + Mostly software to talk to the serial + port. + + + + converters + Character code converters. + + + + + databases + 資料庫。 + + + + + deskutils + Things that used to be on the desktop before + computers were invented. + + + + + devel + 開發公用程式。 + Do not put libraries here just because they are + libraries. They should not be + in this category unless they truly do not belong + anywhere else. + + + + dns + DNS 相關軟體。 + + + + + docs* + Meta-ports for FreeBSD documentation. + + + + + editors + General editors. + Specialized editors go in the section for those + tools. For example, a mathematical-formula editor + will go in math, and have + editors as a second + category. + + + + elisp* + Emacs-lisp ports. + + + + + emulators + Emulators for other operating systems. + Terminal emulators do not + belong here. X-based ones go to + x11 and text-based ones to + either comms or + misc, depending on the exact + functionality. + + + + finance + Monetary, financial and related + applications. + + + + + french + 法文支援。 + + + + + ftp + FTP client and server + utilities. + If the port speaks both FTP + and HTTP, put it + in ftp with a secondary + category of www. + + + + games + 遊戲。 + + + + + geography* + 地理相關軟體。 + + + + + german + 德文支援。 + + + + + gnome* + Ports from the + GNOME + Project. + + + + + gnustep* + Software related to the GNUstep desktop + environment. + + + + + graphics + 繪圖公用程式。 + + + + + hamradio* + Software for amateur radio. + + + + + haskell* + Software related to the Haskell + language. + + + + + hebrew + 希伯來文支援。 + + + + + hungarian + 匈牙利文支援。 + + + + + ipv6* + IPv6 相關軟體。 + + + + + irc + Internet Relay Chat utilities. + + + + + japanese + 日文支援。 + + + + + java + Software related to the Java™ + language. + The java category must not + be the only one for a port. Save for ports directly + related to the Java language, porters are also + encouraged not to use java as the + main category of a port. + + + + kde* + Ports from the + KDE + Project. + + + + + kld* + Kernel loadable modules. + + + + + korean + 韓文支援。 + + + + + lang + 程式語言。 + + + + + linux* + Linux 應用程式和支援的公用程式 + + + + + lisp* + Software related to the Lisp language. + + + + + mail + 郵件軟體 + + + + + math + Numerical computation software and other + utilities for mathematics. + + + + + mbone* + MBone 應用程式。 + + + + + misc + 其他公用程式 + Things that do not belong anywhere + else. If at all possible, try to find a better + category for the port than misc, + as ports tend to be overlooked in here. + + + + multimedia + 多媒體軟體。 + + + + + net + Miscellaneous networking software. + + + + + net-im + 即時通訊軟體。 + + + + + net-mgmt + 網路管理軟體。 + + + + + net-p2p + 點對點 (Peer to peer) 網路應用程式。 + + + + + news + USENET 新聞軟體。 + + + + + palm + + Software support for the Palm™ + series. + + + + + parallel* + Applications dealing with parallelism in + computing. + + + + + pear* + Ports related to the Pear PHP + framework. + + + + + perl5* + Ports that require + Perl version 5 to + run. + + + + + plan9* + + Various programs from Plan9. + + + + + polish + 波蘭文支援。 + + + + + ports-mgmt + Ports for managing, installing and developing + FreeBSD ports and packages. + + + + portuguese + 葡萄牙文支援。 + + + + + print + 列印軟體。 + Desktop publishing tools + (previewers, etc.) belong here too. + + + + python* + + Software related to the Python + language. + + + + + ruby* + Software related to the Ruby + language. + + + + + rubygems* + + Ports of RubyGems + packages. + + + + + russian + 俄文支援。 + + + + + scheme* + Software related to the Scheme + language. + + + + + science + Scientific ports that do not fit into other + categories such as astro, + biology and + math. + + + + + security + Security utilities. + + + + + shells + Command line shells. + + + + + spanish* + 西班牙文支援。 + + + + + sysutils + 系統公用程式。 + + + + + tcl* + Ports that use Tcl to run. + + + + + textproc + Text processing utilities. + It does not include desktop publishing tools, + which go to print. + + + + tk* + Ports that use Tk to run. + + + + + ukrainian + 烏克蘭文支援 + + + + + vietnamese + 越南文支援。 + + + + + windowmaker* + Ports to support the WindowMaker window + manager. + + + + + www + Software related to the World Wide Web. + HTML language + support belongs here too. + + + + x11 + X Window 系統和他的朋友們。 + This category is only for software that directly + supports the window system. Do not put regular X + applications here. Most of them go into other + x11-* categories (see + below). + + + + x11-clocks + X11 時鐘。 + + + + + x11-drivers + X11 驅動程式。 + + + + + x11-fm + X11 file managers. + + + + + x11-fonts + X11 fonts and font utilities. + + + + + x11-servers + X11 伺服器。 + + + + + x11-themes + X11 佈景主題。 + + + + + x11-toolkits + X11 toolkits. + + + + + x11-wm + X11 window managers. + + + + + xfce* + Ports related to the + Xfce + desktop environment. + + + + + zope* + Zope + support. + + + + + + + + + 選擇正確的目錄 + + As many of the categories overlap, choosing which of the + categories will be the primary category of the port can be + tedious. There are several rules that govern this issue. + Here is the list of priorities, in decreasing order of + precedence: + + + + The first category must be a physical category (see + above). This is + necessary to make the packaging work. Virtual categories + and physical categories may be intermixed after + that. + + + + Language specific categories always come first. For + example, if the port installs Japanese X11 fonts, then + the CATEGORIES line would read + japanese x11-fonts. + + + + Specific categories are listed before less-specific + ones. For instance, an HTML editor is listed as + www editors, not the other way + around. Also, do not list + net when the port belongs to any of + irc, mail, + news, security, + or www, as net + is included implicitly. + + + + x11 is used as a secondary + category only when the primary category is a natural + language. In particular, do not put + x11 in the category line for X + applications. + + + + Emacs modes are + placed in the same ports category as the application + supported by the mode, not in + editors. For example, an + Emacs mode to edit source files + of some programming language goes into + lang. + + + + Ports installing loadable kernel modules also + have the virtual category kld in + their CATEGORIES line. This is one of + the things handled automatically by adding + USES=kmod. + + + + misc does not appear with any + other non-virtual category. If there is + misc with something else in + CATEGORIES, that means + misc can safely be deleted and the port + placed only in the other subdirectory. + + + + If the port truly does not belong anywhere else, + put it in misc. + + + + If the category is not clearly defined, please put a + comment to that effect in the port + submission in the bug database so + we can discuss it before we import it. As a committer, + send a note to the FreeBSD ports mailing list so we can discuss it + first. Too often, new ports are imported to the wrong + category only to be moved right away. This causes unnecessary + and undesirable bloat in the master source repository. + + + + 提出新的目錄 + + As the Ports Collection has grown over time, various new + categories have been introduced. New categories can either be + virtual categories—those that do + not have a corresponding subdirectory in the ports tree— + or physical categories—those that + do. This section discusses the issues involved in creating a + new physical category. Read it thouroughly before proposing a + new one. + + Our existing practice has been to avoid creating a new + physical category unless either a large number of ports would + logically belong to it, or the ports that would belong to it + are a logically distinct group that is of limited general + interest (for instance, categories related to spoken human + languages), or preferably both. + + The rationale for this is that such a change creates a + fair + amount of work for both the committers and also for + all users who track changes to the Ports Collection. In + addition, proposed category changes just naturally seem to + attract controversy. (Perhaps this is because there is no + clear consensus on when a category is too big, + nor whether categories should lend themselves to browsing (and + thus what number of categories would be an ideal number), and + so forth.) + + 步驟如下: + + + + Propose the new category on FreeBSD ports mailing list. Include + a detailed rationale for the new category, + including why the existing categories are not + sufficient, and the list of existing ports proposed to + move. (If there are new ports pending in + Bugzilla that would fit this + category, list them too.) If you are the maintainer + and/or submitter, respectively, mention that as it may + help the case. + + + + Participate in the discussion. + + + + If it seems that there is support for the idea, file + a PR which includes both the rationale and the list of + existing ports that need to be moved. Ideally, this PR + would also include these patches: + + + + Makefiles for the new ports + once they are repocopied + + + + Makefile for the new + category + + + + Makefile for the old ports' + categories + + + + Makefiles for ports that + depend on the old ports + + + + (for extra credit, include the other files + that have to change, as per the procedure in the + Committer's Guide.) + + + + + + Since it affects the ports infrastructure and involves + moving and patching many ports but also possibly running + regression tests on the build cluster, assign the PR to + the Ports Management Team portmgr@FreeBSD.org. + + + + If that PR is approved, a committer will need to + follow the rest of the procedure that is outlined + in the Committer's Guide. + + + + Proposing a new virtual category is similar to the + above but much less involved, since no ports will actually + have to move. In this case, the only patches to include in + the PR would be those to add the new category to + CATEGORIES of the affected ports. + + + + Proposing Reorganizing All the Categories + + Occasionally someone proposes reorganizing the + categories with either a 2-level structure, or some other kind + of keyword structure. To date, nothing has come of any of + these proposals because, while they are very easy to make, the + effort involved to retrofit the entire existing ports + collection with any kind of reorganization is daunting to say + the very least. Please read the history of these proposals in + the mailing list archives before posting this idea. + Furthermore, be prepared to be challenged to offer + a working prototype. + + + + + The Distribution Files + + The second part of the Makefile + describes the files that must be downloaded to build + the port, and where they can be downloaded. + + + <varname>DISTVERSION/DISTNAME</varname> + + DISTNAME is the name of the port as + called by the authors of the software. + DISTNAME defaults to + ${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}, + and DISTVERSION defaults to + ${PORTVERSION} so override it + only if necessary. DISTNAME is only used + in two places. First, the distribution file list + (DISTFILES) defaults to + ${DISTNAME}${EXTRACT_SUFX}. + Second, the distribution file is expected to extract into a + subdirectory named WRKSRC, which defaults + to work/${DISTNAME}. + + Some vendor's distribution names which do not fit into the + ${PORTNAME}-${PORTVERSION}-scheme can be + handled automatically by setting + DISTVERSION. + PORTVERSION will be derived from it + automatically. + + + Only one of PORTVERSION and + DISTVERSION can be set at a time. If + DISTVERSION does not derive a correct + PORTVERSION, do not use + DISTVERSION, set + PORTVERSION to the right value and set + DISTNAME with PORTNAME + with either some computation of + PORTVERSION or the verbatim upstream + version. + + + + + Examples of <varname>DISTVERSION</varname> and the + Derived <varname>PORTVERSION</varname> + + + + + DISTVERSION + PORTVERSION + + + + + + 0.7.1d + 0.7.1.d + + + + 10Alpha3 + 10.a3 + + + + 3Beta7-pre2 + 3.b7.p2 + + + + 8:f_17 + 8f.17 + + + +
+ + + PKGNAMEPREFIX and + PKGNAMESUFFIX do not affect + DISTNAME. Also note that if + WRKSRC is equal to + ${WRKDIR}/${DISTNAME} while + the original source archive is named something other than + ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX}, + leave DISTNAME + alone— defining only + DISTFILES is easier than both + DISTNAME and WRKSRC + (and possibly EXTRACT_SUFX). + +
+ + + <varname>MASTER_SITES</varname> + + Record the directory part of the FTP/HTTP-URL pointing at + the original tarball in MASTER_SITES. Do + not forget the trailing slash (/)! + + The make macros will try to use this + specification for grabbing the distribution file with + FETCH if they cannot find it already on the + system. + + It is recommended that multiple sites are included on this + list, preferably from different continents. This will + safeguard against wide-area network problems. We are even + planning to add support for automatically determining the + closest master site and fetching from there; having multiple + sites will go a long way towards helping this effort. + + + MASTER_SITES must not be blank. It + must point to the actual site hosting the distribution + files. It cannot point to web archives, or the FreeBSD + distribution files cache sites. The only exception to this + rule is ports that do not have any distribution files. For + example, meta-ports do not have any distribution files, so + MASTER_SITES does not need to be + set. + + + + 使用 <varname>MASTER_SITE_<replaceable>*</replaceable></varname> 變數 + + Shortcut abbreviations are available for popular + archives like SourceForge (SOURCEFORGE), + GNU (GNU), or Perl CPAN + (PERL_CPAN). + MASTER_SITES can use them + directly: + + MASTER_SITES= GNU/make + + The older expanded format still works, but all ports + have been converted to the compact format. The expanded + format looks like this: + + MASTER_SITES= ${MASTER_SITE_GNU} +MASTER_SITE_SUBDIR= make + + These values and variables are defined in Mk/bsd.sites.mk. + New entries are added often, so make sure to check the + latest version of this file before submitting a port. + + + For any + MASTER_SITE_FOO + variable, the shorthand + FOO can be + used. For example, use: + + MASTER_SITES= FOO + + If MASTER_SITE_SUBDIR is needed, + use this: + + MASTER_SITES= FOO/bar + + - For non-virtual categories, you will find a one-line - description in the COMMENT in that - subdirectory's Makefile. + Some + MASTER_SITE_* + names are quite long, and for ease of use, shortcuts have + been defined: + + + Shortcuts for + <varname>MASTER_SITE_<replaceable>*</replaceable></varname> + Macros + + + + + 巨集 + Shortcut + + + + + + PERL_CPAN + CPAN + + + + GITHUB + GH + + + + GITHUB_CLOUD + GHC + + + + LIBREOFFICE_DEV + LODEV + + + + NETLIB + NL + + + + RUBYGEMS + RG + + + + SOURCEFORGE + SF + + + + SOURCEFORGE_JP + SFJP + + + +
+
- - + + Magic MASTER_SITES Macros + + Several magic macros exist for + popular sites with a predictable directory structure. For + these, just use the abbreviation and the system will choose + a subdirectory automatically. For a port + named Stardict, of version + 1.2.3, and hosted on SourceForge, adding + this line: + + MASTER_SITES= SF + + infers a subdirectory named + /project/stardict/stardict/1.2.3. If the + inferred directory is incorrect, it can be + overridden: + + MASTER_SITES= SF/stardict/WyabdcRealPeopleTTS/${PORTVERSION} + + This can also be written as + + MASTER_SITES= SF +MASTER_SITE_SUBDIR= stardict/WyabdcRealPeopleTTS/${PORTVERSION} + + + Magic <varname>MASTER_SITES</varname> + Macros + + - Category - Description - Notes + 巨集 + Assumed subdirectory - accessibility - Ports to help disabled users. - + APACHE_COMMONS_BINARIES + ${PORTNAME:S,commons-,,} - afterstep* - Ports to support the - AfterStep - window manager. - + APACHE_COMMONS_SOURCE + ${PORTNAME:S,commons-,,} - arabic - Arabic language support. - + APACHE_JAKARTA + ${PORTNAME:S,-,/,}/source - archivers - Archiving tools. - + BERLIOS + ${PORTNAME:tl}.berlios - astro - Astronomical ports. - + CHEESESHOP + source/${DISTNAME:C/(.).*/\1/}/${DISTNAME:C/(.*)-[0-9].*/\1/} - audio - Sound support. - + CPAN + ${PORTNAME:C/-.*//} - benchmarks - Benchmarking utilities. - + DEBIAN + pool/main/${PORTNAME:C/^((lib)?.).*$/\1/}/${PORTNAME} - biology - Biology-related software. - + FARSIGHT + ${PORTNAME} - cad - Computer aided design tools. - + FESTIVAL + ${PORTREVISION} - chinese - Chinese language support. - + GCC + releases/${DISTNAME} - comms - Communication software. - Mostly software to talk to your serial port. + GENTOO + distfiles - converters - Character code converters. - + GIMP + ${PORTNAME}/${PORTVERSION:R}/ - databases - Databases. - + GH + ${GH_ACCOUNT}/${GH_PROJECT}/tar.gz/${GH_TAGNAME}?dummy=/ - deskutils - Things that used to be on the desktop before - computers were invented. - + GHC + ${GH_ACCOUNT}/${GH_PROJECT}/ - devel - Development utilities. - Do not put libraries here just because they are - libraries—unless they truly do not belong anywhere - else, they should not be in this category. + GNOME + sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/} - dns - DNS-related software. - + GNU + ${PORTNAME} - editors - General editors. - Specialized editors go in the section for those - tools (e.g., a mathematical-formula editor will go - in math). + GNUPG + ${PORTNAME} - elisp* - Emacs-lisp ports. - + GNU_ALPHA + ${PORTNAME} - emulators - Emulators for other operating systems. - Terminal emulators do not belong - here—X-based ones should go to - x11 and text-based ones to either - comms or misc, - depending on the exact functionality. + HORDE + ${PORTNAME} - finance - Monetary, financial and related applications. - + LODEV + ${PORTNAME} - french - French language support. - + MATE + ${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/} - ftp - FTP client and server utilities. - If your port speaks both FTP and HTTP, put it in - ftp with a secondary - category of www. + MOZDEV + ${PORTNAME:tl} - games - 遊戲。 - + NL + ${PORTNAME} - geography* - 地理圖資相關的軟體。 - + QT + archive/qt/${PORTVERSION:R} - german - 德文相關支援。 - + SAMBA + ${PORTNAME} - gnome* - Ports from the GNOME - Project. - + SAVANNAH + ${PORTNAME:tl} - gnustep* - GNUstep 桌面環境相關的軟體。 - + SF + ${PORTNAME:tl}/${PORTNAME:tl}/${PORTVERSION} + + +
+
+
- - graphics - 圖形處理的工具軟體。 - - + + <varname>USE_GITHUB</varname> - - hamradio* - Software for amateur radio. - - + If the distribution file comes from a specific commit or + tag on GitHub + for which there is no officially released file, there is an + easy way to set the right DISTNAME and + MASTER_SITES automatically. These + variables are available: - - haskell* - Software related to the Haskell language. - - + + <varname>USE_GITHUB</varname> Description - - hebrew - Hebrew language support. - - + + + + Variable + 描述 + Default + + - - hungarian - Hungarian language support. - - + + + GH_ACCOUNT + Account name of the GitHub user hosting the + project + ${PORTNAME} + - - ipv6* - IPv6 related software. - - + + GH_PROJECT + Name of the project on GitHub + ${PORTNAME} + - - irc - Internet Relay Chat utilities. - - - - japanese - Japanese language support. - - + + GH_TAGNAME + Name of the tag to download (2.0.1, hash, ...) + Using the name of a branch here is incorrect. It is + also possible to use the hash of a commit id to do a + snapshot. + ${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX} + - - java - Software related to the Java language. - The java category shall not be - the only one for a port. Save for ports directly related to - the Java language, porters are also encouraged not to - use java as the main category of a - port. - + + GH_TUPLE + GH_TUPLE allows putting all + the GH_ACCOUNT, + GH_PROJECT, and + GH_TAGNAME into one variable. The + format is + account:project:tagname:group. + It is helpful when there is more than one GitHub + project from which to fetch. + + + +
- - kde* - Ports from the K Desktop Environment (KDE) - Project. - - + + Do not use GH_TUPLE for the default + distribution file, as it has no default. + - - kld* - Kernel loadable modules。 - - + + Simple Use of <varname>USE_GITHUB</varname> - - korean - Korean language support. - - + While trying to make a port for version + 1.2.7 of pkg + from the FreeBSD user on github, at , The + Makefile would end up looking like + this (slightly stripped for the example): - - lang - Programming languages. - - + PORTNAME= pkg +PORTVERSION= 1.2.7 - - linux* - Linux applications and support utilities. - - +USE_GITHUB= yes +GH_ACCOUNT= freebsd - - lisp* - Software related to the Lisp language. - - + It will automatically have + MASTER_SITES set to GH + GHC and WRKSRC to + ${WRKDIR}/pkg-1.2.7. + - - mail - Mail software. - - + + More Complete Use of + <varname>USE_GITHUB</varname> - - math - Numerical computation software and other utilities - for mathematics. - - + While trying to make a port for the bleeding edge + version of pkg from the FreeBSD + user on github, at , the + Makefile ends up looking like + this (slightly stripped for the example): - - mbone - MBone applications. - - + PORTNAME= pkg-devel +PORTVERSION= 1.3.0.a.20140411 - - misc - Miscellaneous utilities - Basically things that - do not belong anywhere else. - If at all possible, try to - find a better category for your port than - misc, as ports tend to get overlooked - in here. - +USE_GITHUB= yes +GH_ACCOUNT= freebsd +GH_PROJECT= pkg +GH_TAGNAME= 6dbb17b - - multimedia - Multimedia software. - - + It will automatically have + MASTER_SITES set to GH + GHC and WRKSRC to + ${WRKDIR}/pkg-6dbb17b. + - - net - Miscellaneous networking software. - - + + Use of <varname>USE_GITHUB</varname> with + <varname>DISTVERSIONPREFIX</varname> - - net-im - Instant messaging software. - - + From time to time, GH_TAGNAME is a + slight variation from DISTVERSION. + For example, if the version is 1.0.2, + the tag is v1.0.2. In those cases, it + is possible to use DISTVERSIONPREFIX or + DISTVERSIONSUFFIX: - - net-mgmt - Networking management software. - - + PORTNAME= foo +PORTVERSION= 1.0.2 +DISTVERSIONPREFIX= v - - net-p2p - Peer to peer network applications. - - +USE_GITHUB= yes - - news - USENET news software. - - + It will automatically set + GH_TAGNAME to + v1.0.2, while WRKSRC + will be kept to + ${WRKDIR}/foo-1.0.2. + - - palm - Software support for the Palm™ series. - - + + Fetching Multiple Files from GitHub - - parallel* - Applications dealing with parallelism in computing. - - + The USE_GITHUB framework also + supports fetching multiple distribution files from + different places in GitHub. It works in a way very + similar to . - - pear* - Ports related to the Pear PHP framework. - - + Multiple values are added to + GH_ACCOUNT, + GH_PROJECT, and + GH_TAGNAME. Each different value is + assigned a tag. The main value can either have no tag, or + the :DEFAULT tag. A value can be + omitted if it is the same as the default as listed in + . - - perl5* - Ports that require Perl version 5 to run. - - + GH_TUPLE can also be used when there + are a lot of distribution files. It helps keep the account, + project, tagname, and group information at the same + place. - - plan9* - Various programs from Plan9. - - + For each tag, a + ${WRKSRC_tag} + helper variable is created, containing the directory into + which the file has been extracted. The + ${WRKSRC_tag} + variables can be used to move directories around during + post-extract, or add to + CONFIGURE_ARGS, or whatever is needed + so that the software builds correctly. - - polish - Polish language support. - - + + Use of <varname>USE_GITHUB</varname> with Multiple + Distribution Files - - ports-mgmt - FreeBSD ports 及 packages 的管理、安裝、開發。 - + From time to time, there is a need to fetch more + than one distribution file. For example, when the + upstream git repository uses submodules. This can be + done easily using tags in the + GH_* + variables: - - portuguese - Portuguese language support. - - + PORTNAME= foo +PORTVERSION= 1.0.2 - - print - Printing software. - Desktop publishing tools - (previewers, etc.) belong here too. - +USE_GITHUB= yes +GH_ACCOUNT= bar:icons,contrib +GH_PROJECT= foo-icons:icons foo-contrib:contrib +GH_TAGNAME= 1.0:icons fa579bc:contrib - - python* - Software related to the Python language. - - +CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib} - - ruby* - Software related to the Ruby language. - - +post-extract: + @${MV} ${WRKSRC_icons} ${WRKSRC}/icons - - rubygems* - Ports of RubyGems packages. - - + This will fetch three distribution files from + github. The default one comes from + foo/foo and is version + 1.0.2. The second one, tagged + icons, comes from + bar/foo-icons and is in version + 1.0. The third one comes from + bar/foo-contrib and uses the + Git commit + fa579bc. The distribution files are + named foo-foo-1.0.2_GH0.tar.gz, + bar-foo-icons-1.0_GH0.tar.gz, and + bar-foo-contrib-fa579bc_GH0.tar.gz. - - russian - Russian language support. - - + All the distribution files are extracted in + ${WRKDIR} in their respective + subdirectories. The default file is still extracted in + ${WRKSRC}, in this case, + ${WRKDIR}/foo-1.0.2. Each + additional distribution file is extracted in + ${WRKSRC_tag}. + Here, for the icons tag, it is called + ${WRKSRC_icons} and it contains + ${WRKDIR}/foo-icons-1.0. The file + with the contrib tag is called + ${WRKSRC_contrib} and contains + ${WRKDIR}/foo-contrib-fa579bc. + - - scheme* - Software related to the Scheme language. - - + + Use of <varname>USE_GITHUB</varname> with Multiple + Distribution Files Using + <varname>GH_TUPLE</varname> - - science - Scientific ports that do not fit into other - categories such as astro, - biology and - math. - - + This is functionally equivalent to , but + using GH_TUPLE: - - security - Security utilities. - - + PORTNAME= foo +PORTVERSION= 1.0.2 - - shells - Command line shells. - - +USE_GITHUB= yes +GH_TUPLE= bar:foo-icons:1.0:icons \ + bar:foo-contrib:fa579bc:contrib - - spanish* - 西班牙文的相關支援。 - - +CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib} - - sysutils - System utilities. - - +post-extract: + @${MV} ${WRKSRC_icons} ${WRKSRC}/icons - - tcl* - 使用 Tcl 語言的軟體。 - - + Grouping was used in the previous example with + bar:icons,contrib. Some redundant + information is present with GH_TUPLE + because grouping is not possible. + + +
- - textproc - Text processing utilities. - It does not include - desktop publishing tools, which go to print. - + + <varname>EXTRACT_SUFX</varname> - - tk* - 使用 Tk 語言的程式。 - - + If there is one distribution file, and it uses an odd + suffix to indicate the compression mechanism, set + EXTRACT_SUFX. - - ukrainian - Ukrainian language support. - - + For example, if the distribution file was named + foo.tar.gzip instead of the more normal + foo.tar.gz, write: - - vietnamese - Vietnamese language support. - - + DISTNAME= foo +EXTRACT_SUFX= .tar.gzip - - windowmaker* - Ports to support the WindowMaker window - manager. - - + The + USES=tar[:xxx], + USES=lha or USES=zip + automatically set EXTRACT_SUFX to the most + common archives extensions as necessary, see for more details. If neither of + these are set then EXTRACT_SUFX defaults to + .tar.gz. - - www - Software related to the World Wide Web. - HTML language - support belongs here too. - + + As EXTRACT_SUFX is only used in + DISTFILES, only set one of them.. + + - - x11 - The X Window System and friends. - This category is only - for software that directly supports the window system. Do not - put regular X applications here; most of them should go - into other x11-* categories (see below). - If your port is an X - application, define USE_XLIB (implied by - USE_IMAKE) and put it in the appropriate - category. - + + <varname>DISTFILES</varname> - - x11-clocks - X11 clocks. - - + Sometimes the names of the files to be downloaded have no + resemblance to the name of the port. For example, it might be + called source.tar.gz or similar. In + other cases the application's source code might be in several + different archives, all of which must be downloaded. - - x11-drivers - X11 驅動程式。 - - + If this is the case, set DISTFILES to + be a space separated list of all the files that must be + downloaded. - - x11-fm - X11 file managers. - - + DISTFILES= source1.tar.gz source2.tar.gz - - x11-fonts - X11 fonts and font utilities. - - + If not explicitly set, DISTFILES + defaults to + ${DISTNAME}${EXTRACT_SUFX}. + - - x11-servers - X11 servers. - - + + <varname>EXTRACT_ONLY</varname> - - x11-themes - X11 themes. - - + If only some of the DISTFILES must be + extracted—for example, one of them is the source code, + while another is an uncompressed document—list the + filenames that must be extracted in + EXTRACT_ONLY. - - x11-toolkits - X11 toolkits. - - + DISTFILES= source.tar.gz manual.html +EXTRACT_ONLY= source.tar.gz - - x11-wm - X11 window managers. - - + When none of the DISTFILES need to be + uncompressed, set EXTRACT_ONLY to the empty + string. - - xfce* - Xfce - 桌面環境的相關軟體。 - - + EXTRACT_ONLY= + - - zope* - Zope support. - - - - - -
+ + <varname>PATCHFILES</varname> - - Choosing the right category + If the port requires some additional patches that are + available by FTP or + HTTP, set PATCHFILES to + the names of the files and PATCH_SITES to + the URL of the directory that contains them (the format is the + same as MASTER_SITES). - As many of the categories overlap, you often have to choose - which of the categories should be the primary category of your port. - There are several rules that govern this issue. Here is the list of - priorities, in decreasing order of precedence: + If the patch is not relative to the top of the source tree + (that is, WRKSRC) because it contains some + extra pathnames, set PATCH_DIST_STRIP + accordingly. For instance, if all the pathnames in the patch + have an extra foozolix-1.0/ in front of the + filenames, then set + PATCH_DIST_STRIP=-p1. - + Do not worry if the patches are compressed; they will be + decompressed automatically if the filenames end with + .Z, .gz, + .bz2 or .xz. + + If the patch is distributed with some other files, such as + documentation, in a gzipped tarball, using + PATCHFILES is not possible. If that is the + case, add the name and the location of the patch tarball to + DISTFILES and + MASTER_SITES. Then, use + EXTRA_PATCHES to point to those + files and bsd.port.mk will automatically + apply them. In particular, do + not copy patch files into + ${PATCHDIR}. That directory may + not be writable. + + + If there are multiple patches and they need mixed values + for the strip parameter, it can be added alongside the patch + name in PATCHFILES, e.g: + + PATCHFILES= patch1 patch2:-p1 + + This does not conflict with the master site grouping + feature, adding a group also works: + + PATCHFILES= patch2:-p1:source2 + + + + The tarball will have been extracted alongside the + regular source by then, so there is no need to explicitly + extract it if it is a regular gzipped or + compressed tarball. Take extra care not + to overwrite something that already exists in that + directory if extracting it manually. Also, do not forget to + add a command to remove the copied patch in the + pre-clean target. + + + + + Multiple Distribution or Patches Files from Multiple + Locations + + (Consider this to be a somewhat + advanced topic; those new to this document + may wish to skip this section at first). + + This section has information on the fetching mechanism + known as both MASTER_SITES:n and + MASTER_SITES_NN. We will refer to this + mechanism as MASTER_SITES:n. + + A little background first. OpenBSD has a neat feature + inside DISTFILES and + PATCHFILES which allows files and + patches to be postfixed with :n + identifiers. Here, n can be both + [0-9] and denote a group designation. For + example: + + DISTFILES= alpha:0 beta:1 + + In OpenBSD, distribution file alpha + will be associated with variable + MASTER_SITES0 instead of our common + MASTER_SITES and + beta with + MASTER_SITES1. + + This is a very interesting feature which can decrease + that endless search for the correct download site. + + Just picture 2 files in DISTFILES and + 20 sites in MASTER_SITES, the sites slow as + hell where beta is carried by all sites + in MASTER_SITES, and + alpha can only be found in the 20th site. + It would be such a waste to check all of them if the + maintainer knew this beforehand, would it not? Not a good + start for that lovely weekend! + + Now that you have the idea, just imagine more + DISTFILES and more + MASTER_SITES. Surely our + distfiles survey meister would appreciate the + relief to network strain that this would bring. + + In the next sections, information will follow on the + FreeBSD implementation of this idea. We improved a bit on + OpenBSD's concept. + + + Simplified Information + + This section explains how to quickly prepare fine + grained fetching of multiple distribution files and patches + from different sites and subdirectories. We describe here a + case of simplified MASTER_SITES:n usage. + This will be sufficient for most scenarios. More detailed + information are available in . + + Some applications consist of multiple distribution files + that must be downloaded from a number of different sites. + For example, Ghostscript consists + of the core of the program, and then a large number of + driver files that are used depending on the user's printer. + Some of these driver files are supplied with the core, but + many others must be downloaded from a variety of different + sites. + + To support this, each entry in + DISTFILES may be followed by a colon and + a tag name. Each site listed in + MASTER_SITES is then followed by a colon, + and the tag that indicates which distribution files are + downloaded from this site. + + For example, consider an application with the source + split in two parts, source1.tar.gz and + source2.tar.gz, which must be + downloaded from two different sites. The port's + Makefile would include lines like . + + + + Simplified Use of <literal>MASTER_SITES:n</literal> + with One File Per Site + + MASTER_SITES= ftp://ftp1.example.com/:source1 \ + http://www.example.com/:source2 +DISTFILES= source1.tar.gz:source1 \ + source2.tar.gz:source2 + + + Multiple distribution files can have the same tag. + Continuing the previous example, suppose that there was a + third distfile, source3.tar.gz, that + is downloaded from + ftp.example2.com. The + Makefile would then be written like + . + + + + Simplified Use of <literal>MASTER_SITES:n</literal> + with More Than One File Per Site + + MASTER_SITES= ftp://ftp.example.com/:source1 \ + http://www.example.com/:source2 +DISTFILES= source1.tar.gz:source1 \ + source2.tar.gz:source2 \ + source3.tar.gz:source2 + + + + + Detailed Information + + Okay, so the previous example did not reflect the new + port's needs? In this section we will explain in detail how + the fine grained fetching mechanism + MASTER_SITES:n works and how it can + be used. + + - The first category must be a physical category (see - above). This is - necessary to make the packaging work. Virtual categories and - physical categories may be intermixed after that. + Elements can be postfixed with + :n where + n is + [^:,]+, that is, + n could conceptually be any + alphanumeric string but we will limit it to + [a-zA-Z_][0-9a-zA-Z_]+ for + now. + + Moreover, string matching is case sensitive; that + is, n is different from + N. + + However, these words cannot be used for + postfixing purposes since they yield special meaning: + default, all and + ALL (they are used internally in + item ). + Furthermore, DEFAULT is a special + purpose word (check item ). - Language specific categories always come first. For - example, if your port installs Japanese X11 fonts, then your - CATEGORIES line would read japanese - x11-fonts. + Elements postfixed with :n + belong to the group n, + :m belong to group + m and so forth. - - Specific categories are listed before less-specific ones. For - instance, an HTML editor should be listed as www - editors, not the other way around. Also, you should not - list net when the port belongs to - any of irc, mail, - mbone, news, - security, or www, as - net is included implicitly. + + Elements without a postfix are groupless, they + all belong to the special group + DEFAULT. Any elements postfixed + with DEFAULT, is just being + redundant unless an element belongs + to both DEFAULT and other groups at + the same time (check item ). + + These examples are equivalent but the first + one is preferred: + + MASTER_SITES= alpha + + MASTER_SITES= alpha:DEFAULT - x11 is used as a secondary category only - when the primary category is a natural language. In particular, - you should not put x11 in the category line - for X applications. + Groups are not exclusive, an element may belong to + several different groups at the same time and a group + can either have either several different elements or + none at all. - - Emacs modes should be - placed in the same ports category as the application - supported by the mode, not in - editors. For example, an - Emacs mode to edit source - files of some programming language should go into - lang. - + + When an element belongs to several groups + at the same time, use the comma operator + (,). + + Instead of repeating it several times, each time + with a different postfix, we can list several groups at + once in a single postfix. For instance, + :m,n,o marks an element that belongs + to group m, n and + o. + + All these examples are equivalent but the + last one is preferred: + + MASTER_SITES= alpha alpha:SOME_SITE + + MASTER_SITES= alpha:DEFAULT alpha:SOME_SITE + + MASTER_SITES= alpha:SOME_SITE,DEFAULT + + MASTER_SITES= alpha:DEFAULT,SOME_SITE - 會安裝 kernel loadable modules 的 port 請在 - CATEGORIES 內加上 kld - 這個虛擬目錄。 + All sites within a given group are sorted according + to MASTER_SORT_AWK. All groups + within MASTER_SITES and + PATCH_SITES are sorted as + well. - - misc - should not appear with any other non-virtual category. - If you have misc with something else in - your CATEGORIES line, that means you can - safely delete misc and just put the port - in that other subdirectory! + + Group semantics can be used in any of the + variables MASTER_SITES, + PATCH_SITES, + MASTER_SITE_SUBDIR, + PATCH_SITE_SUBDIR, + DISTFILES, and + PATCHFILES according to this + syntax: + + + + All MASTER_SITES, + PATCH_SITES, + MASTER_SITE_SUBDIR and + PATCH_SITE_SUBDIR elements must + be terminated with the forward slash + / character. If any elements + belong to any groups, the group postfix + :n + must come right after the terminator + /. The + MASTER_SITES:n mechanism relies + on the existence of the terminator + / to avoid confusing elements + where a :n is a valid part of the + element with occurrences where :n + denotes group n. For + compatibility purposes, since the + / terminator was not required + before in both MASTER_SITE_SUBDIR + and PATCH_SITE_SUBDIR elements, + if the postfix immediate preceding character is not + a / then :n + will be considered a valid part of the element + instead of a group postfix even if an element is + postfixed with :n. See both + + and . + + + + Detailed Use of + <literal>MASTER_SITES:n</literal> in + <varname>MASTER_SITE_SUBDIR</varname> + + MASTER_SITE_SUBDIR= old:n new/:NEW + + + + Directories within group + DEFAULT -> + old:n + + + + Directories within group + NEW -> new + + + + + + + Detailed Use of + <literal>MASTER_SITES:n</literal> with Comma + Operator, Multiple Files, Multiple Sites and + Multiple Subdirectories + + MASTER_SITES= http://site1/%SUBDIR%/ http://site2/:DEFAULT \ + http://site3/:group3 http://site4/:group4 \ + http://site5/:group5 http://site6/:group6 \ + http://site7/:DEFAULT,group6 \ + http://site8/%SUBDIR%/:group6,group7 \ + http://site9/:group8 +DISTFILES= file1 file2:DEFAULT file3:group3 \ + file4:group4,group5,group6 file5:grouping \ + file6:group7 +MASTER_SITE_SUBDIR= directory-trial:1 directory-n/:groupn \ + directory-one/:group6,DEFAULT \ + directory + + The previous example results in this + fine grained fetching. Sites are listed in the + exact order they will be used. + + + + file1 will be + fetched from + + + + MASTER_SITE_OVERRIDE + + + + http://site1/directory-trial:1/ + + + + http://site1/directory-one/ + + + + http://site1/directory/ + + + + http://site2/ + + + + http://site7/ + + + + MASTER_SITE_BACKUP + + + + + + file2 will be fetched + exactly as file1 since + they both belong to the same group + + + + MASTER_SITE_OVERRIDE + + + + http://site1/directory-trial:1/ + + + + http://site1/directory-one/ + + + + http://site1/directory/ + + + + http://site2/ + + + + http://site7/ + + + + MASTER_SITE_BACKUP + + + + + + file3 will be fetched + from + + + + MASTER_SITE_OVERRIDE + + + + http://site3/ + + + + MASTER_SITE_BACKUP + + + + + + file4 will be + fetched from + + + + MASTER_SITE_OVERRIDE + + + + http://site4/ + + + + http://site5/ + + + + http://site6/ + + + + http://site7/ + + + + http://site8/directory-one/ + + + + MASTER_SITE_BACKUP + + + + + + file5 will be fetched + from + + + + MASTER_SITE_OVERRIDE + + + + MASTER_SITE_BACKUP + + + + + + file6 will be fetched + from + + + + MASTER_SITE_OVERRIDE + + + + http://site8/ + + + + MASTER_SITE_BACKUP + + + + + + + - If your port truly does not belong anywhere else, put it in - misc. + How do I group one of the special macros from + bsd.sites.mk, for example, + SourceForge (SF)? + + This has been simplified as much as possible. See + . + + + + Detailed Use of <literal>MASTER_SITES:n</literal> + with SourceForge (<literal>SF</literal>) + + MASTER_SITES= http://site1/ SF/something/1.0:sourceforge,TEST +DISTFILES= something.tar.gz:sourceforge + + something.tar.gz will be + fetched from all sites within SourceForge. + - - If you are not sure about the category, please put a comment to - that effect in your &man.send-pr.1; submission so we can - discuss it before we import it. If you are a committer, send a note - to the &a.ports; so we can discuss it first. Too often, new ports are - imported to the wrong category only to be moved right away. - This causes unnecessary and undesirable bloat in the master - source repository. - + + How do I use this with + PATCH*? - - Proposing a new category + All examples were done with + MASTER* + but they work exactly the same for + PATCH* + ones as can be seen in . - As the Ports Collection has grown over time, various new - categories have been introduced. New categories can either - be virtual categories—those that do - not have a corresponding subdirectory in the ports tree— - or physical categories—those that - do. The following text discusses the issues involved in creating - a new physical category so that you can understand them before - you propose one. + - Our existing practice has been to avoid creating a new - physical category unless either a large number of ports would - logically belong to it, or the ports that would belong to it - are a logically distinct group that is of limited general - interest (for instance, categories related to spoken human - languages), or preferably both. + Simplified Use of + <literal>MASTER_SITES:n</literal> with + <varname>PATCH_SITES</varname> - The rationale for this is that such a change creates a - - fair amount of work for both the committers and also - for all users who track changes to the Ports Collection. In - addition, proposed category changes just naturally seem to - attract controversy. (Perhaps this is because there is no - clear consensus on when a category is too big, - nor whether categories should lend themselves to browsing (and - thus what number of categories would be an ideal number), and - so forth.) + PATCH_SITES= http://site1/ http://site2/:test +PATCHFILES= patch1:test + + + + - Here is the procedure: + + What Does Change for Ports? What Does Not? - - - Propose the new category on &a.ports;. You should - include a detailed rationale for the new category, - including why you feel the existing categories are not - sufficient, and the list of existing ports proposed to move. - (If there are new ports pending in - GNATS that would fit this - category, list them too.) If you are the maintainer and/or - submitter, respectively, mention that as it may help you - to make your case. - + + + All current ports remain the same. The + MASTER_SITES:n feature code is only + activated if there are elements postfixed with + :n like + elements according to the aforementioned syntax rules, + especially as shown in item . + - - Participate in the discussion. - + + The port targets remain the same: + checksum, + makesum, + patch, + configure, + build, etc. With the obvious + exceptions of do-fetch, + fetch-list, + master-sites and + patch-sites. - - If it seems that there is support for your idea, - file a PR which includes both the rationale and the list - of existing ports that need to be moved. Ideally, this - PR should also include patches for the following: - - Makefiles for the - new ports once they are repocopied + do-fetch: deploys + the new grouping postfixed + DISTFILES and + PATCHFILES with their matching + group elements within both + MASTER_SITES and + PATCH_SITES which use matching + group elements within both + MASTER_SITE_SUBDIR and + PATCH_SITE_SUBDIR. Check . - Makefile for the - new category + fetch-list: works + like old fetch-list with + the exception that it groups just like + do-fetch. - Makefile for the - old ports' categories + master-sites and + patch-sites: + (incompatible with older versions) only return the + elements of group DEFAULT; in + fact, they execute targets + master-sites-default and + patch-sites-default + respectively. + + Furthermore, using target either + master-sites-all or + patch-sites-all is + preferred to directly checking either + MASTER_SITES or + PATCH_SITES. Also, + directly checking is not guaranteed to work in any + future versions. Check item + for more information on these new port + targets. + + + + New port targets + + - Makefiles for ports - that depend on the old ports + There are + master-sites-n + and + patch-sites-n + targets which will list the elements of the + respective group n + within MASTER_SITES and + PATCH_SITES respectively. For + instance, both + master-sites-DEFAULT + and patch-sites-DEFAULT + will return the elements of group + DEFAULT, + master-sites-test and + patch-sites-test of + group test, and thereon. - - (for extra credit, you can include the other - files that have to change, as per the procedure - in the Committer's Guide.) + + There are new targets + master-sites-all and + patch-sites-all which do + the work of the old + master-sites and + patch-sites ones. They + return the elements of all groups as if they all + belonged to the same group with the caveat that it + lists as many MASTER_SITE_BACKUP + and MASTER_SITE_OVERRIDE as there + are groups defined within either + DISTFILES or + PATCHFILES; respectively for + master-sites-all and + patch-sites-all. - - + + + + + - - Since it affects the ports infrastructure and involves - not only performing repo-copies but also possibly running - regression tests on the build cluster, the PR should be - assigned to the &a.portmgr;. - + + <varname>DIST_SUBDIR</varname> - - If that PR is approved, a committer will need to follow - the rest of the procedure that is - - outlined in the Committer's Guide. - - + Do not let the port clutter + /usr/ports/distfiles. If the port + requires a lot of files to be fetched, or contains a file that + has a name that might conflict with other ports (for example, + Makefile), set + DIST_SUBDIR to the name of the port + (${PORTNAME} or + ${PKGNAMEPREFIX}${PORTNAME} are + fine). This will change DISTDIR from the + default /usr/ports/distfiles to + /usr/ports/distfiles/${DIST_SUBDIR}, and + in effect puts everything that is required for the port into + that subdirectory. - Proposing a new virtual category should be similar to - the above but much less involved, since no ports will - actually have to move. In this case, the only patches to - include in the PR would be those to add the new category to the - CATEGORIES of the affected ports. - + It will also look at the subdirectory with the same name + on the backup master site at + ftp.FreeBSD.org. (Setting + DISTDIR explicitly in + Makefile will not accomplish this, so + please use DIST_SUBDIR.) - - Proposing reorganizing all the categories + + This does not affect + MASTER_SITES defined in the + Makefile. + + - Occasionally someone proposes reorganizing the categories - with either a 2-level structure, or some other kind of keyword - structure. To date, nothing has come of any of these proposals - because, while they are very easy to make, the effort involved to - retrofit the entire existing ports collection with any kind of - reorganization is daunting to say the very least. Please read - the history of these proposals in the mailing list archives before - you post this idea; furthermore, you should be prepared to be - challenged to offer a working prototype. - - + + <varname>ALWAYS_KEEP_DISTFILES</varname> - - The distribution files + If the port uses binary distfiles and has a license that + requires that the source code is provided with packages + distributed in binary form, like GPL, + ALWAYS_KEEP_DISTFILES will instruct the + FreeBSD build cluster to keep a copy of the files specified in + DISTFILES. Users of these ports will + generally not need these files, so it is a good idea to only + add the source distfiles to DISTFILES when + PACKAGE_BUILDING is defined. - The second part of the Makefile describes the - files that must be downloaded in order to build the port, and where - they can be downloaded from. + - - <varname>DISTVERSION/DISTNAME</varname> + Use of + <varname>ALWAYS_KEEP_DISTFILES</varname> - DISTNAME is the name of the port as - called by the authors of the software. - DISTNAME defaults to - ${PORTNAME}-${PORTVERSION}, so override it only if necessary. - DISTNAME is only used in two places. - First, the distribution file list - (DISTFILES) defaults to - ${DISTNAME}${EXTRACT_SUFX}. - Second, the distribution file is expected to extract into a - subdirectory named WRKSRC, which defaults - to work/${DISTNAME}. + .if defined(PACKAGE_BUILDING) +DISTFILES+= foo.tar.gz +ALWAYS_KEEP_DISTFILES= yes +.endif + - Some vendor's distribution names which do not fit into the - ${PORTNAME}-${PORTVERSION}-scheme can be handled - automatically by setting DISTVERSION. - PORTVERSION and DISTNAME will be - derived automatically, but can of course be overridden. The following - table lists some examples: + When adding extra files to DISTFILES, + make sure to also add them to distinfo. + Also, the additional files will normally be extracted into + WRKDIR as well, which for some ports may + lead to undesirable side effects and require special + handling. + + - - - - - DISTVERSION - PORTVERSION - - + + <varname>MAINTAINER</varname> - - - 0.7.1d - 0.7.1.d - + 請在這裡設定你的 email 地址:-) - - 10Alpha3 - 10.a3 - + Only a single address without the comment part is + allowed as a MAINTAINER value. The format + used is user@hostname.domain. Please + do not include any descriptive text such as a real name in + this entry. That merely confuses the Ports infrastructure + and most tools using it. - - 3Beta7-pre2 - 3.b7.p2 - + The maintainer is responsible for keeping the port up to + date and making sure that it works correctly. For a detailed + description of the responsibilities of a port maintainer, refer + to The + challenge for port maintainers. - - 8:f_17 - 8f.17 - - - - + + A maintainer volunteers to keep a port in good working + order. Maintainers have the primary responsibility for their + ports, but not exclusive ownership. Ports exist for the + benefit of the community and, in reality, belong to the + community. What this means is that people other than the + maintainer can make changes to a port. Large changes to the + Ports Collection might require changes to many ports. The + FreeBSD Ports Management Team or members of other teams might + modify ports to fix dependency issues or other problems, like + a version bump for a shared library update. - - PKGNAMEPREFIX and - PKGNAMESUFFIX do not affect - DISTNAME. Also note that if - WRKSRC is equal to - work/${PORTNAME}-${PORTVERSION} - while the original source archive is named something other than - ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX}, - you should probably leave DISTNAME - alone— you are better off defining - DISTFILES than having to set both - DISTNAME and WRKSRC - (and possibly EXTRACT_SUFX). - - + Some types of fixes have blanket approval + from the Ports Management Team portmgr@FreeBSD.org, allowing any committer to fix those + categories of problems on any port. These fixes do not need + approval from the maintainer. Blanket approval does not apply + to ports that are maintained by teams like autotools@FreeBSD.org, x11@FreeBSD.org, gnome@FreeBSD.org, or kde@FreeBSD.org. These teams use + external repositories and can have work that would conflict + with changes that would normally fall under blanket + approval. - - <varname>MASTER_SITES</varname> + Blanket approval for most ports applies to these types of + fixes: - Record the directory part of the FTP/HTTP-URL pointing at the - original tarball in MASTER_SITES. Do not forget - the trailing slash (/)! + + + Most infrastructure changes to a port (that is, + modernizing, but not changing the functionality). For + example, converting to staging, + USE_GMAKE to + USES=gmake, the new + LIB_DEPENDS format... + - The make macros will try to use this - specification for grabbing the distribution file with - FETCH if they cannot find it already on the - system. + + Trivial and tested build and + runtime fixes. + + + - It is recommended that you put multiple sites on this list, - preferably from different continents. This will safeguard against - wide-area network problems. We are even planning to add support - for automatically determining the closest master site and fetching - from there; having multiple sites will go a long way towards - helping this effort. + Other changes to the port will be sent to the maintainer + for review and approval before being committed. If the + maintainer does not respond to an update request after two weeks + (excluding major public holidays), then that is considered a + maintainer timeout, and the update may be made without explicit + maintainer approval. If the maintainer does not respond within + three months, or if there have been three consecutive timeouts, + then that maintainer is considered absent without + leave, and can be replaced as the maintainer of the particular + port in question. Exceptions to this are anything maintained by + the Ports Management Team portmgr@FreeBSD.org, or the Security Officer Team security-officer@FreeBSD.org. No unauthorized + commits may ever be made to ports maintained by those + groups. - If the original tarball is part of one of the popular - archives such as X-contrib, GNU, or Perl CPAN, you may be able - refer to those sites in an easy compact form using - MASTER_SITE_* - (比如:MASTER_SITE_XCONTRIB、 - MASTER_SITE_GNU、 - MASTER_SITE_PERL_CPAN)。 Simply set - MASTER_SITES to one of these variables and - MASTER_SITE_SUBDIR to the path within the - archive. Here is an example: + We reserve the right to modify the maintainer's submission + to better match existing policies and style of the Ports + Collection without explicit blessing from the submitter or the + maintainer. Also, + large infrastructural changes can result in a port being + modified without the maintainer's consent. These kinds of + changes will never affect the port's functionality. - MASTER_SITES= ${MASTER_SITE_XCONTRIB} -MASTER_SITE_SUBDIR= applications + The Ports Management Team portmgr@FreeBSD.org reserves the right to revoke or override + anyone's maintainership for any reason, and the + Security Officer Team security-officer@FreeBSD.org reserves the right to revoke or override + maintainership for security reasons. + - These variables are defined in - /usr/ports/Mk/bsd.sites.mk. There are - new entries added all the time, so make sure to check the - latest version of this file before submitting a port. + + <varname>COMMENT</varname> - The user can also set the MASTER_SITE_* - variables in /etc/make.conf to override our - choices, and use their favorite mirrors of these popular archives - instead. - + 這是關於這個 port的一行描述。請遵守這些原則: - - <varname>EXTRACT_SUFX</varname> + + + Try to keep the COMMENT value at no longer than 70 + characters, as this line will be used by + pkg info (see pkg-info8) to + display a one-line summary of the port; + - If you have one distribution file, and it uses an odd suffix to - indicate the compression mechanism, set - EXTRACT_SUFX. + + Do not include the package name (or + version number of the software); + - For example, if the distribution file was named - foo.tgz instead of the more normal - foo.tar.gz, you would write: + + The comment must begin with a capital and end without + a period; + - DISTNAME= foo -EXTRACT_SUFX= .tgz + + Do not start with an indefinite article (that is, A or + An); + - The USE_BZIP2 and USE_ZIP - variables automatically set EXTRACT_SUFX to - .tar.bz2 or .zip as necessary. If - neither of these are set then EXTRACT_SUFX - defaults to .tar.gz. + + 名字首字大寫 (例如, Apache, JavaScript, Perl); + - - You never need to set both EXTRACT_SUFX and - DISTFILES. - - + + For lists of words, use the Oxford comma (for example, + green, red, and blue); + - - <varname>DISTFILES</varname> + + 請檢查拼字。 + + - Sometimes the names of the files to be downloaded have no - resemblance to the name of the port. For example, it might be - called source.tar.gz or similar. In other - cases the application's source code might be in several different - archives, all of which must be downloaded. + 以下是範例: - If this is the case, set DISTFILES to be a - space separated list of all the files that must be - downloaded. + COMMENT= Cat chasing a mouse all over the screen - DISTFILES= source1.tar.gz source2.tar.gz + The COMMENT variable immediately follows the + MAINTAINER variable in the Makefile. + - If not explicitly set, DISTFILES defaults to - ${DISTNAME}${EXTRACT_SUFX}. - + + <varname>PORTSCOUT</varname> - - <varname>EXTRACT_ONLY</varname> + Portscout is an automated + distfile check utility for the FreeBSD Ports Collection, + described in detail in . - If only some of the DISTFILES must be - extracted—for example, one of them is the source code, while - another is an uncompressed document—list the filenames that - must be extracted in EXTRACT_ONLY. + PORTSCOUT defines special + conditions within which the Portscout + distfile scanner is restricted. - DISTFILES= source.tar.gz manual.html -EXTRACT_ONLY= source.tar.gz + Situations where PORTSCOUT + is set include: - If none of the DISTFILES - should be uncompressed then set EXTRACT_ONLY to - the empty string. + + + When distfiles have to be ignored, whether for specific + versions, or specific minor revisions. For example, to + exclude version 8.2 from distfile + version checks because it is known to be broken, add: - EXTRACT_ONLY= - + PORTSCOUT= ignore:8.2 + - - <varname>PATCHFILES</varname> + + When specific versions or specific major and minor + revisions of a distfile must be checked. For example, if + only version 0.6.4 must be + monitored because newer versions have compatibility issues + with FreeBSD, add: - If your port requires some additional patches that are available - by FTP or HTTP, set PATCHFILES to the names of - the files and PATCH_SITES to the URL of the - directory that contains them (the format is the same as - MASTER_SITES). + PORTSCOUT= limit:^0\.6\.4 + - If the patch is not relative to the top of the source tree - (i.e., WRKSRC) because it contains some extra - pathnames, set PATCH_DIST_STRIP accordingly. For - instance, if all the pathnames in the patch have an extra - foozolix-1.0/ in front of the filenames, then set - PATCH_DIST_STRIP=-p1. + + When URLs listing the available versions differ from the + download URLs. For example, to limit distfile version + checks to the download page for the + databases/pgtune port, + add: - Do not worry if the patches are compressed; they will be - decompressed automatically if the filenames end with - .gz or .Z. + PORTSCOUT= site:http://pgfoundry.org/frs/?group_id=1000416 + + + - If the patch is distributed with some other files, such as - documentation, in a gzip'd tarball, you cannot just use - PATCHFILES. If that is the case, add the name - and the location of the patch tarball to - DISTFILES and MASTER_SITES. - Then, use the EXTRA_PATCHES variable to - point to those files and bsd.port.mk - will automatically apply them for you. In particular, do - not copy patch files into the - PATCHDIR directory—that directory may - not be writable. + + 相依性 - - The tarball will have been extracted alongside the - regular source by then, so there is no need to explicitly extract - it if it is a regular gzip'd or compress'd tarball. If you do the - latter, take extra care not to overwrite something that already - exists in that directory. Also, do not forget to add a command to - remove the copied patch in the pre-clean - target. - - + Many ports depend on other ports. This is a very convenient + feature of most Unix-like operating systems, including FreeBSD. + Multiple ports can share a common dependency, rather than + bundling that dependency with every port or package that needs + it. There are seven variables that can be used to ensure that + all the required bits will be on the user's machine. There are + also some pre-supported dependency variables for common cases, + plus a few more to control the behavior of dependencies. - - Multiple distribution files or patches from different - sites and subdirectories - (<literal>MASTER_SITES:n</literal>) + + <varname>LIB_DEPENDS</varname> - (Consider this to be a somewhat advanced topic; - those new to this document may wish to skip this section at first). - + This variable specifies the shared libraries this port + depends on. It is a list of + lib:dir + tuples where lib is the name of + the shared library, dir is the + directory in which to find it in case it is not available. + For example, - This section has information on the fetching mechanism - known as both MASTER_SITES:n and - MASTER_SITES_NN. We will refer to this - mechanism as MASTER_SITES:n - hereon. + LIB_DEPENDS= libjpeg.so:${PORTSDIR}/graphics/jpeg - A little background first. OpenBSD has a neat feature - inside both DISTFILES and - PATCHFILES variables, both files and - patches can be postfixed with :n - identifiers where n both can be - [0-9] and denote a group designation. - For example: + will check for a shared jpeg library with any version, and + descend into the graphics/jpeg + subdirectory of the ports tree to build and install it if it + is not found. - DISTFILES= alpha:0 beta:1 + The dependency is checked twice, once from within the + build target and then from within + the install target. Also, the name + of the dependency is put into the package so that + pkg install (see pkg-install8) will + automatically install it if it is not on the user's + system. + - In OpenBSD, distribution file alpha - will be associated with variable - MASTER_SITES0 instead of our common - MASTER_SITES and - beta with - MASTER_SITES1. + + <varname>RUN_DEPENDS</varname> - This is a very interesting feature which can decrease - that endless search for the correct download site. + This variable specifies executables or files this port + depends on during run-time. It is a list of + path:dir:target + tuples where path is the name of + the executable or file, dir is the + directory in which to find it in case it is not available, and + target is the target to call in + that directory. If path starts + with a slash (/), it is treated as a file + and its existence is tested with test -e; + otherwise, it is assumed to be an executable, and + which -s is used to determine if the + program exists in the search path. - Just picture 2 files in DISTFILES and - 20 sites in MASTER_SITES, the sites slow - as hell where beta is carried by all - sites in MASTER_SITES, and - alpha can only be found in the 20th - site. It would be such a waste to check all of them if - maintainer knew this beforehand, would it not? Not a good - start for that lovely weekend! + 例如, - Now that you have the idea, just imagine more - DISTFILES and more - MASTER_SITES. Surely our - distfiles survey meister would appreciate the - relief to network strain that this would bring. + RUN_DEPENDS= ${LOCALBASE}/news/bin/innd:${PORTSDIR}/news/inn \ + xmlcatmgr:${PORTSDIR}/textproc/xmlcatmgr - In the next sections, information will follow on the - FreeBSD implementation of this idea. We improved a bit on - OpenBSD's concept. + will check if the file or directory + /usr/local/news/bin/innd exists, and + build and install it from the news/inn + subdirectory of the ports tree if it is not found. It will + also see if an executable called xmlcatmgr + is in the search path, and descend into + textproc/xmlcatmgr + to build and install it if it is not found. - - Simplified information + + In this case, innd is actually an + executable; if an executable is in a place that is not + expected to be in the search path, use the full + pathname. + - This section tells you how to quickly prepare fine - grained fetching of multiple distribution files and - patches from different sites and subdirectories. We - describe here a case of simplified - MASTER_SITES:n usage. This will be - sufficient for most scenarios. However, if you need - further information, you will have to refer to the next - section. + + The official search PATH used on the + ports build cluster is - Some applications consist of multiple distribution - files that must be downloaded from a number of different - sites. For example, - Ghostscript consists of the - core of the program, and then a large number of driver - files that are used depending on the user's printer. Some - of these driver files are supplied with the core, but many - others must be downloaded from a variety of different - sites. + /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin + - To support this, each entry in - DISTFILES may be followed by a colon - and a tag name. Each site listed in - MASTER_SITES is then followed by a - colon, and the tag that indicates which distribution files - should be downloaded from this site. + The dependency is checked from within the + install target. Also, the name of + the dependency is put into the package so that + pkg install (see pkg-install8) will + automatically install it if it is not on the user's system. + The target part can be omitted if + it is the same as DEPENDS_TARGET. - For example, consider an application with the source - split in two parts, source1.tar.gz - and source2.tar.gz, which must be - downloaded from two different sites. The port's - Makefile would include lines like - . + A quite common situation is when + RUN_DEPENDS is literally the same as + BUILD_DEPENDS, especially if ported + software is written in a scripted language or if it requires + the same build and run-time environment. In this case, it is + both tempting and intuitive to directly assign one to the + other: - - Simplified use of <literal>MASTER_SITES:n</literal> - with 1 file per site + RUN_DEPENDS= ${BUILD_DEPENDS} - MASTER_SITES= ftp://ftp.example1.com/:source1 \ - ftp://ftp.example2.com/:source2 -DISTFILES= source1.tar.gz:source1 \ - source2.tar.gz:source2 - + However, such assignment can pollute run-time + dependencies with entries not defined in the port's original + BUILD_DEPENDS. This happens because of + make1's lazy evaluation of variable assignment. + Consider a Makefile with + USE_*, + which are processed by ports/Mk/bsd.*.mk + to augment initial build dependencies. For example, + USES= gmake adds + devel/gmake to + BUILD_DEPENDS. To prevent such additional + dependencies from polluting RUN_DEPENDS, + create another variable with the current content of + BUILD_DEPENDS and assign it to both + BUILD_DEPENDS and + RUN_DEPENDS: - Multiple distribution files can have the same tag. - Continuing the previous example, suppose that there was a - third distfile, source3.tar.gz, that - should be downloaded from - ftp.example2.com. The - Makefile would then be written like - . + MY_DEPENDS= some:${PORTSDIR}/devel/some \ + other:${PORTSDIR}/lang/other +BUILD_DEPENDS= ${MY_DEPENDS} +RUN_DEPENDS= ${MY_DEPENDS} - - Simplified use of <literal>MASTER_SITES:n</literal> - with more than 1 file per site + + Do not use := + to assign BUILD_DEPENDS to + RUN_DEPENDS or vice-versa. All + variables are expanded immediately, which is exactly the + wrong thing to do and almost always a failure. + + - MASTER_SITES= ftp://ftp.example1.com/:source1 \ - ftp://ftp.example2.com/:source2 -DISTFILES= source1.tar.gz:source1 \ - source2.tar.gz:source2 \ - source3.tar.gz:source2 - - + + <varname>BUILD_DEPENDS</varname> - - Detailed information + This variable specifies executables or files this port + requires to build. Like RUN_DEPENDS, it + is a list of + path:dir:target + tuples. For example, - Okay, so the previous section example did not reflect - your needs? In this section we will explain in detail how - the fine grained fetching mechanism - MASTER_SITES:n works and how you can - modify your ports to use it. + BUILD_DEPENDS= unzip:${PORTSDIR}/archivers/unzip - - - Elements can be postfixed with - :n where - n is - [^:,]+, i.e., - n could conceptually be any - alphanumeric string but we will limit it to - [a-zA-Z_][0-9a-zA-Z_]+ for - now. + will check for an executable called + unzip, and descend into the + archivers/unzip subdirectory of the + ports tree to build and install it if it is not found. - Moreover, string matching is case sensitive; - i.e., n is different from - N. + + build here means everything from + extraction to compilation. The dependency is checked from + within the extract target. The + target part can be omitted if it + is the same as DEPENDS_TARGET + + - However, the following words cannot be used for - postfixing purposes since they yield special meaning: - default, all and - ALL (they are used internally in - item ). - Furthermore, DEFAULT is a special - purpose word (check item ). - + + <varname>FETCH_DEPENDS</varname> - - Elements postfixed with :n - belong to the group n, - :m belong to group - m and so forth. - + This variable specifies executables or files this port + requires to fetch. Like the previous two, it is a list of + path:dir:target + tuples. For example, - - Elements without a postfix are groupless, i.e., - they all belong to the special group - DEFAULT. If you postfix any - elements with DEFAULT, you are just - being redundant unless you want to have an element - belonging to both DEFAULT and other - groups at the same time (check item ). + FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 - The following examples are equivalent but the - first one is preferred: + will check for an executable called + ncftp2, and descend into the + net/ncftp2 subdirectory of the ports + tree to build and install it if it is not found. - MASTER_SITES= alpha + The dependency is checked from within the + fetch target. The + target part can be omitted if it is + the same as DEPENDS_TARGET. + -MASTER_SITES= alpha:DEFAULT
- + + <varname>EXTRACT_DEPENDS</varname> - - Groups are not exclusive, an element may belong to - several different groups at the same time and a group - can either have either several different elements or - none at all. Repeated elements within the same group - will be simply that, repeated elements. - + This variable specifies executables or files this port + requires for extraction. Like the previous, it is a list of + path:dir:target + tuples. For example, - - When you want an element to belong to several - groups at the same time, you can use the comma - operator (,). + EXTRACT_DEPENDS= unzip:${PORTSDIR}/archivers/unzip - Instead of repeating it several times, each time - with a different postfix, we can list several groups - at once in a single postfix. For instance, - :m,n,o marks an element that - belongs to group m, - n and o. + will check for an executable called + unzip, and descend into the + archivers/unzip subdirectory of the + ports tree to build and install it if it is not found. - All the following examples are equivalent but the - last one is preferred: + The dependency is checked from within the + extract target. The + target part can be omitted if it + is the same as DEPENDS_TARGET. - MASTER_SITES= alpha alpha:SOME_SITE + + Use this variable only if the extraction does not + already work (the default assumes tar) + and cannot be made to work using + USES=tar, USES=lha or + USES=zip described in . + + -MASTER_SITES= alpha:DEFAULT alpha:SOME_SITE + + <varname>PATCH_DEPENDS</varname> -MASTER_SITES= alpha:SOME_SITE,DEFAULT + This variable specifies executables or files this port + requires to patch. Like the previous, it is a list of + path:dir:target + tuples. For example, -MASTER_SITES= alpha:DEFAULT,SOME_SITE - + PATCH_DEPENDS= ${NONEXISTENT}:${PORTSDIR}/java/jfc:extract - - All sites within a given group are sorted - according to MASTER_SORT_AWK. All - groups within MASTER_SITES and - PATCH_SITES are sorted as - well. - + will descend into the java/jfc + subdirectory of the ports tree to extract it. - - Group semantics can be used in any of the - following variables MASTER_SITES, - PATCH_SITES, - MASTER_SITE_SUBDIR, - PATCH_SITE_SUBDIR, - DISTFILES, and - PATCHFILES according to the - following syntax: + The dependency is checked from within the + patch target. The + target part can be omitted if it + is the same as DEPENDS_TARGET. + - - - All MASTER_SITES, - PATCH_SITES, - MASTER_SITE_SUBDIR and - PATCH_SITE_SUBDIR elements must - be terminated with the forward slash - / character. If any elements - belong to any groups, the group postfix - :n - must come right after the terminator - /. The - MASTER_SITES:n mechanism relies - on the existence of the terminator - / to avoid confusing elements - where a :n is a valid part of - the element with occurrences where - :n denotes group - n. For compatibility purposes, - since the / terminator was not - required before in both - MASTER_SITE_SUBDIR and - PATCH_SITE_SUBDIR elements, if - the postfix immediate preceding character is not - a / then :n - will be considered a valid part of the element - instead of a group postfix even if an element is - postfixed with :n. See both - - and . + + <varname>USES</varname> - - Detailed use of - <literal>MASTER_SITES:n</literal> in - <varname>MASTER_SITE_SUBDIR</varname> + Parameters can be added to define different features and + dependencies used by the port. They are specified by adding + this line to the Makefile: - MASTER_SITE_SUBDIR= old:n new/:NEW + USES= feature[:arguments] - - - Directories within group - DEFAULT -> old:n - + For the complete list of values, please see + . - - Directories within group - NEW -> new - - - + + USES cannot be assigned after + inclusion of bsd.port.pre.mk. + + - - Detailed use of - <literal>MASTER_SITES:n</literal> with comma - operator, multiple files, multiple sites and - multiple subdirectories + + <varname>USE_<replaceable>*</replaceable></varname> - MASTER_SITES= http://site1/%SUBDIR%/ http://site2/:DEFAULT \ - http://site3/:group3 http://site4/:group4 \ - http://site5/:group5 http://site6/:group6 \ - http://site7/:DEFAULT,group6 \ - http://site8/%SUBDIR%/:group6,group7 \ - http://site9/:group8 -DISTFILES= file1 file2:DEFAULT file3:group3 \ - file4:group4,group5,group6 file5:grouping \ - file6:group7 -MASTER_SITE_SUBDIR= directory-trial:1 directory-n/:groupn \ - directory-one/:group6,DEFAULT \ - directory + Several variables exist to define common dependencies + shared by many ports. Their use is optional, but helps to + reduce the verbosity of the port + Makefiles. Each of them is styled as + USE_*. These + variables may be used only in the port + Makefiles and + ports/Mk/bsd.*.mk. They are not meant + for user-settable options — use + PORT_OPTIONS for that purpose. - The previous example results in the - following fine grained fetching. Sites are - listed in the exact order they will be - used. + + It is always incorrect to set any + USE_* in + /etc/make.conf. For instance, + setting - - - file1 will be - fetched from + USE_GCC=X.Y - - - MASTER_SITE_OVERRIDE - + (where X.Y is version number) would add a dependency + on gccXY for every port, including + lang/gccXY itself! + - - http://site1/directory-trial:1/ - + + <varname>USE_<replaceable>*</replaceable></varname> - - http://site1/directory-one/ - + + + + Variable + Means + + - - http://site1/directory/ - + + + USE_GCC + The port requires GCC (gcc or + g++) to build. Some ports need any + GCC version, some require modern, recent versions. It + is typically set to any (in this + case, GCC from base would be used on versions of FreeBSD + that still have it, or lang/gcc + port would be installed when default C/C++ compiler is + Clang); or yes (means always use + stable, modern GCC from lang/gcc + port). The exact version can also be specified, with + a value such as 4.7. The minimal + required version can be specified as + 4.6+. The GCC from the base system + is used when it satisfies the requested version, + otherwise an appropriate compiler is built from the + port, and CC and + CXX are adjusted + accordingly. + + + +
- - http://site2/ - + Variables related to gmake and + configure are described in + , while + autoconf, + automake and + libtool are described in + . + Perl related variables are + described in . X11 variables are + listed in . + deals with GNOME and + with KDE related variables. + documents Java variables, while + contains information on + Apache, + PHP and PEAR modules. + Python is discussed in + , while + Ruby in + . + provides variables used for SDL + applications and finally, + contains information on + Xfce. +
- - http://site7/ - + + Minimal Version of a Dependency - - MASTER_SITE_BACKUP - - -
+ A minimal version of a dependency can be specified in any + *_DEPENDS + except LIB_DEPENDS using this + syntax: - - file2 will be - fetched exactly as - file1 since they - both belong to the same group + p5-Spiffy>=0.26:${PORTSDIR}/devel/p5-Spiffy - - - MASTER_SITE_OVERRIDE - + The first field contains a dependent package name, which + must match the entry in the package database, a comparison + sign, and a package version. The dependency is satisfied if + p5-Spiffy-0.26 or newer is installed on the machine. + - - http://site1/directory-trial:1/ - + + Notes on Dependencies - - http://site1/directory-one/ - + As mentioned above, the default target to call when a + dependency is required is + DEPENDS_TARGET. It defaults to + install. This is a user variable; it is + never defined in a port's Makefile. If + the port needs a special way to handle a dependency, use the + :target part of + *_DEPENDS + instead of redefining + DEPENDS_TARGET. - - http://site1/directory/ - + When running make clean, the port + dependencies are automatically cleaned too. If this is not + desirable, define + NOCLEANDEPENDS in the environment. This + may be particularly desirable if the port has something that + takes a long time to rebuild in its dependency list, such as + KDE, GNOME or Mozilla. - - http://site2/ - + To depend on another port unconditionally, use the + variable ${NONEXISTENT} as the first field + of BUILD_DEPENDS or + RUN_DEPENDS. Use this only when + the source of the other port is needed. Compilation time can + be saved by specifying the target too. For + instance - - http://site7/ - + BUILD_DEPENDS= ${NONEXISTENT}:${PORTSDIR}/graphics/jpeg:extract - - MASTER_SITE_BACKUP - - - + will always descend to the jpeg port + and extract it. + - - file3 will be - fetched from + + Circular Dependencies Are Fatal - - - MASTER_SITE_OVERRIDE - + + Do not introduce any circular dependencies into the + ports tree! + - - http://site3/ - + The ports building technology does not tolerate circular + dependencies. If one is introduced, someone, somewhere in the + world, will have their FreeBSD installation broken + almost immediately, with many others quickly to follow. These + can really be hard to detect. If in doubt, before making + that change, make sure to run: + cd /usr/ports; make index. That process + can be quite slow on older machines, but it may be able to + save a large number of people, including yourself, + a lot of grief in the process. + - - MASTER_SITE_BACKUP - - - + + Problems Caused by Automatic Dependencies - - file4 will be - fetched from + Dependencies must be declared either explicitly or by + using the + OPTIONS framework. + Using other methods like automatic detection complicates + indexing, which causes problems for port and package + management. - - - MASTER_SITE_OVERRIDE - + + Wrong Declaration of an Optional Dependency - - http://site4/ - + .include <bsd.port.pre.mk> - - http://site5/ - +.if exists(${LOCALBASE}/bin/foo) +LIB_DEPENDS= libbar.so:${PORTSDIR}/foo/bar +.endif + - - http://site6/ - + The problem with trying to automatically add dependencies + is that files and settings outside an individual port can + change at any time. For example: an index is built, then a + batch of ports are installed. But one of the ports installs + the tested file. The index is now incorrect, because an + installed port unexpectedly has a new dependency. The index + may still be wrong even after rebuilding if other ports also + determine their need for dependencies based on the existence + of other files. - - http://site7/ - + + Correct Declaration of an Optional Dependency - - http://site8/directory-one/ - + OPTIONS_DEFINE= BAR +BAR_DESC= Calling cellphones via bar - - MASTER_SITE_BACKUP - - - +BAR_LIB_DEPENDS= libbar.so:${PORTSDIR}/foo/bar + - - file5 will be - fetched from + Testing option variables is the correct method. It will + not cause inconsistencies in the index of a batch of ports, + provided the options were defined prior to the index build. + Simple scripts can then be used to automate the building, + installation, and updating of these ports and their + packages. + - - - MASTER_SITE_OVERRIDE - + + <varname>USE_<replaceable>*</replaceable></varname> and + <varname>WANT_<replaceable>*</replaceable></varname> - - MASTER_SITE_BACKUP - - - + USE_* are + set by the port maintainer to define software on which this + port depends. A port that needs Firefox would set - - file6 will be - fetched from + USE_FIREFOX= yes - - - MASTER_SITE_OVERRIDE - + Some USE_* + can accept version numbers or other parameters. For example, + a port that requires Apache 2.2 would set - - http://site8/ - + USE_APACHE= 22 - - MASTER_SITE_BACKUP - - - - - - -
- + For more control over dependencies in some cases, + WANT_* are + available to more precisely specify what is needed. For + example, consider the mail/squirrelmail port. This + port needs some PHP modules, which are listed in + USE_PHP: - - How do I group one of the special variables from - bsd.sites.mk, e.g., - MASTER_SITE_SOURCEFORGE? + USE_PHP= session mhash gettext mbstring pcre openssl xml - See . + Those modules may be available in CLI or web versions, so + the web version is selected with + WANT_*: - - Detailed use of - <literal>MASTER_SITES:n</literal> with - <varname>MASTER_SITE_SOURCEFORGE</varname> + WANT_PHP_WEB= yes - MASTER_SITES= http://site1/ ${MASTER_SITE_SOURCEFORGE:S/$/:sourceforge,TEST/} -DISTFILES= something.tar.gz:sourceforge - + Available + USE_* and + WANT_* are + defined in the files in + /usr/ports/Mk. + + - something.tar.gz will be - fetched from all sites within - MASTER_SITE_SOURCEFORGE. - + + <varname>MASTERDIR</varname> - - How do I use this with PATCH* - variables? + If the port needs to build slightly different versions of + packages by having a variable (for instance, resolution, or + paper size) take different values, create one subdirectory per + package to make it easier for users to see what to do, but try + to share as many files as possible between ports. Typically, by + using variables cleverly, only a very short + Makefile is needed in all but one of the + directories. In the sole Makefile, use + MASTERDIR to specify the directory where the + rest of the files are. Also, use a variable as part of PKGNAMESUFFIX + so the packages will have different names. - All examples were done with - MASTER* variables but they work - exactly the same for PATCH* ones as - can be seen in . + This will be best demonstrated by an example. This is part + of japanese/xdvi300/Makefile; - - Simplified use of - <literal>MASTER_SITES:n</literal> with - <varname>PATCH_SITES</varname>. + PORTNAME= xdvi +PORTVERSION= 17 +PKGNAMEPREFIX= ja- +PKGNAMESUFFIX= ${RESOLUTION} - PATCH_SITES= http://site1/ http://site2/:test -PATCHFILES= patch1:test - - - - +# default +RESOLUTION?= 300 +.if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \ + ${RESOLUTION} != 300 && ${RESOLUTION} != 400 +pre-everything:: + @${ECHO_MSG} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\"" + @${ECHO_MSG} "Possible values are: 118, 240, 300 (default) and 400." + @${FALSE} +.endif - - What does change for ports? What does not? + japanese/xdvi300 also has all + the regular patches, package files, etc. Running + make there, it will take the default value + for the resolution (300) and build the port normally. - - - All current ports remain the same. The - MASTER_SITES:n feature code is only - activated if there are elements postfixed with - :n like - elements according to the aforementioned syntax rules, - especially as shown in item . - + As for other resolutions, this is the + entire + xdvi118/Makefile: - - The port targets remain the same: - checksum, - makesum, - patch, - configure, - build, etc. With the obvious - exceptions of do-fetch, - fetch-list, - master-sites and - patch-sites. + RESOLUTION= 118 +MASTERDIR= ${.CURDIR}/../xdvi300 - - - do-fetch: deploys the - new grouping postfixed - DISTFILES and - PATCHFILES with their matching - group elements within both - MASTER_SITES and - PATCH_SITES which use matching - group elements within both - MASTER_SITE_SUBDIR and - PATCH_SITE_SUBDIR. Check . - +.include "${MASTERDIR}/Makefile" - - fetch-list: works - like old fetch-list with - the exception that it groups just like - do-fetch. - + (xdvi240/Makefile and + xdvi400/Makefile are similar). + MASTERDIR definition tells + bsd.port.mk that the regular set of + subdirectories like FILESDIR and + SCRIPTDIR are to be found under + xdvi300. The + RESOLUTION=118 line will override the + RESOLUTION=300 line in + xdvi300/Makefile and the port will be built + with resolution set to 118. + - - master-sites and - patch-sites: - (incompatible with older versions) only return the - elements of group DEFAULT; in - fact, they execute targets - master-sites-default and - patch-sites-default - respectively. + + Man Pages - Furthermore, using target either - master-sites-all or - patch-sites-all is - preferred to directly checking either - MASTER_SITES or - PATCH_SITES. Also, - directly checking is not guaranteed to work in any - future versions. Check item - for more information on these new port - targets. - + If the port anchors its man tree somewhere other than + PREFIX, use + MANDIRS to specify those directories. Note + that the files corresponding to manual pages must be placed in + pkg-plist along with the rest of the files. + The purpose of MANDIRS is to enable automatic + compression of manual pages, therefore the file names are + suffixed with .gz. + - - + + Info Files - - New port targets + If the package needs to install GNU info + files, list them in INFO (without the + trailing .info), one entry per document. + These files are assumed to be installed to + PREFIX/INFO_PATH. Change + INFO_PATH if the package uses a different + location. However, this is not recommended. These entries + contain just the path relative to + PREFIX/INFO_PATH. For example, + lang/gcc34 installs info files to + PREFIX/INFO_PATH/gcc34, and + INFO will be something like this: - - - There are - master-sites-n - and - patch-sites-n - targets which will list the elements of the - respective group n - within MASTER_SITES and - PATCH_SITES respectively. For - instance, both - master-sites-DEFAULT and - patch-sites-DEFAULT will - return the elements of group - DEFAULT, - master-sites-test and - patch-sites-test of group - test, and thereon. - + INFO= gcc34/cpp gcc34/cppinternals gcc34/g77 ... - - There are new targets - master-sites-all and - patch-sites-all which do - the work of the old - master-sites and - patch-sites ones. They - return the elements of all groups as if they all - belonged to the same group with the caveat that it - lists as many - MASTER_SITE_BACKUP and - MASTER_SITE_OVERRIDE as there - are groups defined within either - DISTFILES or - PATCHFILES; respectively for - master-sites-all and - patch-sites-all. - - - - - - + Appropriate installation/de-installation code will be + automatically added to the temporary + pkg-plist before package + registration. + - - <varname>DIST_SUBDIR</varname> + + Makefile Options - Do not let your port clutter - /usr/ports/distfiles. If your port requires a - lot of files to be fetched, or contains a file that has a name that - might conflict with other ports (e.g., - Makefile), set DIST_SUBDIR - to the name of the port (${PORTNAME} or - ${PKGNAMEPREFIX}${PORTNAME} - should work fine). This will change - DISTDIR from the default - /usr/ports/distfiles to - /usr/ports/distfiles/DIST_SUBDIR, - and in effect puts everything that is required for your port into - that subdirectory. + Many applications can be built with optional or differing + configurations. Examples include choice of natural (human) + language, GUI versus command-line, or type of database to + support. Users may need a different configuration than the + default, so the ports system provides hooks the port author can + use to control which variant will be built. Supporting these + options properly will make users happy, and effectively provide + two or more ports for the price of one. - It will also look at the subdirectory with the same name on the - backup master site at ftp.FreeBSD.org. - (Setting DISTDIR explicitly in your - Makefile will not accomplish this, so please use - DIST_SUBDIR.) + + <varname>OPTIONS</varname> - - This does not affect the MASTER_SITES you - define in your Makefile. - - + + Background - - <varname>ALWAYS_KEEP_DISTFILES</varname> + OPTIONS_* + give the user installing the port a dialog showing the + available options, and then saves those options to + ${PORT_DBDIR}/${OPTIONS_NAME}/options. + The next time the port is built, the options are + reused. PORT_DBDIR defaults to + /var/db/ports. + OPTIONS_NAME is to the port origin with + an underscore as the space separator, for example, for + dns/bind99 it will be + dns_bind99. - If your port uses binary distfiles and has a license that - requires that the source code is provided with packages distributed - in binary form, e.g. GPL, ALWAYS_KEEP_DISTFILES - will instruct the &os; build cluster to keep a copy of the files - specified in DISTFILES. Users of these ports - will generally not need these files, so it is a good idea to only - add the source distfiles to DISTFILES when - PACKAGE_BUILDING is defined. - + When the user runs make config (or + runs make build for the first time), the + framework checks for + ${PORT_DBDIR}/${OPTIONS_NAME}/options. + If that file does not exist, the values of + OPTIONS_* + are used, and a dialog box is + displayed where the options can be enabled or disabled. + Then options is saved and the + configured variables are used when building the port. - - Use of <varname>ALWAYS_KEEP_DISTFILES</varname>. - .if defined(PACKAGE_BUILDING) -DISTFILES+= foo.tar.gz -ALWAYS_KEEP_DISTFILES= yes -.endif - + If a new version of the port adds new + OPTIONS, the dialog will be presented to + the user with the saved values of old + OPTIONS prefilled. - When adding extra files to DISTFILES, - make sure you also add them to distinfo. - Also, the additional files will normally be extracted into - WRKDIR as well, which for some ports may - lead to undesirable sideeffects and require special handling. - - + make showconfig shows the saved + configuration. Use make rmconfig + to remove the saved configuration. + - - <varname>MAINTAINER</varname> + + Syntax - Set your mail-address here. Please. :-) + OPTIONS_DEFINE contains a list of + OPTIONS to be used. These are + independent of each other and are not grouped: - Note that only a single address without the comment part is - allowed as a MAINTAINER value. - The format used should be user@hostname.domain. - Please do not include any descriptive text such as your real - name in this entry—that merely confuses - bsd.port.mk. + OPTIONS_DEFINE= OPT1 OPT2 - The maintainer is responsible for keeping the port up to - date, and ensuring the port works correctly. - For a detailed description of the responsibilities of a port - maintainer, refer to the The - challenge for port maintainers section. + Once defined, OPTIONS are + described (optional, but strongly recommended): - Changes to the port will be sent to the maintainer of - a port for a review and an approval before being committed. - If the maintainer does not respond to an update - request after two weeks (excluding major public - holidays), then that is considered a maintainer timeout, and the - update may be made without explicit maintainer approval. If the - maintainer does not respond within three months, then that - maintainer is considered absent without leave, and can be - replaced as the maintainer of the particular port in question. - Exceptions to this are anything maintained by the &a.portmgr;, or - the &a.security-officer;. No unauthorized commits may ever be - made to ports maintained by those groups. + OPT1_DESC= Describe OPT1 +OPT2_DESC= Describe OPT2 +OPT3_DESC= Describe OPT3 +OPT4_DESC= Describe OPT4 +OPT5_DESC= Describe OPT5 +OPT6_DESC= Describe OPT6 - We reserve the right to modify the maintainer's submission - to better match existing policies and style of the Ports - Collection without explicit blessing from the submitter. - Also, large infrastructural changes can result in - a port being modified without maintainer's consent. - This kind of changes will never affect the port's - functionality. + ports/Mk/bsd.options.desc.mk + has descriptions for many common OPTIONS. + While often useful, override them if the + description is insufficient for the port. - The &a.portmgr; reserves the right to revoke or override - anyone's maintainership for any reason, and the &a.security-officer; - reserves the right to revoke or override maintainership for security - reasons. - + + When describing options, view it from the + perspective of the user: What functionality does it + change? + and Why would I want to enable this? + Do not just repeat the name. For example, describing the + NLS option as + include NLS support does not help the user, + who can already see the option name but may not know what + it means. Describing it as Native Language Support + via gettext utilities is much more + helpful. + - - <varname>COMMENT</varname> + + Option names are always in all uppercase. They + cannot use mixed case or lowercase. + - This is a one-line description of the port. - Please do not include the package name (or - version number of the software) in the comment. The comment - should begin with a capital and end without a period. Here - is an example: + OPTIONS can be grouped as radio + choices, where only one choice from each group is + allowed: - COMMENT= A cat chasing a mouse all over the screen + OPTIONS_SINGLE= SG1 +OPTIONS_SINGLE_SG1= OPT3 OPT4 - The COMMENT variable should immediately follow the MAINTAINER - variable in the Makefile. + + There must be one of each + OPTIONS_SINGLE group selected at all + times for the options to be valid. One option of each + group must be added to + OPTIONS_DEFAULT. + - Please try to keep the COMMENT line less than 70 - characters, as it is displayed to users as a one-line - summary of the port. - + OPTIONS can be grouped as radio + choices, where none or only one choice from each group + is allowed: - - Dependencies + OPTIONS_RADIO= RG1 +OPTIONS_RADIO_RG1= OPT7 OPT8 - Many ports depend on other ports. There are seven variables that - you can use to ensure that all the required bits will be on the - user's machine. There are also some pre-supported dependency - variables for common cases, plus a few more to control the behavior - of dependencies. + OPTIONS can also be grouped as + multiple-choice lists, where + at least one option must be + enabled: - - <varname>LIB_DEPENDS</varname> + OPTIONS_MULTI= MG1 +OPTIONS_MULTI_MG1= OPT5 OPT6 - This variable specifies the shared libraries this port depends - on. It is a list of - lib:dir:target - tuples where lib is the name of the - shared library, dir is the - directory in which to find it in case it is not available, and - target is the target to call in that - directory. For example, - LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg - will check for a shared jpeg library with major version 9, and - descend into the graphics/jpeg subdirectory - of your ports tree to build and install it if it is not found. - The target part can be omitted if it is - equal to DEPENDS_TARGET (which defaults to - install). + OPTIONS can also be grouped as + multiple-choice lists, where none or any + option can be enabled: - - The lib part is a regular - expression which is being looked up in the - ldconfig -r output. Values such as - intl.[5-7] and intl are - allowed. The first pattern, - intl.[5-7], will match any of: - intl.5, intl.6 or - intl.7. The second pattern, - intl, will match any version of the - intl library. - + OPTIONS_GROUP= GG1 +OPTIONS_GROUP_GG1= OPT9 OPT10 - The dependency is checked twice, once from within the - extract target and then from within the - install target. Also, the name of the - dependency is put into the package so that - &man.pkg.add.1; will automatically install it if it is - not on the user's system. - + OPTIONS are unset by default, + unless they are listed in + OPTIONS_DEFAULT: - - <varname>RUN_DEPENDS</varname> + OPTIONS_DEFAULT= OPT1 OPT3 OPT6 - This variable specifies executables or files this port depends - on during run-time. It is a list of - path:dir:target - tuples where path is the name of the - executable or file, dir is the - directory in which to find it in case it is not available, and - target is the target to call in that - directory. If path starts with a slash - (/), it is treated as a file and its existence - is tested with test -e; otherwise, it is - assumed to be an executable, and which -s is - used to determine if the program exists in the search path. + OPTIONS definitions must appear + before the inclusion of + bsd.port.options.mk. + PORT_OPTIONS values can only be tested + after the inclusion of + bsd.port.options.mk. Inclusion of + bsd.port.pre.mk can be used instead, + too, and is still widely used in ports written before the + introduction of bsd.port.options.mk. + But be aware that some variables will not work as expected + after the inclusion of bsd.port.pre.mk, + typically some + USE_* + flags. - For example, + + Simple Use of <varname>OPTIONS</varname> - RUN_DEPENDS= ${LOCALBASE}/etc/innd:${PORTSDIR}/news/inn \ - xmlcatmgr:${PORTSDIR}/textproc/xmlcatmgr + OPTIONS_DEFINE= FOO BAR +FOO_DESC= Option foo support +BAR_DESC= Feature bar support - will check if the file or directory - /usr/local/etc/innd exists, and build and - install it from the news/inn subdirectory of - the ports tree if it is not found. It will also see if an - executable called xmlcatmgr is in the search - path, and descend into the textproc/xmlcatmgr - subdirectory of your ports tree to build and install it if it is - not found. +OPTIONS_DEFAULT=FOO - - In this case, innd is actually an - executable; if an executable is in a place that is not expected - to be in the search path, you should use the full - pathname. - +# Will add --with-foo / --without-foo +FOO_CONFIGURE_WITH= foo +BAR_RUN_DEPENDS= bar:${PORTSDIR}/bar/bar - - The official search PATH used on the ports - build cluster is +.include <bsd.port.mk> + - /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin - + + Check for Unset Port + <varname>OPTIONS</varname> - The dependency is checked from within the - install target. Also, the name of the - dependency is put into the package so that - &man.pkg.add.1; will automatically install it if it is - not on the user's system. The target - part can be omitted if it is the same as - DEPENDS_TARGET. - + .if ! ${PORT_OPTIONS:MEXAMPLES} +CONFIGURE_ARGS+=--without-examples +.endif - - <varname>BUILD_DEPENDS</varname> + The form shown above is discouraged. The preferred + method is using a configure knob to really enable and + disable the feature to match the option: - This variable specifies executables or files this port - requires to build. Like RUN_DEPENDS, it is a - list of - path:dir:target - tuples. For example, BUILD_DEPENDS= - unzip:${PORTSDIR}/archivers/unzip will check - for an executable called unzip, and descend - into the archivers/unzip subdirectory of your - ports tree to build and install it if it is not found. + # Will add --with-examples / --without-examples +EXAMPLES_CONFIGURE_WITH= examples + - - build here means everything from extraction to - compilation. The dependency is checked from within the - extract target. The - target part can be omitted if it is - the same as DEPENDS_TARGET - - + + Practical Use of <varname>OPTIONS</varname> - - <varname>FETCH_DEPENDS</varname> + OPTIONS_DEFINE= EXAMPLES - This variable specifies executables or files this port - requires to fetch. Like the previous two, it is a list of - path:dir:target - tuples. For example, FETCH_DEPENDS= - ncftp2:${PORTSDIR}/net/ncftp2 will check for an - executable called ncftp2, and descend into the - net/ncftp2 subdirectory of your ports tree to - build and install it if it is not found. +OPTIONS_SINGLE= BACKEND +OPTIONS_SINGLE_BACKEND= MYSQL PGSQL BDB - The dependency is checked from within the - fetch target. The - target part can be omitted if it is the - same as DEPENDS_TARGET. - +OPTIONS_MULTI= AUTH +OPTIONS_MULTI_AUTH= LDAP PAM SSL - - <varname>EXTRACT_DEPENDS</varname> +EXAMPLES_DESC= Install extra examples +MYSQL_DESC= Use MySQL as backend +PGSQL_DESC= Use PostgreSQL as backend +BDB_DESC= Use Berkeley DB as backend +LDAP_DESC= Build with LDAP authentication support +PAM_DESC= Build with PAM support +SSL_DESC= Build with OpenSSL support - This variable specifies executables or files this port - requires for extraction. Like the previous, it is a list of - path:dir:target - tuples. For example, EXTRACT_DEPENDS= - unzip:${PORTSDIR}/archivers/unzip will check - for an executable called unzip, and descend - into the archivers/unzip subdirectory of - your ports tree to build and install it if it is not found. +OPTIONS_DEFAULT= PGSQL LDAP SSL - The dependency is checked from within the - extract target. The - target part can be omitted if it is the - same as DEPENDS_TARGET. +# Will add USE_PGSQL=yes +PGSQL_USE= pgsql=yes +# Will add --enable-postgres / --disable-postgres +PGSQL_CONFIGURE_ENABLE= postgres - - Use this variable only if the extraction does not already - work (the default assumes gzip) and cannot - be made to work using USE_ZIP or - USE_BZIP2 described in . - - +ICU_LIB_DEPENDS= libicuuc.so:${PORTSDIR}/devel/icu - - <varname>PATCH_DEPENDS</varname> +# Will add --with-examples / --without-examples +EXAMPLES_CONFIGURE_WITH= examples - This variable specifies executables or files this port - requires to patch. Like the previous, it is a list of - path:dir:target - tuples. For example, PATCH_DEPENDS= - ${NONEXISTENT}:${PORTSDIR}/java/jfc:extract - will descend into the - java/jfc subdirectory of your ports tree to - extract it. +# Check other OPTIONS - The dependency is checked from within the - patch target. The - target part can be omitted if it is the - same as DEPENDS_TARGET. - +.include <bsd.port.mk> + + - - <varname>USE_<replaceable>*</replaceable></varname> + + Default Options - A number of variables exist in order to encapsulate common - dependencies that many ports have. Although their use is - optional, they can help to reduce the verbosity of the port - Makefiles. Each of them is styled - as USE_*. The - usage of these variables is restricted to the port - Makefiles and - ports/Mk/bsd.*.mk and is not designed - to encapsulate user-settable options — use - WITH_* and - WITHOUT_* - for that purpose. + These options are always on by default. + + + DOCS — build and install + documentation. + + + + NLS — Native Language + Support. + + + + EXAMPLES — build and + install examples. + + + + IPV6 — IPv6 protocol + support. + + + - It is always incorrect to set - any USE_* - in /etc/make.conf. For instance, - setting USE_GCC=3.2 - would adds a dependency on gcc32 for every port, - including gcc32 itself! + There is no need to add these to + OPTIONS_DEFAULT. To have them active, + and show up in the options selection dialog, however, they + must be added to OPTIONS_DEFINE. + + - - The <varname>USE_<replaceable>*</replaceable></varname> - variables + + Feature Auto-Activation - - - - Variable + When using a GNU configure script, keep an eye on which + optional features are activated by auto-detection. Explicitly + disable optional features that are not needed by + adding --without-xxx or + --disable-xxx in + CONFIGURE_ARGS. - Means - - + + Wrong Handling of an Option - - - USE_BZIP2 + .if ${PORT_OPTIONS:MFOO} +LIB_DEPENDS+= libfoo.so:${PORTSDIR}/devel/foo +CONFIGURE_ARGS+= --enable-foo +.endif + - The port's tarballs are compressed with - bzip2. - + In the example above, imagine a library libfoo is + installed on the system. The user does not want this + application to use libfoo, so he toggled the option off in the + make config dialog. But the application's + configure script detects the library present in the system and + includes its support in the resulting executable. Now when + the user decides to remove libfoo from the system, the ports + system does not protest (no dependency on libfoo was recorded) + but the application breaks. - - USE_ZIP + + Correct Handling of an Option - The port's tarballs are compressed with - zip. - + FOO_LIB_DEPENDS= libfoo.so:${PORTSDIR}/devel/foo +# Will add --enable-foo / --disable-foo +FOO_CONFIGURE_ENABLE= foo + - - USE_BISON + + Under some circumstances, the shorthand conditional + syntax can cause problems with complex constructs. The + errors are usually + Malformed conditional, an alternative + syntax can be used. - The port uses bison for - building. - + .if !empty(VARIABLE:MVALUE) - - USE_CDRTOOLS + as an alternative to - 該 port 需要 cdrecord, - 無論是 sysutils/cdrtoolssysutils/cdrtools-cjk 哪一種的 - cdrecord 皆可,視使用者偏好而定 - 。 - + .if ${VARIABLE:MVALUE} + + - - USE_GCC + + Options Helpers - The port requires a specific version of - gcc to build. The exact version can be - specified with value such as 3.2. - The minimal required version can be specified as - 3.2+. The gcc from - the base system is used when it satisfies the requested - version, otherwise an appropriate gcc is - compiled from ports and the CC and - CXX variables are adjusted. - + There are some macros to help simplify conditional values + which differ based on the options set. - - -
+ + <varname>OPTIONS_SUB</varname> - Variables related to gmake and - the configure script are described in - , while - autoconf, - automake and - libtool are described in - . Perl - related variables are described in . - X11 variables are listed in . deals with GNOME and with KDE related variables. documents Java variables, while contains information on - Apache, PHP - and PEAR modules. Python is discussed - in , while - Ruby in . - provides variables used for - SDL applications and finally, - contains information on - Xfce. + If OPTIONS_SUB is set to + yes then each of the options added to + OPTIONS_DEFINE will be added to + PLIST_SUB and + SUB_LIST, for example: -
+ OPTIONS_DEFINE= OPT1 +OPTIONS_SUB= yes - - Minimal version of a dependency + is equivalent to: - A minimal version of a dependency can be specified in any - *_DEPENDS variable except - LIB_DEPENDS using the following - syntax: + OPTIONS_DEFINE= OPT1 - p5-Spiffy>=0.26:${PORTSDIR}/devel/p5-Spiffy +.include <bsd.port.options.mk> - The first field contains a dependent package name, - which must match the entry in the package database, - a comparison sign, and a package version. The dependency - is satisfied if p5-Spiffy-0.26 or newer is installed on - the machine. - +.if ${PORT_OPTIONS:MOPT1} +PLIST_SUB+= OPT1="" NO_OPT1="@comment " +SUB_LIST+= OPT1="" NO_OPT1="@comment " +.else +PLIST_SUB+= OPT1="@comment " NO_OPT1="" +SUB_LIST+= OPT1="@comment " NO_OPT1="" +.endif - - Notes on dependencies + + The value of OPTIONS_SUB is + ignored. Setting it to any value will add + PLIST_SUB and + SUB_LIST entries for + all options. + + - As mentioned above, the default target to call when a - dependency is required is DEPENDS_TARGET. - It defaults to install. This is a user - variable; it is never defined in a port's - Makefile. If your port needs a special way - to handle a dependency, use the :target part of - the *_DEPENDS variables instead of redefining - DEPENDS_TARGET. + + <varname><replaceable>OPT</replaceable>_USE</varname> and <varname><replaceable>OPT</replaceable>_USE_OFF</varname> - When you type make clean, its dependencies - are automatically cleaned too. If you do not wish this to happen, - define the variable NOCLEANDEPENDS in your - environment. This may be particularly desirable if the port - has something that takes a long time to rebuild in its - dependency list, such as KDE, GNOME or Mozilla. + When option OPT is selected, + for each + key=value + pair in + OPT_USE, + value is appended to the + corresponding + USE_KEY. If + value has spaces in it, replace + them with commas and they will be changed back to spaces + during processing. + OPT_USE_OFF + works the same way, but when OPT is + not selected. For example: - To depend on another port unconditionally, use the - variable ${NONEXISTENT} as the first field - of BUILD_DEPENDS or - RUN_DEPENDS. Use this only when you need to - get the source of the other port. You can often save - compilation time by specifying the target too. For - instance + OPTIONS_DEFINE= OPT1 +OPT1_USE= mysql=yes xorg=x11,xextproto,xext,xrandr +OPT1_USE_OFF= openssl=yes - BUILD_DEPENDS= ${NONEXISTENT}:${PORTSDIR}/graphics/jpeg:extract + is equivalent to: - will always descend to the jpeg port and extract it. - + OPTIONS_DEFINE= OPT1 - - Circular dependencies are fatal +.include <bsd.port.options.mk> - - Do not introduce any circular dependencies into the - ports tree! - +.if ${PORT_OPTIONS:MOPT1} +USE_MYSQL= yes +USE_XORG= x11 xextproto xext xrandr +.else +USE_OPENSSL= yes +.endif + - The ports building technology does not tolerate - circular dependencies. If you introduce one, you will have - someone, somewhere in the world, whose FreeBSD installation will - break almost immediately, with many others quickly to follow. - These can really be hard to detect; if in doubt, before - you make that change, make sure you have done the following: - cd /usr/ports; make index. That process - can be quite slow on older machines, but you may be able to - save a large number of people—including yourself— - a lot of grief in the process. - + + <varname><replaceable>OPT</replaceable>_CONFIGURE_ENABLE</varname> - + When option OPT is selected, + for each entry in + OPT_CONFIGURE_ENABLE + then + --enable-entry + is appended to CONFIGURE_ARGS. When + option OPT is + not selected, + --disable-entry + is appended to CONFIGURE_ARGS. An + optional argument can be specified with an + = symbol. This argument is only appended + to the + --enable-entry + configure option. For example: - - <varname>MASTERDIR</varname> + OPTIONS_DEFINE= OPT1 OPT2 +OPT1_CONFIGURE_ENABLE= test1 test2 +OPT2_CONFIGURE_ENABLE= test2=exhaustive - If your port needs to build slightly different versions of - packages by having a variable (for instance, resolution, or paper - size) take different values, create one subdirectory per package to - make it easier for users to see what to do, but try to share as many - files as possible between ports. Typically you only need a very short - Makefile in all but one of the directories if you - use variables cleverly. In the sole Makefile, - you can use MASTERDIR to specify the directory - where the rest of the files are. Also, use a variable as part of - PKGNAMESUFFIX so - the packages will have different names. + is equivalent to: - This will be best demonstrated by an example. This is part of - japanese/xdvi300/Makefile; + OPTIONS_DEFINE= OPT1 - PORTNAME= xdvi -PORTVERSION= 17 -PKGNAMEPREFIX= ja- -PKGNAMESUFFIX= ${RESOLUTION} - : -# default -RESOLUTION?= 300 -.if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \ - ${RESOLUTION} != 300 && ${RESOLUTION} != 400 - @${ECHO_MSG} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\"" - @${ECHO_MSG} "Possible values are: 118, 240, 300 (default) and 400." - @${FALSE} +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MOPT1} +CONFIGURE_ARGS+= --enable-test1 --enable-test2 +.else +CONFIGURE_ARGS+= --disable-test1 --disable-test2 +.endif + +.if ${PORT_OPTIONS:MOPT2} +CONFIGURE_ARGS+= --enable-test2=exhaustive +.else +CONFIGURE_ARGS+= --disable-test2 .endif + - japanese/xdvi300 also has all the regular - patches, package files, etc. If you type make - there, it will take the default value for the resolution (300) and - build the port normally. + + <varname><replaceable>OPT</replaceable>_CONFIGURE_WITH</varname> - As for other resolutions, this is the entire - xdvi118/Makefile: + When option OPT is selected, + for each entry in + OPT_CONFIGURE_WITH + then + --with-entry + is appended to CONFIGURE_ARGS. When + option OPT is + not selected, + --without-entry + is appended to CONFIGURE_ARGS. An + optional argument can be specified with an + = symbol. This argument is only appended + to the + --with-entry + configure option. For example: - RESOLUTION= 118 -MASTERDIR= ${.CURDIR}/../xdvi300 + OPTIONS_DEFINE= OPT1 OPT2 +OPT1_CONFIGURE_WITH= test1 +OPT2_CONFIGURE_WITH= test2=exhaustive -.include "${MASTERDIR}/Makefile" + is equivalent to: - (xdvi240/Makefile and - xdvi400/Makefile are similar). The - MASTERDIR definition tells - bsd.port.mk that the regular set of - subdirectories like FILESDIR and - SCRIPTDIR are to be found under - xdvi300. The RESOLUTION=118 - line will override the RESOLUTION=300 line in - xdvi300/Makefile and the port will be built with - resolution set to 118. - + OPTIONS_DEFINE= OPT1 OPT2 - - Manpages +.include <bsd.port.options.mk> - The MAN[1-9LN] variables will automatically add - any manpages to pkg-plist (this means you must - not list manpages in the - pkg-plist—see generating PLIST for more). It also - makes the install stage automatically compress or uncompress manpages - depending on the setting of NOMANCOMPRESS in - /etc/make.conf. +.if ${PORT_OPTIONS:MOPT1} +CONFIGURE_ARGS+= --with-test1 +.else +CONFIGURE_ARGS+= --without-test1 +.endif - If your port tries to install multiple names for manpages using - symlinks or hardlinks, you must use the MLINKS - variable to identify these. The link installed by your port will - be destroyed and recreated by bsd.port.mk - to make sure it points to the correct file. Any manpages - listed in MLINKS must not be listed in the - pkg-plist. +.if ${PORT_OPTIONS:MOPT2} +CONFIGURE_ARGS+= --with-test2=exhaustive +.else +CONFIGURE_ARGS+= --without-test2 +.endif + - To specify whether the manpages are compressed upon installation, - use the MANCOMPRESSED variable. This variable can - take three values, yes, no and - maybe. yes means manpages are - already installed compressed, no means they are - not, and maybe means the software already respects - the value of NOMANCOMPRESS so - bsd.port.mk does not have to do anything - special. + + <varname><replaceable>OPT</replaceable>_CONFIGURE_ON</varname> and <varname><replaceable>OPT</replaceable>_CONFIGURE_OFF</varname> - MANCOMPRESSED is automatically set to - yes if USE_IMAKE is set and - NO_INSTALL_MANPAGES is not set, and to - no otherwise. You do not have to explicitly define - it unless the default is not suitable for your port. + When option OPT is selected, + the value of + OPT_CONFIGURE_ON, + if defined, is appended to + CONFIGURE_ARGS. + OPT_CONFIGURE_OFF + works the same way, but when OPT is + not selected. For example: - If your port anchors its man tree somewhere other than - MANPREFIX, you can use the - MANPREFIX to set it. Also, if only manpages in - certain sections go in a non-standard place, such as some perl modules - ports, you can set individual man paths using - MANsectPREFIX (where - sect is one of 1-9, - L or N). + OPTIONS_DEFINE= OPT1 +OPT1_CONFIGURE_ON= --add-test +OPT1_CONFIGURE_OFF= --no-test - If your manpages go to language-specific subdirectories, set the - name of the languages to MANLANG. The value of - this variable defaults to "" (i.e., English - only). + is equivalent to: - Here is an example that puts it all together. + OPTIONS_DEFINE= OPT1 - MAN1= foo.1 -MAN3= bar.3 -MAN4= baz.4 -MLINKS= foo.1 alt-name.8 -MANLANG= "" ja -MAN3PREFIX= ${PREFIX}/share/foobar -MANCOMPRESSED= yes +.include <bsd.port.options.mk> - This states that six files are installed by this port; +.if ${PORT_OPTIONS:MOPT1} +CONFIGURE_ARGS+= --add-test +.else +CONFIGURE_ARGS+= --no-test +.endif + - ${MANPREFIX}/man/man1/foo.1.gz -${MANPREFIX}/man/ja/man1/foo.1.gz -${PREFIX}/share/foobar/man/man3/bar.3.gz -${PREFIX}/share/foobar/man/ja/man3/bar.3.gz -${MANPREFIX}/man/man4/baz.4.gz -${MANPREFIX}/man/ja/man4/baz.4.gz + + <varname><replaceable>OPT</replaceable>_CMAKE_ON</varname> + and + <varname><replaceable>OPT</replaceable>_CMAKE_OFF</varname> - Additionally ${MANPREFIX}/man/man8/alt-name.8.gz - may or may not be installed by your port. Regardless, a - symlink will be made to join the foo(1) manpage and - alt-name(8) manpage. + When option OPT is selected, + the value of + OPT_CMAKE_ON, + if defined, is appended to CMAKE_ARGS. + OPT_CMAKE_OFF + works the same way, but when OPT is + not selected. For example: - If only some manpages are translated, you can use several variables - dynamically created from MANLANG content: + OPTIONS_DEFINE= OPT1 +OPT1_CMAKE_ON= -DTEST:BOOL=true +OPT1_CMAKE_OFF= -DOPTIMIZE:BOOL=true - MANLANG= "" de ja -MAN1= foo.1 -MAN1_EN= bar.1 -MAN3_DE= baz.3 + is equivalent to: - This translates into this list of files: + OPTIONS_DEFINE= OPT1 - ${MANPREFIX}/man/man1/foo.1.gz -${MANPREFIX}/man/de/man1/foo.1.gz -${MANPREFIX}/man/ja/man1/foo.1.gz -${MANPREFIX}/man/man1/bar.1.gz -${MANPREFIX}/man/de/man3/baz.3.gz - +.include <bsd.port.options.mk> - - Info files +.if ${PORT_OPTIONS:MOPT1} +CMAKE_ARGS+= -DTEST:BOOL=true +.else +CMAKE_ARGS+= -DOPTIMIZE:BOOL=true +.endif + - If your package needs to install GNU info files, they should be - listed in the INFO variable (without the trailing - .info), one entry per document. These files - are assumed to be installed to - PREFIX/INFO_PATH. - You can change INFO_PATH if your package uses - a different location. However, this is not recommended. These entries - contain just the path relative to - PREFIX/INFO_PATH. - For example, lang/gcc33 installs - info files to - PREFIX/INFO_PATH/gcc33, - and INFO will be something like this: - INFO= gcc33/cpp gcc33/cppinternals gcc33/g77 ... - - Appropriate installation/de-installation code will be automatically - added to the temporary pkg-plist before package - registration. - + + <varname><replaceable>OPT</replaceable>_QMAKE_ON</varname> + and + <varname><replaceable>OPT</replaceable>_QMAKE_OFF</varname> - - Makefile Options + When option OPT is selected, + the value of + OPT_QMAKE_ON, + if defined, is appended to QMAKE_ARGS. + OPT_QMAKE_OFF + works the same way, but when OPT is + not selected. For example: - Some large applications can be built in a number of - configurations, adding functionality if one of a number of - libraries or applications is available. Examples include - choice of natural (human) language, GUI versus command-line, - or type of database to support. Since not all users - want those libraries or applications, the ports system - provides hooks that the port author can use to control which - configuration should be built. Supporting these properly will - make users happy, and effectively provide 2 or more ports for the - price of one. + OPTIONS_DEFINE= OPT1 +OPT1_QMAKE_ON= -DTEST:BOOL=true +OPT1_QMAKE_OFF= -DPRODUCTION:BOOL=true - - Knobs + is equivalent to: - - <varname>WITH_<replaceable>*</replaceable></varname> and - <varname>WITHOUT_<replaceable>*</replaceable></varname> + OPTIONS_DEFINE= OPT1 - These variables are designed to be set by the system - administrator. There are many that are standardized in - ports/KNOBS - file. +.include <bsd.port.options.mk> - When creating a port, do not make knob names specific to a - given application. For example in Avahi port, use - WITHOUT_MDNS instead of - WITHOUT_AVAHI_MDNS. +.if ${PORT_OPTIONS:MOPT1} +QMAKE_ARGS+= -DTEST:BOOL=true +.else +QMAKE_ARGS+= -DPRODUCTION:BOOL=true +.endif + - - You should not assume that a - WITH_* - necessarily has a corresponding - WITHOUT_* - variable and vice versa. In general, the default is - simply assumed. - + + <varname><replaceable>OPT</replaceable>_IMPLIES</varname> - - Unless otherwise specified, these variables are only - tested for being set or not set, rather than being set to - some kind of variable such as YES or - NO. - + Provides a way to add dependencies between + options. - - Common <varname>WITH_<replaceable>*</replaceable></varname> - and <varname>WITHOUT_<replaceable>*</replaceable></varname> - variables + When OPT is selected, all the + options listed in this variable will be selected too. Using + the OPT_CONFIGURE_ENABLE + described earlier to illustrate: - - - - Variable + OPTIONS_DEFINE= OPT1 OPT2 +OPT1_IMPLIES= OPT2 - Means - - +OPT1_CONFIGURE_ENABLE= opt1 +OPT2_CONFIGURE_ENABLE= opt2 - - - WITHOUT_NLS + Is equivalent to: - If set, says that internationalization is not - needed, which can save compile time. By default, - internationalization is used. - + OPTIONS_DEFINE= OPT1 OPT2 - - WITH_OPENSSL_BASE +.include <bsd.port.options.mk> - Use the version of OpenSSL in the base system. - +.if ${PORT_OPTIONS:MOPT1} +CONFIGURE_ARGS+= --enable-opt1 +.else +CONFIGURE_ARGS+= --disable-opt1 +.endif - - WITH_OPENSSL_PORT +.if ${PORT_OPTIONS:MOPT2} || ${PORT_OPTIONS:MOPT1} +CONFIGURE_ARGS+= --enable-opt2 +.else +CONFIGURE_ARGS+= --disable-opt2 +.endif - Installs the version of OpenSSL from - security/openssl, - even if the base is up to date. - + + Simple Use of + <varname><replaceable>OPT</replaceable>_IMPLIES</varname> - - WITHOUT_X11 + This port has a X11 option, and a + GNOME option that needs the + X11 option to be selected to + build. - If the port can be built both with and without - X support, then it should normally be built with - X support. If this variable is defined, then - the version that does not have X support should - be built instead. - - - -
+ OPTIONS_DEFINE= X11 GNOME +OPTIONS_DEFAULT= X11 -
+X11_USE= xorg=xi,xextproto +GNOME_USE= gnome=gtk30 +GNOME_IMPLIES= X11 + +
- - Knob naming - It is recommended that porters use like-named knobs, for the - benefit of end-users and to help keep the number of knob names down. - A list of popular knob names can be found in the - KNOBS - file. + + <varname><replaceable>OPT</replaceable>_PREVENTS</varname> + and + <varname><replaceable>OPT</replaceable>_PREVENTS_MSG</varname> - Knob names should reflect what the knob is and does. - When a port has a lib-prefix in the PORTNAME - the lib-prefix should be dropped in knob naming. + Provides a way to add conflicts between options. - - + When OPT is selected, all the + options listed in this variable must be un-selected. If + OPT_PREVENTS_MSG + is also selected, its content will be shown, explaining why + they conflict. For example: - - <varname>OPTIONS</varname> + OPTIONS_DEFINE= OPT1 OPT2 +OPT1_PREVENTS= OPT2 +OPT1_PREVENTS_MSG= OPT1 and OPT2 enable conflicting options - - Background - The OPTIONS variable gives the user who - installs the port a dialog with the available options and saves - them to /var/db/ports/portname/options. - Next time when the port has to be rebuild, the options are reused. - Never again you will have to remember all the twenty - WITH_* and - WITHOUT_* options you - used to build this port! + Is roughly equivalent to: - When the user runs make config (or runs - make build for the first time), the framework will - check for - /var/db/ports/portname/options. - If that file does not exist, it will use the values of - OPTIONS to create a dialogbox where the options - can be enabled or disabled. Then the - options file is saved and the selected - variables will be used when building the port. + OPTIONS_DEFINE= OPT1 OPT2 - If a new version of the port adds new - OPTIONS, the dialog will be presented to the - user, with the saved values of old OPTIONS - prefilled. +.include <bsd.port.options.mk> - Use make showconfig to see the saved - configuration. Use make rmconfig to remove the - saved configuration. - +.if ${PORT_OPTIONS:MOPT2} || ${PORT_OPTIONS:MOPT1} +BROKEN= Option OPT1 conflicts with OPT2 (select only one) +.endif - - Syntax - The syntax for the OPTIONS variable is: + The only difference is that the first one will write an + error after running make config, + suggesting changing the selected options. -OPTIONS= OPTION "descriptive text" default ... - + + Simple Use of + <varname><replaceable>OPT</replaceable>_PREVENTS</varname> - The value for default is either ON or - OFF. Multiple repetitions of these three fields - are allowed. + This port has X509 and + SCTP options. Both options add + patches, but the patches conflict with each other, so they + cannot be selected at the same time. - OPTIONS definition must appear before - the inclusion of bsd.port.pre.mk. - The WITH_* and WITHOUT_* - variables can only be tested after the inclusion of - bsd.port.pre.mk. - + OPTIONS_DEFINE= X509 SCTP - - Example - - Simple use of <varname>OPTIONS</varname> - OPTIONS= FOO "Enable option foo" On \ - BAR "Support feature bar" Off +SCTP_PATCHFILES= ${PORTNAME}-6.8p1-sctp-2573.patch.gz:-p1 +SCTP_CONFIGURE_WITH= sctp -.include <bsd.port.pre.mk> +X509_PATCH_SITES= http://www.roumenpetrov.info/openssh/x509/:x509 +X509_PATCHFILES= ${PORTNAME}-7.0p1+x509-8.5.diff.gz:-p1:x509 +X509_PREVENTS= SCTP +X509_PREVENTS_MSG= X509 and SCTP patches conflict + + -.if defined(WITHOUT_FOO) -CONFIGURE_ARGS+= --without-foo -.else -CONFIGURE_ARGS+= --with-foo + + <varname><replaceable>OPT</replaceable>_VARS</varname> + and + <varname><replaceable>OPT</replaceable>_VARS_OFF</varname> + + Provides a generic way to set and append to + variables. + + Before using + OPT_VARS and + OPT_VARS_OFF, + see if there is already a more specific helper available in + . + + When option OPT is selected, + and OPT_VARS + defined, + key=value + and + key+=value + pairs are evaluated from + OPT_VARS. An + = cause the existing value of + KEY to be overwritten, an + += appends to the value. + OPT_VARS_OFF + works the same way, but when OPT is + not selected. + + OPTIONS_DEFINE= OPT1 OPT2 OPT3 +OPT1_VARS= also_build+=bin1 +OPT2_VARS= also_build+=bin2 +OPT3_VARS= bin3_build=yes +OPT3_VARS_OFF= bin3_build=no + +MAKE_ARGS= ALSO_BUILD="${ALSO_BUILD}" BIN3_BUILD="${BIN3_BUILD}" + + is equivalent to: + + OPTIONS_DEFINE= OPT1 OPT2 + +MAKE_ARGS= ALSO_BUILD="${ALSO_BUILD}" BIN3_BUILD="${BIN3_BUILD}" + +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MOPT1} +ALSO_BUILD+= bin1 .endif -.if defined(WITH_BAR) -RUN_DEPENDS+= bar:${PORTSDIR}/bar/bar +.if ${PORT_OPTIONS:MOPT2} +ALSO_BUILD+= bin2 .endif -.include <bsd.port.post.mk> - - +.if ${PORT_OPTIONS:MOPT2} +BIN3_BUILD= yes +.else +BIN3_BUILD= no +.endif - + + Values containing whitespace must be enclosed in + quotes: - - Feature auto-activation + OPT_VARS= foo="bar baz" - When using a GNU configure script, keep an eye on which optional - features are activated by auto-detection. Explicitly disable - optional features you do not wish to be used by passing respective - --without-xxx or --disable-xxx - in CONFIGURE_ARGS. + This is due to the way make1 variable expansion + deals with whitespace. When OPT_VARS= foo=bar + baz is expanded, the variable ends up + containing two strings, foo=bar and + baz. But the submitter probably + intended there to be only one string, foo=bar + baz. Quoting the value prevents whitespace + from being used as a delimiter. + + - - Wrong handling of an option - .if defined(WITH_FOO) -LIB_DEPENDS+= foo.0:${PORTSDIR}/devel/foo -CONFIGURE_ARGS+= --enable-foo -.endif - + + Dependencies, + <varname><replaceable>OPT</replaceable>_<replaceable>DEPTYPE</replaceable></varname> + and + <varname><replaceable>OPT</replaceable>_<replaceable>DEPTYPE</replaceable>_OFF</varname> - In the example above, imagine a library libfoo is installed on - the system. User does not want this application to use libfoo, so he - toggled the option off in the make config dialog. - But the application's configure script detects the library present in - the system and includes its support in the resulting executable. Now - when user decides to remove libfoo from the system, the ports system - does not protest (no dependency on libfoo was recorded) but the - application breaks. + For any of these dependency types: - - Correct handling of an option - .if defined(WITH_FOO) -LIB_DEPENDS+= foo.0:${PORTSDIR}/devel/foo -CONFIGURE_ARGS+= --enable-foo + + + PKG_DEPENDS + + + + EXTRACT_DEPENDS + + + + PATCH_DEPENDS + + + + FETCH_DEPENDS + + + + BUILD_DEPENDS + + + + LIB_DEPENDS + + + + RUN_DEPENDS + + + + When option OPT is + selected, the value of + OPT_DEPTYPE, + if defined, is appended to + DEPTYPE. + OPT_DEPTYPE_OFF + works the same, but when OPT is + not + selected. For example: + + OPTIONS_DEFINE= OPT1 +OPT1_LIB_DEPENDS= liba.so:${PORTSDIR}/devel/a +OPT1_LIB_DEPENDS_OFF= libb.so:${PORTSDIR}/devel/b + + is equivalent to: + + OPTIONS_DEFINE= OPT1 + +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MOPT1} +LIB_DEPENDS+= liba.so:${PORTSDIR}/devel/a .else -CONFIGURE_ARGS+= --disable-foo +LIB_DEPENDS+= libb.so:${PORTSDIR}/devel/b .endif - + - In the second example, the library libfoo is explicitly disabled. - The configure script does not enable related features in the - application, despite library's presence in the system. - + + Generic Variables Replacement, + <varname><replaceable>OPT</replaceable>_<replaceable>VARIABLE</replaceable></varname> + and + <varname><replaceable>OPT</replaceable>_<replaceable>VARIABLE</replaceable>_OFF</varname> - + For any of these variables: - - Specifying the working directory + + + ALL_TARGET + - Each port is extracted in to a working directory, which must be - writable. The ports system defaults to having the - DISTFILES unpack in to a directory called - ${DISTNAME}. In other words, if you have - set: + + BROKEN + - PORTNAME= foo -PORTVERSION= 1.0 + + CATEGORIES + - then the port's distribution files contain a top-level directory, - foo-1.0, and the rest of the files are located - under that directory. + + CFLAGS + - There are a number of variables you can override if that is not the - case. + + CONFIGURE_ENV + - - <varname>WRKSRC</varname> + + CONFLICTS + - The variable lists the name of the directory that is created when - the application's distfiles are extracted. If our previous example - extracted into a directory called foo (and not - foo-1.0) you would write: + + CONFLICTS_BUILD + - WRKSRC= ${WRKDIR}/foo + + CONFLICTS_INSTALL + - or possibly + + CPPFLAGS + - WRKSRC= ${WRKDIR}/${PORTNAME} - + + CXXFLAGS + - - <varname>NO_WRKSUBDIR</varname> + + DESKTOP_ENTRIES + - If the port does not extract in to a subdirectory at all then - you should set NO_WRKSUBDIR to indicate - that. + + DISTFILES + - NO_WRKSUBDIR= yes - - + + EXTRA_PATCHES + - - <varname>CONFLICTS</varname> + + EXTRACT_ONLY + - If your package cannot coexist with other packages - (because of file conflicts, runtime incompatibility, etc.), - list the other package names in the CONFLICTS - variable. You can use shell globs like * and - ? here. Packages names should be - enumerated the same way they appear in - /var/db/pkg. Please make sure that - CONFLICTS does not match this port's - package itself, or else forcing its installation with - FORCE_PKG_REGISTER will no longer work. - + + GH_ACCOUNT + - - CONFLICTS automatically sets - IGNORE, which is more fully documented - in . - + + GH_PROJECT + - When removing one of several conflicting ports, it is advisable to - retain the CONFLICTS entries in those other ports - for a few months to cater for users who only update once in a - while. - + + GH_TAGNAME + - - Installing files + + GH_TUPLE + - - INSTALL_* macros + + IGNORE + - Do use the macros provided in bsd.port.mk - to ensure correct modes and ownership of files in your own - *-install targets. + + INFO + - - INSTALL_PROGRAM is a command to install - binary executables. + INSTALL_TARGET - INSTALL_SCRIPT is a command to install - executable scripts. + LDFLAGS - INSTALL_KLD is a command to install - kernel loadable modules. Some architectures don't like it when - the modules are stripped, therefor use this command instead - of INSTALL_PROGRAM. + LIBS - INSTALL_DATA is a command to install - sharable data. + MAKE_ARGS - INSTALL_MAN is a command to install - manpages and other documentation (it does not compress - anything). + MAKE_ENV - - These are basically the install command with - all the appropriate flags. - + + PATCHFILES + - - Stripping Binaries + + PATCH_SITES + - Do not strip binaries manually unless you have to. All binaries - should be stripped, but the INSTALL_PROGRAM - macro will install and strip a binary at the same time (see the next - section). + + PLIST_DIRS + - If you need to strip a file, but do not wish to use the - INSTALL_PROGRAM macro, - ${STRIP_CMD} will strip your program. This is - typically done within the post-install - target. For example: + + PLIST_DIRSTRY + - post-install: - ${STRIP_CMD} ${PREFIX}/bin/xdl + + PLIST_FILES + - Use the &man.file.1; command on the installed executable to - check whether the binary is stripped or not. If it does not say - not stripped, it is stripped. Additionally, - &man.strip.1; will not strip a previously stripped program; it - will instead exit cleanly. - + + PLIST_SUB + - - Installing a whole tree of files + + PORTDOCS + - Sometimes, there is a need to install a big number of files, - preserving their hierarchical organization, ie. copying over a whole - directory tree from WRKSRC to a target directory - under PREFIX. + + PORTEXAMPLES + - Two macros exists for this situation. The advantage of using - these macros instead of cp is that they guarantee - proper file ownership and permissions on target files. First macro, - COPYTREE_BIN, will set all the installed files to - be executable, thus being suitable for installing into - PREFIX/bin. The second - macro, COPYTREE_SHARE, does not set executable - permissions on files, and is therefore suitable for installing files - under PREFIX/share - target. + + SUB_FILES + - post-install: - ${MKDIR} ${EXAMPLESDIR} - (cd ${WRKSRC}/examples/ && ${COPYTREE_SHARE} \* ${EXAMPLESDIR}) + + SUB_LIST + - This example will install the contents of - examples directory in the vendor distfile to the - proper examples location of your port. + + TEST_TARGET + - post-install: - ${MKDIR} ${DATADIR}/summer - (cd ${WRKSRC}/temperatures/ && ${COPYTREE_SHARE} "June July August" ${DATADIR}/summer/) + + USES + + - And this example will install the data of summer months to the - summer subdirectory of a - DATADIR. + When option OPT is + selected, the value of + OPT_ABOVEVARIABLE, + if defined, is appended to + ABOVEVARIABLE. + OPT_ABOVEVARIABLE_OFF + works the same way, but when OPT is + not + selected. For example: - Additional find arguments can be passed via - the third argument to the COPYTREE_* macros. - For example, to install all files from the first example except - Makefiles, one can use the following command. + OPTIONS_DEFINE= OPT1 +OPT1_USES= gmake +OPT1_CFLAGS_OFF= -DTEST - post-install: - ${MKDIR} ${EXAMPLESDIR} - (cd ${WRKSRC}/examples/ && \ - ${COPYTREE_SHARE} \* ${EXAMPLESDIR} "! -name Makefile") + is equivalent to: - Note that these macros does not add the installed files to - pkg-plist. You still need to list them. - + OPTIONS_DEFINE= OPT1 - - Install additional documentation +.include <bsd.port.options.mk> - If your software has some documentation other than the standard - man and info pages that you think is useful for the user, install it - under PREFIX/share/doc. - This can be done, like the previous item, in the - post-install target. +.if ${PORT_OPTIONS:MOPT1} +USES+= gmake +.else +CFLAGS+= -DTEST +.endif - Create a new directory for your port. The directory name should - reflect what the port is. This usually means - PORTNAME. However, if you - think the user might want different versions of the port to be - installed at the same time, you can use the whole - PKGNAME. + + Some variables are not in this list, in particular + PKGNAMEPREFIX and + PKGNAMESUFFIX. This is intentional. A + port must not change its name when + its option set changes. + - Make the installation dependent on the variable - NOPORTDOCS so that users can disable it in - /etc/make.conf, like this: + + Some of these variables, at least + ALL_TARGET and + INSTALL_TARGET, have their default + values set after the options are + processed. - post-install: -.if !defined(NOPORTDOCS) - ${MKDIR} ${DOCSDIR} - ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${DOCSDIR} -.endif + With these lines in the + Makefile: - Here are some handy variables and how they are expanded - by default when used - in the Makefile: + ALL_TARGET= all +DOCS_ALL_TARGET= doc + + If the DOCS option is enabled, + ALL_TARGET will have a final value of + all doc; if the option is disabled, it + would have a value of all. + + With only the options helper line in the + Makefile: + + DOCS_ALL_TARGET= doc + + If the DOCS option is enabled, + ALL_TARGET will have a final value of + doc; if the option is disabled, it + would have a value of all. + + + + + + Additional Build Targets, + <buildtarget xml:lang="en"><replaceable>TARGET</replaceable>-<replaceable>OPT</replaceable>-on</buildtarget> + and + <buildtarget xml:lang="en"><replaceable>TARGET</replaceable>-<replaceable>OPT</replaceable>-on</buildtarget> + + These Makefile targets can accept + optional extra build targets: + - DATADIR gets expanded to - PREFIX/share/PORTNAME. + pre-fetch - DATADIR_REL gets expanded to - share/PORTNAME. + do-fetch - DOCSDIR gets expanded to - PREFIX/share/doc/PORTNAME. + post-fetch - DOCSDIR_REL gets expanded to - share/doc/PORTNAME. + pre-extract - EXAMPLESDIR gets expanded to - PREFIX/share/examples/PORTNAME. + do-extract - EXAMPLESDIR_REL gets expanded to - share/examples/PORTNAME. + post-extract + + + pre-patch + + + + do-patch + + + + post-patch + + + + pre-configure + + + + do-configure + + + + post-configure + + + + pre-build + + + + do-build + + + + post-build + + + + pre-install + + + + do-install + + + + post-install + + + + post-stage + + + + pre-package + + + + do-package + + + + post-package + - - NOPORTDOCS only controls additional - documentation installed in DOCSDIR. It does not - apply to standard man pages and info pages. Things installed in - DATADIR and EXAMPLESDIR - are controlled by NOPORTDATA and - NOPORTEXAMPLES, respectively. - + When option OPT is + selected, the target + TARGET-OPT-on, + if defined, is executed after + TARGET. + TARGET-OPT-off + works the same way, but when OPT is + not selected. For example: - These variables are exported to PLIST_SUB. - Their values will appear there as pathnames relative to - PREFIX if possible. - That is, share/doc/PORTNAME - will be substituted for %%DOCSDIR%% - in the packing list by default, and so on. - (See more on pkg-plist substitution - here.) + OPTIONS_DEFINE= OPT1 - All conditionally installed documentation files and directories should - be included in pkg-plist with the - %%PORTDOCS%% prefix, for example: +post-patch-OPT1-on: + @${REINPLACE_CMD} -e '/opt1/d' ${WRKSRC}/Makefile +post-patch-OPT1-off: + @${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${LOCALBASE}/bin/|' ${WRKSRC}/Makefile - %%PORTDOCS%%%%DOCSDIR%%/AUTHORS -%%PORTDOCS%%%%DOCSDIR%%/CONTACT -%%PORTDOCS%%@dirrm %%DOCSDIR%% + is equivalent to: - As an alternative to enumerating the documentation files - in pkg-plist, a port can set the variable - PORTDOCS to a list of file names and shell - glob patterns to add to the final packing list. - The names will be relative to DOCSDIR. - Therefore, a port that utilizes PORTDOCS and - uses a non-default location for its documentation should set - DOCSDIR accordingly. - If a directory is listed in PORTDOCS - or matched by a glob pattern from this variable, - the entire subtree of contained files and directories will be - registered in the final packing list. If NOPORTDOCS - is defined then files and directories listed in - PORTDOCS would not be installed and neither - would be added to port packing list. - Installing the documentation at PORTDOCS - as shown above remains up to the port itself. - A typical example of utilizing PORTDOCS - looks as follows: + OPTIONS_DEFINE= OPT1 - PORTDOCS= README.* ChangeLog docs/* +.include <bsd.port.options.mk> - - The equivalents of PORTDOCS for files - installed under DATADIR and - EXAMPLESDIR are PORTDATA - and PORTEXAMPLES, respectively. +post-patch: +.if ${PORT_OPTIONS:MOPT1} + @${REINPLACE_CMD} -e '/opt1/d' ${WRKSRC}/Makefile +.else + @${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${LOCALBASE}/bin/|' ${WRKSRC}/Makefile +.endif + + + - You can also use the pkg-message file to - display messages upon installation. See the section on using - pkg-message for details. - The pkg-message file does not need to be - added to pkg-plist. - - + + Specifying the Working Directory - - Subdirectories under PREFIX + Each port is extracted into a working directory, which must + be writable. The ports system defaults to having + DISTFILES unpack in to a directory called + ${DISTNAME}. In other words, if the + Makefile has: - Try to let the port put things in the right subdirectories of - PREFIX. Some ports lump everything and put it in - the subdirectory with the port's name, which is incorrect. Also, - many ports put everything except binaries, header files and manual - pages in a subdirectory of lib, which does - not work well with the BSD paradigm. Many of the files should be - moved to one of the following: etc - (setup/configuration files), libexec - (executables started internally), sbin - (executables for superusers/managers), info - (documentation for info browser) or share - (architecture independent files). See &man.hier.7; for details; - the rules governing - /usr pretty much apply to - /usr/local too. The exception are ports - dealing with USENET news. They may use - PREFIX/news as a destination - for their files. - + PORTNAME= foo +PORTVERSION= 1.0 - + then the port's distribution files contain a top-level + directory, foo-1.0, and the rest of the + files are located under that directory. -
+ A number of variables can be overridden if that is + not the case. - - Special considerations + + <varname>WRKSRC</varname> - There are some more things you have to take into account when you - create a port. This section explains the most common of those. + The variable lists the name of the directory that is + created when the application's distfiles are extracted. If + our previous example extracted into a directory called + foo (and not + foo-1.0) write: - - Shared Libraries + WRKSRC= ${WRKDIR}/foo - If your port installs one or more shared libraries, define a - USE_LDCONFIG make variable, which will instruct - a bsd.port.mk to run - ${LDCONFIG} -m on the directory where the - new library is installed (usually - PREFIX/lib) during - post-install target to register it into the - shared library cache. This variable, when defined, will also - facilitate addition of an appropriate - @exec /sbin/ldconfig -m and - @unexec /sbin/ldconfig -R pair into your - pkg-plist file, so that a user who installed - the package can start using the shared library immediately and - de-installation will not cause the system to still believe the - library is there. + or possibly - USE_LDCONFIG= yes + WRKSRC= ${WRKDIR}/${PORTNAME} + - If you need, you can override the default directory - by setting the USE_LDCONFIG - value to a list of directories into which - shared libraries are to be installed. For example if your port - installs shared libraries into - PREFIX/lib/foo and - PREFIX/lib/bar directories - you could use the following in your - Makefile: + + <varname>WRKSRC_SUBDIR</varname> - USE_LDCONFIG= ${PREFIX}/lib/foo ${PREFIX}/lib/bar + If the source files needed for the port are in a + subdirectory of the extracted distribution file, set + WRKSRC_SUBDIR to that directory. - Please - double-check, often this is not necessary at all or can be avoided - through -rpath or setting LD_RUN_PATH - during linking (see lang/moscow_ml - for an example), or through a shell-wrapper which sets - LD_LIBRARY_PATH before invoking the binary, like - www/mozilla does. + WRKSRC_SUBDIR= src + - When installing 32-bit libraries on 64-bit system, use - USE_LDCONFIG32 instead. + + <varname>NO_WRKSUBDIR</varname> - Try to keep shared library version numbers in the - libfoo.so.0 format. Our runtime linker only - cares for the major (first) number. + If the port does not extract in to a subdirectory at all, + then set NO_WRKSUBDIR to + indicate that. - When the major library version number increments in the update - to the new port version, all other ports that link to the affected - library should have their PORTREVISION incremented, - to force recompilation with the new library version. + NO_WRKSUBDIR= yes - + + Because WRKDIR is the only directory + that is supposed to be writable during the build, and is + used to store many files recording the status of the build, + the port's extraction will be forced into a + subdirectory. + + + - - Ports with distribution restrictions + + Conflict Handling - Licenses vary, and some of them place restrictions on how the - application can be packaged, whether it can be sold for profit, and so - on. + There are three different variables to register a conflict + between packages and ports: CONFLICTS, + CONFLICTS_INSTALL and + CONFLICTS_BUILD. - - It is your responsibility as a porter to read the licensing - terms of the software and make sure that the FreeBSD project will - not be held accountable for violating them by redistributing the - source or compiled binaries either via FTP/HTTP or CD-ROM. If in doubt, - please contact the &a.ports;. - + + The conflict variables automatically set the variable + IGNORE, which is more fully documented in + . + - In situations like this, the variables described in the following - sections can be set. + When removing one of several conflicting ports, it is + advisable to retain CONFLICTS in + those other ports for a few months to cater for users who only + update once in a while. - - <varname>NO_PACKAGE</varname> + + <varname>CONFLICTS_INSTALL</varname> - This variable indicates that we may not generate a binary - package of the application. For instance, the license may - disallow binary redistribution, or it may prohibit distribution - of packages created from patched sources. + If the package cannot coexist with other packages + (because of file conflicts, runtime incompatibilities, etc.), + list the other package names in + CONFLICTS_INSTALL. Use + shell globs like * and ? + here. Enumerate package names in there, not port names or + origins. Please make sure + that CONFLICTS_INSTALL does not match this + port's package itself. Otherwise enforcing its installation + with FORCE_PKG_REGISTER will no longer + work. CONFLICTS_INSTALL check is done + after the build stage and prior to the install stage. + - However, the port's DISTFILES may be - freely mirrored on FTP/HTTP. They may also be distributed on - a CD-ROM (or similar media) unless NO_CDROM - is set as well. + + <varname>CONFLICTS_BUILD</varname> - NO_PACKAGE should also be used if the binary - package is not generally useful, and the application should always - be compiled from the source code. For example, if the application - has configuration information that is site specific hard coded in to - it at compile time, set NO_PACKAGE. + If the port cannot be built when other specific ports are + already installed, list the other port names in + CONFLICTS_BUILD. Use + shell globs like * and ? + here. Use package names, not port names or origins. + CONFLICTS_BUILD check is done prior to the + build stage. Build conflicts are not recorded in the + resulting package. + - NO_PACKAGE should be set to a string - describing the reason why the package should not be - generated. - + + <varname>CONFLICTS</varname> - - <varname>NO_CDROM</varname> + If the port cannot be built if a certain port is already + installed and the resulting package cannot coexist with the + other package, list the other package name in + CONFLICTS. use shell + globs like * and ? here. + Enumerate package names in there, not port names or + origins. Please make sure that + CONFLICTS does not match this + port's package itself. Otherwise enforcing its installation + with FORCE_PKG_REGISTER will no longer + work. CONFLICTS check is done prior to the + build stage and prior to the install stage. + + - This variable alone indicates that, although we are allowed - to generate binary packages, we may put neither those packages - nor the port's DISTFILES onto a CD-ROM (or - similar media) for resale. However, the binary packages and - the port's DISTFILES will still be available - via FTP/HTTP. + + Installing Files - If this variable is set along with - NO_PACKAGE, then only the port's - DISTFILES will be available, and only via - FTP/HTTP. + + <varname>INSTALL_<replaceable>*</replaceable></varname> + Macros - NO_CDROM should be set to a string - describing the reason why the port cannot be redistributed - on CD-ROM. For instance, this should be used if the port's license - is for non-commercial use only. - + Use the macros provided in + bsd.port.mk to ensure correct modes of + files in the port's *-install + targets. Set ownership directly in + pkg-plist with the corresponding entries, + such as + @(owner,group,), + @owner owner, + and @group + group. + These operators work until overridden, or until the end + of pkg-plist, so do not forget to reset + them after they are no longer needed. The default ownership + is root:wheel. See for more information. - - <varname>NOFETCHFILES</varname> + + + INSTALL_PROGRAM is a command to + install binary executables. + - Files defined in the NOFETCHFILES - variable are not fetchable from any of the - MASTER_SITES. An example of such a - file is when the file is supplied on CD-ROM by the - vendor. + + INSTALL_SCRIPT is a command to + install executable scripts. + - Tools which check for the availability of these files - on the MASTER_SITES should ignore these - files and not report about them. - + + INSTALL_LIB is a command to install + shared libraries (but not static libraries). + - - <varname>RESTRICTED</varname> + + INSTALL_KLD is a command to + install kernel loadable modules. Some architectures + do not like having the modules stripped, so + use this command instead of + INSTALL_PROGRAM. + - Set this variable alone if the application's license permits - neither mirroring the application's DISTFILES - nor distributing the binary package in any way. + + INSTALL_DATA is a command to + install sharable data, including static libraries. + - NO_CDROM or NO_PACKAGE - should not be set along with RESTRICTED - since the latter variable implies the former ones. + + INSTALL_MAN is a command to + install manpages and other documentation (it does not + compress anything). + + - RESTRICTED should be set to a string - describing the reason why the port cannot be redistributed. - Typically, this indicates that the port contains proprietary - software and that the user will need to manually download the - DISTFILES, possibly after registering for the - software or agreeing to accept the terms of an - EULA. - + These variables are set to the install1 command + with the appropriate flags for each situation. - - <varname>RESTRICTED_FILES</varname> + + Do not use INSTALL_LIB to install + static libraries, because stripping them renders them + useless. Use INSTALL_DATA + instead. + + - When RESTRICTED or NO_CDROM - is set, this variable defaults to ${DISTFILES} - ${PATCHFILES}, otherwise it is empty. If only some of the - distribution files are restricted, then set this variable to list - them. + + Stripping Binaries and Shared Libraries - Note that the port committer should add an entry to - /usr/ports/LEGAL for every listed distribution - file, describing exactly what the restriction entails. - - + Installed binaries should be stripped. Do not strip + binaries manually unless absolutely required. The + INSTALL_PROGRAM macro installs and + strips a binary at the same time. The + INSTALL_LIB macro does the same thing to + shared libraries. - - Building mechanisms + When a file must be stripped, but neither + INSTALL_PROGRAM nor + INSTALL_LIB macros are desirable, + ${STRIP_CMD} strips the program or + shared library. This is typically done within the + post-install target. For + example: - - <command>make</command>, <command>gmake</command>, and - <command>imake</command> + post-install: + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/xdl - If your port uses GNU make, set - USE_GMAKE=yes. + When multiple files need to be stripped: - - Variables for ports related to gmake + post-install: +.for l in geometry media body track world + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}-${l}.so.0 +.endfor - - - - Variable + Use file1 on a file to determine if it has been + stripped. Binaries are reported by file1 as + stripped, or + not stripped. Additionally, strip1 + will detect programs that have already been stripped and exit + cleanly. + - Means - - + + Installing a Whole Tree of Files - - - USE_GMAKE + Sometimes, a large number of files must be installed while + preserving their hierarchical organization. For example, + copying over a whole directory tree from + WRKSRC to a target directory under + PREFIX. Note that + PREFIX, EXAMPLESDIR, + DATADIR, and other path variables must + always be prepended with STAGEDIR to + respect staging (see ). - The port requires gmake to - build. - + Two macros exist for this situation. The advantage of + using these macros instead of cp is that + they guarantee proper file ownership and permissions on target + files. The first macro, COPYTREE_BIN, will + set all the installed files to be executable, thus being + suitable for installing into PREFIX/bin. + The second macro, COPYTREE_SHARE, does not + set executable permissions on files, and is therefore suitable + for installing files under PREFIX/share + target. - - GMAKE + post-install: + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} + (cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}) - The full path for gmake if it is not - in the PATH. - - - -
+ This example will install the contents of the + examples directory in the vendor distfile + to the proper examples location of the port. - If your port is an X application that creates - Makefile files from - Imakefile files using - imake, then set - USE_IMAKE=yes. This will cause the - configure stage to automatically do an xmkmf -a. - If the flag is a problem for your port, set - XMKMF=xmkmf. If the port uses - imake but does not understand the - install.man target, - NO_INSTALL_MANPAGES=yes should be set. + post-install: + ${MKDIR} ${STAGEDIR}${DATADIR}/summer + (cd ${WRKSRC}/temperatures && ${COPYTREE_SHARE} "June July August" ${STAGEDIR}${DATADIR}/summer) - If your port's source Makefile has - something else than all as the main build - target, set ALL_TARGET accordingly. Same goes - for install and - INSTALL_TARGET. + And this example will install the data of summer months to + the summer subdirectory of a + DATADIR. -
+ Additional find arguments can be + passed via the third argument to + COPYTREE_* + macros. For example, to install + all files from the first example except Makefiles, one can use + these commands. - - <command>configure</command> script + post-install: + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} + (cd ${WRKSRC}/examples && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR} "! -name Makefile") - If your port uses the configure script to - generate Makefile files from - Makefile.in files, set - GNU_CONFIGURE=yes. If you want to give extra - arguments to the configure script (the default - argument is --prefix=${PREFIX} - --infodir=${PREFIX}/${INFO_PATH} - --mandir=${MANPREFIX}/man - --build=${CONFIGURE_TARGET}), set those - extra arguments in CONFIGURE_ARGS. Extra - environment variables can be passed using - CONFIGURE_ENV variable. + These macros do not add the installed files to + pkg-plist. They must be added manually. + For optional documentation (PORTDOCS, see + ) and examples + (PORTEXAMPLES), the + %%PORTDOCS%% or + %%PORTEXAMPLES%% prefixes must be prepended + in pkg-plist. + - - Variables for ports that use configure + + Install Additional Documentation - - - - Variable + If the software has some documentation other than the + standard man and info pages that is useful for the + user, install it under DOCSDIR + This can be done, like the previous item, in the + post-install target. - Means - - + Create a new directory for the port. The directory name + is DOCSDIR. This usually equals + PORTNAME. However, if the user + might want different versions of the port to be installed at + the same time, the whole + PKGNAME can be used. - - - GNU_CONFIGURE + Since only the files listed in + pkg-plist are installed, it is safe to + always install documentation to STAGEDIR + (see ). Hence .if + blocks are only needed when the installed files are large + enough to cause significant I/O overhead. - The port uses configure script to - prepare build. - + post-install: + ${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${STAGEDIR}${DOCSDIR} - - HAS_CONFIGURE + Here are some handy variables and how they are expanded by + default when used in the Makefile: - Same as GNU_CONFIGURE, except - default configure target is not added to - CONFIGURE_ARGS. - + + + DATADIR gets expanded to + PREFIX/share/PORTNAME. + - - CONFIGURE_ARGS + + DATADIR_REL gets expanded to + share/PORTNAME. + - Additional arguments passed to - configure script. - + + DOCSDIR gets expanded to + PREFIX/share/doc/PORTNAME. + - - CONFIGURE_ENV + + DOCSDIR_REL gets expanded to + share/doc/PORTNAME. + - Additional environment variables to be set - for configure script run. - + + EXAMPLESDIR gets expanded to + PREFIX/share/examples/PORTNAME. + - - CONFIGURE_TARGET + + EXAMPLESDIR_REL gets expanded to + share/examples/PORTNAME. + + - Override default configure target. Default value is - ${MACHINE_ARCH}-portbld-freebsd${OSREL}. - - - -
- + + The DOCS option only controls + additional documentation installed in + DOCSDIR. It does not apply to standard + man pages and info pages. Things installed in + DATADIR and + EXAMPLESDIR are controlled by + DATA and EXAMPLES + options, respectively. + - - Using <command>scons</command> + These variables are exported to + PLIST_SUB. Their values will appear there + as pathnames relative to PREFIX if + possible. That is, share/doc/PORTNAME + will be substituted for %%DOCSDIR%% in the + packing list by default, and so on. (See more on + pkg-plist substitution + here.) - If your port uses SCons, define - USE_SCONS=yes. + All conditionally installed documentation files and + directories are included in + pkg-plist with the + %%PORTDOCS%% prefix, for example: - - Variables for ports that use <command>scons</command> + %%PORTDOCS%%%%DOCSDIR%%/AUTHORS +%%PORTDOCS%%%%DOCSDIR%%/CONTACT - - - - Variable + As an alternative to enumerating the documentation files + in pkg-plist, a port can set the variable + PORTDOCS to a list of file names and shell + glob patterns to add to the final packing list. The names + will be relative to DOCSDIR. Therefore, a + port that utilizes PORTDOCS, and uses a + non-default location for its documentation, must set + DOCSDIR accordingly. If a directory is + listed in PORTDOCS or matched by a glob + pattern from this variable, the entire subtree of contained + files and directories will be registered in the final packing + list. If the DOCS option has been unset + then files and directories listed in + PORTDOCS would not be installed or added to + port packing list. Installing the documentation at + PORTDOCS as shown above remains up to the + port itself. A typical example of utilizing + PORTDOCS looks as follows: - Means - - + PORTDOCS= README.* ChangeLog docs/* - - - SCONS_ARGS + + The equivalents of PORTDOCS for files + installed under DATADIR and + EXAMPLESDIR are + PORTDATA and + PORTEXAMPLES, respectively. - Port specific SCons flags passed to the SCons - environment. - + The contents of pkg-message are + displayed upon installation. See + the section on using + pkg-message for details. + pkg-message does not need to be added + to pkg-plist. + + - - SCONS_BUILDENV + + Subdirectories Under <varname>PREFIX</varname> - Variables to be set in system environment. - + Try to let the port put things in the right subdirectories + of PREFIX. Some ports lump everything and + put it in the subdirectory with the port's name, which is + incorrect. Also, many ports put everything except binaries, + header files and manual pages in a subdirectory of + lib, which does not work well with the + BSD paradigm. Many of the files must be moved to one of these + directories: etc (setup/configuration + files), libexec (executables started + internally), sbin (executables for + superusers/managers), info (documentation + for info browser) or share (architecture + independent files). See hier7 for details; the rules + governing /usr pretty much apply to + /usr/local too. The exception are ports + dealing with USENET news. They may use + PREFIX/news as a destination for their + files. + + + - - SCONS_ENV + + + - - SCONS_TARGET + Special Considerations - Last argument passed to SCons, similar to - MAKE_TARGET. - - - -
-
-
+ This section explains the most common things to consider when + creating a port. - - Using GNU autotools + + Staging - - Introduction + bsd.port.mk expects ports to work + with a stage directory. This means that a port + must not install files directly to the regular destination + directories (that is, under PREFIX, for + example) but instead into a separate directory from which the + package is then built. In many cases, this does not require + root privileges, making it possible to build packages as an + unprivileged user. With staging, the port is built and + installed into the stage directory, + STAGEDIR. A package is created from the + stage directory and then installed on the system. Automake + tools refer to this concept as DESTDIR, but + in FreeBSD, DESTDIR has a different meaning + (see ). - The various GNU autotools provide an abstraction mechanism for - building a piece of software over a wide variety of operating - systems and machine architectures. Within the Ports Collection, - an individual port can make use of these tools via a simple - construct: + + No port really needs to be root. It + can mostly be avoided by using USES=uidfix. + If the port still runs commands like chown8, + chgrp1, or forces owner or group with install1 + then use USES=fakeroot + to fake those calls. Some patching of the port's + Makefiles will be needed. + - USE_AUTOTOOLS= tool:version[:operation] ... + Meta ports, or ports that do not install files themselves + but only depend on other ports, must avoid needlessly + extracting the mtree8 to the stage directory. This is + the basic directory layout of the package, and these empty + directories will be seen as orphans. To prevent + mtree8 extraction, add this line: - At the time of writing, tool can be - one of libtool, libltdl, - autoconf, autoheader, - automake or aclocal. + NO_MTREE= yes - version specifies the particular - tool revision to be used (see - devel/{automake,autoconf,libtool}[0-9]+ for - valid versions). + + Metaports should use USES=metaport. + It sets up defaults for ports that do not fetch, build, or + install anything. + - operation is an optional extension - to modify how the tool is used. + Staging is enabled by prepending + STAGEDIR to paths used in the + pre-install, + do-install, and + post-install targets (see the + examples through the book). Typically, this includes + PREFIX, ETCDIR, + DATADIR, EXAMPLESDIR, + MANPREFIX, DOCSDIR, and + so on. Directories should be created as part of the + post-install target. Avoid using + absolute paths whenever possible. - Multiple tools can be specified at once, either by including - them all on a single line, or using the += - Makefile construct. + When creating a symlink, STAGEDIR + is prepended to the target path only. For + example: - Finally, there is the special tool, called - autotools, which is a convenience function - to bring in all available versions of the autotools to allow - for cross-development work. This can also be accomplished - by installing the devel/autotools port. + ${LN} -sf libfoo.so.42 ${STAGEDIR}${PREFIX}/lib/libfoo.so - + The source path + ${PREFIX}/lib/libfoo.so.42 + looks fine but could, in fact, be incorrect. Absolute paths can + point to a wrong location, like when a remote file system has + been mounted with NFS under a non-root mount + point. Relative paths are less fragile, and often much + shorter. - - <command>libtool</command> + Ports that install kernel modules must prepend + STAGEDIR to their destination, by default + /boot/modules. + - Shared libraries using the GNU building framework usually use - libtool to adjust the compilation and - installation of shared libraries to match the specifics of the - underlying operating system. The usual practice is to use copy of - libtool bundled with the application. In case - you need to use external libtool, you can use - the version provided by The Ports Collection: + + Bundled Libraries - USE_AUTOTOOLS= libtool:version[:env] + This section explains why bundled dependencies are + considered bad and what to do about them. - With no additional operations, - libtool:version tells - the building framework to patch the configure script with the - system-installed copy of libtool. - The GNU_CONFIGURE is implied. - Further, a number of make and shell - variables will be assigned for onward use by the port. See - bsd.autotools.mk for details. + + Why Bundled Libraries Are Bad - With the :env operation, only the - environment will be set up. + Some software requires the porter to locate third-party + libraries and add the required dependencies to the port. + Other software bundles all necessary libraries into the + distribution file. The second approach seems easier at + first, but there are some serious drawbacks: - Finally, LIBTOOLFLAGS and - LIBTOOLFILES can be optionally set to override - the most likely arguments to, and files patched by, - libtool. Most ports are unlikely to need this. - See bsd.autotools.mk for further - details. + This list is loosely based on the Fedora + and Gentoo + wikis, both licensed under the CC-BY-SA + 3.0 license. - + + + 安全性 - - <command>libltdl</command> + + If vulnerabilities are found in the upstream library + and fixed there, they might not be fixed in the library + bundled with the port. One reason could be that the + author is not aware of the problem. This means that the + porter must fix them, or upgrade to a non-vulnerable + version, and send a patch to the author. This all takes + time, which results in software being vulnerable longer + than necessary. This in turn makes it harder to + coordinate a fix without unnecessarily leaking + information about the vulnerability. + + - Some ports make use of the libltdl library - package, which is part of the libtool suite. - Use of this library does not automatically necessitate the use of - libtool itself, so a separate construct is - provided. + + 臭蟲 - USE_AUTOTOOLS= libltdl:version + + This problem is similar to the problem with security + in the last paragraph, but generally less severe. + + - Currently, all this does is to bring in a - LIB_DEPENDS on the appropriate - libltdl port, and is provided as a convenience - function to help eliminate any dependencies on the autotools ports - outside of the USE_AUTOTOOLS framework. There - are no optional operations for this tool. + + Forking - + + It is easier for the author to fork the upstream + library once it is bundled. While convenient on first + sight, it means that the code diverges from upstream + making it harder to address security or other problems + with the software. A reason for this is that patching + becomes harder. - - <command>autoconf</command> and - <command>autoheader</command> + Another problem of forking is that because code + diverges from upstream, bugs get solved over and over + again instead of just once at a central location. This + defeats the idea of open source software in the first + place. + + - Some ports do not contain a configure script, but do contain an - autoconf template in the configure.ac file. - You can use the following assignments to let - autoconf create the configure script, and also - have autoheader create template headers for use - by the configure script. + + Symbol collision - USE_AUTOTOOLS= autoconf:version[:env] + + When a library is installed on the system, it might + collide with the bundled version. This can cause + immediate errors at compile or link time. It can also + cause errors when running the program which might be + harder to track down. The latter problem could be + caused because the versions of the two libraries are + incompatible. + + - and + + Licensing - USE_AUTOTOOLS= autoheader:version + + When bundling projects from different sources, + license issues can arise more easily, especially when + licenses are incompatible. + + - which also implies the use of - autoconf:version. + + 浪費資源 - Similarly to libtool, the inclusion of the - optional :env operation simply sets up the - environment for further use. Without it, patching and - reconfiguration of the port is carried out. + + Bundled libraries waste resources on several levels. + It takes longer to build the actual application, + especially if these libraries are already present on the + system. At run-time, they can take up unnecessary + memory when the system-wide library is already loaded by + one program and the bundled library is loaded by another + program. + + - The additional optional variables - AUTOCONF_ARGS and - AUTOHEADER_ARGS can be overridden by the port - Makefile if specifically requested. As with - the libtool equivalents, most ports are unlikely - to need this. + + 浪費努力 - + + When a library needs patches for FreeBSD, these patches + have to be duplicated again in the bundled library. + This wastes developer time because the patches might not + apply cleanly. It can also be hard to notice that these + patches are required in the first place. + + + + - - <command>automake</command> and - <command>aclocal</command> + + What to do About Bundled Libraries - Some packages only contain Makefile.am - files. These have to be converted into - Makefile.in files using - automake, and the further processed by - configure to generate an actual - Makefile. + Whenever possible, use the unbundled version of the + library by adding a LIB_DEPENDS to the + port. If such a port does not exist yet, consider creating + it. - Similarly, packages occasionally do not ship with included - aclocal.m4 files, again required to build the - software. This can be achieved with aclocal, - which scans configure.ac or - configure.in. + Only use bundled libraries if the upstream has a + good track record on security and using unbundled versions + leads to overly complex patches. - aclocal has a similar relationship to - automake as autoheader does - to autoconf, described in the previous section. - aclocal implies the use of - automake, thus we have: + + In some very special cases, for example emulators, like + Wine, a port has to bundle + libraries, because they are in a different architecture, or + they have been modified to fit the software's use. In that + case, those libraries should not be exposed to other ports + for linking. Add BUNDLE_LIBS=yes to the + port's Makefile. This will tell + pkg8 to not compute provided libraries. Always ask + the Ports Management Team portmgr@FreeBSD.org before adding this to a port. + + + - USE_AUTOTOOLS= automake:version[:env] + + 共用函式庫 - and + If the port installs one or more shared libraries, define + a USE_LDCONFIG make variable, which will + instruct a bsd.port.mk to run + ${LDCONFIG} -m on the directory + where the new library is installed (usually + PREFIX/lib) during + post-install target to register it + into the shared library cache. This variable, when defined, + will also facilitate addition of an appropriate + @exec /sbin/ldconfig -m and + @unexec /sbin/ldconfig -R pair into + pkg-plist, so that a user who + installed the package can start using the shared library + immediately and de-installation will not cause the system to + still believe the library is there. - USE_AUTOTOOLS= aclocal:version + USE_LDCONFIG= yes - which also implies the use of - automake:version. + The default directory can be overridden by + setting USE_LDCONFIG to a list of + directories into which shared libraries are to be installed. + For example, if the port installs shared libraries into + PREFIX/lib/foo and + PREFIX/lib/bar + use this in + Makefile: - Similarly to libtool and - autoconf, the inclusion of the optional - :env operation simply sets up the environment - for further use. Without it, reconfiguration of the port is - carried out. + USE_LDCONFIG= ${PREFIX}/lib/foo ${PREFIX}/lib/bar - As with - autoconf and autoheader, both - automake and aclocal have - optional argument variables, AUTOMAKE_ARGS and - ACLOCAL_ARGS respectively, which may be - overriden by the port Makefile if - required. + Please double-check, often this is not necessary at all or + can be avoided through -rpath or setting + LD_RUN_PATH during linking (see + lang/moscow_ml for an + example), or through a shell-wrapper which sets + LD_LIBRARY_PATH before invoking the binary, + like www/seamonkey + does. - - + When installing 32-bit libraries on 64-bit system, use + USE_LDCONFIG32 instead. - - Using GNU <literal>gettext</literal> + If the software uses autotools, and specifically + libtool, add USES=libtool. - - Basic usage + When the major library version number increments in the + update to the new port version, all other ports that link to + the affected library must have their + PORTREVISION incremented, to force + recompilation with the new library version. + - If your port requires gettext, - just set USE_GETTEXT to yes, - and your port will grow the dependency on devel/gettext. The value of - USE_GETTEXT can also specify the required - version of the libintl library, the basic - part of gettext, but using this - feature is strongly discouraged: - Your port should work with just the current version of - devel/gettext. + + Ports with Distribution Restrictions or Legal + Concerns - A rather common case is a port using - gettext and configure. - Generally, GNU configure should be - able to locate gettext automatically. - If it ever fails to, hints at the location of - gettext can be passed in - CPPFLAGS and LDFLAGS as - follows: + Licenses vary, and some of them place restrictions on how + the application can be packaged, whether it can be sold for + profit, and so on. - USE_GETTEXT= yes -CPPFLAGS+= -I${LOCALBASE}/include -LDFLAGS+= -L${LOCALBASE}/lib + + It is the responsibility of a porter to read the + licensing terms of the software and make sure that the + FreeBSD project will not be held accountable for violating + them by redistributing the source or compiled binaries + either via FTP/HTTP or CD-ROM. If in doubt, please contact + the FreeBSD ports mailing list. + -GNU_CONFIGURE= yes -CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" \ - LDFLAGS="${LDFLAGS}" + In situations like this, the variables described in the + next sections can be set. - Of course, the code can be more compact if there are no - more flags to pass to configure: + + <varname>NO_PACKAGE</varname> - USE_GETTEXT= yes -GNU_CONFIGURE= yes -CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ - LDFLAGS="-L${LOCALBASE}/lib" + This variable indicates that we may not generate a + binary package of the application. For instance, the + license may disallow binary redistribution, or it may + prohibit distribution of packages created from patched + sources. - + However, the port's DISTFILES may be + freely mirrored on FTP/HTTP. They may also be distributed + on a CD-ROM (or similar media) unless + NO_CDROM is set as well. - - Optional usage + If the + binary package is not generally useful, and the application + must always be compiled from the source code, use + NO_PACKAGE. For + example, if the application has configuration information + that is site specific hard coded into it at compile time, + set NO_PACKAGE. - Some software products allow for disabling NLS, - e.g., through passing to - configure. In that case, your port - should use gettext conditionally, - depending on the status of WITHOUT_NLS. - For ports of low to medium complexity, you can rely on the - following idiom: + Set NO_PACKAGE to a string + describing the reason why the package cannot be + generated. + - GNU_CONFIGURE= yes + + <varname>NO_CDROM</varname> -.if !defined(WITHOUT_NLS) -USE_GETTEXT= yes -PLIST_SUB+= NLS="" -.else -CONFIGURE_ARGS+= --disable-nls -PLIST_SUB+= NLS="@comment " + This variable alone indicates that, although we are + allowed to generate binary packages, we may put neither + those packages nor the port's DISTFILES + onto a CD-ROM (or similar media) for resale. However, the + binary packages and the port's DISTFILES + will still be available via FTP/HTTP. + + If this variable is set along with + NO_PACKAGE, then only the port's + DISTFILES will be available, and only via + FTP/HTTP. + + Set NO_CDROM to a string + describing the reason why the port cannot be redistributed + on CD-ROM. For instance, use this if the port's + license is for non-commercial use + only. + + + + <varname>NOFETCHFILES</varname> + + Files defined in NOFETCHFILES + are not fetchable from any of + MASTER_SITES. An example of such a file + is when the file is supplied on CD-ROM by the vendor. + + Tools which check for the availability of these files + on MASTER_SITES have to ignore these + files and not report about them. + + + + <varname>RESTRICTED</varname> + + Set this variable alone if the application's license + permits neither mirroring the application's + DISTFILES nor distributing the binary + package in any way. + + Do not set NO_CDROM or + NO_PACKAGE along with + RESTRICTED, since the latter variable + implies the former ones. + + Set RESTRICTED to a string + describing the reason why the port cannot be redistributed. + Typically, this indicates that the port contains proprietary + software and that the user will need to manually download + the DISTFILES, possibly after registering + for the software or agreeing to accept the terms of an + EULA. + + + + <varname>RESTRICTED_FILES</varname> + + When RESTRICTED or + NO_CDROM is set, this variable defaults + to ${DISTFILES} ${PATCHFILES}, otherwise + it is empty. If only some of the distribution files are + restricted, then set this variable to list them. + + + + + <varname>LEGAL_TEXT</varname> + + If the port has legal concerns not addressed by the + above variables, set LEGAL_TEXT + to a string explaining the concern. For + example, if special permission was obtained for FreeBSD to + redistribute the binary, this variable must indicate + so. + + + + <filename>/usr/ports/LEGAL</filename> 和 <varname>LEGAL</varname> + + A port which sets any of the above variables must also + be added to /usr/ports/LEGAL. The + first column is a glob which matches the restricted + distfiles. The second column is the port's origin. The + third column is the output of + make -VLEGAL. + + + + 範例 + + The preferred way to state "the distfiles for this port + must be fetched manually" is as follows: + + .if !exists(${DISTDIR}/${DISTNAME}${EXTRACT_SUFX}) +IGNORE= may not be redistributed because of licensing reasons. Please visit some-website to accept their license and download ${DISTFILES} into ${DISTDIR} .endif - The next item on your to-do list is to arrange so that - the message catalog files are included in the packing list - conditionally. The Makefile part of - this task is already provided by the idiom. It is explained - in the section on advanced - pkg-plist practices. In a - nutshell, each occurrence of %%NLS%% in - pkg-plist will be replaced by - @comment  if NLS is - disabled, or by a null string if NLS is enabled. Consequently, - the lines prefixed by %%NLS%% will become - mere comments in the final packing list if NLS is off; - otherwise the prefix will be just left out. All you need - to do now is insert %%NLS%% before each - path to a message catalog file in pkg-plist. - For example: + This both informs the user, and sets the proper metadata + on the user's machine for use by automated programs. - %%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo -%%NLS%%share/locale/no/LC_MESSAGES/foobar.mo + Note that this stanza must be preceded by an inclusion + of bsd.port.pre.mk. + + - In high complexity cases, you may need to use more advanced - techniques than the recipe given here, such as dynamic packing list generation. - + + Building Mechanisms - - Handling message catalog directories + + Building Ports in Parallel - There is a point to note about installing message catalog - files. The target directories for them, which reside under - LOCALBASE/share/locale, - should rarely be created and removed by your port. The - most popular languages have their respective directories - listed in /etc/mtree/BSD.local.dist; - that is, they are a part of the base system. The directories - for many other languages are governed by the devel/gettext port. You may want - to consult its pkg-plist and see whether - your port is going to install a message catalog file for a - unique language. - - + The FreeBSD ports framework supports parallel building + using multiple make sub-processes, which + allows SMP systems to utilize all of + their available CPU power, allowing port + builds to be faster and more effective. - - Using <literal>perl</literal> + This is achieved by passing -jX flag + to make1 running on vendor code. This is the default + build behavior of ports. Unfortunately, not all ports + handle parallel building well and it may be required to + explicitly disable this feature by adding the + MAKE_JOBS_UNSAFE=yes variable. It is + used when a port is known to be broken with + -jX. + - If MASTER_SITES is set to - MASTER_SITE_PERL_CPAN, then preferred value of - MASTER_SITE_SUBDIR is top-level hierarchy name. - For example, the recommend value for p5-Module-Name - is Module. The top-level hierarchy can be examined - at cpan.org. - This keeps the port working when the author of the module - changes. + + <command>make</command>, <command>gmake</command>, <command>fmake</command>, 和 <command>imake</command> - The exception to this rule is when the relevant directory does not - exist or the distfile does not exist in the directory. In such case, using - author's id as MASTER_SITE_SUBDIR is allowed. + Several differing make + implementations exist. Ported software often requires a + particular implementation, like GNU + make, known in FreeBSD as + gmake, or fmake, the + legacy FreeBSD make. - All of the tunable knobs below accept both YES - and a version string, like 5.8.0+. Using - YES means that the port can be used with all - of the supported Perl versions. If a port - only works with specific versions of Perl, - it can be indicated with a version string, specifying a minimal version - (e.g. 5.7.3+), a maximal version (e.g. - 5.8.0-) or an exact version (e.g. - 5.8.3). + If the port uses GNU make, + add gmake to USES. If + the legacy FreeBSD make is needed, add + fmake there. - - Variables for ports that use <literal>perl</literal> + MAKE_CMD can be used to reference the + specific command configured by the USES + setting in the port's Makefile. In + rare cases when more than one make + implementation is listed in USES, the + variables GMAKE (for the + GNU version) or FMAKE + (for the legacy FreeBSD version) are available. + Only use MAKE_CMD within the + application Makefiles in + WRKSRC to call the + make implementation expected by the + ported software. + If the port is an X application that uses + imake to create + Makefiles from + Imakefiles, set USES= + imake.. See the USES=imake + section of for more details. + + If the port's source Makefile has + something other than all as the + main build target, set ALL_TARGET + accordingly. The same goes for + install and + INSTALL_TARGET. + + + + <command>configure</command> Script + + If the port uses the configure + script to generate Makefile from + Makefile.in, set + GNU_CONFIGURE=yes. To give + extra arguments to the configure script + (the default argument is --prefix=${PREFIX} + --infodir=${PREFIX}/${INFO_PATH} + --mandir=${MANPREFIX}/man + --build=${CONFIGURE_TARGET}), set those + extra arguments in CONFIGURE_ARGS. Extra + environment variables can be passed using + CONFIGURE_ENV. + +
+ Variables for Ports That Use + <command>configure</command> + - Variable - - Means + Variable + Means - USE_PERL5 + GNU_CONFIGURE + The port uses configure + script to prepare build. + - Says that the port uses perl 5 to build and run. + + HAS_CONFIGURE + Same as GNU_CONFIGURE, + except default configure target is not added to + CONFIGURE_ARGS. - USE_PERL5_BUILD + CONFIGURE_ARGS + Additional arguments passed to + configure script. + - Says that the port uses perl 5 to build. + + CONFIGURE_ENV + Additional environment variables to be set + for configure script run. - USE_PERL5_RUN + CONFIGURE_TARGET + Override default configure target. Default + value is + ${MACHINE_ARCH}-portbld-freebsd${OSREL}. + + + +
+
- Says that the port uses perl 5 to run. + + Using <command>cmake</command> + + For ports that use CMake, + define USES= cmake, or + USES= cmake:outsource to build in a + separate directory (see below). + + + Variables for Ports That Use + <command>cmake</command> + + + + + Variable + Means + + - PERL + CMAKE_ARGS + Port specific CMake + flags to be passed to the cmake + binary. + - The full path of perl 5, either in the - system or installed from a port, but without the version - number. Use this if you need to replace - #!lines in scripts. + + CMAKE_BUILD_TYPE + Type of build (CMake + predefined build profiles). Default is + Release, or + Debug if + WITH_DEBUG is set. - PERL_CONFIGURE - - Configure using Perl's MakeMaker. It implies - USE_PERL5. + CMAKE_ENV + Environment variables to be set for the + cmake binary. Default is + ${CONFIGURE_ENV}. - PERL_MODBUILD - - Configure, build and install using Module::Build. It - implies PERL_CONFIGURE. + CMAKE_SOURCE_PATH + Path to the source directory. Default is + ${WRKSRC}. +
+ + Variables the Users Can Define for + <command>cmake</command> Builds + - Read only variables - - Means + Variable + Means - PERL_VERSION + CMAKE_VERBOSE + Enable verbose build output. Default not set, + unless BATCH or + PACKAGE_BUILDING are set. + - The full version of perl installed (e.g., - 5.00503). + + CMAKE_NOCOLOR + Disables color build output. Default not set, + unless BATCH or + PACKAGE_BUILDING are set. + + +
+ CMake supports these + build profiles: Debug, + Release, + RelWithDebInfo and + MinSizeRel. Debug and + Release profiles respect system + *FLAGS, RelWithDebInfo + and MinSizeRel will set + CFLAGS to -O2 -g and + -Os -DNDEBUG correspondingly. The + lower-cased value of CMAKE_BUILD_TYPE is + exported to PLIST_SUB and must be + used if the port installs + *.cmake + depending on the build type (see + deskutils/strigi for an + example). Please note that some projects may define their own + build profiles and/or force particular build type by setting + CMAKE_BUILD_TYPE in + CMakeLists.txt. To make a port for such + a project respect CFLAGS and + WITH_DEBUG, the + CMAKE_BUILD_TYPE definitions must be + removed from those files. + + Most CMake-based projects + support an out-of-source method of building. The + out-of-source build for a port can be requested by using the + :outsource suffix. When enabled, + CONFIGURE_WRKSRC, + BUILD_WRKSRC and + INSTALL_WRKSRC will be set to + ${WRKDIR}/.build and this + directory will be used to keep all files generated during + configuration and build stages, leaving the source directory + intact. + + + <literal>USES= cmake</literal> Example + + This snippet demonstrates the use of + CMake for a port. + CMAKE_SOURCE_PATH is not usually + required, but can be set when the sources are not located + in the top directory, or if only a subset of the project + is intended to be built by the port. + + USES= cmake:outsource +CMAKE_SOURCE_PATH= ${WRKSRC}/subproject + +
+ + + Using <command>scons</command> + + If the port uses SCons, + define USE_SCONS=yes. + + + Variables for Ports That Use + <command>scons</command> + + + - PERL_VER - - The short version of perl installed (e.g., - 5.005). + Variable + Means + + - PERL_LEVEL - - The installed perl version as an integer of the form MNNNPP - (e.g., 500503). + SCONS_ARGS + Port specific SCons flags passed to the SCons + environment. - PERL_ARCH - - Where perl stores architecture dependent libraries. - Defaults to ${ARCH}-freebsd. + SCONS_BUILDENV + Variables to be set in system + environment. - PERL_PORT - - Name of the perl port that is - installed (e.g., perl5). + SCONS_ENV + Variables to be set in SCons + environment. - SITE_PERL - - Directory name where site specific - perl packages go. - This value is added to PLIST_SUB. + SCONS_TARGET + Last argument passed to SCons, similar to + MAKE_TARGET.
- - Perl 模組的 port,由於沒有正式的網站,所以 - pkg-descr 內的 WWW 應該指向至 - cpan.org。 比較好的 URL 格式是 - http://search.cpan.org/dist/Module-Name/ - (包括結尾的 / 斜線符號)。 - + To make third party SConstruct + respect everything that is passed to SCons in + SCONS_ENV (that is, most importantly, + CC/CXX/CFLAGS/CXXFLAGS), patch + SConstruct so build + Environment is constructed like + this: -
+ env = Environment(**ARGUMENTS) - - Using X11 + It may be then modified with + env.Append and + env.Replace. + + - - X.Org components + + 使用 GNU Autotools - The X11 implementation available in The Ports Collection is X.Org. - If your application depends on X components, set - USE_XORG to the list of required components. - Available components, at the time of writing, are: + + 楔子 - bigreqsproto compositeproto damageproto dmx dmxproto - evieproto fixesproto fontcacheproto fontenc fontsproto fontutil - glproto ice inputproto kbproto libfs oldx printproto randrproto - recordproto renderproto resourceproto scrnsaverproto sm trapproto - videoproto x11 xau xaw xaw6 xaw7 xaw8 xbitmaps xcmiscproto xcomposite - xcursor xdamage xdmcp xevie xext xextproto xf86bigfontproto - xf86dgaproto xf86driproto xf86miscproto xf86rushproto - xf86vidmodeproto xfixes xfont xfontcache xft xi xinerama - xineramaproto xkbfile xkbui xmu xmuu xorg-server xp xpm xprintapputil - xprintutil xpr oto xproxymngproto xrandr xrender xres xscrnsaver xt - xtrans xtrap xtst xv xvmc xxf86dga xxf86misc xxf86vm. + The various GNU autotools provide an abstraction + mechanism for building a piece of software over a wide + variety of operating systems and machine architectures. + Within the Ports Collection, an individual port can make use + of these tools via a simple construct: - Always up-to-date list can be found in - /usr/ports/Mk/bsd.xorg.mk. + USE_AUTOTOOLS= tool[:env] ... - The Mesa Project is an effort to provide free OpenGL - implementation. You can specify a dependency on various components - of this project with USE_GL variable. - Valid options are: glut, glu, glw, gl and - linux. For backwards compatibility, the value - of yes maps to glu. + At the time of writing, tool + can be one of autoconf, + autoheader, automake, + aclocal, libtoolize. + It can also be one the older + legacy of autoconf213, + autoheader213, + automake14, + aclocal14. - - USE_XORG example - USE_XORG= xrender xft xkbfile xt xaw -USE_GL= glu - + env is used to specify that the + environmental variables are needed. It also adds a build + dependency on the tool. The relevant tool is + not ran as part of the + run-autotools target. - Many ports define USE_XLIB, which makes - the port depend on all the 50 or so libraries. This variable - exists for backwards compatibility, as it predates modular X.Org, - and should not be used on new ports. + Multiple tools can be specified at once, either by + including them all on a single line, or using the + += Makefile construct. + - - Variables for ports that use X + + <command>libtool</command> and + <command>libtoolize</command> - - - - USE_XLIB + Ports shipping with their own copy of libtool (search for + a file named ltmain.sh) need to have + USES=libtool. If a port has + USE_AUTOTOOLS=libtoolize it probably also + needs USES=libtool. See the USES=libtool section in for more details. - The port uses the X libraries. Deprecated - use a list of - X.Org components in USE_XORG variable - instead. - + - - USE_IMAKE + + <filename>libltdl.so</filename> - 會用到 imake 的 port。 - + Some ports make use of the libltdl.so + library package, which is part of the + libtool suite. Use of this library does + not automatically necessitate the use of + libtool itself. If the port needs + libltdl.so, add a dependency on + it: - - USE_X_PREFIX + LIB_DEPENDS= libltdl.so:${PORTSDIR}/devel/libltdl + - Deprecated. Today it is equivalent to - USE_XLIB and can be replaced by it - freely. - + + <command>autoconf</command> and + <command>autoheader</command> - - XMKMF + Some ports do not contain a configure script, but do + contain an autoconf template in + configure.ac. Use these + assignments to let autoconf + create the configure script, and also have + autoheader create template headers for + use by the configure script. - Set to the path of xmkmf if not in the - PATH. Defaults to xmkmf - -a. - - - -
+ USE_AUTOTOOLS= autoconf[:env] - - Variables for depending on individual parts of X11 + and - - - - X_IMAKE_PORT + USE_AUTOTOOLS= autoheader - Port providing imake and several - other utilities used to build X11. - + which also implies the use of + autoconf. - - X_LIBRARIES_PORT + The additional optional variables + AUTOCONF_ARGS and + AUTOHEADER_ARGS can be overridden by the + port Makefile if specifically + requested. Most ports are unlikely to need this. See + bsd.autotools.mk for further + details. + - Port providing X11 libraries. - + + <command>automake</command> and + <command>aclocal</command> - - X_CLIENTS_PORT + Some packages only contain + Makefile.am. These have to be + converted into Makefile.in using + automake, and the further processed by + configure to generate an actual + Makefile. - Port providing X clients. - + Similarly, packages occasionally do not ship with + an included aclocal.m4, again + required to build the software. This can be achieved with + aclocal, which scans + configure.ac or + configure.in. - - X_SERVER_PORT + aclocal has a similar relationship to + automake as autoheader + does to autoconf, described in the + previous section. aclocal implies the + use of automake, thus we have: - Port providing X server. - + USE_AUTOTOOLS= automake[:env] - - X_FONTSERVER_PORT + and - Port providing font server. - + USE_AUTOTOOLS= aclocal - - X_PRINTSERVER_PORT + As with autoconf and + autoheader, both + automake and aclocal + have optional argument variables, + AUTOMAKE_ARGS and + ACLOCAL_ARGS respectively, which may be + overridden by the port Makefile if + required. + + - Port providing print server. - + + 使用 GNU <literal>gettext</literal> - - X_VFBSERVER_PORT + + 基本用法 - Port providing virtual framebuffer server. - + If the port requires gettext, set + USES= gettext, and the port will inherit + a dependency on libintl.so from + devel/gettext. Other + values for gettext usage are listed in + USES=gettext. - - X_NESTSERVER_PORT + A rather common case is a port using + gettext and configure. + Generally, GNU configure should be able + to locate gettext automatically. - Port providing a nested X server. - + USES= gettext +GNU_CONFIGURE= yes - - X_FONTS_ENCODINGS_PORT + If it ever fails to, hints at the location of + gettext can be passed in + CPPFLAGS and LDFLAGS as + follows: - Port providing encodings for fonts. - + USES= gettext +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${LOCALBASE}/lib - - X_FONTS_MISC_PORT +GNU_CONFIGURE= yes + - Port providing miscellaneous bitmap fonts. - + + Optional Usage - - X_FONTS_100DPI_PORT + Some software products allow for disabling + NLS. For example, through passing + to + configure. In that case, the port must use + gettext conditionally, depending on the + status of the NLS option. For ports of low + to medium complexity, use this idiom: - Port providing 100dpi bitmap fonts. - + GNU_CONFIGURE= yes - - X_FONTS_75DPI_PORT +OPTIONS_DEFINE= NLS +OPTIONS_SUB= yes - Port providing 75dpi bitmap fonts. - +NLS_USES= gettext +NLS_CONFIGURE_ENABLE= nls - - X_FONTS_CYRILLIC_PORT +.include <bsd.port.mk> - Port providing cyrillic bitmap fonts. - + Or using the older way of using options: - - X_FONTS_TTF_PORT + GNU_CONFIGURE= yes - Port providing &truetype; fonts. - +OPTIONS_DEFINE= NLS +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MNLS} +USES+= gettext +PLIST_SUB+= NLS="" +.else +CONFIGURE_ARGS+= --disable-nls +PLIST_SUB+= NLS="@comment " +.endif + +.include <bsd.port.mk> + + The next item on the to-do list is to arrange so that + the message catalog files are included in the packing list + conditionally. The Makefile part of + this task is already provided by the idiom. It is explained + in the section on advanced + pkg-plist practices. In a + nutshell, each occurrence of %%NLS%% in + pkg-plist will be replaced by + @comment  if NLS is + disabled, or by a null string if NLS is enabled. + Consequently, the lines prefixed by + %%NLS%% will become mere comments in the + final packing list if NLS is off; otherwise the prefix will + be just left out. Then insert + %%NLS%% before each path to a message + catalog file in pkg-plist. For + example: + + %%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo +%%NLS%%share/locale/no/LC_MESSAGES/foobar.mo + + In high complexity cases, more advanced techniques + may be needed, such as + dynamic packing list + generation. + + + + Handling Message Catalog Directories + + There is a point to note about installing message + catalog files. The target directories for them, which + reside under + LOCALBASE/share/locale, + must not be created and removed by a port. The most + popular languages have their respective directories listed + in + PORTSDIR/Templates/BSD.local.dist. + The directories for many other languages are governed by the + devel/gettext port. + Consult its pkg-plist and see whether + the port is going to install a message catalog file for a + unique language. + + + + + 使用 <application>Perl</application> + + If MASTER_SITES is set to + CPAN, the correct subdirectory is usually + selected automatically. If the default subdirectory is wrong, + CPAN/Module can be used to change it. + MASTER_SITES can also be set to the old + MASTER_SITE_PERL_CPAN, then the preferred + value of MASTER_SITE_SUBDIR is the + top-level hierarchy name. For example, the recommended value + for p5-Module-Name is + Module. The top-level hierarchy can be + examined at cpan.org. + This keeps the port working when the author of the module + changes. + + The exception to this rule is when the relevant directory + does not exist or the distfile does not exist in that + directory. In such case, using author's id as + MASTER_SITE_SUBDIR is allowed. + The CPAN:AUTHOR macro can be used, which will + be translated to the hashed author directory. For example, + CPAN:AUTHOR will be converted to + authors/id/A/AU/AUTHOR. + + When a port needs Perl support, + it must set USES=perl5 with the optional + USE_PERL5 described in the perl5 USES description. + +
+ Read-Only Variables for Ports That Use + <application>Perl</application> + + + + + 唯讀變數 + Means + + + + + + PERL + The full path of the Perl 5 interpreter, + either in the system or installed from a port, but + without the version number. Use this when the software + needs the path to the Perl + interpreter. To replace + #!lines in scripts, + use USES=shebangfix. + + + + PERL_VERSION + The full version of Perl installed (for example, + 5.8.9). + + + + PERL_LEVEL + The installed Perl version as + an integer of the form MNNNPP + (for example, 500809). + + + + PERL_ARCH + Where Perl stores architecture + dependent libraries. Defaults to + ${ARCH}-freebsd. + + + + PERL_PORT + Name of the Perl port that is installed (for + example, perl5). + + + + SITE_PERL + Directory name where site specific + Perl packages go. This value is + added to PLIST_SUB. + + + +
+ + + Ports of Perl modules which do not have an official + website must link to cpan.org in + the WWW line of pkg-descr. The + preferred URL form is + http://search.cpan.org/dist/Module-Name/ + (including the trailing slash). + + + + Do not use ${SITE_PERL} in dependency + declarations. Doing so assumes that + perl5.mk has been included, which is + not always true. Ports depending on this port will have + incorrect dependencies if this port's files move later in an + upgrade. The right way to declare Perl module dependencies + is shown in the example below. + + + + Perl 相依性範例 + + p5-IO-Tee>=0.64:${PORTSDIR}/devel/p5-IO-Tee + + + For Perl ports that install manual pages, the macro + PERL5_MAN3 can be used + inside pkg-plist. For example, + + lib/perl5/5.14/man/man3/AnyEvent::I3.3.gz + + can be replaced with + + %%PERL5_MAN3%%/AnyEvent::I3.3.gz + + + There are no PERL5_MANx macros for the + other sections (x in + 1, 2 and + 4 to 9) because those + get installed in the regular directories. + +
+ + + 使用 X11 + + + X.Org Components + + The X11 implementation available in The Ports Collection + is X.Org. If the application depends on X components, set + USE_XORG to the list of required + components. Available components, at the time of writing, + are: + + bigreqsproto compositeproto damageproto dmx + dmxproto dri2proto dri3proto evieproto fixesproto + fontcacheproto fontenc fontsproto fontutil glproto ice + inputproto kbproto libfs oldx pciaccess pixman presentproto + printproto randrproto recordproto renderproto resourceproto + scrnsaverproto sm trapproto videoproto x11 xau xaw xaw6 xaw7 + xbitmaps xcb xcmiscproto xcomposite xcursor xdamage xdmcp + xevie xext xextproto xf86bigfontproto xf86dgaproto + xf86driproto xf86miscproto xf86rushproto xf86vidmodeproto + xfixes xfont xfontcache xft xi xinerama xineramaproto + xkbfile xkbui xmu xmuu xorg-macros xorg-server xp xpm + xprintapputil xprintutil xproto xproxymngproto xrandr + xrender xres xscrnsaver xshmfence xt xtrans xtrap xtst xv + xvmc xxf86dga xxf86misc xxf86vm. + + Always up-to-date list can be found in + /usr/ports/Mk/bsd.xorg.mk. + + The Mesa Project is an effort to provide free OpenGL + implementation. To specify a dependency on various + components of this project, use USE_GL. + Valid options are: + egl, gl, glesv2, glew, glu, glut, glw and + linux. For backwards compatibility, the + value of yes maps to + glu. + + + <varname>USE_XORG</varname> 範例 + + USE_XORG= xrender xft xkbfile xt xaw +USE_GL= glu + + + + Variables for Ports That Use X + + + - X_FONTS_TYPE1_PORT - - Port providing Type1 fonts. + USES= imake + The port uses imake. - X_MANUALS_PORT - - Port providing developer oriented manual pages + XMKMF + Set to the path of xmkmf if + not in the PATH. Defaults to + xmkmf -a. @@ -5147,796 +7497,1894 @@
- Using some X11 related variables in port - # Use X11 libraries and depend on -# font server as well as cyrillic fonts. -RUN_DEPENDS= ${LOCALBASE}/bin/xfs:${X_FONTSERVER_PORT} \ - ${LOCALBASE}/lib/X11/fonts/cyrillic/crox1c.pcf.gz:${X_FONTS_CYRILLIC_PORT} + 使用 X11 相關變數 -USE_XORG= yes + # Use some X11 libraries +USE_XORG= x11 xpm +
-
+ + Ports That Require Motif - - Ports that require Motif + If the port requires a Motif library, define + USES= motif in the + Makefile. Default Motif implementation + is + x11-toolkits/open-motif. + Users can choose + x11-toolkits/lesstif + instead by setting WANT_LESSTIF + in their make.conf. - If your port requires a Motif library, define - USE_MOTIF in the Makefile. - Default Motif implementation is - x11-toolkits/open-motif. - Users can choose - x11-toolkits/lesstif instead - by setting WANT_LESSTIF variable. + MOTIFLIB will be set by + motif.mk to reference the + appropriate Motif library. Please patch the source of the + port to use ${MOTIFLIB} wherever + the Motif library is referenced in the original + Makefile or + Imakefile. - The MOTIFLIB variable will be set by - bsd.port.mk to reference the appropriate - Motif library. Please patch the source of your port to - use ${MOTIFLIB} wherever the Motif library is referenced in the original - Makefile or - Imakefile. + There are two common cases: - There are two common cases: + + + If the port refers to the Motif library as + -lXm in its + Makefile or + Imakefile, substitute + ${MOTIFLIB} for it. + - + + If the port uses XmClientLibs in + its Imakefile, change it to + ${MOTIFLIB} ${XTOOLLIB} + ${XLIB}. + + + + Note that MOTIFLIB (usually) expands + to -L/usr/local/lib -lXm -lXp or + /usr/local/lib/libXm.a, so there is no + need to add -L or -l + in front. + + + + X11 字型 + + If the port installs fonts for the X Window System, put + them in + LOCALBASE/lib/X11/fonts/local. + + + + Getting a Fake <envar>DISPLAY</envar> with Xvfb + + Some applications require a working X11 display for + compilation to succeed. This pose a problem for machines + that operate headless. When this variable is used, + the build infrastructure will start the virtual framebuffer + X server. The working DISPLAY is then passed + to the build. See USES=display + for the possible arguments. + + USES= display + + + + Desktop Entries + + Desktop entries (a + Freedesktop standard) provide a way to + automatically adjust desktop features when a new program is + installed, without requiring user intervention. For + example, newly-installed programs automatically appear in + the application menus of compatible desktop environments. + Desktop entries originated in the + GNOME desktop environment, but + are now a standard and also work with + KDE and + Xfce. This bit of automation + provides a real benefit to the user, and desktop entries are + encouraged for applications which can be used in a desktop + environment. + + + Using Predefined <filename>.desktop</filename> + Files + + Ports that include predefined + *.desktop + must include those files in pkg-plist + and install them in the + $LOCALBASE/share/applications + directory. The INSTALL_DATA + macro is useful for installing these + files. + + + + Updating Desktop Database + + If a port has a MimeType entry in its + portname.desktop, + the desktop database must be updated after install and + deinstall. To do this, define USES= + desktop-file-utils. + + + + Creating Desktop Entries with + <varname>DESKTOP_ENTRIES</varname> + + Desktop entries can be easily created for applications + by using DESKTOP_ENTRIES. A + file named + name.desktop + will be created, installed, and added to + pkg-plist automatically. Syntax + is: + + DESKTOP_ENTRIES= "NAME" "COMMENT" "ICON" "COMMAND" "CATEGORY" StartupNotify + + The list of possible categories is available on the + Freedesktop + website. StartupNotify + indicates whether the application is compatible with + startup notifications. These are + typically a graphic indicator like a clock that appear at + the mouse pointer, menu, or panel to give the user an + indication when a program is starting. A program that is + compatible with startup notifications clears the indicator + after it has started. Programs that are not compatible + with startup notifications would never clear the indicator + (potentially confusing and infuriating the user), and + must have StartupNotify set to + false so the indicator is not shown at + all. + + Example: + + DESKTOP_ENTRIES= "ToME" "Roguelike game based on JRR Tolkien's work" \ + "${DATADIR}/xtra/graf/tome-128.png" \ + "tome -v -g" "Application;Game;RolePlaying;" \ + false + + +
+ + + 使用 GNOME + + + 楔子 + + This chapter explains the GNOME + framework as used by ports. The framework can be loosely + divided into the base components, GNOME + desktop components, and a few special macros that simplify the + work of port maintainers. + + While developing a port or changing one, please set + + DEVELOPER=yes + + + in the environment or in /etc/make.conf. + This causes the ports framework to enable additional + checks. + + + + Using <varname>USE_GNOME</varname> + + Adding this variable to the port allows the use of + the macros and components defined in + bsd.gnome.mk. The code in + bsd.gnome.mk adds the needed + build-time, run-time or library dependencies + or the handling of special files. + GNOME applications under FreeBSD use the + USE_GNOME infrastructure. Include all the + needed components as a space-separated list. The + USE_GNOME components are divided into + these virtual lists: basic components, GNOME 3 components + and legacy components. If the port needs only GTK3 libraries, + this is the shortest way to define it: + + USE_GNOME= gtk30 + + USE_GNOME components automatically + add the dependencies they need. Please see + for an exhaustive + list of all USE_GNOME components and which + other components they imply and their dependencies. + + Here is an example Makefile for a + GNOME port that uses many of the techniques outlined in this + document. Please use it as a guide for creating new + ports. + + # $FreeBSD$ + +PORTNAME= regexxer +PORTVERSION= 0.10 +CATEGORIES= devel textproc gnome +MASTER_SITES= GNOME + +MAINTAINER= kwm@FreeBSD.org +COMMENT= Interactive tool for performing search and replace operations + +USES= gettext gmake pathfix pkgconfig tar:xz +GNU_CONFIGURE= yes +USE_GNOME= gnomeprefix intlhack gtksourceviewmm3 +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${LOCALBASE}/lib +INSTALLS_ICONS= yes + +GLIB_SCHEMAS= org.regexxer.gschema.xml + +.include <bsd.port.mk> + + + The USE_GNOME macro without any + arguments does not add any dependencies to the port. + USE_GNOME cannot be set after + bsd.port.pre.mk. + + + + + 變數 + + This section explains which macros are available and how + they are used. Like they are used in the above example. The + has a more in-depth + explanation. USE_GNOME has to be set for + these macros to be of use. + + + + INSTALLS_ICONS + - If the port refers to the Motif library as - -lXm in its Makefile or - Imakefile, simply substitute - ${MOTIFLIB} for it. + GTK+ ports which install + Freedesktop-style icons to + ${LOCALBASE}/share/icons should use + this macro to ensure that the icons are cached and will + display correctly. The cache file is named + icon-theme.cache. Do not include + that file in pkg-plist. This macro + handles that automatically. This macro is not needed + for Qt, which use a + internal method. + + + GLIB_SCHEMAS + - If the port uses XmClientLibs in its - Imakefile, change it to - ${MOTIFLIB} ${XTOOLLIB} - ${XLIB}. + List of all the glib schema files the port installs. + The macro will add the files to the port plist and + handle the registration of these files on install and + deinstall. + + The glib schema files are written in + XML and end with the + gschema.xml extension. They are + installed in the + share/glib-2.0/schemas/ directory. + These schema files contain all application config values + with there default settings. The actual database used + by the applications is built by + glib-compile-schema, which is + run by the GLIB_SCHEMAS macro. + + GLIB_SCHEMAS=foo.gschema.xml + + + Do not add glib schemas to the + pkg-plist. If they are listed in + pkg-plist, they will not be + registered and the applications might not work + properly. + + - + + GCONF_SCHEMAS - Note that MOTIFLIB (usually) expands to - -L/usr/X11R6/lib -lXm or - /usr/X11R6/lib/libXm.a, so there is no need to - add -L or -l in front. + + List all the gconf schema files. The macro will add + the schema files to the port plist and will handle their + registration on install and deinstall. - + GConf is the XML-based database + that virtually all GNOME applications use for storing + their settings. These files are installed into the + etc/gconf/schemas directory. This + database is defined by installed schema files that are + used to generate %gconf.xml key + files. For each schema file installed by the port, + there be an entry in the + Makefile: - - X11 fonts + GCONF_SCHEMAS=my_app.schemas my_app2.schemas my_app3.schemas - If your port installs fonts for the X Window System, put them in - LOCALBASE/lib/X11/fonts/local. + + Gconf schemas are listed in the + GCONF_SCHEMAS macro rather than + pkg-plist. If they are listed in + pkg-plist, they will not be + registered and the applications might not work + properly. + + + - + + INSTALLS_OMF - - Getting fake <envar>DISPLAY</envar> using Xvfb + + Open Source Metadata Framework + (OMF) files are commonly used by + GNOME 2 applications. These files contain the + application help file information, and require special + processing by ScrollKeeper/rarian. To properly register + OMF files when installing GNOME + applications from packages, make sure that + omf files are listed in + pkg-plist and that the port + Makefile has + INSTALLS_OMF defined: - Some applications require a working X11 display for compilation to - succeed. This pose a problem for machines which operates headless. - When the following variable is used, the build infrastructure will - start the virtual framebuffer - X server. The working DISPLAY is then passed - to the build. + INSTALLS_OMF=yes - USE_DISPLAY= yes + When set, bsd.gnome.mk + automatically scans pkg-plist and + adds appropriate @exec and + @unexec directives for each + .omf to track in the + OMF registration database. + + + + + - + + GNOME 元件 - - Desktop entries + For further help with a GNOME port, look at some of the + existing + ports for examples. The + FreeBSD GNOME + page has contact information if more help is + needed. The components are divided into GNOME components + that are currently in use and legacy components. If the + component supports argument, they are listed between + parenthesis in the description. The first is the default. + "Both" is shown if the component defaults to adding to both + build and run dependencies. - 可藉由設定 - DESKTOP_ENTRIES 變數,以輕鬆設定 port 的 X 選單項目 - (Desktop Entries,請參閱 - Freedesktop standard)。 這些項目會在相應的桌面環境如 GNOME - 或 KDE 的應用程式選單中出現。 .desktop 檔案 - 將會被建立、安裝以及自動加入 pkg-plist - 中。語法為: + + GNOME 元件 - DESKTOP_ENTRIES= "NAME" "COMMENT" "ICON" "COMMAND" "CATEGORY" StartupNotify + + + + 元件 + 相關程式 + 描述 + + - 可供使用的分類可參考 - Freedesktop 網站。 而 StartupNotify - 變數會決定程式,是否支援 startup noficication 的環境。 - + + + atk + accessibility/atk + Accessibility toolkit (ATK) + - 範例: + + atkmm + accessibility/atkmm + c++ bindings for atk + - DESKTOP_ENTRIES= "ToME" "Roguelike game based on JRR Tolkien's work" \ - "${DATADIR}/xtra/graf/tome-128.png" \ - "tome -v -g" "Application;Game;RolePlaying" \ - false + + cairo + graphics/cairo + Vector graphics library with cross-device output + support + - + + cairomm + graphics/cairomm + c++ bindings for cairo + - + + dconf + devel/dconf + Configuration database system + (both, build, run) + - - Using GNOME + + evolutiondataserver3 + databases/evolution-data-server + Data backends for the Evolution integrated + mail/PIM suite + - The FreeBSD/GNOME project uses its own set of variables - to define which GNOME components a - particular port uses. A - comprehensive - list of these variables exists within the FreeBSD/GNOME - project's homepage. + + gdkpixbuf2 + graphics/gdk-pixbuf2 + Graphics library for GTK+ + - + + glib20 + devel/glib20 + GNOME core library + glib20 + - - Using KDE + + glibmm + devel/glibmm + c++ bindings for glib20 + - - Variable definitions + + gnomecontrolcenter3 + sysutils/gnome-control-center + GNOME 3 Control Center + -
- Variables for ports that use KDE + + gnomedesktop3 + x11/gnome-desktop + GNOME 3 桌面 UI 函式庫 + - - - - USE_KDELIBS_VER + + gsound + audio/gsound + GObject library for playing system sounds + (both, build, run) + - The port uses KDE libraries. It specifies the - major version of KDE to use and implies - USE_QT_VER of the appropriate - version. The only possible value is - 3. - + + gtk-update-icon-cache + graphics/gtk-update-icon-cache + Gtk-update-icon-cache utility from the Gtk+ + toolkit + - - USE_KDEBASE_VER + + gtk20 + x11-toolkits/gtk20 + Gtk+ 2 toolkit + - The port uses KDE base. It specifies the major - version of KDE to use and implies - USE_QT_VER of the appropriate version. - The only possible value is 3. - - - -
+ + gtk30 + x11-toolkits/gtk30 + Gtk+ 3 toolkit + -
+ + gtkmm20 + x11-toolkits/gtkmm20 + c++ bindings 2.0 for the gtk20 toolkit + - - Ports that require Qt + + gtkmm24 + x11-toolkits/gtkmm24 + c++ bindings 2.4 for the gtk20 toolkit + - - Variables for ports that use Qt + + gtkmm30 + x11-toolkits/gtkmm30 + c++ bindings 3.0 for the gtk30 toolkit + - - - - USE_QT_VER + + gtksourceview2 + x11-toolkits/gtksourceview2 + Widget that adds syntax highlighting to + GtkTextView + - The port uses the Qt toolkit. Possible values - are 3 and 4; - each specify the major version of Qt to use. Appropriate - parameters are passed to configure - script and make. - + + gtksourceview3 + x11-toolkits/gtksourceview3 + Text widget that adds syntax highlighting to + the GtkTextView widget + - - QT_PREFIX + + gtksourceviewmm3 + x11-toolkits/gtksourceviewmm3 + c++ bindings for the gtksourceview3 library + - Set to the path where Qt installed to (read-only - variable). - + + gvfs + devel/gvfs + GNOME 虛擬檔案系統 + - - MOC + + intltool + textproc/intltool + Tool for internationalization (also see + intlhack) + - Set to the path of moc - (read-only variable). Default set according to - USE_QT_VER value. - + + introspection + devel/gobject-introspection + Basic introspection bindings and tools to + generate introspection bindings. Most of the time + :build is enough, :both/:run is only need for + applications that use introspection bindings. + (both, build, run) + - - QTCPPFLAGS + + libgda5 + databases/libgda5 + Provides uniform access to different kinds of + data sources + - Additional compiler flags passed via - CONFIGURE_ENV for Qt toolkit. - Default set according to - USE_QT_VER. - + + libgda5-ui + databases/libgda5-ui + UI library from the libgda5 library + - - QTCFGLIBS + + libgdamm5 + databases/libgdamm5 + c++ bindings for the libgda5 library + - Additional libraries for linking passed via - CONFIGURE_ENV for Qt toolkit. - Default set according to - USE_QT_VER. - + + libgsf + devel/libgsf + Extensible I/O abstraction for dealing with + structured file formats + - - QTNONSTANDARD + + librsvg2 + graphics/librsvg2 + Library for parsing and rendering SVG + vector-graphic files + - Suppress modification of - CONFIGURE_ENV, - CONFIGURE_ARGS, and - MAKE_ENV. - + + libsigc++20 + devel/libsigc++20 + Callback Framework for C++ + - - -
+ + libxml++26 + textproc/libxml++26 + c++ bindings for the libxml2 library + - - Additional variables for ports that use Qt 4.x + + libxml2 + textproc/libxml2 + XML parser library (both, build, run) + - - - - QT_COMPONENTS + + libxslt + textproc/libxslt + XSLT C library (both, build, run) + - Specify tool and library dependencies for Qt4. - See below for details. - + + metacity + x11-wm/metacity + GNOME 視窗管理員 + - - UIC + + nautilus3 + x11-fm/nautilus + GNOME 檔案管理員 + - Set to the path of uic (read-only - variable). Default set according to - USE_QT_VER value. - + + pango + x11-toolkits/pango + Open-source framework for the layout and + rendering of i18n text + - - QMAKE + + pangomm + x11-toolkits/pangomm + c++ bindings for the pango library + - Set to the path of qmake - (read-only variable). Default set according to - USE_QT_VER value. - + + py3gobject3 + devel/py3-gobject3 + Python 3, GObject 3.0 bindings + - - QMAKESPEC + + pygobject3 + devel/py-gobject3 + Python 2, GObject 3.0 bindings + - Set to the path of configuration file for - qmake (read-only variable). Default - set according to USE_QT_VER - value. - + + vte3 + x11-toolkits/vte3 + Terminal widget with improved accessibility and + I18N support + + + +
- - - + + GNOME Macro Components - When USE_QT_VER is set, some useful - settings are passed to configure script: + + + + 元件 + 描述 + + - CONFIGURE_ARGS+= --with-qt-includes=${QT_PREFIX}/include \ - --with-qt-libraries=${QT_PREFIX}/lib \ - --with-extra-libs=${LOCALBASE}/lib \ - --with-extra-includes=${LOCALBASE}/include -CONFIGURE_ENV+= MOC="${MOC}" CPPFLAGS="${CPPFLAGS} ${QTCPPFLAGS}" LIBS="${QTCFGLIBS}" \ - QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}" + + + gnomeprefix + Supply configure with + some default locations. + - If USE_QT_VER is set to 4, - the following settings are also deployed: + + intlhack + Same as intltool, but patches to make sure + share/locale/ is used. Please + only use when intltool alone is + not enough. + - CONFIGURE_ENV+= UIC="${UIC}" QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}" -MAKE_ENV+= QMAKESPEC="${QMAKESPEC}" + + referencehack + This macro is there to help splitting of the API or + reference documentation into its own port. + + + +
-
+ + GNOME Legacy Components - - Component selection (Qt 4.x only) + + + + 元件 + 相關程式 + 描述 + + - When USE_QT_VER is set to 4, individual - Qt4 tool and library dependencies can be specified in the - QT_COMPONENTS variable. Every component - can be suffixed by either _build or _run, - the suffix indicating whether the component should be depended on at - buildtime or runtime, respectively. If unsuffixed, the component will be - depended on at both build- and runtime. Usually, library components - should be specified unsuffixed, tool components should be - specified with the _build suffix and plugin components - should be specified with the _run suffix. The most commonly - used components are listed below (all available components are - listed in _QT_COMPONENTS_ALL in - /usr/ports/Mk/bsd.qt.mk): + + + atspi + accessibility/at-spi + Assistive Technology Service Provider + Interface + -
- Available Qt4 library components + + esound + audio/esound + Enlightenment 音效套件 + - - - - Name - Description - - + + gal2 + x11-toolkits/gal2 + Collection of widgets taken from GNOME 2 + gnumeric + - - - corelib - core library (can be omitted unless the port - uses nothing but corelib) - + + gconf2 + devel/gconf2 + Configuration database system for GNOME 2 + - - gui - graphical user interface library - + + gconfmm26 + devel/gconfmm26 + c++ bindings for gconf2 + - - network - network library - + + gdkpixbuf + graphics/gdk-pixbuf + Graphics library for GTK+ + - - opengl - OpenGL library - + + glib12 + devel/glib12 + glib 1.2 核心函式庫 + - - qt3support - Qt3 compatibility library - + + gnomedocutils + textproc/gnome-doc-utils + GNOME doc utils + - - qtestlib - unit testing library - + + gnomemimedata + misc/gnome-mime-data + MIME and Application database for GNOME 2 + - - script - script library - + + gnomesharp20 + x11-toolkits/gnome-sharp20 + GNOME 2 interfaces for the .NET runtime + - - sql - SQL library - + + gnomespeech + accessibility/gnome-speech + GNOME 2 text-to-speech API + - - xml - XML library - + + gnomevfs2 + devel/gnome-vfs + GNOME 2 虛擬檔案系統 + - - -
+ + gtk12 + x11-toolkits/gtk12 + Gtk+ 1.2 toolkit + - You can determine which libraries the application depends - on, by running ldd on the main executable - after a successful compilation. + + gtkhtml3 + www/gtkhtml3 + Lightweight HTML rendering/printing/editing + engine + - - Available Qt4 tool components + + gtkhtml4 + www/gtkhtml4 + Lightweight HTML rendering/printing/editing + engine + - - - - Name - Description - - + + gtksharp20 + x11-toolkits/gtk-sharp20 + GTK+ and GNOME 2 interfaces for the .NET + runtime + - - - moc - meta object compiler (needed for almost - every Qt application at buildtime) - + + gtksourceview + x11-toolkits/gtksourceview + Widget that adds syntax highlighting to + GtkTextView + - - qmake - Makefile generator / build utility - + + libartgpl2 + graphics/libart_lgpl + Library for high-performance 2D graphics + - - rcc - resource compiler (need if the application comes - with *.rc or *.qrc - files) - + + libbonobo + devel/libbonobo + Component and compound document system for + GNOME 2 + - - uic - user interface compiler (needed if the application - comes with *.ui files created by Qt Designer - - in practice, every Qt application with a GUI) - + + libbonoboui + x11-toolkits/libbonoboui + GUI frontend to the libbonobo component of + GNOME 2 + - - -
+ + libgda4 + databases/libgda4 + Provides uniform access to different kinds of + data sources + - - Available Qt4 plugin components + + libglade2 + devel/libglade2 + GNOME 2 glade 函式庫 + - - - - Name - Description - - + + libgnome + x11/libgnome + Libraries for GNOME 2, a GNU desktop + environment + - - - iconengines - SVG icon engine plugin (if the application - ships SVG icons) - + + libgnomecanvas + graphics/libgnomecanvas + GNOME 2 圖形函式庫 + - - imageformats - imageformat plugins for GIF, JPEG, MNG and - SVG (if the application ships image files) - + + libgnomekbd + x11/libgnomekbd + GNOME 2 鍵盤共用函式庫 + - - -
+ + libgnomeprint + print/libgnomeprint + Gnome 2 print support library + - - Selecting Qt4 components + + libgnomeprintui + x11-toolkits/libgnomeprintui + Gnome 2 print support library + - In this example, the ported application uses the - Qt4 graphical user interface library, the Qt4 core - library, all of the Qt4 code generation tools and Qt4's - Makefile generator. Since the gui library implies a - dependency on the core library, corelib does - not need to be specified. The Qt4 code generation - tools moc, uic and rcc, as well as the Makefile generator - qmake are only needed at buildtime, thus they are specified - with the _build suffix: + + libgnomeui + x11-toolkits/libgnomeui + Libraries for the GNOME 2 GUI, a GNU desktop + environment + - USE_QT_VER= 4 -QT_COMPONENTS= gui moc_build qmake_build rcc_build uic_build - - + + libgtkhtml + www/libgtkhtml + Lightweight HTML rendering/printing/editing + engine + - - Additional considerations + + libgtksourceviewmm + x11-toolkits/libgtksourceviewmm + c++ binding of GtkSourceView + - If the application does not provide a - configure file but a .pro - file, you can use the following: + + libidl + devel/libIDL + Library for creating trees of CORBA IDL + file + - HAS_CONFIGURE= yes + + libsigc++12 + devel/libsigc++12 + Callback Framework for C++ + -do-configure: - @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \ - ${QMAKE} -unix PREFIX=${PREFIX} texmaker.pro + + libwnck + x11-toolkits/libwnck + Library used for writing pagers and + taskslists + - Note the similarity to the qmake line - from the provided BUILD.sh script. Passing - CONFIGURE_ENV ensures qmake - will see the QMAKESPEC variable, without which - it cannot work. qmake generates standard - Makefiles, so it is not necessary to write our own - build target. + + libwnck3 + x11-toolkits/libwnck3 + Library used for writing pagers and + taskslists + - Qt applications often are written to be cross-platform - and often X11/Unix isn't the platform they are developed on, - which in turn often leads to certain loose ends, like: + + orbit2 + devel/ORBit2 + High-performance CORBA ORB with support for the + C language + - - - Missing additional includepaths. - Many applications come with system tray icon support, but - neglect to look for includes and/or libraries in the X11 - directories. You can tell qmake to - add directories to the include and library searchpaths - via the commandline, for example: + + pygnome2 + x11-toolkits/py-gnome2 + Python bindings for GNOME 2 + - ${QMAKE} -unix PREFIX=${PREFIX} INCLUDEPATH+=${LOCALBASE}/include \ - LIBS+=-L${LOCALBASE}/lib sillyapp.pro + + pygobject + devel/py-gobject + Python 2, GObject 2.0 bindings + - + + pygtk2 + x11-toolkits/py-gtk2 + Set of Python bindings for GTK+ + - - Bogus installation paths. - Sometimes data such as icons or .desktop files are by - default installed into directories which aren't scanned by - XDG-compatible applications. editors/texmaker - is an example for this - look at patch-texmaker.pro - in the files directory of that port - for a template on how to remedy this directly in the Qmake - project file. - - + + pygtksourceview + x11-toolkits/py-gtksourceview + Python bindings for GtkSourceView 2 + - + + vte + x11-toolkits/vte + Terminal widget with improved accessibility and + I18N support + + + + -
+ + Deprecated Components: Do Not Use - - Using Java + + + + 元件 + 描述 + + - - Variable definitions + + + HAVE_GNOME + Deprecated, do not use. Was used to check if a + component was installed. This was used for ports + that did not have + --enable/--disable + switches for their configure script. But the building + of parts of a port without a implicit request is + discouraged. + - If your port needs a Java™ Development Kit (JDK) to - either build, run or even extract the distfile, then it should - define USE_JAVA. + + WANT_GNOME + Deprecated, do not use. Was used by ports that + needed USE_GNOME for optional + dependencies, which where defined after + bsd.port.pre.mk. Since + USE_GNOME can be used after the + inclusion of bsd.port.options.mk, + there is little need for this macro any more. + - There are several JDKs in the ports collection, from various - vendors, and in several versions. If your port must use one of - these versions, you can define which one. The most current - version is java/jdk15. + + pangox-compat + pangox-compat has been deprecated and split off from the pango package. + -
- Variables that may be set by ports that use Java + + +
+
+ + 使用 Qt + + + 需要 Qt 的 Ports + + The Ports Collection provides support for Qt 4 and Qt 5 + frameworks with + USE_QTx, + where x is + 4 or 5. + Set USE_QTx + to the list of required Qt components (libraries, + tools, plugins). The Qt 4 and Qt 5 frameworks are quite + similar. The main difference is the set of supported + components. + + The Qt framework exports a number of variables which can + be used by ports, some of them listed below: + + + Variables Provided to Ports That Use Qt + + + + QT_PREFIX + Set to the path where Qt was installed + (${LOCALBASE}). + + + + QMAKE + Full path to qmake + binary. + + + + LRELEASE + Full path to lrelease + utility. + + + + MOC + Full path to moc. + + + + RCC + Full path to rcc. + + + + UIC + Full path to uic. + + + + QT_INCDIR + Qt include directory. + + + + QT_LIBDIR + Qt libraries path. + + + + QT_PLUGINDIR + Qt plugins path. + + + +
+ + When using the Qt framework, these + settings are deployed: + + CONFIGURE_ARGS+= --with-qt-includes=${QT_INCDIR} \ + --with-qt-libraries=${QT_LIBDIR} \ + --with-extra-libs=${LOCALBASE}/lib \ + --with-extra-includes=${LOCALBASE}/include + +CONFIGURE_ENV+= QTDIR="${QT_PREFIX}" QMAKE="${QMAKE}" \ + MOC="${MOC}" RCC="${RCC}" UIC="${UIC}" \ + QMAKESPEC="${QMAKESPEC}" + +PLIST_SUB+= QT_INCDIR=${QT_INCDIR_REL} \ + QT_LIBDIR=${QT_LIBDIR_REL} \ + QT_PLUGINDIR=${QT_PLUGINDIR_REL} + + Some configure scripts do not support the arguments above. + To suppress modification ofCONFIGURE_ENV + and CONFIGURE_ARGS, set + QT_NONSTANDARD. +
+ + + Component Selection + + Individual Qt tool and library dependencies must be + specified in + USE_QTx. + Every component can be suffixed with + _build or _run, the + suffix indicating whether the dependency on the component is + at buildtime or runtime. If unsuffixed, the component will be + depended on at both build- and runtime. Usually, library + components are specified unsuffixed, tool components + are mostly specified with the _build suffix + and plugin components are specified with the + _run suffix. The most commonly used + components are listed below (all available components are + listed in _USE_QT_ALL, + _USE_QT4_ONLY, and + _USE_QT5_ONLY in + /usr/ports/Mk/bsd.qt.mk): + + + 可用的 Qt 函式庫元件 + + - Variable - Means + 名字 + 描述 + + core + 核心函式庫 (Qt 5 only) + + + + corelib + 核心函式庫 (Qt 4 only) + + + + dbus + Qt DBus 函式庫 + + + + gui + 圖形使用者介面函式庫 + + + + network + 網路函式庫 + + + + opengl + Qt OpenGL 函式庫 + + + + script + script library + + + + sql + SQL 函式庫 + + + + testlib + unit testing library + + + + webkit + Qt WebKit 函式庫 + + + + xml + Qt XML 函式庫 + + + +
+ + To determine the libraries an application + depends on, run ldd on the main + executable after a successful compilation. + + + Available Qt Tool Components + + + + + 名字 + 描述 + + + + + + qmake + Makefile generator/build utility + + + + buildtools + build tools (moc, + rcc), needed for almost + every Qt application (Qt 5 only) + + + + linguisttools + localization tools: lrelease, + lupdate (Qt 5 only) + + + + linguist + localization tools: lrelease, + lupdate (Qt 4 only) + + + + moc + meta object compiler, needed for almost + every Qt application at buildtime (Qt 4 only) + + + + rcc + resource compiler, needed if the application + comes with *.rc or + *.qrc files (Qt 4 only) + + + + uic + user interface compiler, needed if the + application comes with *.ui + files, in practice, every Qt + application with a GUI (Qt 4 only) + + + +
+ + + Available Qt Plugin Components + + + + + 名字 + 描述 + + + + + + iconengines + SVG icon engine plugin, needed if the application + ships SVG icons (Qt 4 only) + + + + imageformats + plugins for TGA, TIFF, and MNG + image formats + + + +
+ + + Selecting Qt 4 Components + + In this example, the ported application uses the Qt 4 + graphical user interface library, the Qt 4 core library, + all of the Qt 4 code generation tools and Qt 4's Makefile + generator. Since the gui library + implies a dependency on the core library, + corelib does not need to be specified. + The Qt 4 code generation tools moc, + uic and rcc, as well + as the Makefile generator qmake are + only needed at buildtime, thus they are specified with the + _build suffix: + + USE_QT4= gui moc_build qmake_build rcc_build uic_build + +
+ + + 使用 <command>qmake</command> + + + If the application provides a + qmake project file + (*.pro), define + USES= qmake along with + USE_QTx. Note + that USES= qmake already implies a build + dependency on qmake, therefore the qmake component can be + omitted from + USE_QTx. + Similar to CMake, + qmake supports out-of-source + builds, which can be enabled by specifying the + outsource argument (see USES= qmake + example). + + + Variables for Ports That Use + <command>qmake</command> + + + + + Variable + Means + + + + + + QMAKE_ARGS + Port specific qmake + flags to be passed to the qmake + binary. + + + + QMAKE_ENV + Environment variables to be set for the + qmake binary. The default is + ${CONFIGURE_ENV}. + + + + QMAKE_SOURCE_PATH + + Path to qmake project files + (.pro). The default is + ${WRKSRC} if an + out-of-source build is requested, empty + otherwise. + + + +
+ + + <literal>USES= qmake</literal> 範例 + + This snippet demonstrates the use of + qmake for a Qt 4 port: + + USES= qmake:outsource +USE_QT4= moc_build + + For a Qt 5 port: + USES= qmake:outsource +USE_QT5= buildtools_build + + + Qt applications are often written to be cross-platform + and often X11/Unix is not the platform they are developed + on, which in turn leads to certain loose ends, + like: + + + + Missing additional include + paths. Many applications come with + system tray icon support, but neglect to look for + includes and/or libraries in the X11 directories. To add + directories to qmake's + include and library search paths via the command + line, use: + + QMAKE_ARGS+= INCLUDEPATH+=${LOCALBASE}/include \ + LIBS+=-L${LOCALBASE}/lib + + + + Bogus installation paths. + Sometimes data such as icons or .desktop files are by + default installed into directories which are not scanned + by XDG-compatible applications. + editors/texmaker is + an example for this - look at + patch-texmaker.pro in the + files directory of that port for a + template on how to remedy this directly in the + qmake project file. + + +
+
+ + + 使用 KDE + + + KDE 4 Variable Definitions + + If the application depends on KDE 4, set + USE_KDE4 to the list of required + components. _build and + _run suffixes can be used to force + components dependency type (for example, + baseapps_run). If no suffix is set, a + default dependency type will be used. To force both types, + add the component twice with both suffixes (for example, + automoc4_build automoc4_run). The most + commonly used components are listed below (up-to-date + components are documented at the top of + /usr/ports/Mk/bsd.kde4.mk): + + + 可用的 KDE 4 元件 + + + + + 名字 + 描述 + + + + + + kdehier + Hierarchy of common KDE directories + + + + kdelibs + KDE 核心函式庫 + + + + kdeprefix + If set, port will be installed into + ${KDE4_PREFIX} + + + + automoc4 + Build tool to automatically generate moc + files + + + + akonadi + Storage server for KDE PIM data + + + + soprano + Library for Resource Description Framework + (RDF) + + + + strigi + Strigi 桌面搜尋函式庫 + + + + libkcddb + KDE CDDB (compact disc database) library + + + + libkcompactdisc + KDE library for interfacing with audio + CDs + + + + libkdeedu + Libraries used by educational + applications + + + + libkdcraw + KDE LibRaw 函式庫 + + + + libkexiv2 + KDE Exiv2 函式庫 + + + + libkipi + KDE Image Plugin Interface + + + + libkonq + Konqueror 核心函式庫 + + + + libksane + KDE SANE ("Scanner Access Now Easy") + library + + + + pimlibs + Personal information management libraries + + + + kate + Advanced text editor framework + + + + marble + Virtual globe and world atlas + + + + okular + Universal document viewer + + + + korundum + KDE Ruby bindings + + + + perlkde + KDE Perl bindings + + + + pykde4 + KDE Python bindings + + + + pykdeuic4 + PyKDE user interface compiler + + + + smokekde + KDE SMOKE 函式庫 + + + +
+ + KDE 4 ports are installed into + KDE4_PREFIX. This is + achieved by specifying the kdeprefix + component, which overrides the default + PREFIX. The ports, however, respect any + PREFIX set via the MAKEFLAGS + environment variable and/or make + arguments. Currently KDE4_PREFIX + is identical to the default PREFIX, + ${LOCALBASE}. + + + <varname>USE_KDE4</varname> 範例 + + This is a simple example for a KDE 4 port. + USES= cmake:outsource instructs the + port to utilize CMake, a + configuration tool widely used by KDE 4 projects (see + for detailed usage). + USE_KDE4 brings dependency on KDE + libraries and makes port using + automoc4 at build stage. + Required KDE components and other dependencies can be + determined through configure log. + USE_KDE4 does not imply + USE_QT4. If a port requires some + Qt 4 components, specify them in + USE_QT4. + + USES= cmake:outsource +USE_KDE4= kdelibs kdeprefix automoc4 +USE_QT4= moc_build qmake_build rcc_build uic_build + +
+
+ + + 使用 Java + + + 變數定義 + + If the port needs a Java™ Development Kit + (JDK™) to either build, run or even + extract the distfile, then define + USE_JAVA. + + There are several JDKs in the ports + collection, from various vendors, and in several versions. If + the port must use one of these versions, define which one. + The most current version, and FreeBSD default is + java/openjdk6. + + + Variables Which May be Set by Ports That Use + Java + + + + + Variable + Means + + + + + USE_JAVA - Should be defined for the remaining variables to have any - effect. + Define for the remaining variables + to have any effect. JAVA_VERSION - List of space-separated suitable Java versions for - the port. An optional "+" allows you to - specify a range of versions (allowed values: - 1.1[+] 1.2[+] 1.3[+] 1.4[+]). + List of space-separated suitable Java versions + for the port. An optional "+" + allows specifying a range of versions (allowed + values: + 1.5[+] 1.6[+] 1.7[+]). JAVA_OS - List of space-separated suitable JDK port operating - systems for the port (allowed values: native - linux). + List of space-separated suitable + JDK port operating systems for the + port (allowed values: + native linux). JAVA_VENDOR - List of space-separated suitable JDK port vendors for - the port (allowed values: freebsd bsdjava sun ibm - blackdown). + List of space-separated suitable + JDK port vendors for the port + (allowed values: + freebsd bsdjava sun + openjdk). JAVA_BUILD - When set, it means that the selected JDK port should - be added to the build dependencies of the port. + When set, add the selected JDK + port to the build dependencies. JAVA_RUN - When set, it means that the selected JDK port should - be added to the run dependencies of the port. + When set, add the selected JDK + port to the run dependencies. JAVA_EXTRACT - When set, it means that the selected JDK port should - be added to the extract dependencies of the port. + When set, add the selected JDK + port to the extract dependencies. - - - USE_JIKES - Whether the port should or should not use the - jikes bytecode compiler to build. When - no value is set for this variable, the port will use - jikes to build if available. You may - also explicitly forbid or enforce the use of - jikes (by setting 'no' - or 'yes'). In the later case, devel/jikes will be added to build - dependencies of the port. In any case that jikes - is actually used in place of javac, then the - HAVE_JIKES variable is defined by - bsd.java.mk. -
- Below is the list of all settings a port will receive after - setting USE_JAVA: + Below is the list of all settings a port will receive + after setting USE_JAVA: - - Variables provided to ports that use Java +
+ Variables Provided to Ports That Use Java - Variable - Value + Variable + Value + JAVA_PORT - The name of the JDK port (e.g. - 'java/jdk14'). + The name of the JDK port (for + example, java/openjdk6). JAVA_PORT_VERSION - The full version of the JDK port (e.g. - '1.4.2'). If you only need the first - two digits of this version number, use + The full version of the JDK + port (for example, 1.6.0). Only + the first two digits of this version number are + needed, use ${JAVA_PORT_VERSION:C/^([0-9])\.([0-9])(.*)$/\1.\2/}. JAVA_PORT_OS - The operating system used by the JDK port (e.g. - 'linux'). + The operating system used by the + JDK port (for example, + 'native'). JAVA_PORT_VENDOR - The vendor of the JDK port (e.g. - 'sun'). + The vendor of the JDK port + (for example, 'openjdk'). JAVA_PORT_OS_DESCRIPTION - Description of the operating system used by the JDK port - (e.g. 'Linux'). + Description of the operating system used by the + JDK port (for example, + 'Native'). JAVA_PORT_VENDOR_DESCRIPTION - Description of the vendor of the JDK port (e.g. - 'FreeBSD Foundation'). + Description of the vendor of the + JDK port (for example, + 'OpenJDK BSD Porting + Team'). JAVA_HOME - Path to the installation directory of the JDK (e.g. - '/usr/local/jdk1.3.1'). + Path to the installation directory of the + JDK (for example, + '/usr/local/openjdk6'). JAVAC - Path to the Java compiler to use (e.g. - '/usr/local/jdk1.1.8/bin/javac' or - '/usr/local/bin/jikes'). + Path to the Java compiler to use (for example, + '/usr/local/openjdk6/bin/javac'). JAR - Path to the jar tool to use (e.g. - '/usr/local/jdk1.2.2/bin/jar' or + Path to the jar tool to use + (for example, + '/usr/local/openjdk6/bin/jar' + or '/usr/local/bin/fastjar'). APPLETVIEWER - Path to the appletviewer utility (e.g. - '/usr/local/linux-jdk1.2.2/bin/appletviewer'). + Path to the appletviewer + utility (for example, + '/usr/local/openjdk6/bin/appletviewer'). JAVA - Path to the java executable. Use - this for executing Java programs (e.g. - '/usr/local/jdk1.3.1/bin/java'). + Path to the java executable. + Use this for executing Java programs (for example, + '/usr/local/openjdk6/bin/java'). JAVADOC - Path to the javadoc utility + Path to the javadoc utility program. JAVAH - Path to the javah program. + Path to the javah + program. JAVAP - Path to the javap program. + Path to the javap + program. JAVA_KEYTOOL - Path to the keytool utility program. - This variable is available only if the JDK is Java 1.2 or - higher. + Path to the keytool utility + program. JAVA_N2A - Path to the native2ascii tool. + Path to the native2ascii + tool. JAVA_POLICYTOOL - Path to the policytool program. - This variable is available only if the JDK is Java 1.2 or - higher. + Path to the policytool + program. JAVA_SERIALVER - Path to the serialver utility - program. + Path to the serialver + utility program. RMIC - Path to the RMI stub/skeleton generator, + Path to the RMI stub/skeleton generator, rmic. RMIREGISTRY - Path to the RMI registry program, + Path to the RMI registry program, rmiregistry. RMID - Path to the RMI daemon program rmid. - This variable is only available if the JDK is Java 1.2 - or higher. + Path to the RMI daemon program + rmid. JAVA_CLASSES - Path to the archive that contains the JDK class - files. On JDK 1.2 or later, this is - ${JAVA_HOME}/jre/lib/rt.jar. Earlier - JDKs used - ${JAVA_HOME}/lib/classes.zip. + Path to the archive that contains the + JDK class files, + ${JAVA_HOME}/jre/lib/rt.jar. - - - HAVE_JIKES - Defined whenever jikes is used by - the port (see USE_JIKES above). -
- You may use the java-debug make target - to get information for debugging your port. It will display the - value of many of the forecited variables. + Use the java-debug make + target to get information for debugging the port. It will + display the value of many of the previously listed + variables. - Additionally, the following constants are defined so all + Additionally, these constants are defined so all Java ports may be installed in a consistent way: - - Constants defined for ports that use Java +
+ Constants Defined for Ports That Use Java - Constant - Value + 常數 + Value + JAVASHAREDIR - The base directory for everything related to Java. - Default: ${PREFIX}/share/java. - + The base directory for everything related to + Java. Default: + ${PREFIX}/share/java. JAVAJARDIR - The directory where JAR files should be installed. - Default: + The directory where JAR files is + installed. Default: ${JAVASHAREDIR}/classes. JAVALIBDIR - The directory where JAR files installed by other - ports are located. Default: + The directory where JAR files installed by + other ports are located. Default: ${LOCALBASE}/share/java/classes. @@ -5943,3113 +9391,4943 @@
- The related entries are defined in both + The related entries are defined in both PLIST_SUB (documented in ) and SUB_LIST. +
- + + Building with Ant - - Building with Ant + When the port is to be built using Apache Ant, it has to + define USE_ANT. Ant is thus considered to + be the sub-make command. When no + do-build target is defined by the + port, a default one will be set that runs Ant according to + MAKE_ENV, MAKE_ARGS and + ALL_TARGET. This is similar to the + USES= gmake mechanism, which is documented + in . + - When the port is to be built using Apache Ant, it has to - define USE_ANT. Ant is thus considered to be - the sub-make command. When no do-build target - is defined by the port, a default one will be set that simply - runs Ant according to MAKE_ENV, - MAKE_ARGS and ALL_TARGETS. - This is similar to the USE_GMAKE mechanism, - which is documented in . + + Best Practices - If jikes is used in place of - javac (see USE_JIKES in - ), then Ant will automatically - use it to build the port. + When porting a Java library, the port has to install + the JAR file(s) in ${JAVAJARDIR}, and + everything else under + ${JAVASHAREDIR}/${PORTNAME} (except for + the documentation, see below). To reduce the packing file + size, reference the JAR file(s) directly in the + Makefile. Use this statement (where + myport.jar is + the name of the JAR file installed as part of the + port): - + PLIST_FILES+= ${JAVAJARDIR}/myport.jar - - Best practices + When porting a Java application, the port usually + installs everything under a single directory (including its + JAR dependencies). The use of + ${JAVASHAREDIR}/${PORTNAME} is strongly + encouraged in this regard. It is up the porter to decide + whether the port installs the additional JAR + dependencies under this directory or uses the + already installed ones (from + ${JAVAJARDIR}). - When porting a Java library, your port should install the - JAR file(s) in ${JAVAJARDIR}, and everything - else under ${JAVASHAREDIR}/${PORTNAME} - (except for the documentation, see below). In order to reduce - the packing file size, you may reference the JAR file(s) directly - in the Makefile. Just use the following - statement (where myport.jar is the name - of the JAR file installed as part of the port): + When porting a Java application that requires an + application server such as + www/tomcat7 to run the + service, it is quite common for a vendor to distribute a + .war. A .war + is a Web application ARchive and is extracted when + called by the application. Avoid adding a + .war + to pkg-plist. + It is not considered best practice. An application server + will expand war archive, but not + clean it up properly if the port is removed. A more + desirable way of working with this file is to extract the + archive, then install the files, and lastly add these files + to pkg-plist. - PLIST_FILES+= %%JAVAJARDIR%%/myport.jar + TOMCATDIR= ${LOCALBASE}/apache-tomcat-7.0 +WEBAPPDIR= myapplication - When porting a Java application, the port usually installs - everything under a single directory (including its JAR - dependencies). The use of - ${JAVASHAREDIR}/${PORTNAME} is strongly - encouraged in this regard. It is up the porter to decide - whether the port should install the additional JAR dependencies - under this directory or directly use the already installed ones - (from ${JAVAJARDIR}). +post-extract: + @${MKDIR} ${WRKDIR}/${PORTDIRNAME} + @${TAR} xf ${WRKDIR}/myapplication.war -C ${WRKDIR}/${PORTDIRNAME} - Regardless of the type of your port (library or application), - the additional documentation should be installed in the - same location as for - any other port. The JavaDoc tool is known to produce a - different set of files depending on the version of the JDK that - is used. For ports that do not enforce the use of a particular - JDK, it is therefore a complex task to specify the packing list - (pkg-plist). This is one reason why - porters are strongly encouraged to use the - PORTDOCS macro. Moreover, even if you can - predict the set of files that will be generated by - javadoc, the size of the resulting - pkg-plist advocates for the use of - PORTDOCS. +do-install: + cd ${WRKDIR} && \ + ${INSTALL} -d -o ${WWWOWN} -g ${WWWGRP} ${TOMCATDIR}/webapps/${PORTDIRNAME} + @cd ${WRKDIR}/${PORTDIRNAME} && ${COPYTREE_SHARE} \* ${WEBAPPDIR}/${PORTDIRNAME} - The default value for DATADIR is - ${PREFIX}/share/${PORTNAME}. It is a good - idea to override DATADIR to - ${JAVASHAREDIR}/${PORTNAME} for Java ports. - Indeed, DATADIR is automatically added to - PLIST_SUB (documented in ) so you may use - %%DATADIR%% directly in - pkg-plist. + Regardless of the type of port (library or + application), the additional documentation is installed in the + same location as + for any other port. The JavaDoc tool is known to produce a + different set of files depending on the version of the + JDK that is used. For ports that do not + enforce the use of a particular JDK, it is + therefore a complex task to specify the packing list + (pkg-plist). This is one reason why + porters are strongly encouraged to use + PORTDOCS. Moreover, even if the set of + files that will be generated by javadoc can + be predicted, the size of the resulting + pkg-plist advocates for the use of + PORTDOCS. - As for the choice of building Java ports from source or - directly installing them from a binary distribution, there is - no defined policy at the time of writing. However, people from - the &os; Java Project - encourage porters to have their ports built from source whenever - it is a trivial task. + The default value for DATADIR is + ${PREFIX}/share/${PORTNAME}. It is a + good idea to override DATADIR to + ${JAVASHAREDIR}/${PORTNAME} for Java + ports. Indeed, DATADIR is automatically + added to PLIST_SUB (documented in + ) so use + %%DATADIR%% directly in + pkg-plist. - All the features that have been presented in this section - are implemented in bsd.java.mk. If you - ever think that your port needs more sophisticated Java support, - please first have a look at the - bsd.java.mk CVS log as it usually takes some time to - document the latest features. Then, if you think the support - you are lacking would be beneficial to many other Java ports, - feel free to discuss it on the &a.java;. + As for the choice of building Java ports from source or + directly installing them from a binary distribution, there + is no defined policy at the time of writing. However, + people from the + FreeBSD Java + Project encourage porters to have their ports + built from source whenever it is a trivial task. - Although there is a java category for - PRs, it refers to the JDK porting effort from the &os; Java - project. Therefore, you should submit your Java port in the - ports category as for any other port, unless - the issue you are trying to resolve is related to either a JDK - implementation or bsd.java.mk. + All the features that have been presented in this + section are implemented in bsd.java.mk. + If the port needs more sophisticated + Java support, please first have a look at the bsd.java.mk + Subversion log as it + usually takes some time to document the latest features. + Then, if the needed support that is lacking would be + beneficial to many other Java ports, feel free to discuss it + on the FreeBSD Java Language mailing list. - Similarly, there is a defined policy regarding the - CATEGORIES of a Java port, which is detailed - in . + Although there is a java category for + PRs, it refers to the JDK porting effort + from the FreeBSD Java project. Therefore, submit the Java port + in the ports category as for any other + port, unless the issue is related to either a + JDK implementation or + bsd.java.mk. - + Similarly, there is a defined policy regarding the + CATEGORIES of a Java port, which is + detailed in . + +
- + + 網路應用程式, Apache 和 PHP - - Web applications, Apache and PHP + + Apache - - Apache + + Variables for Ports That Use Apache -
- Variables for ports that use Apache + + - - + + USE_APACHE + The port requires Apache. Possible values: + yes (gets any version), + 22, 24, + 22-24, 22+, + etc. The default APACHE version is + 22. More details are available + in ports/Mk/bsd.apache.mk and + at wiki.freebsd.org/Apache/. + - - USE_APACHE + + APXS + Full path to the apxs + binary. Can be overridden in the port. + - The port requires Apache. Possible values: - yes (gets any version), - 1.3, 2.0, - 2.2, 2.0+, - etc. Default dependency is on version - 1.3. - + + HTTPD + Full path to the httpd + binary. Can be overridden in the port. + - - WITH_APACHE2 + + APACHE_VERSION + The version of present Apache installation + (read-only variable). This variable is only + available after inclusion of + bsd.port.pre.mk. Possible + values: 22, + 24. + - The port requires Apache 2.0. Without this variable, - the port will depend on Apache 1.3. This variable is - deprecated and should not be used anymore. - + + APACHEMODDIR + Directory for Apache modules. This variable is + automatically expanded in + pkg-plist. + - - APXS + + APACHEINCLUDEDIR + Directory for Apache headers. This variable is + automatically expanded in + pkg-plist. + - Full path to the apxs binary. - Can be overriden in your port. - + + APACHEETCDIR + Directory for Apache configuration files. This + variable is automatically expanded in + pkg-plist. + + + +
- - HTTPD + + Useful Variables for Porting Apache Modules - Full path to the httpd binary. - Can be overriden in your port. - + + - - APACHE_VERSION + + MODULENAME + Name of the module. Default value is + PORTNAME. Example: + mod_hello + - The version of present Apache installation (read-only - variable). This variable is only available after inclusion - of bsd.port.pre.mk. Possible values: - 13, 20, - 22. - + + SHORTMODNAME + Short name of the module. Automatically + derived from MODULENAME, but can + be overridden. Example: + hello + - - APACHEMODDIR + + AP_FAST_BUILD + Use apxs to compile and + install the module. + - Directory for Apache modules. This variable is - automatically expanded in pkg-plist. - + + AP_GENPLIST + Also automatically creates a + pkg-plist. + - - APACHEINCLUDEDIR + + AP_INC + Adds a directory to a header search path during + compilation. + - Directory for Apache headers. This variable is - automatically expanded in pkg-plist. - + + AP_LIB + Adds a directory to a library search path + during compilation. + - - APACHEETCDIR + + AP_EXTRAS + Additional flags to pass to + apxs. + + + +
+
- Directory for Apache configuration files. This - variable is automatically expanded in pkg-plist. - + + 網路應用程式 - - - + Web applications must be installed into + PREFIX/www/appname. + This path is available both in + Makefile and in + pkg-plist as WWWDIR, + and the path relative to PREFIX is + available in Makefile as + WWWDIR_REL. - - port Apache 模組時好用的變數 + The user and group of web server process are available + as WWWOWN and WWWGRP, + in case the ownership of some files needs to be changed. The + default values of both are www. Use + WWWOWN?= myuser and WWWGRP?= + mygroup if the port needs different values. This + allows the user to override them easily. - - + Do not depend on Apache unless the web app explicitly + needs Apache. Respect that users may wish to run a web + app on different web server than Apache. + - - MODULENAME + + PHP - 模組名稱。 預設值為 - PORTNAME. 範例: - mod_hello - +
+ Variables for Ports That Use PHP - - SHORTMODNAME + + + + USE_PHP + The port requires PHP. The value + yes adds a dependency on PHP. + The list of required PHP extensions can be specified + instead. Example: + pcre xml gettext + - 簡化的模組名稱。 自動地由變數 - MODULENAME 產生,不過可以覆蓋它。 - 範例: hello - + + DEFAULT_PHP_VER + Selects which major version of PHP will be + installed as a dependency when no PHP is installed + yet. Default is 5. Possible + values: 4, + 5 + - - AP_FAST_BUILD + + IGNORE_WITH_PHP + The port does not work with PHP of the given + version. Possible values: 4, + 5 + - 使用 apxs - 來編譯及安裝這個模組。 - + + USE_PHPIZE + The port will be built as a PHP + extension. + - - AP_GENPLIST + + USE_PHPEXT + The port will be treated as a PHP extension, + including installation and registration in the + extension registry. + - 同樣地,也是自動產生 - pkg-plist - + + USE_PHP_BUILD + Set PHP as a build dependency. + - - AP_INC + + WANT_PHP_CLI + Want the CLI (command line) version of + PHP. + - 在編譯時間加入一個目錄到標頭檔搜尋路徑。 - + + WANT_PHP_CGI + Want the CGI version of PHP. + - - AP_LIB + + WANT_PHP_MOD + Want the Apache module version of PHP. + - 在編譯時間加入一個目錄到函式庫搜尋路徑。 - + + WANT_PHP_SCR + Want the CLI or the CGI version of PHP. + - - AP_EXTRAS + + WANT_PHP_WEB + Want the Apache module or the CGI version of + PHP. + + + +
+
- 傳給 - apxs 額外的 flags。 - + + PEAR Modules - - - - + Porting PEAR modules is a very simple process. - - Web 應用程式 + Add USES=pear to the port's + Makefile. The framework will install the + relevant files in the right places and automatically generate + the plist at install time. - Web 應用程式應該安裝到 - PREFIX/www/appname - 。 For your convenience, this path is available both in - Makefile and in pkg-plist - as WWWDIR, and the path relative to - PREFIX is available in - Makefile as - WWWDIR_REL. + + Example Makefile for PEAR Class - The user and group of web server process are available as - WWWOWN and WWWGRP, in case you - need to change the ownership of some files. The default values of - both are www. If you want different values for - your port, use WWWOWN?= myuser notation, to allow - user to override it easily. + PORTNAME= Date +PORTVERSION= 1.4.3 +CATEGORIES= devel www pear - 請別過於相依 Apache,除非這些程式有明確需要,而得相依 Apache - 。也許有些使用者,會想在其他非 Apache 的 Web 伺服器上執行這些網頁程式。 +MAINTAINER= example@domain.com +COMMENT= PEAR Date and Time Zone Classes - +USES= pear - - PHP +.include <bsd.port.mk> + - - Variables for ports that use PHP + + <application>Horde</application> Modules - - - - USE_PHP + In the same way, porting + Horde modules is a simple + process. - The port requires PHP. The value yes - adds a dependency on PHP. The list of required PHP extensions - can be specified instead. Example: pcre xml - gettext - + Add USES=horde to the port's + Makefile. The framework will install + the relevant files in the right places and automatically + generate the plist at install time. - - DEFAULT_PHP_VER + The USE_HORDE_BUILD and + USE_HORDE_RUN variables can be used to + add buildtime and runtime dependencies on other + Horde modules. See + Mk/Uses/horde.mk for a complete list of + available modules. - Selects which major version of PHP will be installed as - a dependency when no PHP is installed yet. Default is - 4. Possible values: 4, - 5 - + + Example Makefile for <application>Horde</application> + Module - - IGNORE_WITH_PHP + PORTNAME= Horde_Core +PORTVERSION= 2.14.0 +CATEGORIES= devel www pear - The port does not work with PHP of the given version. - Possible values: 4, - 5 - +MAINTAINER= horde@FreeBSD.org +COMMENT= Horde Core Framework libraries - - USE_PHPIZE +OPTIONS_DEFINE= KOLAB SOCKETS +KOLAB_DESC= Enable Kolab server support +SOCKETS_DESC= Depend on sockets PHP extension - The port will be built as a PHP extension. - +USES= horde +USE_PHP= session - - USE_PHPEXT +USE_HORDE_BUILD= Horde_Role +USE_HORDE_RUN= Horde_Role Horde_History Horde_Pack \ + Horde_Text_Filter Horde_View - The port will be treated as a PHP extension, including - installation and registration in the extension registry. - +KOLAB_USE= HORDE_RUN=Horde_Kolab_Server,Horde_Kolab_Session +SOCKETS_USE= PHP=sockets - - USE_PHP_BUILD +.include <bsd.port.mk> + + + + - Set PHP as a build dependency. - + + 使用 Python - - WANT_PHP_CLI + The Ports Collection supports parallel installation of + multiple Python versions. Ports must use a + correct python interpreter, according to + the user-settable PYTHON_VERSION. + Most prominently, this means replacing the path to + python executable in scripts with the value + of PYTHON_CMD. - Want the CLI (command line) version of PHP. - + Ports that install files under + PYTHON_SITELIBDIR must use the + pyXY- package name prefix, so their package + name embeds the version of Python they are installed + into. - - WANT_PHP_CGI + PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} - Want the CGI version of PHP. - +
+ Most Useful Variables for Ports That Use Python - - WANT_PHP_MOD + + + + USES=python + The port needs Python. The minimal required + version can be specified with values such as + 2.7+. Version ranges can also be + specified by separating two version numbers with a dash: + USES=python:3.2-3.3 + - Want the Apache module version of PHP. - + + USE_PYTHON=distutils + Use Python distutils for configuring, compiling, + and installing. This is required when the port comes + with setup.py. This overrides + the do-build and + do-install targets and may + also override do-configure + if GNU_CONFIGURE is not + defined. + - - WANT_PHP_SCR + + USE_PYTHON=autoplist + Create the packaging list automatically. This also + requires USE_PYTHON=distutils to be + set. + - Want the CLI or the CGI version of PHP. - + + USE_PYTHON=concurrent + The port will use an unique prefix, typically + PYTHON_PKGNAMEPREFIX for certain + directories, such as EXAMPLESDIR and + DOCSDIR and also will append a + suffix, the python version from + PYTHON_VER, to binaries and scripts + to be installed. This allows ports to be installed for + different Python versions at the same time, which + otherwise would install conflicting files. + - - WANT_PHP_WEB + + PYTHON_PKGNAMEPREFIX + Used as a PKGNAMEPREFIX to + distinguish packages for different Python versions. + Example: py27- + - Want the Apache module or the CGI version of PHP. - - - -
+ + PYTHON_SITELIBDIR + Location of the site-packages tree, that contains + installation path of Python (usually + LOCALBASE). + PYTHON_SITELIBDIR can be + very useful when installing Python modules. + -
+ + PYTHONPREFIX_SITELIBDIR + The PREFIX-clean variant of PYTHON_SITELIBDIR. + Always use %%PYTHON_SITELIBDIR%% in + pkg-plist when possible. The + default value of + %%PYTHON_SITELIBDIR%% is + lib/python%%PYTHON_VERSION%%/site-packages + - - PEAR modules + + PYTHON_CMD + Python interpreter command line, including + version number. + - Porting PEAR modules is a very simple process. + + PYNUMERIC + Dependency line for numeric extension. + - Use the variables FILES, - TESTS, DATA, - SQLS, SCRIPTFILES, - DOCS and EXAMPLES to list the - files you want to install. All listed files will be automatically - installed into the appropriate locations and added to - pkg-plist. + + PYNUMPY + Dependency line for the new numeric extension, + numpy. (PYNUMERIC is deprecated by upstream + vendor). + - Include - ${PORTSDIR}/devel/pear/bsd.pear.mk - on the last line of the Makefile. + + PYXML + Dependency line for XML extension (not needed for + Python 2.0 and higher as it is also in base + distribution). + + + + - - Example Makefile for PEAR class - PORTNAME= Date -PORTVERSION= 1.4.3 -CATEGORIES= devel www pear + A complete list of available variables can be found in + /usr/ports/Mk/Uses/python.mk. -MAINTAINER= example@domain.com -COMMENT= PEAR Date and Time Zone Classes + + Makefile for a Simple <application>Python</application> + Module -BUILD_DEPENDS= ${PEARDIR}/PEAR.php:${PORTSDIR}/devel/pear-PEAR -RUN_DEPENDS= ${BUILD_DEPENDS} + PORTNAME= sample +PORTVERSION= 1.2.3 +CATEGORIES= devel -FILES= Date.php Date/Calc.php Date/Human.php Date/Span.php \ - Date/TimeZone.php -TESTS= test_calc.php test_date_methods_span.php testunit.php \ - testunit_date.php testunit_date_span.php wknotest.txt \ - bug674.php bug727_1.php bug727_2.php bug727_3.php \ - bug727_4.php bug967.php weeksinmonth_4_monday.txt \ - weeksinmonth_4_sunday.txt weeksinmonth_rdm_monday.txt \ - weeksinmonth_rdm_sunday.txt -DOCS= TODO -_DOCSDIR= . +MAINTAINER= john@doe.tld +COMMENT= Python sample module -.include <bsd.port.pre.mk> -.include "${PORTSDIR}/devel/pear/bsd.pear.mk" -.include <bsd.port.post.mk> +USES= python +USE_PYTHON= autoplist distutils - +.include <bsd.port.mk> + - + Some Python applications claim to have + DESTDIR support (which would be required + for staging) but it is broken (Mailman up to 2.1.16, for + instance). This can be worked around by recompiling the + scripts. This can be done, for example, in the + post-build target. Assuming the + Python scripts are supposed to reside in + PYTHONPREFIX_SITELIBDIR after installation, + this solution can be applied: -
+ (cd ${STAGEDIR}${PREFIX} \ + && ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \ + -d ${PREFIX} -f ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;}) - - Using Python + This recompiles the sources with a path relative to the + stage directory, and prepends the value of + PREFIX to the file name recorded in the + byte-compiled output file by -d. + -f is required to force recompilation, and + the :S;${PREFIX}/;; strips prefixes from + the value of PYTHONPREFIX_SITELIBDIR + to make it relative to + PREFIX. + - The Ports Collection supports parallel installation of multiple - Python versions. Ports should make sure to use a correct - python interpreter, according to the user-settable - PYTHON_VERSION variable. Most prominently, this - means replacing the path to python executable in - scripts with the value of PYTHON_CMD - variable. + + 使用 <application>Tcl/Tk</application> - Ports that install files under PYTHON_SITELIBDIR - should use the pyXY- package name prefix, so their - package name embeds the version of Python they are installed - into. + The Ports Collection supports parallel installation of + multiple Tcl/Tk versions. Ports + should try to support at least the default + Tcl/Tk version and higher with + USES=tcl. It is possible to specify the + desired version of tcl by appending + :xx, for example, + USES=tcl:85. - PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + + The Most Useful Read-Only Variables for Ports That Use + <application>Tcl/Tk</application> -
- Most useful variables for ports that use Python + + + + TCL_VER + chosen major.minor version of + Tcl + - + + TCLSH + full path of the Tcl + interpreter + + + + TCL_LIBDIR + path of the Tcl + libraries + + + + TCL_INCLUDEDIR + path of the Tcl C + header files + + + + TK_VER + chosen major.minor version of + Tk + + + + WISH + full path of the Tk + interpreter + + + + TK_LIBDIR + path of the Tk + libraries + + + + TK_INCLUDEDIR + path of the Tk C header + files + + + +
+ + See the USES=tcl and + USES=tk of + for a full description of those + variables. A complete list of those variables is available in + /usr/ports/Mk/Uses/tcl.mk. +
+ + + 使用 Emacs + + This section is yet to be written. + + + + 使用 Ruby + + + Useful Variables for Ports That Use Ruby + + + + + Variable + 描述 + + + + + USE_RUBY + The port requires Ruby. + + + + USE_RUBY_EXTCONF + The port uses extconf.rb to + configure. + + + + USE_RUBY_SETUP + The port uses setup.rb to + configure. + + + + RUBY_SETUP + Set to the alternative name of + setup.rb. Common value is + install.rb. + + + +
+ + This table shows the selected variables available + to port authors via the ports infrastructure. These variables + are used to install files into their proper locations. + Use them in pkg-plist as much as + possible. Do not redefine these variables in the port. + + + Selected Read-Only Variables for Ports That Use + Ruby + + + + + Variable + 描述 + Example value + + + + + + RUBY_PKGNAMEPREFIX + Used as a PKGNAMEPREFIX to + distinguish packages for different Ruby + versions. + ruby19- + + + + RUBY_VERSION + Full version of Ruby in the form of + x.y.z[.p]. + 1.9.3.484 + + + + RUBY_SITELIBDIR + Architecture independent libraries installation + path. + /usr/local/lib/ruby/site_ruby/1.9 + + + + RUBY_SITEARCHLIBDIR + Architecture dependent libraries installation + path. + /usr/local/lib/ruby/site_ruby/1.9/amd64-freebsd10 + + + + RUBY_MODDOCDIR + Module documentation installation path. + /usr/local/share/doc/ruby19/patsy + + + + RUBY_MODEXAMPLESDIR + Module examples installation path. + /usr/local/share/examples/ruby19/patsy + + + +
+ + A complete list of available variables can be found in + /usr/ports/Mk/bsd.ruby.mk. +
+ + + 使用 SDL + + USE_SDL is used to + autoconfigure the dependencies for ports which use an SDL + based library like devel/sdl12 + and graphics/sdl_image. + + These SDL libraries for version 1.2 are recognized: + + + + sdl: devel/sdl12 + + + + console: devel/sdl_console + + + + gfx: graphics/sdl_gfx + + + + image: graphics/sdl_image + + + + mixer: audio/sdl_mixer + + + + mm: devel/sdlmm + + + + net: net/sdl_net + + + + pango: x11-toolkits/sdl_pango + + + + sound: audio/sdl_sound + + + + ttf: graphics/sdl_ttf + + + + These SDL libraries for version 2.0 are recognized: + + + + sdl: devel/sdl20 + + + + gfx: graphics/sdl2_gfx + + + + image: graphics/sdl2_image + + + + mixer: audio/sdl2_mixer + + + + net: net/sdl2_net + + + + ttf: graphics/sdl2_ttf + + + + Therefore, if a port has a dependency on + net/sdl_net and + audio/sdl_mixer, + the syntax will be: + + USE_SDL= net mixer + + The dependency + devel/sdl12, which is + required by net/sdl_net + and audio/sdl_mixer, is + automatically added as well. + + Using USE_SDL with entries for + SDL 1.2, it will automatically: + + + + Add a dependency on + sdl12-config to + BUILD_DEPENDS + + + + Add the variable SDL_CONFIG to + CONFIGURE_ENV + + + + Add the dependencies of the selected libraries to + LIB_DEPENDS + + + + Using USE_SDL with entries for + SDL 2.0, it will automatically: + + + + Add a dependency on + sdl2-config to + BUILD_DEPENDS + + + + Add the variable SDL2_CONFIG to + CONFIGURE_ENV + + + + Add the dependencies of the selected libraries to + LIB_DEPENDS + + + + + + 使用 <application>wxWidgets</application> + + This section describes the status of the + wxWidgets libraries in the ports + tree and its integration with the ports system. + + + 楔子 + + There are many versions of the + wxWidgets libraries which + conflict between them (install files under the same name). + In the ports tree this problem has been solved by installing + each version under a different name using version number + suffixes. + + The obvious disadvantage of this is that each + application has to be modified to find the expected version. + Fortunately, most of the applications call the + wx-config script to determine the + necessary compiler and linker flags. The script is named + differently for every available version. Majority of + applications respect an environment variable, or accept a + configure argument, to specify which + wx-config script to call. Otherwise they + have to be patched. + + + + Version Selection + + To make the port use a specific version of + wxWidgets there are two variables + available for defining (if only one is defined the other + will be set to a default value): + + + Variables to Select + <application>wxWidgets</application> Versions + + + + + Variable + 描述 + Default value + + + - USE_PYTHON + USE_WX + List of versions the port can use + All available versions + - The port needs Python. Minimal required version can be - specified with values such as 2.3+. - Version ranges can also be specified, by separating two version - numbers with a dash, e.g.: 2.1-2.3 + + USE_WX_NOT + List of versions the port cannot use + None + + +
+ The available + wxWidgets versions and the + corresponding ports in the tree are: + + + Available <application>wxWidgets</application> + Versions + + + - USE_PYDISTUTILS + 版本 + Port + + - Use Python distutils for configuring, compiling and - installing. This is required when the port comes with - setup.py. This overrides the - do-build and - do-install targets - and may also override do-configure if - GNU_CONFIGURE is not defined. + + + 2.4 + x11-toolkits/wxgtk24 - PYTHON_PKGNAMEPREFIX + 2.6 + x11-toolkits/wxgtk26 + - Used as a PKGNAMEPREFIX to distinguish - packages for different Python versions. - Example: py24- + + 2.8 + x11-toolkits/wxgtk28 + + +
+ + The versions starting from 2.5 also + come in Unicode version and are installed by a slave port + named like the normal one plus a + -unicode suffix, but this can be + handled with variables (see + ). + + + The variables in can + be set to one or more of these combinations + separated by spaces: + + + <application>wxWidgets</application> Version + Specifications + + + - PYTHON_SITELIBDIR + 描述 + 範例 + + - Location of the site-packages tree, that contains - installation path of Python (usually LOCALBASE). - The PYTHON_SITELIBDIR variable can be very - useful when installing Python modules. + + + 單一版本 + 2.4 - PYTHONPREFIX_SITELIBDIR + Ascending range + 2.4+ + - The PREFIX-clean variant of PYTHON_SITELIBDIR. - Always use - %%PYTHON_SITELIBDIR%% in - pkg-plist when possible. The default value of - %%PYTHON_SITELIBDIR%% is - lib/python%%PYTHON_VERSION%%/site-packages + + Descending range + 2.6- - PYTHON_CMD + Full range (must be ascending) + 2.4-2.6 + + + +
- Python interpreter command line, including version - number. + There are also some variables to select the preferred + versions from the available ones. They can be set to a list + of versions, the first ones will have higher + priority. + + + Variables to Select Preferred + <application>wxWidgets</application> Versions + + + + + 名字 + Designed for + + - PYNUMERIC + WANT_WX_VER + the port + - Dependency line for numeric extension. + + WITH_WX_VER + the user + + +
+
+ + Component Selection + + There are other applications that, while not being + wxWidgets libraries, are related + to them. These applications can be specified in + WX_COMPS. These + components are available: + + + Available <application>wxWidgets</application> + Components + + + - PYNUMPY - Dependency line for the new numeric extension, numpy. - (PYNUMERIC is deprecated by upstream vendor). + 名字 + 描述 + Version restriction + + - PYXML + wx + main library + none + - Dependency line for XML extension (not needed for - Python 2.0 and higher as it is also in base distribution). + + contrib + contributed libraries + none - USE_TWISTED + python + wxPython + (Python bindings) + 2.4-2.6 + - Add dependency on twistedCore. The list of required - components can be specified as a value of this - variable. Example: web lore pair - flow + + mozilla + wxMozilla + 2.4 - USE_ZOPE - - Add dependency on Zope, a web application platform. - Change Python dependency to Python 2.3. Set - ZOPEBASEDIR containing a directory with - Zope installation. + svg + wxSVG + 2.6 -
- A complete list of available variables can be found in - /usr/ports/Mk/bsd.python.mk. + The dependency type can be selected for each component + by adding a suffix separated by a semicolon. If not present + then a default type will be used (see + ). These types + are available: -
+ + Available <application>wxWidgets</application> + Dependency Types - - Using Emacs + + + + 名字 + 描述 + + - This section is yet to be written. - + + + build + Component is required for building, equivalent + to BUILD_DEPENDS + - - Using Ruby + + run + Component is required for running, equivalent + to RUN_DEPENDS + -
- Useful variables for ports that use Ruby + + lib + Component is required for building and running, + equivalent to LIB_DEPENDS + + + +
+ The default values for the components are detailed in + this table: + + + Default <application>wxWidgets</application> + Dependency Types + - Variable - Description + 元件 + Dependency type + - USE_RUBY + wx + lib + - The port requires Ruby. + + contrib + lib - USE_RUBY_EXTCONF + python + run + - The port uses extconf.rb to - configure. + + mozilla + lib - USE_RUBY_SETUP + svg + lib + + + +
- The port uses setup.rb to - configure. + + Selecting <application>wxWidgets</application> + Components + + This fragment corresponds to a port which + uses wxWidgets version + 2.4 and its contributed + libraries. + + USE_WX= 2.4 +WX_COMPS= wx contrib + + + + + Unicode + + The wxWidgets library + supports Unicode since version 2.5. In + the ports tree both versions are available and can be + selected with these variables: + + + Variables to Select Unicode in + <application>wxWidgets</application> + Versions + + + + + Variable + 描述 + Designed for + + - RUBY_SETUP + WX_UNICODE + The port works only with + the Unicode version + the port + - Set to the alternative name of - setup.rb. Common value is - install.rb. + + WANT_UNICODE + The port works with both versions but prefers + the Unicode one + the port + + WITH_UNICODE + The port will use the Unicode version + the user + + + + WITHOUT_UNICODE + The port will use the normal version if + supported (when WX_UNICODE is not + defined) + the user +
- The following table shows the selected variables available to port - authors via the ports infrastructure. These variables should be used - to install files into their proper locations. Use them in - pkg-plist as much as possible. These variables - should not be redefined in the port. + + Do not use WX_UNICODE for ports + that can use both Unicode and normal versions. If + the port needs to use Unicode by default, define + WANT_UNICODE instead. + +
- - Selected read-only variables for ports that use Ruby + + Detecting Installed Versions - + To detect an installed version, define + WANT_WX. If it is not set to a + specific version then the components will have a version + suffix. HAVE_WX will be + filled after detection. + + + Detecting Installed + <application>wxWidgets</application> Versions and + Components + + This fragment can be used in a port that uses + wxWidgets if it is installed, + or an option is selected. + + WANT_WX= yes + +.include <bsd.port.pre.mk> + +.if defined(WITH_WX) || !empty(PORT_OPTIONS:MWX) || !empty(HAVE_WX:Mwx-2.4) +USE_WX= 2.4 +CONFIGURE_ARGS+= --enable-wx +.endif + + This fragment can be used in a port that + enables wxPython support if it + is installed or if an option is selected, in addition to + wxWidgets, both version + 2.6. + + USE_WX= 2.6 +WX_COMPS= wx +WANT_WX= 2.6 + +.include <bsd.port.pre.mk> + +.if defined(WITH_WXPYTHON) || !empty(PORT_OPTIONS:MWXPYTHON) || !empty(HAVE_WX:Mpython) +WX_COMPS+= python +CONFIGURE_ARGS+= --enable-wxpython +.endif + + + + + Defined Variables + + These variables are available in the port (after + defining one from + ). + +
+ Variables Defined for Ports That Use + <application>wxWidgets</application> + + - Variable - Description - Example value + 名字 + 描述 + + + WX_CONFIG + The path to the + wxWidgets + wx-config script (with different + name) + - RUBY_PKGNAMEPREFIX + WXRC_CMD + The path to the + wxWidgets + wxrc program (with different + name) + - Used as a PKGNAMEPREFIX to distinguish - packages for different Ruby versions. + + WX_VERSION + The wxWidgets + version that is going to be used (for example, + 2.6) + - ruby18- + + WX_UNICODE + If not defined but Unicode is going to be used + then it will be defined + + +
+ + + Processing in + <filename>bsd.port.pre.mk</filename> + + Define WX_PREMK to be able to use the + variables right after including + bsd.port.pre.mk. + + + When defining WX_PREMK, then the + version, dependencies, components and defined variables + will not change if modifying the + wxWidgets port variables + after including + bsd.port.pre.mk. + + + + Using <application>wxWidgets</application> Variables + in Commands + + This fragment illustrates the use of + WX_PREMK by running the + wx-config script to obtain the full + version string, assign it to a variable and pass it to the + program. + + USE_WX= 2.4 +WX_PREMK= yes + +.include <bsd.port.pre.mk> + +.if exists(${WX_CONFIG}) +VER_STR!= ${WX_CONFIG} --release + +PLIST_SUB+= VERSION="${VER_STR}" +.endif + + + + The wxWidgets variables can + be safely used in commands when they are inside targets + without the need of WX_PREMK. + + + + + Additional <command>configure</command> + Arguments + + Some GNU configure scripts cannot + find wxWidgets with just the + WX_CONFIG environment variable set, + requiring additional arguments. + WX_CONF_ARGS can be used for + provide them. + + + Legal Values for + <varname>WX_CONF_ARGS</varname> + + + - RUBY_VERSION + Possible value + Resulting argument + + - Full version of Ruby in the form of - x.y.z. + + + absolute + --with-wx-config=${WX_CONFIG} + - 1.8.2 + + relative + --with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T} + + +
+
+
+ + 使用 <application>Lua</application> + + This section describes the status of the + Lua libraries in the ports tree and + its integration with the ports system. + + + 楔子 + + There are many versions of the + Lua libraries and corresponding + interpreters, which conflict between them (install files + under the same name). In the ports tree this problem has + been solved by installing each version under a different + name using version number suffixes. + + The obvious disadvantage of this is that each + application has to be modified to find the expected version. + But it can be solved by adding some additional flags to the + compiler and linker. + + + + Version Selection + + A port using Lua only needs to + have this line: + + USES= lua + + If a specific version of Lua is needed, instructions on + how to select it are given in the USES=lua part + of . + + + + Defined Variables + + These variables are available in the port. + + + Variables Defined for Ports That Use + <application>Lua</application> + + + - RUBY_SITELIBDIR + 名字 + 描述 + + - Architecture independent libraries installation - path. + + + LUA_VER + The Lua version that + is going to be used (for example, + 5.1) + - /usr/local/lib/ruby/site_ruby/1.8 + + LUA_VER_STR + The Lua version + without the dots (for example, + 51) - RUBY_SITEARCHLIBDIR + LUA_PREFIX + The prefix where Lua + (and components) is installed + - Architecture dependent libraries installation - path. + + LUA_SUBDIR + The directory under + ${PREFIX}/bin, + ${PREFIX}/share and + ${PREFIX}/lib where + Lua is installed + - /usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd6 + + LUA_INCDIR + The directory where + Lua and + tolua header files are + installed - RUBY_MODDOCDIR + LUA_LIBDIR + The directory where + Lua and + tolua libraries are + installed + - Module documentation installation path. + + LUA_MODLIBDIR + The directory where + Lua module libraries + (.so) are installed + - /usr/local/share/doc/ruby18/patsy + + LUA_MODSHAREDIR + The directory where + Lua modules + (.lua) are installed - RUBY_MODEXAMPLESDIR + LUA_PKGNAMEPREFIX + The package name prefix used by + Lua modules + - Module examples installation path. + + LUA_CMD + The path to the Lua + interpreter + - /usr/local/share/examples/ruby18/patsy + + LUAC_CMD + The path to the Lua + compiler -
+
+
- A complete list of available variables can be found in - /usr/ports/Mk/bsd.ruby.mk. + + 使用 <command>iconv</command> - + After 2013-10-08 (254273), + FreeBSD  10-CURRENT and newer versions have a native + iconv in the operating system. On earlier + versions, converters/libiconv + was used as a dependency. - - Using SDL + For software that needs iconv, define + USES=iconv. FreeBSD versions before + 10-CURRENT on 2013-08-13 (254273) do + not have a native iconv. On these earlier + versions, a dependency on + converters/libiconv will be + added automatically. - The USE_SDL variable is used to autoconfigure - the dependencies for ports which use an SDL based library like - devel/sdl12 and - x11-toolkits/sdl_gui. + When a port defines USES=iconv, these + variables will be available: - The following SDL libraries are recognized at the moment: + + + + + Variable name + Purpose + Value before FreeBSD 10-CURRENT + 254273 (2013-08-13) + Value after FreeBSD 10-CURRENT + 254273 (2013-08-13) + + - - - sdl: devel/sdl12 - + + + ICONV_CMD + Directory where the iconv + binary resides + ${LOCALBASE}/bin/iconv + /usr/bin/iconv + - - gfx: graphics/sdl_gfx - + + ICONV_LIB + ld argument to link to + libiconv (if needed) + -liconv + (空) + + + ICONV_PREFIX + Directory where the iconv + implementation resides (useful for configure + scripts) + ${LOCALBASE} + /usr + + + + ICONV_CONFIGURE_ARG + Preconstructed configure argument for + configure scripts + --with-libiconv-prefix=${LOCALBASE} + (空) + + + + ICONV_CONFIGURE_BASE + Preconstructed configure argument for + configure scripts + --with-libiconv=${LOCALBASE} + (空) + + + + + + These two examples automatically populate the variables + with the correct value for systems using + converters/libiconv or the + native iconv respectively: + + + Simple <command>iconv</command> Usage + + USES= iconv +LDFLAGS+= -L${LOCALBASE}/lib ${ICONV_LIB} + + + + <command>iconv</command> Usage with + <command>configure</command> + + USES= iconv +CONFIGURE_ARGS+=${ICONV_CONFIGURE_ARG} + + + As shown above, ICONV_LIB is empty when + a native iconv is present. This can be + used to detect the native iconv and respond + appropriately. + + Sometimes a program has an ld argument + or search path hardcoded in a Makefile or + configure script. This approach can be used to solve that + problem: + + + Fixing Hardcoded <literal>-liconv</literal> + + USES= iconv + +post-patch: + @${REINPLACE_CMD} -e 's/-liconv/${ICONV_LIB}/' ${WRKSRC}/Makefile + + + In some cases it is necessary to set alternate values or + perform operations depending on whether there is a native + iconv. + bsd.port.pre.mk must be included before + testing the value of ICONV_LIB: + + + Checking for Native <command>iconv</command> + Availability + + USES= iconv + +.include <bsd.port.pre.mk> + +post-patch: +.if empty(ICONV_LIB) + # native iconv detected + @${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.sh +.endif + +.include <bsd.port.post.mk> + + + + + 使用 Xfce + + Ports that need Xfce libraries or + applications set USES=xfce. + + Specific Xfce library and + application dependencies are set with values assigned to + USE_XFCE. They are defined in + /usr/ports/Mk/Uses/xfce.mk. The possible + values are: + + + <varname>USE_XFCE</varname> 的值 + + + garcon + - gui: x11-toolkits/sdl_gui + sysutils/garcon + + + libexo + - image: graphics/sdl_image + x11/libexo + + + + libgui + - ldbad: devel/sdl_ldbad + x11-toolkits/libxfce4gui + + + libmenu + - mixer: audio/sdl_mixer + x11/libxfce4menu + + + libutil + - mm: devel/sdlmm + x11/libxfce4util + + + panel + - net: net/sdl_net + x11-wm/xfce4-panel + + + thunar + - sound: audio/sdl_sound + x11-fm/thunar + + + xfconf + - ttf: graphics/sdl_ttf + x11/xfce4-conf - + + - Therefore, if a port has a dependency on - net/sdl_net and - audio/sdl_mixer, - the syntax will be: + + <varname>USES=xfce</varname> 範例 - USE_SDL= net mixer + USES= xfce +USE_XFCE= libmenu + - The dependency devel/sdl12, - which is required by net/sdl_net and - audio/sdl_mixer, is automatically - added as well. + + Using Xfce's Own GTK3 Widgets - If you use USE_SDL, it will automatically: + In this example, the ported application uses the + GTK3-specific widgets x11/libxfce4menu and x11/xfce4-conf. - - - Add a dependency on sdl12-config to - BUILD_DEPENDS - + USES= xfce:gtk3 +USE_XFCE= libmenu xfconf + - - Add the variable SDL_CONFIG to - CONFIGURE_ENV - + + Xfce components included this + way will automatically include any dependencies they need. It + is no longer necessary to specify the entire list. If the + port only needs x11-wm/xfce4-panel, use: - - Add the dependencies of the selected libraries to the - LIB_DEPENDS - - + USES= xfce +USE_XFCE= panel - To check whether an SDL library is available, you can do it - with the WANT_SDL variable: + There is no need to list the components x11-wm/xfce4-panel needs itself like + this: - WANT_SDL=yes + USES= xfce +USE_XFCE= libexo libmenu libutil panel -.include <bsd.port.pre.mk> + However, Xfce components and + non-Xfce dependencies of the port + must be included explicitly. Do not count on an + Xfce component to provide a + sub-dependency other than itself for the main port. + + -.if ${HAVE_SDL:Mmixer}!="" -USE_SDL+= mixer -.endif + + 使用 Mozilla -.include <bsd.port.post.mk> + + Variables for Ports That Use Mozilla - + + - - Using <application>wxWidgets</application> + + USE_GECKO + Gecko backend the port can handle. Possible + values: libxul + (libxul.so), + seamonkey + (libgtkembedmoz.so, deprecated, + must not be used any more). + - This section describes the status of the - wxWidgets libraries in the ports tree and - its integration with the ports system. + + USE_FIREFOX + The port requires Firefox as a runtime + dependency. Possible values: yes + (get default version), 40, + 36, 35. Default + dependency is on version + 40. + - - Introduction + + USE_FIREFOX_BUILD + The port requires Firefox as a buildtime + dependency. Possible values: see USE_FIREFOX. This + automatically sets USE_FIREFOX and assigns the same + value. + - There are many versions of the - wxWidgets libraries which conflict - between them (install files under the same name). In the ports tree - this problem has been solved by installing each version under a - different name using version number suffixes. + + USE_SEAMONKEY + The port requires SeaMonkey as a runtime + dependency. Possible values: yes + (get default version), 20, + 11 (deprecated, must not be used + any more). Default dependency is on version + 20. + - The obvious disadvantage of this is that each application has to - be modified to find the expected version. Fortunately, most of the - applications call the wx-config script to - determine the necessary compiler and linker flags. The script is - named differently for every available version. Majority of - applications respect an environment variable, or accept a configure - argument, to specify which wx-config script to - call. Otherwise they have to be patched. - + + USE_SEAMONKEY_BUILD + The port requires SeaMonkey as a buildtime + dependency. Possible values: see USE_SEAMONKEY. This + automatically sets USE_SEAMONKEY and assigns the same + value. + - - Version selection + + USE_THUNDERBIRD + The port requires Thunderbird as a runtime + dependency. Possible values: yes + (get default version), 31, + 30 (deprecated, must not be used + any more). Default dependency is on version + 31. + - To make your port use a specific version of - wxWidgets there are two variables - available for defining (if only one is defined the other will be set - to a default value): + + USE_THUNDERBIRD_BUILD + The port requires Thunderbird as a buildtime + dependency. Possible values: see USE_THUNDERBIRD. + This automatically sets USE_THUNDERBIRD and assigns + the same value. + + + +
- - Variables to select <application>wxWidgets</application> - versions + A complete list of available variables can be found in + /usr/ports/Mk/bsd.gecko.mk. + - - - - Variable + + 使用 Databases - Description +
+ Variables for Ports Using Databases - Default value - - + + + + Variable + Means + + - - - USE_WX + + + USE_BDB + If variable is set to yes, + add dependency on + databases/db5 + port. The variable may also be set to values: 48, 5 + or 6. It is possible to declare a range of acceptable + values, USE_BDB=48+ will find the + highest installed version, and fall back to 4.8 if + nothing else is installed. + WANT_BDB_VER will always build this + port with a specific version of the Berkely DB. + INVALID_BDB_VER can be used to + specify a version that cannot be used. + - List of versions the port can use + + USE_MYSQL + If the variable is set to yes, + add a dependency on the databases/mysql56-client port. + An associated variable, + WANT_MYSQL_VER, may be set to + values such as 51, 55, or 60. Additionally to + specify use of Percona, use 56p, or for MariaDB, use + 53m, 55m or 100m. + - All available versions - + + USE_PGSQL + Retired in favor of USES=pgsql. + - - USE_WX_NOT + + USE_SQLITE + If set to yes, add + dependency on + databases/sqlite3 + port. The variable may also be set to 3 or 2, to add + a dependency on 3.x or 2.x, respectively. + + + +
- List of versions the port can not use + More details are available in bsd.database.mk. +
- None - - - - + + Starting and Stopping Services (<literal>rc</literal> + Scripts) - The following is a list of available - wxWidgets versions and the corresponding - ports in the tree: + rc.d scripts are used to start + services on system startup, and to give administrators a + standard way of stopping, starting and restarting the service. + Ports integrate into the system rc.d + framework. Details on its usage can be found in the + rc.d Handbook chapter. Detailed explanation of + the available commands is provided in rc8 and + rc.subr8. Finally, there is + an + article on practical aspects of + rc.d scripting. - - Available <application>wxWidgets</application> - versions + With a mythical port called + doorman, which needs to start a + doormand daemon. Add the following + to the Makefile: - - - - Version + USE_RC_SUBR= doormand - Port - - + Multiple scripts may be listed and will be installed. + Scripts must be placed in the files + subdirectory and a .in suffix must be added + to their filename. Standard SUB_LIST + expansions will be ran against this file. Use of the + %%PREFIX%% and + %%LOCALBASE%% expansions is strongly + encouraged as well. More on SUB_LIST in + the relevant + section. - - - 2.4 + As of FreeBSD 6.1-RELEASE, local + rc.d scripts (including those installed + by ports) are included in the overall rcorder8 of the + base system. - x11-toolkits/wxgtk24 - + An example simple rc.d script to start + the doormand daemon: - - 2.6 + #!/bin/sh - x11-toolkits/wxgtk26 - - - 2.8 +# $FreeBSD$ +# +# PROVIDE: doormand +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add these lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# doormand_enable (bool): Set to NO by default. +# Set it to YES to enable doormand. +# doormand_config (path): Set to %%PREFIX%%/etc/doormand/doormand.cf +# by default. - x11-toolkits/wxgtk28 - - - -
+. /etc/rc.subr - - The versions starting from 2.5 also come in - Unicode version and are installed by a slave port named like the - normal one plus a -unicode suffix, but this can - be handled with variables (see ). - +name=doormand +rcvar=doormand_enable - The variables in can be set - to one or more of the following combinations separated by - spaces: +load_rc_config $name - - <application>wxWidgets</application> version - specifications +: ${doormand_enable:="NO"} +: ${doormand_config="%%PREFIX%%/etc/doormand/doormand.cf"} - - - - Description +command=%%PREFIX%%/sbin/${name} +pidfile=/var/run/${name}.pid - Example - - +command_args="-p $pidfile -f $doormand_config" - - - Single version +run_rc_command "$1" - 2.4 - + Unless there is a very good reason to start the service + earlier, or it runs as a particular user (other than root), all + ports scripts must use: - - Ascending range + REQUIRE: LOGIN - 2.4+ - + If the startup script launches a daemon that must be + shutdown, the following will trigger a stop of the service on + system shutdown: - - Descending range + KEYWORD: shutdown - 2.6- - + If the script is not starting a persistent service this is + not necessary. - - Full range (must be ascending) + For optional configuration elements the "=" + style of default variable assignment is preferable to the + ":=" style here, since the former sets a default + value only if the variable is unset, and the latter sets one + if the variable is unset or null. A user + might very well include something like: - 2.4-2.6 - - - -
+ doormand_flags="" - There are also some variables to select the preferred versions - from the available ones. They can be set to a list of versions, the - first ones will have higher priority. + in their rc.conf.local, and a + variable substitution using ":=" would + inappropriately override the user's intention. The + _enable variable is not optional, + and must use the ":" for the default. - - Variables to select preferred - <application>wxWidgets</application> versions + + Pre-Commit Checklist - - - - Name + Before contributing a port with an + rc.d script, and more importantly, + before committing one, please consult this + checklist to be sure that it is ready. - Designed for - - + The devel/rclint + port can check for most of these, but it is not a + substitute for proper review. - - - WANT_WX_VER + + + If this is a new file, does it have a + .sh extension? If so, that must be + changed to just + file.in + since rc.d files may not end with + that extension. + - the port - + + Does the file have a + $FreeBSD$ tag? + - - WITH_WX_VER + + Do the name of the file (minus + .in), the + PROVIDE line, and + $name + all match? The file name matching + PROVIDE makes debugging easier, + especially for rcorder8 issues. Matching the + file name and + $name + makes it easier to figure out which variables are + relevant in rc.conf[.local]. It is + also a policy + for all new scripts, including those in the base + system. + - the user - - - -
- + + Is the REQUIRE line set to + LOGIN? This is mandatory for scripts + that run as a non-root user. If it runs as root, is + there a good reason for it to run prior to + LOGIN? If not, it must run after + so that local scrips can be loosely grouped to a point in + rcorder8 after most everything in the base is + already running. + - - Component selection + + Does the script start a persistent service? If so, + it must have KEYWORD: + shutdown. + - There are other applications that, while not being - wxWidgets libraries, are related to them. - These applications can be specified in the - WX_COMPS variable. The following components are - available: + + Make sure there is no + KEYWORD: FreeBSD present. This has + not been necessary nor desirable for years. It is also + an indication that the new script was copy/pasted from + an old script, so extra caution must be given to the + review. + - - Available <application>wxWidgets</application> - components + + If the script uses an interpreted language like + perl, python, or + ruby, make certain that + command_interpreter is set + appropriately, for example, for + Perl, by adding + PERL=${PERL} to + SUB_LIST and using + %%PERL%%. Otherwise, - - - - Name + # service name stop - Description + will probably not work properly. See + service8 for more information. + - Version restriction - - + + Have all occurrences of + /usr/local been replaced with + %%PREFIX%%? + - - - wx + + Do the default variable assignments come after + load_rc_config? + - main library + + Are there default assignments to empty strings? + They should be removed, but double-check that the option + is documented in the comments at the top of the + file. + - none - + + Are things that are set in variables actually used + in the script? + - - contrib + + Are options listed in the default + name_flags + things that are actually mandatory? If so, they must + be in command_args. The + option is a red flag (pardon the + pun) here, since it is usually the option to + “daemonize” the process, and therefore is + actually mandatory. + - contributed libraries + + name_flags + must never be included in + command_args (and vice versa, + although that error is less common). + - none - + + Does the script execute any code unconditionally? + This is frowned on. Usually these things must be + dealt with through a + start_precmd. + - - python + + All boolean tests must use the + checkyesno function. No + hand-rolled tests for [Yy][Ee][Ss], + etc. + - wxPython - (Python bindings) + + If there is a loop (for example, waiting for + something to start) does it have a counter to terminate + the loop? We do not want the boot to be stuck forever + if there is an error. + - 2.4-2.6 - + + Does the script create files or directories that + need specific permissions, for example, a + pid that needs to be owned by + the user that runs the process? Rather than the + traditional touch1/chown8/chmod1 + routine, consider using install1 with the proper + command line arguments to do the whole procedure with + one step. + + + + - - mozilla + + Adding Users and Groups - wxMozilla + Some ports require a particular user account to be present, + usually for daemons that run as that user. For these ports, + choose a unique UID from 50 to 999 and + register it in ports/UIDs (for users) and + ports/GIDs (for groups). The unique + identification should be the same for users and groups. - 2.4 - + Please include a patch against these two files when + requiring a new user or group to be created for the + port. - - svg + Then use USERS and + GROUPS in + Makefile, and the user will be + automatically created when installing the port. - wxSVG + USERS= pulse +GROUPS= pulse pulse-access pulse-rt - 2.6 - - - -
+ The current list of reserved UIDs and GIDs can be found + in ports/UIDs and + ports/GIDs. +
- The dependency type can be selected for each component by adding - a suffix separated by a semicolon. If not present then a default - type will be used (see ). The - following types are available: + + Ports That Rely on Kernel Sources - - Available <application>wxWidgets</application> dependency - types + Some ports (such as kernel loadable modules) need the + kernel source files so that the port can compile. Here is the + correct way to determine if the user has them + installed: - - - - Name + USES= kmod - Description - - + Apart from this check, the kmod feature + takes care of most items that these ports need to take into + account. + + - - - build + + - - run + - Component is required for running, equivalent to - RUN_DEPENDS - + Advanced <filename>pkg-plist</filename> Practices - - lib + + Changing <filename>pkg-plist</filename> Based on Make + Variables - Component is required for building and running, - equivalent to LIB_DEPENDS - - - -
+ Some ports, particularly the p5- ports, + need to change their pkg-plist depending on + what options they are configured with (or version of + perl, in the case of p5- + ports). To make this easy, any instances in + pkg-plist of %%OSREL%%, + %%PERL_VER%%, and + %%PERL_VERSION%% will be substituted + appropriately. The value of %%OSREL%% is the + numeric revision of the operating system (for example, + 4.9). %%PERL_VERSION%% + and %%PERL_VER%% is the full version number + of perl (for example, + 5.8.9). Several other + %%VARS%% related + to port's documentation files are described in the relevant + section. - The default values for the components are detailed in the - following table: + To make other substitutions, set + PLIST_SUB with a list of + VAR=VALUE + pairs and instances of + %%VAR%% will be + substituted with VALUE in + pkg-plist. - - Default <application>wxWidgets</application> dependency - types + For instance, if a port installs many files + in a version-specific subdirectory, use a placeholder for the + version so that pkg-plist does not have to + be regenerated every time the port is updated. For + example: - - - - Component + OCTAVE_VERSION= ${PORTREVISION} +PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION} - Dependency type - - + in the Makefile and use + %%OCTAVE_VERSION%% wherever the version shows + up in pkg-plist. When + the port is upgraded, it will not be necessary to edit dozens + (or in some cases, hundreds) of lines in + pkg-plist. - - - wx + If files are installed conditionally on the options + set in the port, the usual way of handling it is prefixing + pkg-plist lines with a + %%OPT%% for lines needed when the option is + enabled, or %%NO_OPT%% when the option is + disabled, and adding OPTIONS_SUB=yes to the + Makefile. See for more information. - lib - + For instance, if there are files that are only installed + when the X11 option is enabled, and + Makefile has: - - contrib + OPTIONS_DEFINE= X11 +OPTIONS_SUB= yes - lib - + In pkg-plist, put + %%X11%% in front of the lines only being + installed when the option is enabled, like this : - - python + %%X11%%bin/foo-gui - run - + This substitution will be done between the + pre-install and + do-install targets, by reading from + PLIST and writing to + TMPPLIST (default: + WRKDIR/.PLIST.mktmp). So if the port + builds PLIST on the fly, do so in or before + pre-install. Also, if the port + needs to edit the resulting file, do so in + post-install to a file named + TMPPLIST. - - mozilla + Another way of modifying a port's packing list is based on + setting the variables PLIST_FILES and + PLIST_DIRS. The value of each variable is + regarded as a list of pathnames to write to + TMPPLIST along with + PLIST contents. While names listed in + PLIST_FILES and + PLIST_DIRS are subject to + %%VAR%% + substitution as described above, it is better to use the + ${VAR} directly. + Except for that, names from + PLIST_FILES will appear in the final packing + list unchanged, while @dir + will be prepended to names from + PLIST_DIRS. To take effect, + PLIST_FILES and + PLIST_DIRS must be set before + TMPPLIST is written, that is, in + pre-install or earlier. - lib - + From time to time, using OPTIONS_SUB + is not enough. In those cases, adding a specific + TAG to + PLIST_SUB + inside the Makefile with a special + value of @comment, makes package tools to + ignore the line. For instance, if some files are only installed + when the X11 option is on and the + architecture is i386: - - svg + .include <bsd.port.pre.mk> - lib - - - -
+.if ${PORT_OPTIONS:MX11} && ${ARCH} == "i386" +PLIST_SUB+= X11I386="" +.else +PLIST_SUB+= X11I386="@comment " +.endif - - Selecting <application>wxWidgets</application> - components +
- The following fragment corresponds to a port which uses - wxWidgets version - 2.4 and its contributed libraries. + + Empty Directories - USE_WX= 2.4 -WX_COMPS= wx contrib - - - - Unicode + + Cleaning Up Empty Directories - The wxWidgets library supports - Unicode since version 2.5. In the ports tree - both versions are available and can be selected with the following - variables: + When being de-installed, a port has to remove empty + directories it created. Most of these directories are removed + automatically by pkg8, but for directories created + outside of ${PREFIX}, or empty + directories, some more work needs to be done. This is usually + accomplished by adding @dir lines for those + directories. Subdirectories must be deleted before deleting + parent directories. - - Variables to select Unicode in - <application>wxWidgets</application> - versions + [...] +@dir /var/games/oneko/saved-games +@dir /var/games/oneko + - - - - Variable + + Creating Empty Directories - Description + Empty directories created during port installation need + special attention. They must be present when the package + is created. If they are not created by the port code, create + them in the Makefile: - Designed for - - + post-stage: + @${MKDIR} ${STAGEDIR}${PREFIX}/some/directory - - - WX_UNICODE + Add the directory to pkg-plist + like any other. For example: - The port works only with the - Unicode version + @dir some/directory + + - the port - + + Configuration Files - - WANT_UNICODE + If the port installs configuration files to + PREFIX/etc (or elsewhere) do + not list them in + pkg-plist. That will cause + pkg delete to remove files that have been + carefully edited by the user, and a re-installation will wipe + them out. - The port works with both versions but prefers the - Unicode one + Instead, install sample files with a + filename.sample + extension. The @sample macro automates this, + see for what it does + exactly. For each sample file, add a line to + pkg-plist: - the port - + @sample etc/orbit.conf.sample - - WITH_UNICODE + If there is a very good reason not to install a working + configuration file by default, only list the sample filename in + pkg-plist, without the + @sample followed by a space part, and add a + message pointing out that the + user must copy and edit the file before the software will + work. - The port will use the Unicode version + + When a port installs its configuration in a subdirectory + of ${PREFIX}/etc, use + ETCDIR, which defaults to + ${PREFIX}/etc/${PORTNAME}, it can be + overridden in the ports Makefile if there + is a convention for the port to use some other directory. The + %%ETCDIR%% macro will be used in its + stead in pkg-plist. + - the user - + + The sample configuration files should always have the + .sample suffix. If for some historical + reason using the standard suffix is not possible, or if the + sample files come from some other directory, use + this construct: - - WITHOUT_UNICODE + @sample etc/orbit.conf-dist etc/orbit.conf - The port will use the normal version if - supported (when WX_UNICODE is not - defined) + or - the user - - - -
+ @sample %%EXAMPLESDIR%%/orbit.conf etc/orbit.conf - - Do not use WX_UNICODE for ports that can - use both Unicode and normal versions. If you want the port to use - Unicode by default define WANT_UNICODE - instead. - -
+ The format is @sample + sample-file + actual-config-file. + +
- - Detecting installed versions + + Dynamic Versus Static Package List - To detect an installed version you have to define - WANT_WX. If you do not set it to a specific - version then the components will have a version suffix. The - HAVE_WX variable will be filled after - detection. + A static package list is a package + list which is available in the Ports Collection either as + pkg-plist (with or without variable + substitution), or embedded into the + Makefile via + PLIST_FILES and + PLIST_DIRS. Even if the contents are + auto-generated by a tool or a target in the Makefile + before the inclusion into the Ports + Collection by a committer (for example, using make + makeplist>), this is still considered a static list, + since it is possible to examine it without having to download or + compile the distfile. - - Detecting installed <application>wxWidgets</application> - versions and components + A dynamic package list is a package + list which is generated at the time the port is compiled based + upon the files and directories which are installed. It is not + possible to examine it before the source code of the ported + application is downloaded and compiled, or after running a + make clean. - The following fragment can be used in a port that uses - wxWidgets if it is installed, or an - option is selected. + While the use of dynamic package lists is not forbidden, + maintainers should use static package lists wherever possible, + as it enables users to grep1 through available ports to + discover, for example, which port installs a certain file. + Dynamic lists should be primarily used for complex ports where + the package list changes drastically based upon optional + features of the port (and thus maintaining a static package list + is infeasible), or ports which change the package list based + upon the version of dependent software used. For example, ports + which generate docs with + Javadoc. + - WANT_WX= yes + + Automated Package List Creation -.include <bsd.port.pre.mk> + First, make sure the port is almost complete, with only + pkg-plist missing. Running make + makeplist will show an example for + pkg-plist. The output of + makeplist must be double checked for + correctness as it tries to automatically guess a few things, and + can get it wrong. -.if defined(WITH_WX) || ${HAVE_WX:Mwx-2.4} != "" -USE_WX= 2.4 -CONFIGURE_ARGS+=--enable-wx -.endif + User configuration files should be installed as + filename.sample, + as it is described in . + info/dir must not be listed and + appropriate install-info lines must be + added as noted in the info + files section. Any libraries installed by the port + must be listed as specified in the shared libraries + section. + - The following fragment can be used in a port that enables - wxPython support if it is installed or - if an option is selected, in addition to - wxWidgets, both version - 2.6. + + Expanding Package List with Keywords - USE_WX= 2.6 -WX_COMPS= wx -WANT_WX= 2.6 + All keywords can also take optional arguments in + parentheses. The arguments are owner, group, and mode. This + argument is used on the file or directory referenced. + To change the owner, group, and mode of a configuration file, + use: -.include <bsd.port.pre.mk> + @sample(games,games,640) etc/config.sample -.if defined(WITH_WXPYTHON) || ${HAVE_WX:Mpython} != "" -WX_COMPS+= python -CONFIGURE_ARGS+=--enable-wxpython -.endif - - + The arguments are optional. If only the group and mode + need to be changed, use: - - Defined variables + @sample(,games,660) etc/config.sample - The following variables are available in the port (after - defining one from ). + - - Variables defined for ports that use - <application>wxWidgets</application> + + <literal>@desktop-file-utils</literal> - - - - Name + Will run update-desktop-database -q + after installation and deinstallation. + - Description - - + + <literal>@fc</literal> + <replaceable>directory</replaceable> - - - WX_CONFIG + Add a @dir entry for the directory + passed as an argument, and run fc-cache -fs + on that directory after installation and + deinstallation. + - The path to the wxWidgets - wx-config script (with different - name) - - - WXRC_CMD + + <literal>@fcfontsdir</literal> + <replaceable>directory</replaceable> - The path to the wxWidgets - wxrc program (with different - name) - - - WX_VERSION + Add a @dir entry for the + directory passed as an argument, and run fc-cache + -fs, mkfontscale and + mkfontdir on that directory after + installation and deinstallation. Additionally, on + deinstallation, it removes the + fonts.scale and + fonts.dir cache files if they are + empty. This keyword is equivalent to adding both @fc + directory and @fontsdir + directory. + - The wxWidgets version that - is going to be used (e.g., 2.6) - + + <literal>@fontsdir</literal> + <replaceable>directory</replaceable> - - WX_UNICODE + Add a @dir entry for the + directory passed as an argument, and run + mkfontscale and + mkfontdir on that directory after + installation and deinstallation. Additionally, on + deinstallation, it removes the + fonts.scale and + fonts.dir cache files if they are + empty. + - If not defined but Unicode is going to be used then it - will be defined - - - -
-
+ + <literal>@glib-schemas</literal> - - Processing in <filename>bsd.port.pre.mk</filename> + Runs glib-compile-schemas on + installation and deinstallation. + - If you need to use the variables for running commands right - after including bsd.port.pre.mk you need to - define WX_PREMK. + + <literal>@info</literal> + <replaceable>file</replaceable> - - If you define WX_PREMK, then the version, - dependencies, components and defined variables will not change if - you modify the wxWidgets port variables - after including - bsd.port.pre.mk. - + Add the file passed as argument to the plist, and updates + the info document index on installation and deinstallation. + Additionally, it removes the index if empty on + deinstallation. This should never be used manually, but + always through INFO. See for more information. + - - Using <application>wxWidgets</application> variables in - commands + + <literal>@kld</literal> + <replaceable>directory</replaceable> - The following fragment illustrates the use of - WX_PREMK by running the - wx-config script to obtain the full version - string, assign it to a variable and pass it to the program. + Runs kldxref on the directory + on installation and deinstallation. Additionally, on + deinstallation, it will remove the directory if empty. + - USE_WX= 2.4 -WX_PREMK= yes + + <literal>@rmtry</literal> + <replaceable>file</replaceable> -.include <bsd.port.pre.mk> + Will remove the file on deinstallation, and not give an + error if the file is not there. + -.if exists(${WX_CONFIG}) -VER_STR!= ${WX_CONFIG} --release + + <literal>@sample</literal> + <replaceable>file</replaceable> + [<replaceable>file</replaceable>] -PLIST_SUB+= VERSION="${VER_STR}" -.endif - + This is used to handle installation of configuration + files, through example files bundled with the package. The + actual, non-sample, file is either the second + filename, if present, or the first filename without the + .sample extension. - - The wxWidgets variables can be - safely used in commands when they are inside targets without the - need of WX_PREMK. - - + This does three things. First, add the first file passed + as argument, the sample file, to the plist. Then, on + installation, if the actual file is not found, copy the sample + file to the actual file. And finally, on deinstallation, + remove the actual file if it has not been modified. See for more information. + - - Additional <command>configure</command> arguments + + <literal>@shared-mime-info</literal> + <replaceable>directory</replaceable> - Some GNU configure scripts can not find - wxWidgets with just the - WX_CONFIG environment variable set, requiring - additional arguments. The WX_CONF_ARGS variable - can be used for provide them. + Runs update-mime-database on the + directory on installation and deinstallation. + - - Legal values for <varname>WX_CONF_ARGS</varname> + + <literal>@shell</literal> + <replaceable>file</replaceable> - - - - Possible value + Add the file passed as argument to the plist. - Resulting argument - - + On installation, add the full path to + file to + /etc/shells, while making sure it is not + added twice. On deinstallation, remove it from + /etc/shells. + - - - absolute + + <literal>@terminfo</literal> - --with-wx-config=${WX_CONFIG} - + Do not use by itself. If the port installs + *.terminfo + files, add USES=terminfo + to its Makefile. - - relative + On installation and deinstallation, if + tic is present, refresh + ${PREFIX}/share/misc/terminfo.db from the + *.terminfo + files in ${PREFIX}/share/misc. + - --with-wx=${LOCALBASE} - --with-wx-config=${WX_CONFIG:T} - - - -
-
- + + Base Keywords - - Using <application>Lua</application> + There are a few keywords that are hardcoded, and + documented in pkg-create8. For the sake of + completeness, they are also documented here. - This section describes the status of the - Lua libraries in the ports tree and its - integration with the ports system. + + <literal>@</literal> + [<replaceable>file</replaceable>] - - Introduction + The empty keyword is a placeholder to use when the + file's owner, group, or mode need to be changed. For + example, to set the group of the file to + games and add the setgid bit, add: - There are many versions of the Lua - libraries and corresponding interpreters, which conflict between - them (install files under the same name). In the ports tree this - problem has been solved by installing each version under a different - name using version number suffixes. + @(,games,2755) sbin/daemon + - The obvious disadvantage of this is that each application has to - be modified to find the expected version. But it can be solved by - adding some additional flags to the compiler and linker. - + + <literal>@preexec</literal> + <replaceable>command</replaceable>, + <literal>@postexec</literal> + <replaceable>command</replaceable>, + <literal>@preunexec</literal> + <replaceable>command</replaceable>, + <literal>@postunexec</literal> + <replaceable>command</replaceable> - - Version selection + Execute command as part of + the package installation or deinstallation process. - To make your port use a specific version of - Lua there are two variables available - for defining (if only one is defined the other will be set to a - default value): + + + @preexec + command - - Variables to select <application>Lua</application> - versions + + Execute command as part + of the pre-install + scripts. + + - - - - Variable + + @postexec + command - Description + + Execute command as part + of the post-install + scripts. + + - Default value - - + + @preunexec + command - - - USE_LUA + + Execute command as part + of the pre-deinstall + scripts. + + - List of versions the port can use + + @postunexec + command - All available versions - + + Execute command as part + of the post-deinstall + scripts. + + + - - USE_LUA_NOT + If command contains + any of these + sequences somewhere in it, they are expanded + inline. For these examples, assume that + @cwd is set to + /usr/local and the last + extracted file was bin/emacs. - List of versions the port can not use + + + %F - None - - - -
+ + Expand to the last filename extracted (as + specified). In the example case + bin/emacs. + +
- The following is a list of available - Lua versions and the corresponding ports - in the tree: + + %D + + Expand to the current directory prefix, as set + with @cwd. In the example case + /usr/local. + + - - Available <application>Lua</application> versions + + %B - - - - Version + + Expand to the basename of the fully qualified + filename, that is, the current directory prefix plus + the last filespec, minus the trailing filename. In + the example case, that would be + /usr/local/bin. + + - Port - - + + %f - - - 4.0 + + Expand to the filename part of the fully qualified + name, or the converse of %B. In + the example case, + emacs. + + + + - lang/lua4 - + + <literal>@mode</literal> + <replaceable>mode</replaceable> - - 5.0 + Set default permission for all subsequently extracted + files to mode. Format is the + same as that used by chmod1. Use without an arg to + set back to default permissions (mode of the file while + being packed). - lang/lua50 - + + This must be a numeric mode, like + 644, 4755, or + 600. It cannnot be a relative mode + like u+s. + + - - 5.1 + + <literal>@owner</literal> + <replaceable>user</replaceable> - lang/lua - - - -
+ Set default ownership for all subsequent files to + user. Use without an argument to + set back to default ownership (root). +
- The variables in can be set - to one or more of the following combinations separated by - spaces: + + <literal>@group</literal> + <replaceable>group</replaceable> - - <application>Lua</application> version specifications + Set default group ownership for all subsequent files to + group. Use without an arg to set + back to default group ownership (wheel). + - - - - Description + + <literal>@comment</literal> + <replaceable>string</replaceable> - Example - - + This line is ignored when packing. + - - - Single version + + <literal>@dir</literal> + <replaceable>directory</replaceable> - 4.0 - + Declare directory name. By default, directories created + under PREFIX by a package installation + are automatically removed. Use this when an empty directory + under PREFIX needs to be created, or when + the directory needs to have non default owner, group, or + mode. Directories outside of PREFIX need + to be registered. For example, + /var/db/${PORTNAME} needs to have a + @dir entry whereas + ${PREFIX}/share/${PORTNAME} does not if + it contains files or uses the default owner, group, and + mode. + - - Ascending range + + <literal>@exec</literal> + <replaceable>command</replaceable>, + <literal>@unexec</literal> + <replaceable>command</replaceable> (Deprecated) - 5.0+ - + Execute command as part of + the installation or deinstallation process. Please use + instead. + - - Descending range + + <literal>@dirrm</literal> + <replaceable>directory</replaceable> (Deprecated) - 5.0- - + Declare directory name to be deleted at deinstall time. + By default, directories created under + PREFIX by a package installation are + deleted when the package is deinstalled. + - - Full range (must be ascending) + + <literal>@dirrmtry</literal> + <replaceable>directory</replaceable> (Deprecated) - 5.0-5.1 - - - -
+ Declare directory name to be removed, as for + @dirrm, but does not issue a warning if + the directory cannot be removed. +
+ - There are also some variables to select the preferred versions - from the available ones. They can be set to a list of versions, the - first ones will have higher priority. + + Creating New Keywords - - Variables to select preferred <application>Lua</application> - versions + Package list files can be extended by keywords that are + defined in the ${PORTSDIR}/Keywords + directory. The settings for each keyword are stored in a + UCL file named + keyword.ucl. + The file must contain at least one of these sections: - - - - Name + + + attributes + - Designed for - - + + action + - - - WANT_LUA_VER + + pre-install + - the port - + + post-install + - - WITH_LUA_VER + + pre-deinstall + - the user - - - -
+ + post-deinstall + - - Selecting the <application>Lua</application> version + + pre-upgrade + - The following fragment is from a port which can use - Lua version 5.0 or - 5.1, and uses 5.0 by - default. It can be overriden by the user using - WITH_LUA_VER. + + post-upgrade + + - USE_LUA= 5.0-5.1 -WANT_LUA_VER= 5.0 - -
+ + <literal>attributes</literal> - - Component selection + Changes the owner, group, or mode used by the keyword. + Contains an associative array where the possible keys are + owner, group, and + mode. The values are, respectively, a + user name, a group name, and a file mode. For + example: - There are other applications that, while not being - Lua libraries, are related to them. - These applications can be specified in the - LUA_COMPS variable. The following components are - available: + attributes: { owner: "games", group: "games", mode: 0555 } + - - Available <application>Lua</application> components + + <literal>action</literal> - - - - Name + Defines what happens to the keyword's parameter. + Contains an array where the possible values are: - Description + + + setprefix - Version restriction - - + + Set the prefix for the next plist entries. + + - - - lua + + dir - main library + + Register a directory to be created on install and + removed on deinstall. + + - none - + + dirrm - - tolua + + Register a directory to be deleted on deinstall. + Deprecated. + + - Library for accesing C/C++ code + + dirrmtry - 4.0-5.0 - + + Register a directory to try and deleted on + deinstall. Deprecated. + + - - ruby + + file - Ruby bindings + + Register a file. + + - 4.0-5.0 - - - -
+ + setmode - - There are more components but they are modules for the - interpreter, not used by applications (only by other - modules). - + + Set the mode for the next plist entries. + + - The dependency type can be selected for each component by adding - a suffix separated by a semicolon. If not present then a default - type will be used (see ). The - following types are available: + + setowner - - Available <application>Lua</application> dependency - types + + Set the owner for the next plist entries. + + - - - - Name + + setgroup - Description - - + + Set the group for the next plist entries. + + - - - build + + comment - Component is required for building, equivalent to - BUILD_DEPENDS - + + Does not do anything, equivalent to not entering + an action section. + + - - run + + ignore_next - Component is required for running, equivalent to - RUN_DEPENDS - + + Ignore the next entry in the plist. + + + + - - lib + + <literal>arguments</literal> - Component is required for building and running, - equivalent to LIB_DEPENDS - - - -
+ If set to true, adds argument + handling, splitting the whole line, %@, + into numbered arguments, %1, + %2, and so on. For example, for this + line: - The default values for the components are detailed in the - following table: + @foo some.content other.content - - Default <application>Lua</application> dependency - types + %1 and %2 will + contain: - - - - Component + some.content +other.content - Dependency type - - + It also affects how the action + entry works. When there is more than one argument, the + argument number must be specified. For example: - - - lua + actions: [file(1)] + - lib for 4.0-5.0 - (shared) and build for - 5.1 (static) - + + <literal>pre-install</literal>, + <literal>post-install</literal>, + <literal>pre-deinstall</literal>, + <literal>post-deinstall</literal>, + <literal>pre-upgrade</literal>, + <literal>post-upgrade</literal> - - tolua + These keywords contains a sh1 script to be + executed before or after installation, deinstallation, or + upgrade of the package. In addition to the usual + @exec + %foo + placeholders described in , there is a new one, + %@, which represents the argument of the + keyword. + - build (static) - + + Custom Keyword Examples - - ruby + + Example of a <literal>@dirrmtryecho</literal> + Keyword - lib (shared) - - - -
+ This keyword does two things, it adds a + @dirrmtry + directory line to + the packing list, and echoes the fact that the directory + is removed when deinstalling the package. - - Selecting <application>Lua</application> components + actions: [dirrmtry] +post-deinstall: <<EOD + echo "Directory %D/%@ removed." +EOD + - The following fragment corresponds to a port which uses - Lua version 4.0 and - its Ruby bindings. + + Real Life Example, How <literal>@sample</literal> is + Implemented - USE_LUA= 4.0 -LUA_COMPS= lua ruby + This keyword does three things. It adds the first + filename passed as an argument + to @sample to the packing list, it adds + to the post-install script instructions + to copy the sample to the actual configuration file if it + does not already exist, and it adds to the + post-deinstall instructions to remove + the configuration file if it has not been modified. + + actions: [file(1)] +arguments: true +post-install: <<EOD + case "%1" in + /*) sample_file="%1" ;; + *) sample_file="%D/%1" ;; + esac + target_file="${sample_file%.sample}" + set -- %@ + if [ $# -eq 2 ]; then + target_file=${2} + fi + case "${target_file}" in + /*) target_file="${target_file}" ;; + *) target_file="%D/${target_file}" ;; + esac + if ! [ -f "${target_file}" ]; then + /bin/cp -p "${sample_file}" "${target_file}" && \ + /bin/chmod u+w "${target_file}" + fi +EOD +pre-deinstall: <<EOD + case "%1" in + /*) sample_file="%1" ;; + *) sample_file="%D/%1" ;; + esac + target_file="${sample_file%.sample}" + set -- %@ + if [ $# -eq 2 ]; then + set -- %@ + target_file=${2} + fi + case "${target_file}" in + /*) target_file="${target_file}" ;; + *) target_file="%D/${target_file}" ;; + esac + if cmp -s "${target_file}" "${sample_file}"; then + rm -f "${target_file}" + else + echo "You may need to manually remove ${target_file} if it is no longer needed." + fi +EOD - + + + +
- - Detecting installed versions + + - - Detecting installed <application>Lua</application> versions - and components + - The following fragment can be used in a port that uses - Lua if it is installed, or an option is - selected. + <filename>pkg-*</filename> - WANT_LUA= yes + There are some tricks we have not mentioned yet about the + pkg-* files that + come in handy sometimes. -.include <bsd.port.pre.mk> + + <filename>pkg-message</filename> -.if defined(WITH_LUA5) || ${HAVE_LUA:Mlua-5.[01]} != "" -USE_LUA= 5.0-5.1 -CONFIGURE_ARGS+=--enable-lua5 -.endif + To display a message when the package is installed, + place the message in pkg-message. This + capability is often useful to display additional installation + steps to be taken after a pkg install or to + display licensing information. - The following fragment can be used in a port that enables - tolua support if it is installed or if - an option is selected, in addition to - Lua, both version - 4.0. + When some lines about the build-time knobs or warnings + have to be displayed, use ECHO_MSG. + pkg-message is only for + post-installation steps. Likewise, the distinction between + ECHO_MSG is for printing + informational text to the screen and ECHO_CMD + is for + command pipelining: - USE_LUA= 4.0 -LUA_COMPS= lua -WANT_LUA= 4.0 + update-etc-shells: + @${ECHO_MSG} "updating /etc/shells" + @${CP} /etc/shells /etc/shells.bak + @( ${GREP} -v ${PREFIX}/bin/bash /etc/shells.bak; \ + ${ECHO_CMD} ${PREFIX}/bin/bash) >/etc/shells + @${RM} /etc/shells.bak -.include <bsd.port.pre.mk> + + Do not add an entry for pkg-message + in pkg-plist. + + -.if defined(WITH_TOLUA) || ${HAVE_LUA:Mtolua} != "" -LUA_COMPS+= tolua -CONFIGURE_ARGS+=--enable-tolua -.endif - - + + <filename>pkg-install</filename> - - Defined variables + If the port needs to execute commands when the binary + package is installed with pkg add or + pkg install, use + pkg-install. This script will + automatically be added to the package. It will be run twice by + pkg, the first time as ${SH} + pkg-install ${PKGNAME} PRE-INSTALL before the + package is installed, and the second time as + ${SH} pkg-install ${PKGNAME} + POST-INSTALL after it has been installed. + $2 can be tested to determine which + mode the script is being run in. The PKG_PREFIX + environmental variable will be set to the package installation + directory. + - The following variables are available in the port (after - defining one from ). + + <filename>pkg-deinstall</filename> - - Variables defined for ports that use - <application>Lua</application> + This script executes when a package is removed. - - - - Name + This script will be run twice by pkg + delete The first time as ${SH} + pkg-deinstall ${PKGNAME} DEINSTALL before the + port is de-installed and the second time as + ${SH} pkg-deinstall ${PKGNAME} + POST-DEINSTALL after the port has been de-installed. + $2 can be tested to determine which + mode the script is being run in. The PKG_PREFIX + environmental variable will be set to the package installation + directory + - Description - - + + Changing the Names of + <filename>pkg-<replaceable>*</replaceable></filename> - - - LUA_VER + All the names of + pkg-* are + defined using variables that can be changed in the + Makefile if needed. This is especially + useful when sharing the same + pkg-* files + among several ports or when it is necessary to write to one of these files. + See writing to places other than + WRKDIR for why it is a bad idea to + write directly into + the directory containing the + pkg-* + files. - The Lua version that is - going to be used (e.g., 5.1) - + Here is a list of variable names and their default values. + (PKGDIR defaults to + ${MASTERDIR}.) - - LUA_VER_SH - The Lua shared library major - version (e.g., 1) - + + + + + Variable + Default value + + - - LUA_VER_STR + + + DESCR + ${PKGDIR}/pkg-descr + - The Lua version without the - dots (e.g., 51) - + + PLIST + ${PKGDIR}/pkg-plist + - - LUA_PREFIX + + PKGINSTALL + ${PKGDIR}/pkg-install + - The prefix where Lua (and - components) is installed - + + PKGDEINSTALL + ${PKGDIR}/pkg-deinstall + - - LUA_SUBDIR + + PKGMESSAGE + ${PKGDIR}/pkg-message + + + + + - The directory under ${PREFIX}/bin, - ${PREFIX}/share and - ${PREFIX}/lib where - Lua is installed - + + Making Use of <varname>SUB_FILES</varname> and + <varname>SUB_LIST</varname> - - LUA_INCDIR + SUB_FILES and + SUB_LIST are useful for dynamic + values in port files, such as the installation + PREFIX in + pkg-message. - The directory where Lua and - tolua header files are - installed - + SUB_FILES specifies a list + of files to be automatically modified. Each + file in the + SUB_FILES list must have a corresponding + file.in present + in FILESDIR. A modified version will be + created as + ${WRKDIR}/file. + Files defined as a value of USE_RC_SUBR (or + the deprecated USE_RCORDER) are automatically + added to SUB_FILES. For the files + pkg-message, + pkg-install, and + pkg-deinstall, the corresponding Makefile + variable is automatically set to point to the processed + version. - - LUA_LIBDIR + SUB_LIST is a list of + VAR=VALUE pairs. For each pair, + %%VAR%% will be replaced with + VALUE in each file listed in + SUB_FILES. Several common pairs are + automatically defined: PREFIX, + LOCALBASE, DATADIR, + DOCSDIR, EXAMPLESDIR, + WWWDIR, and ETCDIR. Any + line beginning with @comment followed by a + space, will be deleted + from resulting files after a variable substitution. - The directory where Lua and - tolua libraries are - installed - + This example replaces + %%ARCH%% with the system architecture in a + pkg-message: - - LUA_MODLIBDIR + SUB_FILES= pkg-message +SUB_LIST= ARCH=${ARCH} - The directory where Lua - module libraries (.so) are - installed - + Note that for this example, + pkg-message.in must exist in + FILESDIR. - - LUA_MODSHAREDIR + Example of a good + pkg-message.in: - The directory where Lua - modules (.lua) are installed - + Now it is time to configure this package. +Copy %%PREFIX%%/share/examples/putsy/%%ARCH%%.conf into your home directory +as .putsy.conf and edit it. + + - - LUA_PKGNAMEPREFIX + + + - The path to the Lua - interpreter - - - LUAC_CMD + 測試 Port - The path to the Lua - compiler - - - TOLUA_CMD + + Running <command>make describe</command> - The path to the tolua - program - - - -
+ Several of the FreeBSD port maintenance tools, such as + portupgrade1, rely on a database called + /usr/ports/INDEX which keeps track of such + items as port dependencies. INDEX is + created by the top-level ports/Makefile via + make index, which descends into each port + subdirectory and executes make describe + there. Thus, if make describe fails in any + port, no one can generate INDEX, and many + people will quickly become unhappy. - - Telling the port where to find - <application>Lua</application> + + It is important to be able to generate this file no matter + what options are present in make.conf, so + please avoid doing things such as using + .error statements when (for instance) a + dependency is not satisfied. (See + .) + - The following fragment shows how to tell a port that uses a - configure script where the Lua header - files and libraries are. + If make describe produces a string rather + than an error message, everything is probably safe. See + bsd.port.mk for the meaning of the string + produced. - -USE_LUA= 4.0 -GNU_CONFIGURE= yes -CONFIGURE_ENV= CPPFLAGS="-I${LUA_INCDIR}" LDFLAGS="-L${LUA_LIBDIR}" - - + Also note that running a recent version of + portlint (as specified in the next section) + will cause make describe to be run + automatically. +
- - Processing in <filename>bsd.port.pre.mk</filename> + + Portlint - If you need to use the variables for running commands right - after including bsd.port.pre.mk you need to - define LUA_PREMK. + Do check the port with portlint + before submitting or committing it. portlint + warns about many common errors, both functional and + stylistic. For a new (or repocopied) port, + portlint -A is the most thorough; for an + existing port, portlint -C is + sufficient. - - If you define LUA_PREMK, then the version, - dependencies, components and defined variables will not change if - you modify the Lua port variables - after including - bsd.port.pre.mk. - + Since portlint uses heuristics to try to + figure out errors, it can produce false positive warnings. In + addition, occasionally something that is flagged as a problem + really cannot be done in any other way due to limitations in the + ports framework. When in doubt, the best thing to do is ask on + FreeBSD ports mailing list. + - - Using <application>Lua</application> variables in - commands + + Port 工具 - The following fragment illustrates the use of - LUA_PREMK by running the - Lua interpreter to obtain the full - version string, assign it to a variable and pass it to the - program. + The ports-mgmt/porttools + program is part of the Ports Collection. - USE_LUA= 5.0 -LUA_PREMK= yes + port is the front-end script, which can + help simplify the testing job. Whenever a new port or an update + to an existing one needs testing, use + port test to test the port, including the + portlint + checking. This command also detects and lists any files that + are not listed in pkg-plist. For + example: -.include <bsd.port.pre.mk> + # port test /usr/ports/net/csup + -.if exists(${LUA_CMD}) -VER_STR!= ${LUA_CMD} -v + + <varname>PREFIX</varname> 以及 <varname>DESTDIR</varname> -CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" -.endif - + PREFIX 變數會決定該 port 所會安裝的位置。預設是 /usr/local , 但是使用者可以設定程自訂的路徑,像是 /opt 。 必須遵循此變數的值。 - - The Lua variables can be safely - used in commands when they are inside targets without the need of - LUA_PREMK. - - - + 若使用者有設定 DESTDIR 變數, 那麼它會採用所設定的環境,通常可能是 jail 環境或者是並非掛載於 / 上的系統。 通常 port 會裝在 DESTDIR/PREFIX 底下, 並且會紀錄在 DESTDIR/var/db/pkg 內的套件資料庫。 由於事實上 DESTDIR 會由 ports 架構透過 chroot8 來自動處理,所以您不需去作相關修改或刻意維護 DESTDIR 相容的 ports。 - - Using Xfce + PREFIX 會設為 LOCALBASE (預設為 /usr/local)。 若有設定 USE_LINUX_PREFIX, 那麼 PREFIX 則為 LINUXBASE ( 預設為 /compat/linux)。 - The USE_XFCE variable is used to autoconfigure - the dependencies for ports which use an Xfce based library or application - like - x11-toolkits/libxfce4gui and - x11-wm/xfce4-panel. + Avoiding hard-coded /usr/local paths in + the source makes the port much more flexible and able to cater + to the needs of other sites. Often, this can be accomplished by + replacing occurrences of /usr/local + in the port's various Makefiles with + ${PREFIX}. This variable is + automatically passed down to every stage of the build and + install processes. - The following Xfce libraries and applications are recognized at - the moment: + Make sure the application is not installing things in + /usr/local instead of + PREFIX. A quick test for such hard-coded + paths is: - - - libexo: x11/libexo - + % make clean; make package PREFIX=/var/tmp/`make -V PORTNAME` - - libgui: x11-toolkits/libxfce4gui - + If anything is installed outside of + PREFIX, the package creation process will + complain that it cannot find the files. - - libutil: x11/libxfce4util - + In addition, it is worth checking the same with the stage + directory support (see ): - - libmcs: x11/libxfce4mcs - + % make stage && make check-plist && make stage-qa && make package - - mcsmanager: sysutils/xfce4-mcs-manager - + + + check-plist checks for files + missing from the plist, and files in the plist that are not + installed by the port. + - - panel: x11-wm/xfce4-panel - + + stage-qa checks for common + problems like bad shebang, symlinks pointing outside the + stage directory, setuid files, and non-stripped + libraries... + + - - thunar: x11-fm/thunar - + These tests will not find hard-coded paths inside the port's + files, nor will it verify that LOCALBASE is + being used to correctly refer to files from other ports. The + temporarily-installed port in + /var/tmp/`make -V PORTNAME` must be + tested for proper operation to make sure there are no problems + with paths. - - wm: x11-wm/xfce4-wm - + PREFIX must not be set explicitly in a + port's Makefile. Users installing the port + may have set PREFIX to a custom location, and + the port must respect that setting. - - xfdev: dev/xfce4-dev-tools - + Refer to programs and files from other ports with the + variables mentioned above, not explicit pathnames. For + instance, if the port requires a macro PAGER + to have the full pathname of less, do not use + a literal path of /usr/local/bin/less. + Instead, use ${LOCALBASE}: - + -DPAGER=\"${LOCALBASE}/bin/less\" - The following additional parameters are recognized: + The path with LOCALBASE is more likely to + still work if the system administrator has moved the whole + /usr/local tree somewhere else. - - - configenv: Use this if your port requires a special modified - CONFIGURE_ENV to find it's required libraries. - -I${LOCALBASE}/include -L${LOCALBASE}/lib - gets added to CPPFLAGS to CONFIGURE_ENV. - + + All these tests are done automatically when running + poudriere testport or poudriere + bulk -t. It is highly recommended that every + ports contributor install it, and tests all his ports with it. + See for more + information. + + - + + <application>Poudriere</application> - Therefore, if a port has a dependency on - sysutils/xfce4-mcs-manager and - requires the special CPPFLAGS in its configure environment, - the syntax will be: + For a ports contributor, + Poudriere is one of the most + important and helpful testing and build tools. Its main + features include: - USE_XFCE= mcsmanager configenv - + + + Bulk building of the entire ports tree, specific subsets + of the ports tree, or a single port including its + dependencies + - - Using databases + + Automatic packaging of build results + - - Variables for ports using databases + + Generation of build log files per port + - - - - Variable + + Providing a signed pkg8 repository + - Means - - + + Testing of port builds before submitting a patch to the + FreeBSD bug tracker or committing to the ports tree + - - - USE_BDB + + Testing for successful ports builds using different + options + + - If variable is set to yes, - add dependency on databases/db41 - port. The variable may also be set to values: 2, 3, 40, 41, - 42, 43, 44, 45 46, or 47. You can declare a range of - acceptable values, USE_BDB=42+ will find - the highest installed version, and fall back to 42 if nothing - else is installed. - + Because Poudriere performs its + building in a clean jail8 environment and uses + zfs8 features, it has several advantages over traditional + testing on the host system: - - USE_MYSQL + + + No pollution of the host environment: No leftover files, + no accidental removals, no changes of existing configuration + files. + - If variable is set to yes, add - dependency on databases/mysql50-server - port. An associated variable, - WANT_MYSQL_VER, may be - set to values such as 323, 40, 41, 50, 51 or 60. - + + Verify pkg-plist for missing or + superfluous entries + - - USE_PGSQL + + Ports committers sometimes ask for a + Poudriere log alongside a patch + submission to assess whether the patch is ready for + integration into the ports tree + + - If set to yes, add dependency on - databases/postgresql82 - port. An associated variable, - WANT_PGSQL_VER, may be set to values such - as 73, 74, 80, 81, 82, or 83. - + It is also quite straightforward to set up and use, has no + dependencies, and will run on any supported FreeBSD release. This + section shows how to install, configure, and run + Poudriere as part of the normal + workflow of a ports contributor. - - -
+ The examples in this section show a default file layout, as + standard in FreeBSD. Substitute any local changes accordingly. + The ports tree, represented by ${PORTSDIR}, + is located in /usr/ports. Both + ${LOCALBASE} and ${PREFIX} + are /usr/local by default. -
+ + Installing <application>Poudriere</application> - - Starting and stopping services (rc scripts) + Poudriere is available in the + ports tree in ports-mgmt/poudriere. It can be + installed using pkg8 or from ports: - rc.d scripts are used to start services on system - startup, and to give administrators a standard way of stopping, - starting and restarting the service. Ports integrate into - the system rc.d framework. Details on its usage - can be found in - the rc.d Handbook - chapter. Detailed explanation of available commands is - provided in - &man.rc.8; and &man.rc.subr.8;. Finally, there is - an article - on practical aspects of rc.d scripting. + # pkg install poudriere - One or more rc scripts can be installed: + or - USE_RC_SUBR= doormand + # make -C /usr/ports/ports-mgmt/poudriere install clean - Scripts must be placed in the files - subdirectory and a .in suffix must be added to their - filename. The only difference from a base system rc.d script is that the - . /etc/rc.subr line must be replaced with the - . %%RC_SUBR%%, because older versions of &os; - do not have an /etc/rc.subr file. Standard - SUB_LIST expansions are used too. - Use of the %%PREFIX%% and - %%LOCALBASE%% expansions is strongly encouraged as well. - More on - SUB_LIST in the relevant section. + There is also a work-in-progress version of + Poudriere which will eventually + become the next release. It is available in ports-mgmt/poudriere-devel. This + development version is used for the official FreeBSD package + builds, so it is well tested. It often has newer interesting + features. A ports committer will want to use the development + version because it is what is used in production, and has all + the new features that will make sure everything is exactly + right. A contributor will not necessarily need those as the + most important fixes are backported to released version. The + main reason for the use of the development version to build + the official package is because it is faster, in a way that + will shorten a full build from 18 hours to 17 hours when using + a high end 32 CPU server with 128GB of + RAM. Those optimizations will not matter a + lot when building ports on a desktop machine. - Prior to &os; 6.1-RELEASE, integration with &man.rcorder.8; is available by using - USE_RCORDER instead of - USE_RC_SUBR. - However, use of this method is deprecated. + - As of &os; 6.1-RELEASE, local rc.d - scripts (including those installed by ports) are included in - the overall &man.rcorder.8; of the base system. + + Setting Up <application>Poudriere</application> - Example simple rc.d script: + The port installs a default configuration file, + /usr/local/etc/poudriere.conf. Each + parameter is documented in the configuration file and in + poudriere8. Here is a minimal example config + file: - #!/bin/sh + ZPOOL=tank +ZROOTFS=/poudriere +BASEFS=/poudriere +DISTFILES_CACHE=/usr/ports/distfiles +RESOLV_CONF=/etc/resolv.conf +FREEBSD_HOST=ftp://ftp.freebsd.org +SVN_HOST=svn.FreeBSD.org -# PROVIDE: doormand -# REQUIRE: LOGIN -# -# Add the following lines to /etc/rc.conf.local or /etc/rc.conf -# to enable this service: -# -# doormand_enable (bool): Set to NO by default. -# Set it to YES to enable doormand. -# doormand_config (path): Set to %%PREFIX%%/etc/doormand/doormand.cf -# by default. -# + + + ZPOOL -. %%RC_SUBR%% + + The name of the ZFS storage pool + which Poudriere shall use. + Must be listed in the output of zpool + status. + + -name="doormand" -rcvar=${name}_enable + + ZROOTFS -command=%%PREFIX%%/sbin/${name} -pidfile=/var/run/${name}.pid + + The root of + Poudriere-managed file + systems. This entry will cause + Poudriere to create + zfs8 file systems under + tank/poudriere. + + -load_rc_config $name + + BASEFS -: ${doormand_enable="NO"} -: ${doormand_config="%%PREFIX%%/etc/doormand/doormand.cf"} + + The root mount point for + Poudriere file systems. This + entry will cause Poudriere to + mount tank/poudriere to + /poudriere. + + -command_args="-p $pidfile -f $doormand_config" + + DISTFILES_CACHE -run_rc_command "$1" + + Defines where distfiles are stored. In this + example, Poudriere and the + host share the distfiles storage directory. This avoids + downloading tarballs which are already present on the + system. + + - The "=" style of default variable assignment - is preferable to the ":=" style here, since the - former sets a default value only if the variable is unset, - and the latter sets one if the variable is unset - or null. - A user might very well include something like - doormand_flags="" in their - rc.conf.local file, and a variable - substitution using ":=" would inappropriately - override the user's intention. + + RESOLV_CONF - The suffix of the rc script is provided in - RC_SUBR_SUFFIX for further use in the port's - Makefile. Current versions of &os; do not add - any suffix to the script name, but older versions used to add - .sh suffix. + + Use the host /etc/resolv.conf + inside jails for DNS. This is needed + so jails can resolve the URLs of + distfiles when downloading. It is not needed when using + a proxy. Refer to the default configuration file for + proxy configuration. + + + + FREEBSD_HOST + + + The FTP/HTTP + server to use when the jails are installed from FreeBSD + releases and updated with freebsd-update8. + Choose a server location which is close, for example if + the machine is located in Australia, use + ftp.au.freebsd.org. + + + + + SVN_HOST + + + The server from where jails are installed and + updated when using + Subversion. Also used for + ports tree when not using portsnap8. Again, + choose a nearby location. A list of official + Subversion mirrors can be + found in the FreeBSD + Handbook Subversion + section. + + + + + + + + Creating <application>Poudriere</application> + Jails + + Create the base jails which + Poudriere will use for + building: + + # poudriere jail -c -j 93Ramd64 -v 9.3-RELEASE -a amd64 + + Fetch a 9.3-RELEASE for + amd64 from the FTP + server given by FREEBSD_HOST in + poudriere.conf, create the zfs file + system tank/poudriere/jails/93Ramd64, mount + it on /poudriere/jails/93Ramd64 and + extract the 9.3-RELEASE tarballs into this + file system. + + # poudriere jail -c -j 10i386 -v stable/10 -a i386 -m svn+https + + Create tank/poudriere/jails/10i386, + mount it on /poudriere/jails/10i386, then + check out the tip of the Subversion + branch of FreeBSD-10-STABLE from + SVN_HOST in + poudriere.conf into + /poudriere/jails/10i386/usr/src, then + complete a buildworld and install + it into /poudriere/jails/10i386. + + + If a specific Subversion + revision is needed, append it to the version string. For + example: + + # poudriere jail -c -j 10i386 -v stable/10@123456 -a i386 -m svn+https + + - No new scripts should be added with the .sh - suffix. At some point there will be a mass repocopy of all the - scripts that still have that suffix. + While it is possible to build a newer version of FreeBSD on + an older version, most of the time it will not run. For + example, if a stable/10 jail is needed, + the host will have to run stable/10 too. + Running 10.0-RELEASE is not + enough. - - Stopping services at deinstall + + The default svn protocol works but is + not very secure. Using svn+https along + with verifying the remote server's SSL + fingerprint is advised. It will ensure that the files used + for building the jail are from a trusted source. + - It is possible to have a service stopped automatically as part of - the deinstall routine. We advise using this feature only when it's - absolutely necessary to stop a service before it's files go - away. Usually, it's up to the administrator's discretion to decide, - whether to stop the service on deinstall or not. Also note this - affects upgrades, too. + A list of jails currently known to + Poudriere can be shown with + poudriere jail -l: - Line like this goes to the pkg-plist: + # poudriere jail -l +JAILNAME VERSION ARCH METHOD +93Ramd64 9.3-RELEASE amd64 ftp +10i386 10.0-STABLE i386 svn+https + - @stopdaemon doormand - The argument must match the content of - USE_RC_SUBR variable. - - - + + Keeping <application>Poudriere</application> Jails + Updated + Managing updates is very straightforward. The + command: - - Advanced <filename>pkg-plist</filename> practices + # poudriere jail -u -j JAILNAME - - Changing <filename>pkg-plist</filename> based on make - variables + updates the specified jail to the latest version + available. For FreeBSD releases, update to the latest patchlevel + with freebsd-update8. For FreeBSD versions built from + source, update to the latest + Subversion revision in the + branch. - Some ports, particularly the p5- ports, - need to change their pkg-plist depending on - what options they are configured with (or version of - perl, in the case of p5- - ports). To make this easy, any instances in the - pkg-plist of %%OSREL%%, - %%PERL_VER%%, and - %%PERL_VERSION%% will be substituted for - appropriately. The value of %%OSREL%% is the - numeric revision of the operating system (e.g., - 4.9). %%PERL_VERSION%% is - the full version number of perl (e.g., - 5.00502) and %%PERL_VER%% - is the perl version number minus - the patchlevel (e.g., 5.005). Several other - %%VARS%% related to - port's documentation files are described in the relevant section. + + For jails employing a + svn+* method, + it is helpful to add -J + NumberOfParallelBuildJobs + to speed up the build by increasing the number of parallel + compile jobs used. For example, if the building machine has + 6 CPUs, use: - If you need to make other substitutions, you can set the - PLIST_SUB variable with a list of - VAR=VALUE - pairs and instances of - %%VAR%% will be - substituted with VALUE in the - pkg-plist. + # poudriere jail -u -J 6 -j JAILNAME + + - For instance, if you have a port that installs many files in a - version-specific subdirectory, you can put something like + + Setting Up Ports Trees for Use with + <application>Poudriere</application> - OCTAVE_VERSION= 2.0.13 -PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION} + There are multiple ways to use ports trees in + Poudriere. The most + straightforward way is to have + Poudriere create a default ports + tree for itself: - in the Makefile and use - %%OCTAVE_VERSION%% wherever the version shows up - in pkg-plist. That way, when you upgrade the port, - you will not have to change dozens (or in some cases, hundreds) of - lines in the pkg-plist. + # poudriere ports -c - This substitution (as well as addition of any manual pages) will be done between - the pre-install and - do-install targets, by reading from - PLIST and writing to - TMPPLIST - (default: - WRKDIR/.PLIST.mktmp). So if - your port builds PLIST - on the fly, do so in or - before pre-install. Also, if your port - needs to edit the resulting file, do so in - post-install to a file named - TMPPLIST. + This command creates + tank/poudriere/ports/default, mount it on + /poudriere/ports/default, and populate it + using portsnap8. Afterward it is included in the list + of known ports trees: - Another possibility to modify port's packing list is based - on setting the variables PLIST_FILES and - PLIST_DIRS. The value of each variable - is regarded as a list of pathnames to - write to TMPPLIST - along with PLIST - contents. Names listed in PLIST_FILES - and PLIST_DIRS are subject to - %%VAR%% - substitution, as described above. - Except for that, names from PLIST_FILES - will appear in the final packing list unchanged, - while @dirrm will be - prepended to names from PLIST_DIRS. - To take effect, PLIST_FILES and - PLIST_DIRS must be set before - TMPPLIST is written, - i.e. in pre-install or earlier. - + # poudriere ports -l +PORTSTREE METHOD PATH +default portsnap /poudriere/ports/default - - Empty directories + + Note that the default ports tree is + special. Each of the build commands explained later will + implicitly use this ports tree unless specifically specified + otherwise. To use another tree, add -p + treename to the + commands. + - - Cleaning up empty directories + While useful for regular bulk builds, having this default + ports tree with the portsnap8 method may not be the + best way to deal with local modifications for a ports + contributor. As with the creation of jails, it is possible to + use a different method for creating the ports tree. To add an + additional ports tree for testing local modifications and + ports development, checking out the tree via + Subversion is possible: - Do make your ports remove empty directories when they are - de-installed. This is usually accomplished by adding - @dirrm lines for all directories that are - specifically created by the port. You need to delete subdirectories - before you can delete parent directories. + # poudriere ports -c -m svn+https -p subversive - : -lib/X11/oneko/pixmaps/cat.xpm -lib/X11/oneko/sounds/cat.au - : -@dirrm lib/X11/oneko/pixmaps -@dirrm lib/X11/oneko/sounds -@dirrm lib/X11/oneko + Creates tank/poudriere/ports/subversive + and mounts it on + /poudriere/ports/subversive. It is then + populated using Subversion. + Finally, it is added to the list of known ports trees: - However, sometimes @dirrm will give you - errors because other ports share the same directory. You - can use @dirrmtry to - remove only empty directories without warning. + # poudriere ports -l +PORTSTREE METHOD PATH +default portsnap /poudriere/ports/default +subversive svn+https /poudriere/ports/subversive - @dirrmtry share/doc/gimp + + The svn method allows extra + qualifiers to tell Subversion + exactly how to fetch data. This is explained in + poudriere8. For instance, poudriere ports + -c -m svn+ssh -p subversive uses + SSH for the checkout. + - This will neither print any error messages nor cause - &man.pkg.delete.1; to exit abnormally even if - ${PREFIX}/share/doc/gimp is not - empty due to other ports installing some files in there. - + - - Creating empty directories + + Using Manually Managed Ports Trees with Poudriere - Empty directories created during port installation need special - attention. They will not get created when installing the package, - because packages only store the files, and &man.pkg.add.1; creates - directories for them as needed. To make sure the empty directory - is created when installing the package, add this line to - pkg-plist above the corresponding - @dirrm line: + Depending on the workflow, it can be extremely helpful to + use ports trees which are maintained manually. For instance, + if there is a local copy of the ports tree in + /work/ports, point + Poudriere to the location: - @exec mkdir -p %D/share/foo/templates - + # poudriere ports -c -F -f none -M /work/ports -p development - + This will be listed in the table of known trees: - - Configuration files + # poudriere ports -l +PORTSTREE METHOD PATH +development - /work/ports - If your port requires some configuration files in - PREFIX/etc, do - not just install them and list them in - pkg-plist. That will cause - &man.pkg.delete.1; to delete files carefully edited by - the user and a new installation to wipe them out. + + The dash in the METHOD column means + that Poudriere will not update or + change this ports tree, ever. It is completely up to the + user to maintain this tree, including all local + modifications that may be used for testing new ports and + submitting patches. + - Instead, install sample files with a suffix - (filename.sample - will work well). Copy the sample file as the real configuration - file, if it does not exist. On deinstall, delete the configuration - file, but only if it was not modified by the user. You need to - handle this both in the port Makefile, and in - the pkg-plist (for installation from - the package). + - Example of the Makefile part: + + Keeping Poudriere Ports Trees Updated - post-install: - @if [ ! -f ${PREFIX}/etc/orbit.conf ]; then \ - ${CP} -p ${PREFIX}/etc/orbit.conf.sample ${PREFIX}/etc/orbit.conf ; \ - fi + As straightforward as with jails described earlier: - Example of the pkg-plist part: + # poudriere ports -u -p PORTSTREE - @unexec if cmp -s %D/etc/orbit.conf.sample %D/etc/orbit.conf; then rm -f %D/etc/orbit.conf; fi -etc/orbit.conf.sample -@exec if [ ! -f %D/etc/orbit.conf ] ; then cp -p %D/%F %B/orbit.conf; fi + Will update the given + PORTSTREE, one tree given by the + output of poudriere -l, to the latest + revision available on the official servers. - Alternatively, print out a message pointing out that the - user has to copy and edit the file before the software can be made - to work. - + + Ports trees without a method, see , cannot be + updated like this. They must be updated manually by the + porter. + - - Dynamic vs. static package list + - A static package list is a package list - which is available in the Ports Collection either as a - pkg-plist file (with or without variable - substitution), or embedded into the Makefile - via PLIST_FILES and PLIST_DIRS. - Even if the contents are auto-generated by a tool or a target - in the Makefile before the inclusion into the - Ports Collection by a committer, this is still considered a - static list, since it is possible to examine it without having - to download or compile the distfile. + + Testing Ports - A dynamic package list is a package list - which is generated at the time the port is compiled based upon the - files and directories which are installed. It is not possible to - examine it before the source code of the ported application - is downloaded and compiled, or after running a make - clean. + After jails and ports trees have been set up, the result + of a contributor's modifications to the ports tree can be + tested. - While the use of dynamic package lists is not forbidden, - maintainers should use static package lists wherever possible, as it - enables users to &man.grep.1; through available ports to discover, - for example, which port installs a certain file. Dynamic lists - should be primarily used for - complex ports where the package list changes drastically based upon - optional features of the port (and thus maintaining a static package - list is infeasible), or ports which change the - package list based upon the version of dependent software used (e.g. - ports which generate docs with - Javadoc). + For example, local modifications to the www/firefox port located in + /work/ports/www/firefox can be tested in + the previously created 9.3-RELEASE jail: - Maintainers who prefer dynamic package lists are encouraged to - add a new target to their port which generates the - pkg-plist file so that users may examine - the contents. + # poudriere testport -j 93Ramd64 -p development -o www/firefox - + This will build all dependencies of + Firefox. If a dependency has been + built previously and is still up-to-date, the pre-built + package is installed. If a dependency has no up-to-date + package, one will be built with default options in a jail. + Then Firefox itself is + built. - - 自動產生 package list + The complete build of every port is logged to + /poudriere/data/logs/bulk/93Ri386-development/build-time/logs. - 首先,先確認您的 port 除了 pkg-plist - 尚未搞定之外,其他都完成了。 + The directory name 93Ri386-development + is derived from the arguments to -j and + -p, respectively. For convenience, a + symbolic link + /poudriere/data/logs/bulk/93Ri386-development/latest + is also maintained. The link points to the latest + build-time directory. Also in this + directory is an index.html for observing + the build process with a web browser. - 接著,建立臨時目錄以供該 port 安裝,並且把所有相依套件都裝好 - 。 + By default, Poudriere cleans up + the jails and leaves log files in the directories mentioned + above. To ease investigation, jails can be kept running after + the build by adding to + testport: - &prompt.root; mkdir /var/tmp/$(make -V PORTNAME) -&prompt.root; mtree -U -f $(make -V MTREE_FILE) -d -e -p /var/tmp/$(make -V PORTNAME) -&prompt.root; make depends PREFIX=/var/tmp/$(make -V PORTNAME) + # poudriere testport -j 93Ramd64 -p development -i -o www/firefox - 把這目錄架構存到新檔案。 + After the build completes, and regardless of whether it + was successful, a shell is provided within the jail. The + shell is used to investigate further. + Poudriere can be told to leave the + jail running after the build finishes with + . Poudriere + will show the command to run when the jail is no longer + needed. It is then possible to jexec8 into it: - &prompt.root; (cd /var/tmp/$(make -V PORTNAME) && find -d * -type d) | sort > OLD-DIRS + # poudriere testport -j 93Ramd64 -p development -I -o www/firefox +[...] +====>> Installing local Pkg repository to /usr/local/etc/pkg/repos +====>> Leaving jail 93Ramd64-development-n running, mounted at /poudriere/data/.m/93Ramd64-development/ref for interactive run testing +====>> To enter jail: jexec 93Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root +====>> To stop jail: poudriere jail -k -j 93Ramd64 -p development +# jexec 93Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root +# [do some stuff in the jail] +# exit +# poudriere jail -k -j 93Ramd64 -p development +====>> Umounting file systems - 新增空的 pkg-plist 檔案: + An integral part of the FreeBSD ports build infrastructure is + the ability to tweak ports to personal preferences with + options. These can be tested with + Poudriere as well. Adding the + : - &prompt.root; :>pkg-plist + # poudriere testport -c -o www/firefox - 若該 port 有遵循 PREFIX(也應該要遵循), - 接著就可以安裝該 port 並產生檔案清單。 + Presents the port configuration dialog before the port is + built. The ports given after in the + format + category/portname + will use the specified options, all dependencies will use the + default options. Testing dependent ports with non-default + options can be accomplished using sets, see . - &prompt.root; make install PREFIX=/var/tmp/$(make -V PORTNAME) -&prompt.root; (cd /var/tmp/$(make -V PORTNAME) && find -d * \! -type d) | sort > pkg-plist + + When testing ports where pkg-plist + is altered during build depending on the selected options, + it is recommended to perform a test run with all options + selected and one with all options + deselected. + + - 這時要記得把新建的目錄,也加到檔案清單內。 + + Using Sets - &prompt.root; (cd /var/tmp/$(make -V PORTNAME) && find -d * -type d) | sort | comm -13 OLD-DIRS - | sort -r | sed -e 's#^#@dirrm #' >> pkg-plist + For all actions involving builds, a so-called + set can be specified using -z + setname. A set refers + to a fully independent build. This allows, for instance, + usage of testport with non-standard options + for the dependent ports. - 最後,您應該手動整理檔案清單(這不是全部自動化處理的)。Man page 則應該利用 MANn 的方式 - 寫在 port 的 Makefile 而不是寫在檔案清單中。 - 使用者設定檔應該移除,或更名為filename.sample。 - The info/dir file should not be listed - and appropriate install-info lines should - be added as noted in the info - files section. Any - libraries installed by the port should be listed as specified in the - shared libraries section. + To use sets, Poudriere expects + an existing directory structure similar to + PORT_DBDIR, defaults to + /var/db/ports in its configuration + directory. This directory is then nullfs-mounted into the + jails where the ports and their dependencies are built. + Usually a suitable starting point can be obtained by + recursively copying the existing PORT_DBDIR + to + /usr/local/etc/poudriere.d/jailname-portname-setname-options. + This is described in detail in poudriere8. For + instance, testing www/firefox + in a specific set named devset, add the + -z devset parameter to the testport + command: - Alternatively, use the plist script in - /usr/ports/Tools/scripts/ to build the - package list automatically. The first step is the same as - above: take the first three lines, that is, - mkdir, mtree and - make depends. Then build and install the - port: + # poudriere testport -j 93Ramd64 -p development -z devset -o www/firefox - &prompt.root; make install PREFIX=/var/tmp/port-name + This will look for the existence of these directories in + this order: - And let plist create the - pkg-plist file: + + + /usr/local/etc/poudriere.d/93Ramd64-development-devset-options + - &prompt.root; /usr/ports/Tools/scripts/plist -Md -m /etc/mtree/BSD.port-type.dist /var/tmp/port-name > pkg-plist + + /usr/local/etc/poudriere.d/93Ramd64-devset-options + - The packing list still has to be tidied up by hand as - stated above. + + /usr/local/etc/poudriere.d/93Ramd64-development-options + - + + /usr/local/etc/poudriere.d/devset-options + - + + /usr/local/etc/poudriere.d/development-options + - - The <filename>pkg-*</filename> files + + /usr/local/etc/poudriere.d/93Ramd64-options + - There are some tricks we have not mentioned yet about the - pkg-* files - that come in handy sometimes. + + /usr/local/etc/poudriere.d/options + + - - <filename>pkg-message</filename> + From this list, Poudriere + nullfs-mounts the first existing + directory tree into the /var/db/ports + directory of the build jails. Hence, all custom options are + used for all the ports during this run of + testport. - If you need to display a message to the installer, you may place - the message in pkg-message. This capability is - often useful to display additional installation steps to be taken - after a &man.pkg.add.1; or to display licensing - information. + After the directory structure for a set is provided, the + options for a particular port can be altered. For + example: - When some lines about the build-time knobs or warnings - have to be displayed, use ECHO_MSG. The - pkg-message file is only for - post-installation steps. Likewise, the distinction between - ECHO_MSG and ECHO_CMD - should be kept in mind. The former is for printing - informational text to the screen, while the latter is for - command pipelining. + # poudriere options -c www/firefox -z devset - A good example for both can be found in - shells/bash2/Makefile: + The configuration dialog for www/firefox is shown, and options can + be edited. The selected options are saved to the + devset set. - update-etc-shells: - @${ECHO_MSG} "updating /etc/shells" - @${CP} /etc/shells /etc/shells.bak - @( ${GREP} -v ${PREFIX}/bin/bash /etc/shells.bak; \ - ${ECHO_CMD} ${PREFIX}/bin/bash) >/etc/shells - @${RM} /etc/shells.bak + + Poudriere is very flexible in + the option configuration. They can be set for particular + jails, ports trees, and for multiple ports by one command. + Refer to poudriere8 for details. + - - The pkg-message file does not need to be - added to pkg-plist. Also, it will not get - automatically printed if the user is using the port, not the - package, so you should probably display it from the - post-install target yourself. - - + - - <filename>pkg-install</filename> + + Providing a Custom <filename>make.conf</filename> + File - If your port needs to execute commands when the binary package - is installed with &man.pkg.add.1; you can do this via the - pkg-install script. This script will - automatically be added to the package, and will be run twice by - &man.pkg.add.1;: the first time as - ${SH} pkg-install ${PKGNAME} - PRE-INSTALL and the second time as - ${SH} pkg-install ${PKGNAME} POST-INSTALL. - $2 can be tested to determine which mode - the script is being run in. The PKG_PREFIX - environmental variable will be set to the package installation - directory. See &man.pkg.add.1; for - additional information. + Similar to using sets, + Poudriere will also use a custom + make.conf if it is provided. No special + command line argument is necessary. Instead, + Poudriere looks for existing files + matching a name scheme derived from the command line. For + instance: + # poudriere testport -j 93Ramd64 -p development -z devset -o www/firefox + + causes Poudriere to check for + the existence of these files in this order: + + + + /usr/local/etc/poudriere.d/make.conf + + + + /usr/local/etc/poudriere.d/devset-make.conf + + + + /usr/local/etc/poudriere.d/development-make.conf + + + + /usr/local/etc/poudriere.d/93Ramd64-make.conf + + + + /usr/local/etc/poudriere.d/93Ramd64-development-make.conf + + + + /usr/local/etc/poudriere.d/93Ramd64-devset-make.conf + + + + /usr/local/etc/poudriere.d/93Ramd64-development-devset-make.conf + + + + Unlike with sets, all of the found files will be appended, + in that order, into one + make.conf inside the build jails. It is + hence possible to have general make variables, intended to + affect all builds in + /usr/local/etc/poudriere.d/make.conf. + Special variables, intended to affect only certain jails or + sets can be set in specialised make.conf + files, such as + /usr/local/etc/poudriere.d/93Ramd64-development-devset-make.conf. + + + Using <filename>make.conf</filename> to Change Default + <application>Perl</application> + + To build a set with a non default + Perl version, for example, + 5.20, using a set named + perl5-20, create a + perl5-20-make.conf with this + line: + + DEFAULT_VERSIONS+= perl=5.20 + - This script is not run automatically if you install the port - with make install. If you are depending on it - being run, you will have to explicitly call it from your port's - Makefile, with a line like - PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} - ${PKGNAME} PRE-INSTALL. + Note the use of += so that if the + variable is already set in the default + make.conf its content will not be + overwritten. - + - - <filename>pkg-deinstall</filename> + - This script executes when a package is removed. + + Pruning no Longer Needed Distfiles - - This script will be run twice by &man.pkg.delete.1;. - The first time as ${SH} pkg-deinstall ${PKGNAME} - DEINSTALL and the second time as - ${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL. - - + Poudriere comes with a built-in + mechanism to remove outdated distfiles that are no longer used + by any port of a given tree. The command - - <filename>pkg-req</filename> + # poudriere distclean -p portstree - If your port needs to determine if it should install or not, you - can create a pkg-req requirements - script. It will be invoked automatically at - installation/de-installation time to determine whether or not - installation/de-installation should proceed. + will scan the distfiles folder, + DISTFILES_CACHE in + poudriere.conf, versus the ports tree + given by the -p + portstree argument and + prompt for removal of those distfiles. To skip the prompt and + remove all unused files unconditionally, the + -y argument can be added: - The script will be run at installation time by - &man.pkg.add.1; as - pkg-req ${PKGNAME} INSTALL. - At de-installation time it will be run by - &man.pkg.delete.1; as - pkg-req ${PKGNAME} DEINSTALL. - + # poudriere distclean -p portstree -y + - - Changing the names of - <filename>pkg-*</filename> files + - - - DESCR - ${PKGDIR}/pkg-descr - + - - PLIST - ${PKGDIR}/pkg-plist - + + Tinderbox - - PKGINSTALL - ${PKGDIR}/pkg-install - + As an avid ports contributor, take + a look at Tinderbox. It is a + powerful system for building and testing ports. Install + Tinderbox using + ports-mgmt/tinderbox port. Be + sure to read supplied documentation since the configuration is + not trivial. - - PKGDEINSTALL - ${PKGDIR}/pkg-deinstall - + Visit the + Tinderbox + website for more details. + + - - PKGREQ - ${PKGDIR}/pkg-req - + + - Please change these variables rather than overriding - PKG_ARGS. If you change - PKG_ARGS, those files will not correctly be - installed in /var/db/pkg upon install from a - port. - + - - Making use of <varname>SUB_FILES</varname> and - <varname>SUB_LIST</varname> + Upgrading a Port - The SUB_FILES and SUB_LIST - variables are useful for dynamic values in port files, such as the - installation PREFIX in - pkg-message. + When a port is not the most recent version available from the + authors, update the local working copy of + /usr/ports. The port might have already been + updated to the new version. - The SUB_FILES variable specifies a list - of files to be automatically modified. Each - file in the - SUB_FILES list must have a corresponding - file.in present - in FILESDIR. A modified version will - be created in WRKDIR. Files defined as a - value of USE_RC_SUBR (or the deprecated - USE_RCORDER) - are automatically added to the - SUB_FILES. For the files - pkg-message, - pkg-install, pkg-deinstall - and pkg-reg, the corresponding Makefile variable - is automatically set to point to the processed version. + When working with more than a few ports, it will probably be + easier to use Subversion to keep + the whole ports collection up-to-date, as described in the Handbook. + This will have the added benefit of tracking all the port's + dependencies. - The SUB_LIST variable is a list of - VAR=VALUE pairs. For each pair - %%VAR%% will get replaced - with VALUE in each file listed in - SUB_FILES. Several common pairs are - automatically defined: PREFIX, - LOCALBASE, - DATADIR, DOCSDIR, - EXAMPLESDIR. Any line beginning with - @comment will be deleted from resulting files - after a variable substitution. + The next step is to see if there is an update already pending. + To do this, there are two options. There is a searchable + interface to the FreeBSD Problem + Report (PR) or bug database. Select Ports + Tree in the Product dropdown, and + enter the name of the port in the Summary + field. - The following example will replace %%ARCH%% - with the system architecture - in a pkg-message: + However, sometimes people forget to put the name of the port + into the Summary field in an unambiguous fashion. In that + case, try searching in the Comment field in + the Detailled Bug Information section, or try + the + FreeBSD Ports Monitoring System + (also known as portsmon). This system + attempts to classify port PRs by portname. To search for PRs + about a particular port, use the Overview + of One Port. - SUB_FILES= pkg-message -SUB_LIST= ARCH=${ARCH} + If there is no pending PR, the next step is to send an email + to the port's maintainer, as shown by + make maintainer. That person may already be + working on an upgrade, or have a reason to not upgrade the port + right now (because of, for example, stability problems of the + new version), and there is no need to duplicate their work. Note + that unmaintained ports are listed with a maintainer of + ports@FreeBSD.org, which is just the general + ports mailing list, so sending mail there probably will not help + in this case. - Note that for this example, the - pkg-message.in file must exist in - FILESDIR. + If the maintainer asks you to do the upgrade or there is + no maintainer, then help out FreeBSD by + preparing the update! Please do this by using the + diff1 command in the base system. - Example of a good pkg-message.in: + To create a suitable diff for a single + patch, copy the file that needs patching to + something.orig, + save the changes to + something and then + create the patch: - Now it is time to configure this package. -Copy %%PREFIX%%/share/examples/putsy/%%ARCH%%.conf into your home directory -as .putsy.conf and edit it. + + % diff -u something.orig something > something.diff + - - + Otherwise, either use the + svn diff method () + or copy the contents of the port to an entire different + directory and use the result of the recursive diff1 + output of the new and old ports directories (for example, if the + modified port directory is called superedit + and the original is in our tree as + superedit.bak, then save the result of + diff -ruN superedit.bak superedit). Either + unified or context diff is fine, but port committers generally + prefer unified diffs. Note the use of the -N + option—this is the accepted way to force diff to properly + deal with the case of new files being added or old files being + deleted. Before sending us the diff, please examine the output + to make sure all the changes make sense. (In particular, make + sure to first clean out the work directories with + make clean). - - Testing your port + + If some files have been added, copied, moved, or removed, + add this information to the problem report so that the committer + picking up the patch will know what svn1 commands to + run. + - - Running <command>make describe</command> + To simplify common operations with patch files, use + make makepatch as described in . + Other tools exists, like + /usr/ports/Tools/scripts/patchtool.py. + Before using it, please read + /usr/ports/Tools/scripts/README.patchtool. - Several of the &os; port maintenance tools, such as - &man.portupgrade.1;, rely on a database called - /usr/ports/INDEX which keeps track of such - items as port dependencies. INDEX is created - by the top-level ports/Makefile via - make index, which descends into each - port subdirectory and executes make describe - there. Thus, if make describe fails in any - port, no one can generate INDEX, and many - people will quickly become unhappy. + If the port is unmaintained, and you are actively using + it, please consider volunteering to become its + maintainer. FreeBSD has over 4000 ports without maintainers, and + this is an area where more volunteers are always needed. (For a + detailed description of the responsibilities of maintainers, + refer to the section in the Developer's + Handbook.) - - It is important to be able to generate this file no - matter what options are present in make.conf, - so please avoid doing things such as using .error - statements when (for instance) a dependency is not satisfied. - (See .) - + To submit the diff, use the bug submit + form (product Ports & Packages, + component Individual Port(s)). If the + submitter is also + maintaining the port, be sure to put + [MAINTAINER] at the beginning of the + Summary line. Always include the category + with the port name, followed by colon, and brief descripton of the + issue. For example: + category/portname: + add FOO option, or if + maintaining the port, [MAINTAINER] + category/portname: + Update to X.Y. + Please mention any added or + deleted files in the message, as they have to be explicitly + specified to svn1 when doing a commit. Do not compress or + encode the diff. - If make describe produces a string - rather than an error message, you are probably safe. See - bsd.port.mk for the meaning of the - string produced. + Before submitting the bug, review the + Writing the problem report section in the Problem + Reports article. It contains far more information about how to + write useful problem reports. - Also note that running a recent version of - portlint (as specified in the next section) - will cause make describe to be run - automatically. - + + If the upgrade is motivated by security concerns or a + serious fault in the currently committed port, please notify + the Ports Management Team portmgr@FreeBSD.org to request immediate rebuilding and + redistribution of the port's package. Unsuspecting users + of pkg will otherwise continue to install + the old version via pkg install for several + weeks. + - - Portlint + + Once again, please use diff1 and not shar1 + to send updates to existing ports! This helps ports + committers understand exactly what is being changed. + - Do check your work with portlint - before you submit or commit it. portlint - warns you about many common errors, both functional and - stylistic. For a new (or repocopied) port, - portlint -A is the most thorough; for an - existing port, portlint -C is sufficient. + Now that all of that is done, read about + how to keep up-to-date in . - Since portlint uses heuristics to - try to figure out errors, it can produce false positive - warnings. In addition, occasionally something that is - flagged as a problem really cannot be done in any other - way due to limitations in the ports framework. When in - doubt, the best thing to do is ask on &a.ports;. - + + Using <application>Subversion</application> to Make + Patches - - Port Tools + When possible, please submit a svn1 diff. They + are easier to handle than diffs between + new and old directories. It is easier + to see what has changed, and to update the diff if + something was modified in the Ports Collection since the + work on it began, or if the + committer asks for something to be fixed. Also, a patch + generated with svn diff can be easily applied + with svn patch and will save some time to the + committer. - The ports-mgmt/porttools - program is part of the Ports Collection. + % cd ~/my_wrkdir +% svn co https://svn.FreeBSD.org/ports/head/dns/pdnsd +% cd ~/my_wrkdir/pdnsd - port is the front-end script, - which can help you simplify the testing job. Whenever you want - to test a new port or update an existing one, you can use - port test to test your port, including the - portlint - checking. This command also detects and lists any files that - are not listed in pkg-plist. See the - following example: + + - &prompt.root; port test /usr/ports/net/csup - + This can be anywhere, of course. Building + ports is not limited to within + /usr/ports/. + - - <varname>PREFIX</varname> 以及 <varname>DESTDIR</varname> + + svn.FreeBSD.org + is the FreeBSD public Subversion + server. See Subversion + mirror sites for more information. + + - PREFIX 變數會決定該 port 所會安裝的位置, - 通常是 /usr/local/opt - 。 使用者可以藉由設定 PREFIX 決定要裝在哪邊, - 而你所維護的 port 必須遵循該規則。 + While in the port directory, make any changes that are + needed. If adding, copying, moving, or removing a + file, use svn to track these changes: - 若使用者有設定 DESTDIR 變數, - 那麼它會採用所設定的環境,通常可能是 jail 環境或者是並非掛載於 - / 上的系統。 通常 port 會裝在 - DESTDIR/PREFIX 底下, - 並且會紀錄在 DESTDIR/var/db/pkg 內的套件資料庫。 - 由於事實上 DESTDIR 會由 ports 架構透過 - &man.chroot.8; 來自動處理,所以您不需去作相關修改或刻意維護 - DESTDIR 相容的 ports。 + % svn add new_file +% svn copy some_file file_copy +% svn move old_name new_name +% svn remove deleted_file - PREFIX 變數若無特別設定,會與 - LOCALBASE 相同 (預設為 - /usr/local)。 若有設定 - USE_LINUX_PREFIX, - 那麼 PREFIX 則為 LINUXBASE ( - 預設為 /compat/linux)。 + Make sure to check the port using the checklist in + and + . - Avoiding the hard-coding of /usr/local or - /usr/X11R6 anywhere in the source will make the - port much more flexible and able to cater to the needs of other - sites. For X ports that use imake, this is - automatic; otherwise, this can often be done by simply replacing the - occurrences of /usr/local (or - /usr/X11R6 for X ports that do not use imake) - in the various Makefiles in the port to read - ${PREFIX}, as this variable is automatically passed - down to every stage of the build and install processes. + % svn status +% svn update - Make sure your application is not installing things in - /usr/local instead of PREFIX. - A quick test for this is to do this is: + + + This will attempt to merge the differences between the + patch and current repository version. Watch the output + carefully. The letter in front of each file name + indicates what was done with it. See + for a complete list. + + - &prompt.root; make clean; make package PREFIX=/var/tmp/port-name + + <application>Subversion</application> Update File + Prefixes - If anything is installed outside of PREFIX, - the package creation process will complain that it - cannot find the files. + + + + U + The file was updated without problems. + - - This does not test for the existence of internal references, - or correct use of LOCALBASE for references to - files from other ports. Testing the installation in - /var/tmp/port-name - to do that while you have it installed would do that. + + G + The file was updated without problems (only when + working against a remote + repository). + - The variable PREFIX can be reassigned in your - Makefile or in the user's environment. - However, it is strongly discouraged for individual ports to set this - variable explicitly in the Makefiles. + + M + The file had been modified, and was merged + without conflicts. + - Also, refer to programs/files from other ports with the - variables mentioned above, not explicit pathnames. For instance, if - your port requires a macro PAGER to be the full - pathname of less, use the compiler flag: + + C + The file had been modified, and was merged with + conflicts. + + + +
- -DPAGER=\"${LOCALBASE}/bin/less\" + If C is displayed as a result of + svn update, it means something changed in + the Subversion repository and + svn1 was not able to merge the local changes with those + from the repository. It is always a good idea to inspect the + changes anyway, since svn1 does not know anything about + the structure of a port, so it might (and probably will) merge + things that do not make sense. - instead of - -DPAGER=\"/usr/local/bin/less\". This way it will - have a better chance of working if the system administrator has - moved the whole /usr/local tree somewhere else. -
+ The last step is to make a unified diff1 + of the changes: - - Tinderbox + % svn diff > ../`make -VPKGNAME`.diff - If you're an avid ports contributor, you might want to take a - look at Tinderbox. It is a powerful - system for building and testing ports based on the scripts used on - Pointyhat. You can install - Tinderbox using - ports-mgmt/tinderbox port. Be sure - to read supplied documentation since the configuration is not - trivial. + + If files have been added, copied, moved, or removed, + include the svn1 add, + copy, move, and + remove commands that were used. + svn move or svn copy + must be run before the patch can be applied. svn + add or svn remove must be run + after the patch is applied. + - Visit the Tinderbox website - for more details. + Send the patch following the problem + report submission guidelines. - -
+ + The patch can be automatically generated and the PR + pre-filled with the contact information by using + port submit. See for more details. + + - - Upgrading + + <filename>UPDATING</filename> and + <filename>MOVED</filename> - When you notice that a port is out of date compared to the latest - version from the original authors, you should first ensure that you - have the latest - port. You can find them in the - ports/ports-current directory of the &os; FTP mirror - sites. However, if you are working with more than a few - ports, you will probably find it easier to use - CVSup to keep your whole ports collection - up-to-date, as described in the - Handbook. - This will have the added benefit of tracking all the ports' - dependencies. + + <filename>/usr/ports/UPDATING</filename> - The next step is to see if there is an update already pending. - To do this, you have two options. There is a searchable interface - to the - - FreeBSD Problem Report (PR) database (also known as - GNATS). Select ports in the - dropdown, and enter the name of the port. + If upgrading the port requires special steps like + changing configuration files or running a specific program, + it must be documented in this file. The format of + an entry in this file is: - However, sometimes people forget to put the name of the port - into the Synopsis field in an unambiguous fashion. In that case, - you can try the - FreeBSD Ports Monitoring System (also known as - portsmon). This system attempts to classify - port PRs by portname. To search for PRs about a particular port, - use the - Overview of One Port. + YYYYMMDD: + AFFECTS: users of portcategory/portname + AUTHOR: Your name <Your email address> - If there is no pending PR, the next step is to send an email - to the port's maintainer, as shown by - make maintainer. That person may - already be working on an upgrade, or have a reason to not upgrade the - port right now (because of, for example, stability problems of the new - version); you would not want to duplicate their work. Note that - unmaintained ports are listed with a maintainer of - ports@FreeBSD.org, which is just the general - ports mailing list, so sending mail there - probably will not help in this case. + Special instructions - If the maintainer asks you to do the upgrade or there is - no maintainer, then you have a chance to help out &os; by - preparing the update yourself! Please make the changes and save - the result of the - recursive diff output - of the new and old - ports directories (e.g., if your modified port directory is - called superedit and the original is in our tree - as superedit.bak, then save the result of - diff -ruN superedit.bak superedit). Either - unified or context diff is fine, but port committers generally - prefer unified diffs. Note the use of the -N - option—this is the accepted way to force diff to properly - deal with the case of new files being added or old files being - deleted. Before sending us the diff, please examine the - output to make sure all the changes make sense. To - simplify common operations with patch files, you can use - /usr/ports/Tools/scripts/patchtool.py. - Before using it, please read - /usr/ports/Tools/scripts/README.patchtool. + + When including exact + portmaster, + portupgrade, and/or + pkg instructions, please make + sure + to get the shell escaping right. For example, do + not use: - If the port is unmaintained, and you are actively using - it yourself, please consider volunteering to become its - maintainer. &os; has over 2000 ports without maintainers, - and this is an area where more volunteers are always needed. - (For a detailed description of the responsibilities of maintainers, - refer to the section in the - - Developer's Handbook.) + # pkg delete -g -f docbook-xml* docbook-sk* docbook[2345]??-* docbook-4* - 最好的方式是使用 &man.send-pr.1; 並附上 diff 一併回報(類別請選 - ports)。 若你是該 port 的維護者,請記得在 synopsis - 那行的開頭註明 [maintainer update],並且在 PR 的 - Class 分類填上 maintainer-update。 - 否則,該 PR 的 Class 處就是填 - change-request。 - Please mention any added or - deleted files in the message, as they have to be explicitly specified - to &man.cvs.1; when doing a commit. If the diff is more than about 20KB, - please compress and uuencode it; otherwise, just include it in the PR - as is. + As shown, the command will only work with + bourne shells. Instead, use the + form shown below, which will work with both + bourne shell and + c-shell: - Before you &man.send-pr.1;, you should review the - - Writing the problem report section in the Problem - Reports article; it contains far more information about how to write - useful problem reports. + # pkg delete -g -f docbook-xml\* docbook-sk\* docbook\[2345\]\?\?-\* docbook-4\* + - - If your upgrade is motivated by security concerns or a - serious fault in the currently committed port, please notify - the &a.portmgr; to request immediate rebuilding and - redistribution of your port's package. Unsuspecting users - of &man.pkg.add.1; will otherwise continue to install the - old version via pkg_add -r for several - weeks. - + + It is recommended that the AFFECTS line contains a glob + matching all the ports affected by the entry so that + automated tools can parse it as easily as possible. If an + update concerns all the existing BIND + 9 versions the AFFECTS + content must be users of dns/bind9*, it + must not be users of BIND + 9 + + + + + <filename>/usr/ports/MOVED</filename> + + This file is used to + list moved or removed ports. Each line in the file is made + up of the name of the port, where the port was moved, when, + and why. If the port was removed, the section detailing where + it was moved can be left blank. Each section must be + separated by the | (pipe) character, like + so: + + old name|new name (blank for deleted)|date of move|reason + + The date must be entered in the form + YYYY-MM-DD. New entries are added to + the top of the file to keep it in reverse chronological order, + with the last entry first. + + If a port was removed but has since been restored, + delete the line in this file that states that it was + removed. + + If a port was renamed and then renamed back to its + original name, add a new one with the intermediate name to the + old name, and remove the old entry as to not create a + loop. + - Once again, please use &man.diff.1; and not &man.shar.1; to send - updates to existing ports! + Any changes must be validated with + Tools/scripts/MOVEDlint.awk. + + If using a ports directory other than + /usr/ports, use: + + + % cd /home/user/ports + % env PORTSDIR=$PWD Tools/scripts/MOVEDlint.awk + + + + - Now that you have done all that, you will want to read about - how to keep up-to-date in . - + + + - - Why security is so important + 安全性 - Bugs are occasionally introduced to the software. - Arguably, the most dangerous of them are those opening - security vulnerabilities. From the technical viewpoint, - such vulnerabilities are to be closed by exterminating - the bugs that caused them. However, the policies for - handling mere bugs and security vulnerabilities are - very different. + + Why Security is So Important - A typical small bug affects only those users who have - enabled some combination of options triggering the bug. - The developer will eventually release a patch followed - by a new version of the software, free of the bug, but - the majority of users will not take the trouble of upgrading - immediately because the bug has never vexed them. A - critical bug that may cause data loss represents a graver - issue. Nevertheless, prudent users know that a lot of - possible accidents, besides software bugs, are likely to - lead to data loss, and so they make backups of important - data; in addition, a critical bug will be discovered - really soon. + Bugs are occasionally introduced to the software. Arguably, + the most dangerous of them are those opening security + vulnerabilities. From the technical viewpoint, such + vulnerabilities are to be closed by exterminating the bugs that + caused them. However, the policies for handling mere bugs and + security vulnerabilities are very different. - A security vulnerability is all different. First, - it may remain unnoticed for years because often it does - not cause software malfunction. Second, a malicious party - can use it to gain unauthorized access to a vulnerable - system, to destroy or alter sensitive data; and in the - worst case the user will not even notice the harm caused. - Third, exposing a vulnerable system often assists attackers - to break into other systems that could not be compromised - otherwise. Therefore closing a vulnerability alone is - not enough: the audience should be notified of it in most - clear and comprehensive manner, which will allow to - evaluate the danger and take appropriate actions. - + A typical small bug affects only those users who have + enabled some combination of options triggering the bug. The + developer will eventually release a patch followed by a new + version of the software, free of the bug, but the majority of + users will not take the trouble of upgrading immediately because + the bug has never vexed them. A critical bug that may cause + data loss represents a graver issue. Nevertheless, prudent + users know that a lot of possible accidents, besides software + bugs, are likely to lead to data loss, and so they make backups + of important data; in addition, a critical bug will be + discovered really soon. - - Fixing security vulnerabilities + A security vulnerability is all different. First, it may + remain unnoticed for years because often it does not cause + software malfunction. Second, a malicious party can use it to + gain unauthorized access to a vulnerable system, to destroy or + alter sensitive data; and in the worst case the user will not + even notice the harm caused. Third, exposing a vulnerable + system often assists attackers to break into other systems that + could not be compromised otherwise. Therefore closing a + vulnerability alone is not enough: notify the audience + of it in the most clear and comprehensive manner, which + will allow them to evaluate the danger and take appropriate + action. + - While on the subject of ports and packages, a security - vulnerability may initially appear in the original - distribution or in the port files. In the former case, - the original software developer is likely to release a - patch or a new version instantly, and you will - only need to update the port promptly with respect to - the author's fix. If the fix is delayed for some reason, - you should either mark the port as - FORBIDDEN - or introduce a patch file of your own to the port. In - the case of a vulnerable port, just fix the port as soon as - possible. In either case, the - standard procedure for submitting your change should - be followed unless you have rights to commit it directly - to the ports tree. + + Fixing Security Vulnerabilities - - Being a ports committer is not enough to commit to - an arbitrary port. Remember that ports usually have - maintainers, whom you should respect. - + While on the subject of ports and packages, a security + vulnerability may initially appear in the original distribution + or in the port files. In the former case, the original software + developer is likely to release a patch or a new version + instantly. Update the port promptly + with respect to the author's fix. If the fix is delayed for + some reason, either + mark the port as + FORBIDDEN or introduce a patch file + to the port. In the case of a vulnerable port, just + fix the port as soon as possible. In either case, follow + the standard procedure for + submitting changes unless having + rights to commit it directly to the ports tree. - Please make sure that the port's revision is bumped - as soon as the vulnerability has been closed. - That is how the users who upgrade installed packages - on a regular basis will see they need to run an update. - Besides, a new package will be built and distributed - over FTP and WWW mirrors, replacing the vulnerable one. - PORTREVISION should be bumped unless - PORTVERSION has changed in the course - of correcting the vulnerability. That is you should - bump PORTREVISION if you have added a - patch file to the port, but you should not if you have updated - the port to the latest software version and thus already - touched PORTVERSION. Please refer to the - corresponding section - for more information. - + + Being a ports committer is not enough to commit to an + arbitrary port. Remember that ports usually have maintainers, + must be respected. + - - Keeping the community informed + Please make sure that the port's revision is bumped as soon + as the vulnerability has been closed. That is how the users who + upgrade installed packages on a regular basis will see they need + to run an update. Besides, a new package will be built and + distributed over FTP and WWW mirrors, replacing the vulnerable + one. Bump PORTREVISION unless + PORTVERSION has changed in the course of + correcting the vulnerability. That is, bump + PORTREVISION if adding a patch file + to the port, but do not bump it if updating the port to + the latest software version and thus already touched + PORTVERSION. Please refer to the + corresponding + section for more information. + - - The VuXML database + + Keeping the Community Informed - A very important and urgent step to take as early as - a security vulnerability is discovered is to notify the - community of port users about the jeopardy. Such - notification serves two purposes. First, should the danger - be really severe, it will be wise to apply an instant workaround, - e.g., stop the affected network service or even deinstall - the port completely, until the vulnerability is closed. - Second, a lot of users tend to upgrade installed packages - just occasionally. They will know from the notification - that they must update the package - without delay as soon as a corrected version is available. + + The VuXML Database - Given the huge number of ports in the tree, - a security advisory cannot be issued on each incident - without creating a flood and losing the attention of - the audience by the time it comes to really serious - matters. Therefore security vulnerabilities found in - ports are recorded in the FreeBSD VuXML - database. The Security Officer Team members - are monitoring it for issues requiring their - intervention. + A very important and urgent step to take as early after a + security vulnerability is discovered as possible is to notify + the community of port users about the jeopardy. Such + notification serves two purposes. First, if the danger is + really severe it will be wise to apply an instant workaround. + For example, stop the affected network service or even + deinstall the port completely until the vulnerability is + closed. Second, a lot of users tend to upgrade installed + packages only occasionally. They will know from the + notification that they must update the + package without delay as soon as a corrected version is + available. - If you have committer rights, you can update the VuXML - database by yourself. So you will both help the Security - Officer Team and deliver the crucial information to the - community earlier. However, if you are not a committer, - or you believe you have found an exceptionally severe - vulnerability, or whatever, please do not hesitate to - contact the Security Officer Team directly as described - on the FreeBSD - Security Information page. + Given the huge number of ports in the tree, a security + advisory cannot be issued on each incident without creating a + flood and losing the attention of the audience when it comes + to really serious matters. Therefore security vulnerabilities + found in ports are recorded in + the FreeBSD + VuXML database. The Security Officer Team members + also monitor it for issues requiring their + intervention. - All right, you elected the hard way. As it may be obvious - from its title, the VuXML database is essentially an - XML document. Its source file vuln.xml - is kept right inside the port security/vuxml. Therefore - the file's full pathname will be - PORTSDIR/security/vuxml/vuln.xml. - Each time you discover a security vulnerability in a - port, please add an entry for it to that file. - Until you are familiar with VuXML, the best thing you can - do is to find an existing entry fitting your case, then copy - it and use as a template. - + Committers can update the VuXML + database themselves, assisting the Security Officer Team and + delivering crucial information to the community more quickly. + Those who are not committers or have discovered an + exceptionally severe vulnerability should not hesitate to + contact the Security Officer Team directly, as described on + the FreeBSD + Security Information page. - - A short introduction to VuXML + The VuXML database is an XML document. + Its source file vuln.xml is kept right + inside the port security/vuxml. + Therefore the file's full pathname will be + PORTSDIR/security/vuxml/vuln.xml. Each + time a security vulnerability is discovered in a port, please + add an entry for it to that file. Until familiar with + VuXML, the best thing to do is to find an existing entry + fitting the case at hand, then copy it and use it as a + template. + - The full-blown XML is complex and far beyond the scope of - this book. However, to gain basic insight on the structure - of a VuXML entry, you need only the notion of tags. XML - tag names are enclosed in angle brackets. Each opening - <tag> must have a matching closing </tag>. - Tags may be nested. If nesting, the inner tags must be - closed before the outer ones. There is a hierarchy of - tags, i.e. more complex rules of nesting them. Sounds - very similar to HTML, doesn't it? The major difference - is that XML is eXtensible, i.e. based - on defining custom tags. Due to its intrinsic structure, - XML puts otherwise amorphous data into shape. VuXML is - particularly tailored to mark up descriptions of security - vulnerabilities. + + A Short Introduction to VuXML - Now let's consider a realistic VuXML entry: + The full-blown XML format is complex, + and far beyond the scope of this book. However, to gain basic + insight on the structure of a VuXML entry only the notion of + tags is needed. XML tag names are enclosed in angle brackets. + Each opening <tag> must have a matching closing + </tag>. Tags may be nested. If nesting, the inner tags + must be closed before the outer ones. There is a hierarchy of + tags, that is, more complex rules of nesting them. This is + similar to HTML. The major difference is that XML is + eXtensible, that is, based on defining + custom tags. Due to its intrinsic structure XML puts + otherwise amorphous data into shape. VuXML is particularly + tailored to mark up descriptions of security + vulnerabilities. - <vuln vid="f4bc80f4-da62-11d8-90ea-0004ac98a7b9"> + Now consider a realistic VuXML entry: + + <vuln vid="f4bc80f4-da62-11d8-90ea-0004ac98a7b9"> <topic>Several vulnerabilities found in Foo</topic> <affects> <package> @@ -9094,3863 +14372,8730 @@ <dates> <discovery>2010-05-25</discovery> <entry>2010-07-13</entry> - <modified>2010-09-17</entry> + <modified>2010-09-17</modified> </dates> </vuln> - The tag names are supposed to be self-descriptive, - so we shall take a closer look only at fields you will need - to fill in by yourself: + The tag names are supposed to be self-explanatory so we + shall take a closer look only at fields which needs to be + filled in: - - - This is the top-level tag of a VuXML entry. It has - a mandatory attribute, vid, - specifying a universally unique identifier (UUID) for - this entry (in quotes). You should generate a UUID - for each new VuXML entry (and do not forget to substitute - it for the template UUID unless you are writing the - entry from scratch). You can use &man.uuidgen.1; to - generate a VuXML UUID; alternatively, if you are using - FreeBSD 4.x, you may install the port devel/p5-Data-UUID and issue - the following command: + + + This is the top-level tag of a VuXML entry. It has a + mandatory attribute, vid, specifying a + universally unique identifier (UUID) for this entry (in + quotes). Generate a UUID for each new VuXML + entry (and do not forget to substitute it for the template + UUID unless writing the entry from scratch). + use uuidgen1 to generate a VuXML UUID. + - perl -MData::UUID -le 'print lc new Data::UUID->create_str' - + + This is a one-line description of the issue + found. + - - This is a one-line description of the issue found. - + + The names of packages affected are listed there. + Multiple names can be given since several packages may be + based on a single master port or software product. This + may include stable and development branches, localized + versions, and slave ports featuring different choices of + important build-time configuration options. - - The names of packages affected are listed there. - Multiple names can be given since several packages may be - based on a single master port or software product. This - may include stable and development branches, localized - versions, and slave ports featuring different choices of - important build-time configuration options. + + It is the submitter's responsibility to find all + such related packages when writing a VuXML entry. Keep + in mind that make search name=foo is + helpful. The primary points to look for are: - - It is your responsibility to find all such related - packages when writing a VuXML entry. Keep in mind that - make search name=foo is your friend. - The primary points to look for are as follows: + + + the foo-devel variant for a + foo port; + - - - the foo-devel variant - for a foo port; - + + other variants with a suffix like + -a4 (for print-related packages), + -without-gui (for packages with X + support disabled), or similar; + - - other variants with a suffix like - -a4 (for print-related packages), - -without-gui (for packages with X - support disabled), or similar; - + + jp-, ru-, + zh-, and other possible localized + variants in the corresponding national categories of + the ports collection. + + + + - - jp-, ru-, - zh-, and other possible localized - variants in the corresponding national categories of - the ports collection. - -
- - + + Affected versions of the package(s) are specified + there as one or more ranges using a combination of + <lt>, + <le>, + <eq>, + <ge>, and + <gt> elements. Check that the + version ranges given do not overlap. - - Affected versions of the package(s) are specified - there as one or more ranges using a combination of - <lt>, <le>, - <eq>, <ge>, - and <gt> elements. The - version ranges given should not overlap. + In a range specification, * + (asterisk) denotes the smallest version number. In + particular, 2.* is less than + 2.a. Therefore an asterisk may be used + for a range to match all possible + alpha, beta, and + RC versions. For instance, + <ge>2.*</ge><lt>3.*</lt> + will selectively match every 2.x + version while + <ge>2.0</ge><lt>3.0</lt> + will not since the latter misses 2.r3 + and matches 3.b. - In a range specification, * (asterisk) - denotes the smallest version number. In particular, - 2.* is less than 2.a. - Therefore an asterisk may be used for a range to match all - possible alpha, beta, - and RC versions. For instance, - <ge>2.*</ge><lt>3.*</lt> - will selectively match every 2.x version while - <ge>2.0</ge><lt>3.0</lt> - will obviously not since the latter misses - 2.r3 and matches - 3.b. + The above example specifies that affected are versions + from 1.6 to 1.9 + inclusive, versions 2.x before + 2.4_1, and version + 3.0b1. + - The above example - specifies that affected are versions from 1.6 - to 1.9 inclusive, versions - 2.x before 2.4_1, - and version 3.0b1. - + + Several related package groups (essentially, ports) + can be listed in the <affected> + section. This can be used if several software products + (say FooBar, FreeBar and OpenBar) grow from the same code + base and still share its bugs and vulnerabilities. Note + the difference from listing multiple names within a single + <package> section. + - - Several related package groups (essentially, ports) - can be listed in the <affected> - section. This can be used if several software products - (say FooBar, FreeBar and OpenBar) grow from the same code base - and still share its bugs and vulnerabilities. Note the - difference from listing multiple names within a single - <package> section. - + + The version ranges have to allow for + PORTEPOCH and + PORTREVISION if applicable. Please + remember that according to the collation rules, a version + with a non-zero PORTEPOCH is greater + than any version without PORTEPOCH, + for example, 3.0,1 is greater than + 3.1 or even than + 8.9. + - - The version ranges should allow for - PORTEPOCH and - PORTREVISION if applicable. - Please remember that according to the collation rules, - a version with a non-zero PORTEPOCH is - greater than any version without - PORTEPOCH, e.g., 3.0,1 - is greater than 3.1 or even than - 8.9. - + + This is a summary of the issue. XHTML is used in this + field. At least enclosing <p> + and </p> has to appear. More + complex mark-up may be used, but only for the sake of + accuracy and clarity: No eye candy please. + - - This is a summary of the issue. - XHTML is used in this field. At least enclosing - <p> and </p> - should appear. More complex mark-up may be used, but only for - the sake of accuracy and clarity: No eye candy please. - + + This section contains references to relevant + documents. As many references as apply are + encouraged. + - - This section contains references to relevant documents. - As many references as apply are encouraged. - + + This is a FreeBSD + security advisory. + - - This is a - FreeBSD - security advisory. - + + This is a FreeBSD + problem report. + - - This is a - FreeBSD - problem report. - + + This is a + MITRE + CVE identifier. + - - This is a Mitre - CVE identifier. - + + This is a SecurityFocus + Bug ID. + - - This is a - SecurityFocus - Bug ID. - + + This is a + US-CERT + security advisory. + - - This is a - US-CERT - security advisory. - + + This is a + US-CERT + vulnerability note. + - - This is a - US-CERT - vulnerability note. - + + This is a + US-CERT + Cyber Security Alert. + - - This is a - US-CERT - Cyber Security Alert. - + + This is a + US-CERT + Technical Cyber Security Alert. + - - This is a - US-CERT - Technical Cyber Security Alert. - + + This is a URL to an archived posting in a mailing + list. The attribute msgid is optional + and may specify the message ID of the posting. + - - This is a URL to an archived posting in a mailing list. - The attribute msgid is optional and - may specify the message ID of the posting. - + + This is a generic URL. Only it if none + of the other reference categories apply. + - - This is a generic URL. It should be used only if none of - the other reference categories apply. - + + This is the date when the issue was disclosed + (YYYY-MM-DD). + - - This is the date when the issue was disclosed - (YYYY-MM-DD). - + + This is the date when the entry was added + (YYYY-MM-DD). + - - This is the date when the entry was added - (YYYY-MM-DD). - + + This is the date when any information in the entry was + last modified (YYYY-MM-DD). + New entries must not include this field. Add it when + editing an existing entry. + + + - - This is the date when any information in the entry - was last modified (YYYY-MM-DD). - New entries must not include this field. It should be added - upon editing an existing entry. - - - + + Testing Changes to the VuXML Database - - Testing your changes to the VuXML database + This example describes a new entry for a vulnerability in + the package dropbear that has been fixed in + version dropbear-2013.59. - Assume you just wrote or filled in an entry for a - vulnerability in the package clamav - that has been fixed in version 0.65_7. + As a prerequisite, install a fresh version of + security/vuxml port. - As a prerequisite, you need to install fresh versions of the - ports ports-mgmt/portaudit and - ports-mgmt/portaudit-db. + First, check whether there already is an entry for this + vulnerability. If there were such an entry, it would match + the previous version of the package, + 2013.58: - First, check whether there already is an entry for this - vulnerability. If there were such entry, it would match the - previous version of the package, - 0.65_6: + % pkg audit dropbear-2013.58 - &prompt.user; packaudit -&prompt.user; portaudit clamav-0.65_6 + If there is none found, add a + new entry for this vulnerability. - - To run packaudit, you must have - permission to write to its - DATABASEDIR, - typically /var/db/portaudit. - + % cd ${PORTSDIR}/security/vuxml +% make newentry - If there is none found, you get the green light to add - a new entry for this vulnerability. Now you can generate - a brand-new UUID (assume it's - 74a9541d-5d6c-11d8-80e3-0020ed76ef5a) and - add your new entry to the VuXML database. Please verify - its syntax after that as follows: + Verify its syntax and formatting: - &prompt.user; cd ${PORTSDIR}/security/vuxml && make validate + % make validate - - You will need at least one of the following packages - installed: textproc/libxml2, - textproc/jade. - + + At least one of these packages needs to be installed: + textproc/libxml2, + textproc/jade. + - Now rebuild the portaudit database - from the VuXML file: + Verify that the <affected> + section of the entry will match the correct packages: - &prompt.user; packaudit + % pkg audit -f ${PORTSDIR}/security/vuxml/vuln.xml dropbear-2013.58 - To verify that the <affected> - section of your entry will match correct package(s), issue - the following command: + Make sure that the entry produces no spurious matches in + the output. - &prompt.user; portaudit -f /usr/ports/INDEX -r 74a9541d-5d6c-11d8-80e3-0020ed76ef5a + Now check whether the right package versions are matched + by the entry: + % pkg audit -f ${PORTSDIR}/security/vuxml/vuln.xml dropbear-2013.58 dropbear-2013.59 +dropbear-2012.58 is vulnerable: +dropbear -- exposure of sensitive information, DoS +CVE: CVE-2013-4434 +CVE: CVE-2013-4421 +WWW: http://portaudit.FreeBSD.org/8c9b48d1-3715-11e3-a624-00262d8b701d.html + +1 problem(s) in the installed packages found. + + The former version matches while the latter one + does not. + + + + + + + + + + Dos and Don'ts + + + 楔子 + + Here is a list of common dos and don'ts that are encountered + during the porting process. Check the port against this list, + but also check ports in the PR + database that others have submitted. Submit any + comments on ports as described in Bug + Reports and General Commentary. Checking ports in the + PR database will both make it faster for us to commit them, and + prove that you know what you are doing. + + + + <varname>WRKDIR</varname> + + Do not write anything to files outside + WRKDIR. WRKDIR is the + only place that is guaranteed to be writable during the port + build (see + installing ports from a CDROM for an example of + building ports from a read-only tree). The + pkg-* files can + be modified by redefining a + variable rather than overwriting the file. + + + + <varname>WRKDIRPREFIX</varname> + + Make sure the port honors WRKDIRPREFIX. + Most ports do not have to worry about this. In particular, when + referring to a WRKDIR of another + port, note that the correct location is + WRKDIRPREFIXPORTSDIR/subdir/name/work + not + PORTSDIR/subdir/name/work + or + .CURDIR/../../subdir/name/work + or some such. + + Also, if defining WRKDIR, + make sure to prepend + ${WRKDIRPREFIX}${.CURDIR} in + the front. + + + + Differentiating Operating Systems and OS Versions + + Some code needs modifications or + conditional compilation based upon what version of FreeBSD Unix it + is running under. The preferred way to tell FreeBSD versions apart + are the __FreeBSD_version and + __FreeBSD__ macros defined in sys/param.h. + If this file is not included add the code, + + #include <sys/param.h> + + to the proper place in the .c + file. + + __FreeBSD__ is defined in all versions + of FreeBSD as their major version number. For example, in FreeBSD + 9.x, __FreeBSD__ is defined to be + 9. + + #if __FreeBSD__ >= 9 +# if __FreeBSD_version >= 901000 + /* 9.1+ release specific code here */ +# endif +#endif + + A complete list of __FreeBSD_version + values is available in . + + + + Writing Something After + <filename>bsd.port.mk</filename> + + Do not write anything after the + .include <bsd.port.mk> line. It + usually can be avoided by including + bsd.port.pre.mk somewhere in the middle of + the Makefile and + bsd.port.post.mk at the end. + + + Include either the + bsd.port.pre.mk/bsd.port.post.mk + pair or bsd.port.mk only; do not mix + these two usages. + + + bsd.port.pre.mk only defines a few + variables, which can be used in tests in the + Makefile, + bsd.port.post.mk defines the rest. + + Here are some important variables defined in + bsd.port.pre.mk (this is not the complete + list, please read bsd.port.mk for the + complete list). + + + + + + Variable + 描述 + + + + + + ARCH + The architecture as returned by + uname -m (for example, + i386) + + + + OPSYS + The operating system type, as returned by + uname -s (for example, + FreeBSD) + + + + OSREL + The release version of the operating system + (for example, 2.1.5 or + 2.2.7) + + + + OSVERSION + The numeric version of the operating system; the + same as __FreeBSD_version. + + + + LOCALBASE + The base of the local tree (for + example, /usr/local) + + + + PREFIX + + Where the port installs itself (see + more on + PREFIX). + + + + + + + When MASTERDIR is needed, always define + it before including + bsd.port.pre.mk. + + + Here are some examples of things that can be added after + bsd.port.pre.mk: + + # no need to compile lang/perl5 if perl5 is already in system +.if ${OSVERSION} > 300003 +BROKEN= perl is in system +.endif + + Always use tab instead of spaces after + BROKEN=. + + + + 在 Wrapper Scripts 中使用 <function>exec</function> 敘述句 + + 若某 port 為了執行其他程式而安裝了一個 shell script, 而該程式同時也是該 script 最後一個動作,那麼需要確定該 script 是用 exec 敘述句(statement),例如: + + #!/bin/sh +exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@" + + exec 敘述句以所指定的程式取代了該 shell 的程序。 若省略 exec ,那麼該 shell 程序 將會在程式執行中一直存在於記憶體,這無疑地浪費了系統資源。 + + + + Do Things Rationally + + The Makefile should do things in a + simple and reasonable manner. Making it a couple of lines + shorter or more readable is always better. Examples include + using a make .if construct instead of a shell + if construct, not redefining + do-extract if redefining + EXTRACT* is enough, and using + GNU_CONFIGURE instead of + CONFIGURE_ARGS + += --prefix=${PREFIX}. + + If a lot of new code is needed to do something, there may + already be an implementation of it in + bsd.port.mk. While hard to read, there are + a great many seemingly-hard problems for which + bsd.port.mk already provides a shorthand + solution. + + + + Respect Both <varname>CC</varname> and + <varname>CXX</varname> + + The port must respect both CC and + CXX. What we mean by this is that + the port must not set the values of these variables absolutely, + overriding existing values; instead, it may append whatever + values it needs to the existing values. This is so that build + options that affect all ports can be set globally. + + If the port does not respect these variables, + please add + NO_PACKAGE=ignores either cc or cxx to the + Makefile. + + Here is an example of a Makefile + respecting both CC and + CXX. Note the ?=: + + CC?= gcc + + CXX?= g++ + + Here is an example which respects neither + CC nor CXX: + + CC= gcc + + CXX= g++ + + Both CC and CXX + can be defined on FreeBSD systems in + /etc/make.conf. The first example defines + a value if it was not previously set in + /etc/make.conf, preserving any system-wide + definitions. The second example clobbers anything previously + defined. + + + + Respect <varname>CFLAGS</varname> + + The port must respect CFLAGS. + What we mean by this is that the port must not set + the value of this variable absolutely, overriding the existing + value. Instead, it may append whatever values it needs to the + existing value. This is so that build options that affect all + ports can be set globally. + + If it does not, please add + NO_PACKAGE=ignores cflags to the + Makefile. + + Here is an example of a Makefile + respecting CFLAGS. Note the + +=: + + CFLAGS+= -Wall -Werror + + Here is an example which does not respect + CFLAGS: + + CFLAGS= -Wall -Werror + + CFLAGS is defined on + FreeBSD systems in /etc/make.conf. The first + example appends additional flags to + CFLAGS, preserving any system-wide + definitions. The second example clobbers anything previously + defined. + + Remove optimization flags from the third party + Makefiles. The system + CFLAGS contains system-wide optimization + flags. An example from an unmodified + Makefile: + + CFLAGS= -O3 -funroll-loops -DHAVE_SOUND + + Using system optimization flags, the + Makefile would look similar to this + example: + + CFLAGS+= -DHAVE_SOUND + + + + Feedback + + Do send applicable changes and patches to the upstream + maintainer for inclusion in the next release of the code. + This makes updating to the next release that much easier. + + + + <filename>README.html</filename> + + README.html is not part of the port, + but generated by make readme. Do not + include this file in patches or commits. + + + If make readme fails, make sure that + the default value of ECHO_MSG has not + been modified by the port. + + + + + Marking a Port as Architecture Neutral + + Ports that do not have any architecture-dependent files + or requirements are identified by setting + NO_ARCH=yes. + + + + Marking a Port Not Installable with + <varname>BROKEN</varname>, <varname>FORBIDDEN</varname>, or + <varname>IGNORE</varname> + + In certain cases, users must be prevented from installing + a port. There are several variables that can be used in a + port's Makefile to tell the user that the + port cannot be installed. The value of + these make variables will be the + reason that is shown to users for why the port refuses to + install itself. Please use the correct make + variable. Each variable conveys radically different + meanings, both to users and to automated systems that depend on + Makefiles, such as + the ports build cluster, + FreshPorts, and + portsmon. + + + 變數 + + + + BROKEN is reserved for ports that + currently do not compile, install, deinstall, or run + correctly. Use it for ports where the problem + is believed to be temporary. + + If instructed, the build cluster will still attempt + to try to build them to see if the underlying problem has + been resolved. (However, in general, the cluster is run + without this.) + + For instance, use BROKEN when a + port: + + + + does not compile + + + + fails its configuration or installation + process + + + + installs files outside of + ${PREFIX} + + + + does not remove all its files cleanly upon + deinstall (however, it may be acceptable, and + desirable, for the port to leave user-modified files + behind) + + + + has runtime issues on systems where it is + supposed to run fine. + + + + + + FORBIDDEN is used for ports that + contain a security vulnerability or induce grave concern + regarding the security of a FreeBSD system with a given port + installed (for example, a reputably insecure program or a + program that provides easily exploitable services). Mark + ports as FORBIDDEN as soon as a + particular piece of software has a vulnerability and there + is no released upgrade. Ideally upgrade ports as soon as + possible when a security vulnerability is discovered so as + to reduce the number of vulnerable FreeBSD hosts (we like + being known for being secure), however sometimes there is + a noticeable time gap between disclosure of a + vulnerability and an updated release of the vulnerable + software. Do not mark a port FORBIDDEN + for any reason other than security. + + + + IGNORE is reserved for ports that + must not be built for some other reason. Use it + for ports where the problem is believed to be + structural. The build cluster will not, under any + circumstances, build ports marked as + IGNORE. For instance, use + IGNORE when a port: + + + + does not work on the installed version of + FreeBSD + + + + has a distfile which may not be automatically + fetched due to licensing restrictions + + + + does not work with some other currently + installed port (for instance, the port depends on + www/apache20 but + www/apache22 is + installed) + + + - Please refer to &man.portaudit.1; for better understanding - of the command syntax. + If a port would conflict with a currently + installed port (for example, if they install a file in + the same place that performs a different function), + use + CONFLICTS instead. + CONFLICTS will set + IGNORE by itself. + - Make sure that your entry produces no spurious matches - in the output. + + To mark a port as IGNOREd + only on certain architectures, there are two other + convenience variables that will automatically set + IGNORE: + ONLY_FOR_ARCHS and + NOT_FOR_ARCHS. Examples: - Now check whether the right package versions are matched - by your entry: + ONLY_FOR_ARCHS= i386 amd64 - &prompt.user; portaudit clamav-0.65_6 clamav-0.65_7 -Affected package: clamav-0.65_6 (matched by clamav<0.65_7) -Type of problem: clamav remote denial-of-service. -Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-0020ed76ef5a.html> + NOT_FOR_ARCHS= ia64 sparc64 -1 problem(s) found. + A custom IGNORE message can be + set using ONLY_FOR_ARCHS_REASON and + NOT_FOR_ARCHS_REASON. Per + architecture entries are possible with + ONLY_FOR_ARCHS_REASON_ARCH + and + NOT_FOR_ARCHS_REASON_ARCH. + - Obviously, the former version should match while the - latter one should not. + + If a port fetches i386 binaries and installs them, + set IA32_BINARY_PORT. If this variable + is set, /usr/lib32 must be present + for IA32 versions of libraries and the kernel must support + IA32 compatibility. If one of these two + dependencies is not satisfied, IGNORE + will be set automatically. + + + - Finally, verify whether the web page generated from the - VuXML database looks like expected: + + Implementation Notes - &prompt.user; mkdir -p ~/public_html/portaudit -&prompt.user; packaudit -&prompt.user; lynx ~/public_html/portaudit/74a9541d-5d6c-11d8-80e3-0020ed76ef5a.html - + Do not quote the values of BROKEN, + IGNORE, and related variables. Due to the + way the information is shown to the user, the wording of + messages for each variable differ: - - + BROKEN= fails to link with base -lcrypto - - Dos and Don'ts + IGNORE= unsupported on recent versions - - Introduction + resulting in this output from + make describe: - Here is a list of common dos and don'ts that you encounter during - the porting process. You should check your own port against this list, - but you can also check ports in the PR database that others have - submitted. Submit any comments on ports you check as described in - Bug Reports and General - Commentary. Checking ports in the PR database will both make - it faster for us to commit them, and prove that you know what you are - doing. - + ===> foobar-0.1 is marked as broken: fails to link with base -lcrypto. - - <varname>WRKDIR</varname> + ===> foobar-0.1 is unsupported on recent versions. + + - Do not write anything to files outside - WRKDIR. WRKDIR is the only - place that is guaranteed to be writable during the port build (see - - installing ports from a CDROM for an - example of building ports from a read-only tree). If you need to - modify one of the pkg-* - files, do so by redefining a variable, not by - writing over it. - + + Marking a Port for Removal with + <varname>DEPRECATED</varname> or + <varname>EXPIRATION_DATE</varname> - - <varname>WRKDIRPREFIX</varname> + Do remember that BROKEN and + FORBIDDEN are to be used as a temporary + resort if a port is not working. Permanently broken ports + will be removed from the tree entirely. - Make sure your port honors WRKDIRPREFIX. - Most ports do not have to worry about this. In particular, if you - are referring to a WRKDIR of another port, note - that the correct location is - WRKDIRPREFIXPORTSDIR/subdir/name/work not PORTSDIR/subdir/name/work or .CURDIR/../../subdir/name/work or some such. + When it makes sense to do so, users can be warned about + a pending port removal with DEPRECATED and + EXPIRATION_DATE. The former is a + string stating why the port is scheduled for removal; the latter + is a string in ISO 8601 format (YYYY-MM-DD). Both will be shown + to the user. - Also, if you are defining WRKDIR yourself, - make sure you prepend - ${WRKDIRPREFIX}${.CURDIR} in the - front. - + It is possible to set DEPRECATED + without an EXPIRATION_DATE (for instance, + recommending a newer version of the port), but the converse + does not make any sense. - - Differentiating operating systems and OS versions + There is no set policy on how much notice to give. + Current practice seems to be one month for security-related + issues and two months for build issues. This also gives any + interested committers a little time to fix the problems. + - You may come across code that needs modifications or conditional - compilation based upon what version of Unix it is running under. If - you need to make such changes to the code for conditional - compilation, make sure you make the changes as general as possible - so that we can back-port code to older FreeBSD systems and cross-port - to other BSD systems such as 4.4BSD from CSRG, BSD/386, 386BSD, - NetBSD, and OpenBSD. + + Avoid Use of the <literal>.error</literal> + Construct - The preferred way to tell 4.3BSD/Reno (1990) and newer versions - of the BSD code apart is by using the BSD macro - defined in - sys/param.h. - Hopefully that - file is already included; if not, add the code: + The correct way for a Makefile to + signal that the port cannot be installed due to some external + factor (for instance, the user has specified an illegal + combination of build options) is to set a non-blank value to + IGNORE. This value will be formatted and + shown to the user by make install. - #if (defined(__unix__) || defined(unix)) && !defined(USG) -#include <sys/param.h> -#endif + It is a common mistake to use .error + for this purpose. The problem with this is that many automated + tools that work with the ports tree will fail in this situation. + The most common occurrence of this is seen when trying to build + /usr/ports/INDEX (see + ). However, even more trivial + commands such as make maintainer also fail in + this scenario. This is not acceptable. - to the proper place in the .c file. We - believe that every system that defines these two symbols has - sys/param.h. If you find a system that - does not, we would like to know. Please send mail to the - &a.ports;. + + How to Avoid Using <literal>.error</literal> - Another way is to use the GNU Autoconf style of doing - this: + The first of the + next two Makefile snippets will cause + make index to fail, while the second one + will not: - #ifdef HAVE_SYS_PARAM_H -#include <sys/param.h> -#endif + .error "option is not supported" - Do not forget to add -DHAVE_SYS_PARAM_H to the - CFLAGS in the Makefile for - this method. + IGNORE=option is not supported + + - Once you have sys/param.h included, you may - use: + + <filename>sysctl</filename> 的使用 - #if (defined(BSD) && (BSD >= 199103)) + sysctl 除了在 targets 之外,都不鼓勵使用。 這是因為任何 makevar 的評估都有可能會使得程序執行速度變慢,例如在 make index 的過程中,就會需要用到 sysctl - to detect if the code is being compiled on a 4.3 Net2 code base - or newer (e.g. FreeBSD 1.x, 4.3/Reno, NetBSD 0.9, 386BSD, BSD/386 - 1.1 and below). + 若要使用 sysctl8 則必須透過 SYSCTL 此一變數才可,因為這樣才會包含完整路徑, 同時也可以隨時因應使用者需求而替換為其他路徑。 + - Use: + + Rerolling Distfiles - #if (defined(BSD) && (BSD >= 199306)) + Sometimes the authors of software change the content of + released distfiles without changing the file's name. + Verify that the changes are official and have been performed + by the author. It has happened in the past that the distfile + was silently altered on the download servers with the intent to + cause harm or compromise end user security. - to detect if the code is being compiled on a 4.4 code base or - newer (e.g. FreeBSD 2.x, 4.4, NetBSD 1.0, BSD/386 2.0 or - above). + Put the old distfile aside, download the new one, unpack + them and compare the content with diff1. If there is + nothing suspicious, update + distinfo. Be sure to summarize the + differences in the PR or commit log, so that other people know + that nothing bad has + happened. - The value of the BSD macro is - 199506 for the 4.4BSD-Lite2 code base. This is - stated for informational purposes only. It should not be used to - distinguish between versions of FreeBSD based only on 4.4-Lite vs. - versions that have merged in changes from 4.4-Lite2. The - __FreeBSD__ macro should be used instead. + Contact the authors of the software + and confirm the changes with them. + - Use sparingly: + + Avoiding Linuxisms - - - __FreeBSD__ is defined in all versions of - FreeBSD. Use it if the change you are making - only affects FreeBSD. Porting gotchas like - the use of sys_errlist[] vs - strerror() are Berkeley-isms, not FreeBSD - changes. - + Do not use /proc if there are any + other ways of getting the information. For example, + setprogname(argv[0]) in + main() and then getprogname3 + to know the executable name>. - - In FreeBSD 2.x, __FreeBSD__ is defined to - be 2. In earlier versions, it is - 1. Later versions always bump it to match - their major version number. - + Do not rely on behavior that is undocumented by + POSIX. - - If you need to tell the difference between a FreeBSD 1.x - system and a FreeBSD 2.x or above system, usually the right answer - is to use the BSD macros described above. If - there actually is a FreeBSD specific change (such as special - shared library options when using ld) then it - is OK to use __FreeBSD__ and #if - __FreeBSD__ > 1 to detect a FreeBSD 2.x and later - system. If you need more granularity in detecting FreeBSD - systems since 2.0-RELEASE you can use the following: + Do not record timestamps in the critical path of the + application if it also works without. Getting timestamps may be + slow, depending on the accuracy of timestamps in the + OS. If timestamps are really needed, + determine how precise they have to be and use an + API which is documented to just deliver the + needed precision. - #if __FreeBSD__ >= 2 -#include <osreldate.h> -# if __FreeBSD_version >= 199504 - /* 2.0.5+ release specific code here */ -# endif -#endif - - + A number of simple syscalls (for example + gettimeofday2, getpid2) are much faster on Linux + than on any other operating system due to caching and the + vsyscall performance optimizations. Do not rely on them being + cheap in performance-critical applications. In general, try + hard to avoid syscalls if possible. - In the hundreds of ports that have been done, there have only - been one or two cases where __FreeBSD__ should - have been used. Just because an earlier port screwed up and used it - in the wrong place does not mean you should do so too. - + Do not rely on Linux-specific socket behaviour. In + particular, default socket buffer sizes are different (call + setsockopt2 with SO_SNDBUF and + SO_RCVBUF, and while Linux's send2 + blocks when the socket buffer is full, FreeBSD's will fail and + set ENOBUFS in errno. - - FreeBSD 版本速查表(__FreeBSD_version) + If relying on non-standard behaviour is required, + encapsulate it properly into a generic API, + do a check for the behaviour in the configure stage, and stop + if it is missing. - 以下是 sys/param.h 內的 __FreeBSD_version 版本速查表: + Check the + man + pages to see if the function used is a + POSIX interface (in the + STANDARDS section of the man page). - - __FreeBSD_version values - - - - Release - __FreeBSD_version - - + Do not assume that /bin/sh is + bash. Ensure that a command line + passed to system3 will work with a + POSIX compliant shell. - - - 2.0-RELEASE - 119411 - + A list of common bashisms is + available here. - - 2.1-CURRENT - 199501, 199503 - + Check that headers are included in the + POSIX or man page recommended way. For + example, sys/types.h is often forgotten, + which is not as much of a problem for Linux as it is for + FreeBSD. + - - 2.0.5-RELEASE - 199504 - + + Miscellanea - - 2.2-CURRENT before 2.1 - 199508 - + Always double-check pkg-descr and + pkg-plist. + If reviewing a port and a better wording can be achieved, + do so. - - 2.1.0-RELEASE - 199511 - + Do not copy more copies of the GNU General Public License + into our system, please. - - 2.2-CURRENT before 2.1.5 - 199512 - + Please be careful to note any legal issues! Do not let us + illegally distribute software! + + - - 2.1.5-RELEASE - 199607 - + + - - 2.1.6-RELEASE - 199612 - + - - 2.1.7-RELEASE - 199612 - + A Sample <filename>Makefile</filename> - - 2.2-RELEASE - 220000 - + Here is a sample Makefile that can be + used to create a new port. Make sure to remove all the extra + comments (ones between brackets). - - 2.2.1-RELEASE - 220000 (no change) - + The format shown is the recommended one for ordering + variables, empty lines between sections, and so on. This format is + designed so that the most important information is easy to locate. + We recommend using + portlint to check the + Makefile. - - 2.2-STABLE after 2.2.1-RELEASE - 220000 (no change) - + [the header...just to make it easier for us to identify the ports.] +# Created by: Satoshi Asami <asami@FreeBSD.org> +[The optional Created by: line names the person who originally +created the port. Note that the : is followed by a space +and not a tab character. +If this line is present, future maintainers must +not change or remove it except at the original author's request.] - - 2.2-STABLE after texinfo-3.9 - 221001 - +# $FreeBSD$ +[ ^^^^^^^^^ This will be automatically replaced with RCS ID string by SVN +when it is committed to our repository. If upgrading a port, do not alter +this line back to "$FreeBSD$". SVN deals with it automatically.] - - 2.2-STABLE after top - 221002 - +[section to describe the port itself and the master site - PORTNAME + and PORTVERSION are always first, followed by CATEGORIES, + and then MASTER_SITES, which can be followed by MASTER_SITE_SUBDIR. + PKGNAMEPREFIX and PKGNAMESUFFIX, if needed, will be after that. + Then comes DISTNAME, EXTRACT_SUFX and/or DISTFILES, and then + EXTRACT_ONLY, as necessary.] +PORTNAME= xdvi +PORTVERSION= 18.2 +CATEGORIES= print +[do not forget the trailing slash ("/")! + if not using MASTER_SITE_* macros] +MASTER_SITES= ${MASTER_SITE_XCONTRIB} +MASTER_SITE_SUBDIR= applications +PKGNAMEPREFIX= ja- +DISTNAME= xdvi-pl18 +[set this if the source is not in the standard ".tar.gz" form] +EXTRACT_SUFX= .tar.Z - - 2.2.2-RELEASE - 222000 - +[section for distributed patches -- can be empty] +PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/ +PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz - - 2.2-STABLE after 2.2.2-RELEASE - 222001 - +[maintainer; *mandatory*! This is the person who is volunteering to + handle port updates, build breakages, and to whom a users can direct + questions and bug reports. To keep the quality of the Ports Collection + as high as possible, we no longer accept new ports that are assigned to + "ports@FreeBSD.org".] +MAINTAINER= asami@FreeBSD.org +COMMENT= DVI Previewer for the X Window System - - 2.2.5-RELEASE - 225000 - +[dependencies -- can be empty] +RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript - - 2.2-STABLE after 2.2.5-RELEASE - 225001 - +[this section is for other standard bsd.port.mk variables that do not + belong to any of the above] +[If it asks questions during configure, build, install...] +IS_INTERACTIVE= yes +[If it extracts to a directory other than ${DISTNAME}...] +WRKSRC= ${WRKDIR}/xdvi-new +[If the distributed patches were not made relative to ${WRKSRC}, + this may need to be tweaked] +PATCH_DIST_STRIP= -p1 +[If it requires a "configure" script generated by GNU autoconf to be run] +GNU_CONFIGURE= yes +[If it requires GNU make, not /usr/bin/make, to build...] +USES= gmake +[If it is an X application and requires "xmkmf -a" to be run...] +USES= imake +[et cetera.] - - 2.2-STABLE after ldconfig -R merge - 225002 - +[non-standard variables to be used in the rules below] +MY_FAVORITE_RESPONSE= "yeah, right" - - 2.2.6-RELEASE - 226000 - +[then the special rules, in the order they are called] +pre-fetch: + i go fetch something, yeah - - 2.2.7-RELEASE - 227000 - +post-patch: + i need to do something after patch, great - - 2.2-STABLE after 2.2.7-RELEASE - 227001 - +pre-install: + and then some more stuff before installing, wow - - 2.2-STABLE after &man.semctl.2; change - 227002 - +[and then the epilogue] - - 2.2.8-RELEASE - 228000 - +.include <bsd.port.mk> + - - 2.2-STABLE after 2.2.8-RELEASE - 228001 - + + - - 3.0-CURRENT after &man.mount.2; change - 300001 - + - - 3.0-CURRENT after &man.semctl.2; change - 300002 - + Keeping Up - - 3.0-CURRENT after ioctl arg changes - 300003 - + The FreeBSD Ports Collection is constantly changing. Here is + some information on how to keep up. - - 3.0-CURRENT after ELF conversion - 300004 - + + FreshPorts - - 3.0-RELEASE - 300005 - + One of the easiest ways to learn about updates that have + already been committed is by subscribing to FreshPorts. + Multiple ports can be monitored. Maintainers are + strongly encouraged to subscribe, because they will receive + notification of not only their own changes, but also any changes + that any other FreeBSD committer has made. (These are often + necessary to keep up with changes in the underlying ports + framework—although it would be most polite to receive an + advance heads-up from those committing such changes, sometimes + this is overlooked or impractical. Also, in some + cases, the changes are very minor in nature. We expect everyone + to use their best judgement in these cases.) - - 3.0-CURRENT after 3.0-RELEASE - 300006 - + To use FreshPorts, an account is required. Those with + registered email addresses at @FreeBSD.org + will see the opt-in link on the right-hand side of the web + pages. Those who already have a FreshPorts account but are not + using a @FreeBSD.org email address can change + the email to @FreeBSD.org, subscribe, then + change it back again. - - 3.0-STABLE after 3/4 branch - 300007 - + FreshPorts also has a sanity test feature which + automatically tests each commit to the FreeBSD ports tree. If + subscribed to this service, a committer will receive + notifications of any errors which FreshPorts detects during + sanity testing of their commits. + - - 3.1-RELEASE - 310000 - + + The Web Interface to the Source Repository - - 3.1-STABLE after 3.1-RELEASE - 310001 - + It is possible to browse the files in the source + repository by using a web interface. Changes that affect the + entire port system are now documented in the CHANGES + file. Changes that affect individual ports are now documented + in the UPDATING + file. However, the definitive answer to any question is + undoubtedly to read the source code of bsd.port.mk, + and associated files. + - - 3.1-STABLE after C++ constructor/destructor order - change - 310002 - + + The FreeBSD Ports Mailing List - - 3.2-RELEASE - 320000 - + As a ports maintainer, consider subscribing to + FreeBSD ports mailing list. Important changes to the way ports work will be + announced there, and then committed to + CHANGES. - - 3.2-STABLE - 320001 - + If the volume of messages on this mailing list is too high, + consider following FreeBSD ports announce mailing list which contains only + announcements. + - - 3.2-STABLE after binary-incompatible IPFW and - socket changes - 320002 - + + The FreeBSD Port Building Cluster - - 3.3-RELEASE - 330000 - + One of the least-publicized strengths of FreeBSD is that + an entire cluster of machines is dedicated to continually + building the Ports Collection, for each of the major OS releases + and for each Tier-1 architecture. - - 3.3-STABLE - 330001 - + Individual ports are built unless they are specifically + marked with IGNORE. Ports that are marked + with BROKEN will still be attempted, to see + if the underlying problem has been resolved. (This is done by + passing TRYBROKEN to the port's + Makefile.) + - - 3.3-STABLE after adding &man.mkstemp.3; - to libc - 330002 - + + Portscout: the FreeBSD Ports Distfile Scanner - - 3.4-RELEASE - 340000 - + The build cluster is dedicated to building the latest + release of each port with distfiles that have already been + fetched. However, as the Internet continually changes, + distfiles can quickly go missing. Portscout, + the FreeBSD Ports distfile scanner, attempts to query every + download site for every port to find out if each distfile is + still available. Portscout can + generate HTML reports and send emails about + newly available ports to those who request them. Unless not + otherwise subscribed, maintainers are asked to check + periodically for changes, either by hand or using the + RSS feed. - - 3.4-STABLE - 340001 - + Portscout's first page gives + the email address of the port maintainer, the number of ports + the maintainer is responsible for, the number of those ports + with new distfiles, and the percentage of those ports that are + out-of-date. The search function allows for searching by email + address for a specific maintainer, and for selecting whether + only out-of-date ports are shown. - - 3.5-RELEASE - 350000 - + Upon clicking on a maintainer's email address, a list of + all of their ports is displayed, along with port category, + current version number, whether or not there is a new version, + when the port was last updated, and finally when it was last + checked. A search function on this page allows the user to + search for a specific port. - - 3.5-STABLE - 350001 - + Clicking on a port name in the list displays the FreshPorts port + information. + - - 4.0-CURRENT after 3.4 branch - 400000 - + + The FreeBSD Ports Monitoring System - - 4.0-CURRENT after change in dynamic linker - handling - 400001 - + Another handy resource is the FreeBSD Ports + Monitoring System (also known as + portsmon). This system comprises a database + that processes information from several sources and allows it to + be browsed via a web interface. Currently, the ports Problem + Reports (PRs), the error logs from the build cluster, and + individual files from the ports collection are used. In the + future, this will be expanded to include the distfile survey, as + well as other sources. - - 4.0-CURRENT after C++ constructor/destructor - order change - 400002 - + To get started, use the Overview + of One Port search page to find all the information + about a port. - - 4.0-CURRENT after functioning &man.dladdr.3; - 400003 - + This is the only resource available that + maps PR entries to portnames. PR submitters do not + always include the portname in their Synopsis, although we would + prefer that they did. So, portsmon is a + good place to find out whether an existing + port has any PRs filed against it, any build errors, or + if a new port the porter is considering + creating has already been submitted. + + - - 4.0-CURRENT after __deregister_frame_info dynamic - linker bug fix (also 4.0-CURRENT after EGCS 1.1.2 - integration) - - 400004 - + + - - 4.0-CURRENT after the addition of so_cred for - socket level credentials - 400007 - + + - - 4.0-CURRENT after importing OpenSSL - 400014 - + Using <varname>USES</varname> + Macros - - 4.0-CURRENT after the C++ ABI change in GCC 2.95.2 - from -fvtable-thunks to -fno-vtable-thunks by - default - 400015 - + + An Introduction to <varname>USES</varname> - - 4.0-CURRENT after importing OpenSSH - 400016 - + USES macros make it easy to declare + requirements and settings for a port. They can add + dependencies, change building behavior, add metadata to + packages, and so on, all by selecting simple, preset + values.. - - 4.0-RELEASE - 400017 - + Each section in this chapter describes a possible value for + USES, along with its possible arguments. + Arguments are appeneded to the value after a colon + (:). Multiple arguments are separated by + commas (,). - - 4.0-STABLE after 4.0-RELEASE - 400018 - + + Using Multiple Values - - 4.0-STABLE after the introduction of delayed - checksums. - 400019 - + USES= bison perl + - - 4.0-STABLE after merging libxpg4 code into - libc. - 400020 - + + Adding an Argument - - 4.0-STABLE after upgrading Binutils to 2.10.0, ELF - branding changes, and tcsh in the base system. - 400021 - + USES= gmake:lite + - - 4.1-RELEASE - 410000 - + + Adding Multiple Arguments - - 4.1-STABLE after 4.1-RELEASE - 410001 - + USES= drupal:7,theme + - - 4.1-STABLE after &man.setproctitle.3; moved from - libutil to libc. - 410002 - + + Mixing it All Together - - 4.1.1-RELEASE - 411000 - + USES= pgsql:9.3+ cpe python:2.7,build + + - - 4.1.1-STABLE after 4.1.1-RELEASE - 411001 - + + <literal>ada</literal> - - 4.2-RELEASE - 420000 - + Possible arguments: (none), 47, + 49, 5 - - 4.2-STABLE after combining libgcc.a and - libgcc_r.a, and associated GCC linkage changes. - 420001 - + Depends on an Ada-capable + compiler, and sets CC accordingly. Defaults + to a gcc 4.9 based compiler, use + :47 to use the older + gcc 4.7 based one and + :5 to use the newer + gcc 5 based one. + - - 4.3-RELEASE - 430000 - + + <literal>autoreconf</literal> - - 4.3-STABLE after wint_t introduction. - 430001 - + Possible arguments: (none), build - - 4.3-STABLE after PCI powerstate API merge. - 430002 - + Runs autoreconf. It encapsulates the + aclocal, autoconf, + autoheader, automake, + autopoint, and libtoolize + commands. Each command applies to + ${CONFIGURE_WRKSRC}/configure.ac or its old + name, ${CONFIGURE_WRKSRC}/configure.in. If + configure.ac defines subdirectories with + their own configure.ac using + AC_CONFIG_SUBDIRS, + autoreconf will recursively update those as + well. The :build argument only adds build + time dependencies on those tools but does not run + autoreconf. + - - 4.4-RELEASE - 440000 - + + <literal>blaslapack</literal> - - 4.4-STABLE after d_thread_t introduction. - 440001 - + Possible arguments: (none), atlas, + netlib (default), + gotoblas, openblas - - 4.4-STABLE after mount structure changes (affects - filesystem klds). - 440002 - + Adds dependencies on Blas / Lapack libraries. + - - 4.4-STABLE after the userland components of smbfs - were imported. - 440003 - + + <literal>bison</literal> - - 4.5-RELEASE - 450000 - + Possible arguments: (none), build, + run, both - - 4.5-STABLE after the usb structure element rename. - 450001 - + Uses devel/bison By default, + with no arguments or with the build argument, + it implies bison is a build-time dependency, + run implies a run-time dependency, and + both implies both run-time and build-time + dependencies. + - - 4.5-STABLE after the - sendmail_enable &man.rc.conf.5; - variable was made to take the value - NONE. - 450004 - + + <literal>charsetfix</literal> - - 4.5-STABLE after moving to XFree86 4 by default - for package builds. - 450005 - + Possible arguments: (none) - - 4.5-STABLE after accept filtering was fixed so - that is no longer susceptible to an easy DoS. - 450006 - + Prevents the port from installing + charset.alias. This must be installed only + by converters/libiconv. + CHARSETFIX_MAKEFILEIN can be set to a path + relative to WRKSRC if + charset.alias is not installed by + ${WRKSRC}/Makefile.in. + - - 4.6-RELEASE - 460000 - + + <literal>cmake</literal> - - 4.6-STABLE &man.sendfile.2; fixed to comply with - documentation, not to count any headers sent against - the amount of data to be sent from the file. - 460001 - + Possible arguments: (none), outsource, + run - - 4.6.2-RELEASE - 460002 - + Uses CMake for configuring and + building. With the outsource argument, an + out-of-source build will be performed. With the + run argument, a run-time dependency is + registered. For more information see . + - - 4.6-STABLE - 460100 - + + <literal>compiler</literal> - - 4.6-STABLE after MFC of `sed -i'. - 460101 - + Possible arguments: (none), c++14-lang, + c++11-lang, gcc-c++11-lib, + c++11-lib, c++0x, + c11, openmp, + nestedfct, features - - 4.6-STABLE after MFC of many new pkg_install - features from the HEAD. - 460102 - + Determines which compiler to use based on any given wishes. + Use c++14-lang if the port needs a + C++14-capable compiler, gcc-c++11-lib if the + port needs the g++ compiler with a C++11 + library, or c++11-lib if the port needs + a C++11-ready standard library. If the port needs a compiler + understanding C++11, C++0X, C11, OpenMP, or nested functions, + the corresponding parameters can be used. Use + features to request a list of features + supported by the default compiler. After including + bsd.port.pre.mk the port can inspect the + results using these variables: - - 4.7-RELEASE - 470000 - + + + COMPILER_TYPE: the default compiler + on the system, either gcc or clang + - - 4.7-STABLE - 470100 - + + ALT_COMPILER_TYPE: the alternative + compiler on the system, either gcc or clang. Only set if + two compilers are present in the base system. + - - Start generated __std{in,out,err}p references rather - than __sF. This changes std{in,out,err} from a - compile time expression to a runtime one. - 470101 - + + COMPILER_VERSION: the first two + digits of the version of the default compiler. + - - 4.7-STABLE after MFC of mbuf changes to replace - m_aux mbufs by m_tag's - 470102 - + + ALT_COMPILER_VERSION: the first two + digits of the version of the alternative compiler, if + present. + - - 4.7-STABLE gets OpenSSL 0.9.7 - 470103 - + + CHOSEN_COMPILER_TYPE: the chosen + compiler, either gcc or clang + - - 4.8-RELEASE - 480000 - + + COMPILER_FEATURES: the features + supported by the default compiler. It currently lists the + C++ library. + + + - - 4.8-STABLE - 480100 - + + <literal>cpe</literal> - - 4.8-STABLE after &man.realpath.3; has been made - thread-safe - 480101 - + Possible arguments: (none) - - 4.8-STABLE 3ware API changes to twe. - 480102 - + Include Common Platform Enumeration + (CPE) information in package manifest as a + CPE 2.3 formatted string. See the CPE + specification for details. To add + CPE information to a port, follow these + steps: - - 4.9-RELEASE - 490000 - + + + Search for the official CPE para for the software + product either by using the NVD's CPE + search engine or in the official + CPE dictionary (warning, very + large XML file). Do not ever + make up CPE data. + - - 4.9-STABLE - 490100 - + + Add cpe to USES + and compare the result of make -V CPE_STR + to the CPE dictionary para. Continue one + step at a time until make -V CPE_STR is + correct. + - - 4.9-STABLE after e_sid was added to struct - kinfo_eproc. - 490101 - + + If the product name (second field, defaults to + PORTNAME) is incorrect, define + CPE_PRODUCT. + - - 4.9-STABLE after MFC of libmap functionality - for rtld. - 490102 - + + If the vendor name (first field, defaults to + CPE_PRODUCT) is incorrect, define + CPE_VENDOR. + - - 4.10-RELEASE - 491000 - + + If the version field (third field, defaults to + PORTVERSION) is incorrect, define + CPE_VERSION. + - - 4.10-STABLE - 491100 - + + If the update field (fourth field, defaults to empty) is + incorrect, define CPE_UPDATE. + - - 4.10-STABLE after MFC of revision 20040629 of - the package tools - 491101 - + + If it is still not correct, check + Mk/Uses/cpe.mk for additional details, + or contact the Ports Security Team ports-secteam@FreeBSD.org. + - - 4.10-STABLE after VM fix dealing with unwiring - of fictitious pages - 491102 - + + Derive as much as possible of the CPE + name from existing variables such as + PORTNAME and + PORTVERSION. Use variable modifiers to + extract the relevant portions from these variables rather + than hardcoding the name. + - - 4.11-RELEASE - 492000 - + + Always run make -V + CPE_STR and check the output before committing + anything that changes PORTNAME or + PORTVERSION or any other variable which + is used to derive CPE_STR. + + + - - 4.11-STABLE - 492100 - + + <literal>cran</literal> - - 4.11-STABLE after adding libdata/ldconfig directories - to mtree files. - 492101 - + Possible arguments: (none), + auto-plist - - 5.0-CURRENT - 500000 - + Uses the Comprehensive R Archive Network. Specify + auto-plist to automatically generate + pkg-plist. + - - 5.0-CURRENT after adding addition ELF header fields, - and changing our ELF binary branding method. - 500001 - + + <literal>desktop-file-utils</literal> - - 5.0-CURRENT after kld metadata changes. - 500002 - + Possible arguments: (none) - - 5.0-CURRENT after buf/bio changes. - 500003 - + Uses update-desktop-database from + devel/desktop-file-utils. An + extra post-install step will be run without interfering with any + post-install steps already in the port + Makefile. A line with @desktop-file-utils + will be added to the plist. + - - 5.0-CURRENT after binutils upgrade. - 500004 - + + <literal>desthack</literal> - - 5.0-CURRENT after merging libxpg4 code into - libc and after TASKQ interface introduction. - 500005 - + Possible arguments: (none) - - 5.0-CURRENT after the addition of AGP - interfaces. - 500006 - + Changes the behavior of GNU configure to properly support + DESTDIR in case the original software does + not. + - - 5.0-CURRENT after Perl upgrade to 5.6.0 - 500007 - + + <literal>display</literal> - - 5.0-CURRENT after the update of KAME code to - 2000/07 sources. - 500008 - + Possible arguments: (none), + ARGS - - 5.0-CURRENT after ether_ifattach() and - ether_ifdetach() changes. - 500009 - + Set up a virtual display environment. If the environment + variable DISPLAY is not set, then + Xvfb is added as a build dependency, + and CONFIGURE_ENV is extended with the port + number of the currently running instance of + Xvfb. The + ARGS + parameter defaults to install and controls + the phase around which to start and stop the virtual + display. + - - 5.0-CURRENT after changing mtree defaults - back to original variant, adding -L to follow - symlinks. - 500010 - + + <literal>dos2unix</literal> - - 5.0-CURRENT after kqueue API changed. - 500011 - + Possible arguments: (none) - - 5.0-CURRENT after &man.setproctitle.3; moved from - libutil to libc. - 500012 - + The port has files with line endings in + DOS format which need to be converted. Three + variables can be set to control which files will be converted. + The default is to convert all files, + including binaries. See for + examples. - - 5.0-CURRENT after the first SMPng commit. - 500013 - + + + DOS2UNIX_REGEX: match file names + based on a regular expression. + - - 5.0-CURRENT after <sys/select.h> moved to - <sys/selinfo.h>. - 500014 - + + DOS2UNIX_FILES: match literal file + names. + - - 5.0-CURRENT after combining libgcc.a and - libgcc_r.a, and associated GCC linkage changes. - 500015 - + + DOS2UNIX_GLOB: match file names based + on a glob pattern. + + + - - 5.0-CURRENT after change allowing libc and libc_r - to be linked together, deprecating -pthread - option. - 500016 - + + <literal>drupal</literal> - - 5.0-CURRENT after switch from struct ucred to - struct xucred to stabilize kernel-exported API for - mountd et al. - 500017 - + Possible arguments: 6, + 7, module, + theme - - 5.0-CURRENT after addition of CPUTYPE make variable - for controlling CPU-specific optimizations. - 500018 - + Automate installation of a port that is a + Drupal theme or module. Use with the + version of Drupal that the port is expecting. For example, + USES=drupal:6,module says that this port + creates a Drupal 6 module. A Drupal 7 theme can be specified + with USES=drupal:7,theme. + - - 5.0-CURRENT after moving machine/ioctl_fd.h to - sys/fdcio.h - 500019 - + + <literal>execinfo</literal> - - 5.0-CURRENT after locale names renaming. - 500020 - + Possible arguments: (none) - - 5.0-CURRENT after Bzip2 import. - Also signifies removal of S/Key. - 500021 - + Add a library dependency on devel/libexecinfo if + libexecinfo.so is not present in the base + system. + - - 5.0-CURRENT after SSE support. - 500022 - + + <literal>fakeroot</literal> - - 5.0-CURRENT after KSE Milestone 2. - 500023 - + Possible arguments: (none) - - 5.0-CURRENT after d_thread_t, - and moving UUCP to ports. - 500024 - + Changes some default behaviour of build systems to allow + installing as a user. See for more + information on fakeroot. + - - 5.0-CURRENT after ABI change for descriptor - and creds passing on 64 bit platforms. - 500025 - + + <literal>fam</literal> - - 5.0-CURRENT after moving to XFree86 4 by default for - package builds, and after the new libc strnstr() function - was added. - 500026 - + Possible arguments: (none), fam, + gamin - - 5.0-CURRENT after the new libc strcasestr() function - was added. - 500027 - + Uses a File Alteration Monitor as a library dependency, + either devel/fam or devel/gamin. End users can set + WITH_FAM_SYSTEM to specify their preference. + - - 5.0-CURRENT after the userland components of smbfs - were imported. - 500028 - + + <literal>fmake</literal> - - 5.0-CURRENT after the new C99 specific-width - integer types were added. - (Not incremented.) - + Possible arguments: (none) - - 5.0-CURRENT after a change was made in the return - value of &man.sendfile.2;. - 500029 - + Uses devel/fmake as a + build-time dependency. + - - 5.0-CURRENT after the introduction of the - type fflags_t, which is the - appropriate size for file flags. - 500030 - + + <literal>fonts</literal> - - 5.0-CURRENT after the usb structure element rename. - 500031 - + Possible arguments: (none), fc, + fcfontsdir (default), + fontsdir, none - - 5.0-CURRENT after the introduction of - Perl 5.6.1. - 500032 - + Adds a runtime dependency on tools needed to register fonts. + Depending on the argument, add a @fc ${FONTSDIR} + line, @fcfontsdir + ${FONTSDIR} line, @fontsdir + ${FONTSDIR} line, or no line if the argument is + none, to the plist. + FONTSDIR defaults to + ${PREFIX}/share/fonts/${FONTNAME} and + FONTNAME to ${PORTNAME}. + Add FONTSDIR to PLIST_SUB + and SUB_LIST + - - 5.0-CURRENT after the - sendmail_enable &man.rc.conf.5; - variable was made to take the value - NONE. - 500033 - + + <literal>fortran</literal> - - 5.0-CURRENT after mtx_init() grew a third argument. - 500034 - + Possible arguments: gcc (default), + ifort - - 5.0-CURRENT with Gcc 3.1. - 500035 - + Uses the Fortran compiler from either GNU or Intel. + - - 5.0-CURRENT without Perl in /usr/src - 500036 - + + <literal>fuse</literal> - - 5.0-CURRENT after the addition of &man.dlfunc.3; - 500037 - + Possible arguments: (none) - - 5.0-CURRENT after the types of some struct - sockbuf members were changed and the structure was - reordered. - 500038 - + The port will depend on the FUSE library and handle the + dependency on the kernel module depending on the version of + FreeBSD. + - - 5.0-CURRENT after GCC 3.2.1 import. - Also after headers stopped using - _BSD_FOO_T_ and started using _FOO_T_DECLARED. - This value can also be used as a conservative - estimate of the start of &man.bzip2.1; package - support. - 500039 - + + <literal>gecko</literal> - - 5.0-CURRENT after various changes to disk functions - were made in the name of removing dependency on disklabel - structure internals. - 500040 - + Possible arguments: libxul (default), + firefox, seamonkey, + thunderbird, build, + XY, + XY+ - - 5.0-CURRENT after the addition of &man.getopt.long.3; - to libc. - 500041 - + Add a dependency on different + gecko based applications. If + libxul is used, it is the only argument + allowed. When the argument is not libxul, + the firefox, seamonkey, or + thunderbird arguments can be used, along with + optional build and + XY/XY+ + version arguments. + - - 5.0-CURRENT after Binutils 2.13 upgrade, which - included new FreeBSD emulation, vec, and output format. - - 500042 - + + <literal>gettext</literal> - - 5.0-CURRENT after adding weak pthread_XXX stubs - to libc, obsoleting libXThrStub.so. 5.0-RELEASE. - 500043 - + Possible arguments: (none) - - 5.0-CURRENT after branching for RELENG_5_0 - 500100 - + Deprecated. Will include both gettext-runtime + and gettext-tools. + - - <sys/dkstat.h> is empty and should - not be included. - 500101 - + + <literal>gettext-runtime</literal> - - 5.0-CURRENT after the d_mmap_t interface - change. - 500102 - + Possible arguments: (none), lib + (default), build, + run - - 5.0-CURRENT after taskqueue_swi changed to run - without Giant, and taskqueue_swi_giant added to run - with Giant. - 500103 - + Uses devel/gettext-runtime. + By default, with no arguments or with the lib + argument, implies a library dependency on + libintl.so. build and + run implies, respectively a build-time and a + run-time dependency on gettext. + - - cdevsw_add() and cdevsw_remove() no - longer exists. - Appearance of MAJOR_AUTO allocation facility. - 500104 - + + <literal>gettext-tools</literal> - - 5.0-CURRENT after new cdevsw initialization method. - 500105 - + Possible arguments: (none), build + (default), run - - devstat_add_entry() has been replaced by - devstat_new_entry() - 500106 - + Uses devel/gettext-tools. By + default, with no argument, or with the build + argument, a build time dependency on msgfmt + is registered. With the run argument, a + run-time dependency is registered. + - - Devstat interface change; see sys/sys/param.h 1.149 - 500107 - + + <literal>ghostscript</literal> - - Token-Ring interface changes. - 500108 - + Possible arguments: X, + build, run, + nox11 - - Addition of vm_paddr_t. - 500109 - + A specific version X can be used. + Possible versions are 7, + 8, 9 (default), and + agpl. nox11 indicates + that the -nox11 version of the port is + required. build and run + add build- and run-time dependencies on + Ghostscript. The default is both + build- and run-time dependencies. + - - 5.0-CURRENT after &man.realpath.3; has been made - thread-safe - 500110 - + + <literal>gmake</literal> - - 5.0-CURRENT after &man.usbhid.3; has been synced with - NetBSD - 500111 - + Possible arguments: (none), lite - - 5.0-CURRENT after new NSS implementation - and addition of POSIX.1 getpw*_r, getgr*_r - functions - 500112 - + Uses devel/gmake, or devel/gmake-lite if the + lite argument is used, as a build-time + dependency and sets up the environment to use + gmake as the default make + for the build. + - - 5.0-CURRENT after removal of the old rc system. - 500113 - + + <literal>gperf</literal> - - 5.1-RELEASE. - 501000 - + Possible arguments: (none) - - 5.1-CURRENT after branching for RELENG_5_1. - 501100 - + Add a buildtime dependency on devel/gperf if gperf + is not present in the base system. + - - 5.1-CURRENT after correcting the semantics of - sigtimedwait(2) and sigwaitinfo(2). - 501101 - + + <literal>gssapi</literal> - - 5.1-CURRENT after adding the lockfunc and lockfuncarg - fields to &man.bus.dma.tag.create.9;. - 501102 - + Possible arguments: (none), base + (default), heimdal, mit, + flags, bootstrap - - 5.1-CURRENT after GCC 3.3.1-pre 20030711 snapshot - integration. - 501103 - + Handle dependencies needed by consumers of the + GSS-API. Only libraries that provide the + Kerberos mechanism are available. By + default, or set to base, the + GSS-API library from the base system is used. + Can also be set to heimdal to use security/heimdal, or + mit to use security/krb5. - - 5.1-CURRENT 3ware API changes to twe. - 501104 - + When the local Kerberos + installation is not in LOCALBASE, set + HEIMDAL_HOME (for heimdal) + or KRB5_HOME (for krb5) to + the location of the Kerberos + installation. - - 5.1-CURRENT dynamically-linked /bin and /sbin - support and movement of libraries to /lib. - 501105 - + These variables are exported for the ports to use: - - 5.1-CURRENT after adding kernel support for - Coda 6.x. - 501106 - + + + GSSAPIBASEDIR + - - 5.1-CURRENT after 16550 UART constants moved from - <dev/sio/sioreg.h> to - <dev/ic/ns16550.h>. - Also when libmap functionality was unconditionally - supported by rtld. - 501107 - + + GSSAPICPPFLAGS + - - 5.1-CURRENT after PFIL_HOOKS API update - 501108 - + + GSSAPIINCDIR + - - 5.1-CURRENT after adding kiconv(3) - 501109 - + + GSSAPILDFLAGS + - - 5.1-CURRENT after changing default operations - for open and close in cdevsw - 501110 - + + GSSAPILIBDIR + - - 5.1-CURRENT after changed layout of cdevsw - 501111 - + + GSSAPILIBS + - - 5.1-CURRENT after adding kobj multiple inheritance - - 501112 - + + GSSAPI_CONFIGURE_ARGS + + - - 5.1-CURRENT after the if_xname change in - struct ifnet - 501113 - + The flags option can be given alongside + base, heimdal, or + mit to automatically add + GSSAPICPPFLAGS, + GSSAPILDFLAGS, and + GSSAPILIBS to CFLAGS, + LDFLAGS, and LDADD, + respectively. For example, use + base,flags. - - 5.1-CURRENT after changing /bin and /sbin to - be dynamically linked - 501114 - + The bootstrap option is a special prefix + only for use by security/krb5 and + security/heimdal. For example, + use bootstrap,mit. - - 5.2-RELEASE - 502000 - + + Typical Use - - 5.2.1-RELEASE - 502010 - + OPTIONS_SINGLE= GSSAPI +OPTIONS_SINGLE_GSSAPI= GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE - - 5.2-CURRENT after branching for RELENG_5_2 - 502100 - +GSSAPI_BASE_USES= gssapi +GSSAPI_BASE_CONFIGURE_ON= --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS} +GSSAPI_HEIMDAL_USES= gssapi:heimdal +GSSAPI_HEIMDAL_CONFIGURE_ON= --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS} +GSSAPI_MIT_USES= gssapi:mit +GSSAPI_MIT_CONFIGURE_ON= --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS} +GSSAPI_NONE_CONFIGURE_ON= --without-gssapi + + - - 5.2-CURRENT after __cxa_atexit/__cxa_finalize - functions were added to libc. - 502101 - + + <literal>horde</literal> - - 5.2-CURRENT after change of default thread library - from libc_r to libpthread. - 502102 - + Possible arguments: (none) - - 5.2-CURRENT after device driver API megapatch. - - 502103 - + Add buildtime and runtime dependencies on devel/pear-channel-horde. Other + Horde dependencies can be added + with USE_HORDE_BUILD and + USE_HORDE_RUN. See for more information. + - - 5.2-CURRENT after getopt_long_only() addition. - - 502104 - + + <literal>iconv</literal> - - 5.2-CURRENT after NULL is made into ((void *)0) - for C, creating more warnings. - - 502105 - + Possible arguments: (none), lib, + build, + patch, translit, + wchar_t - - 5.2-CURRENT after pf is linked to the build and - install. - - 502106 - + Uses iconv functions, either from the + port converters/libiconv as a + build-time and run-time dependency, or from the base system on + 10-CURRENT after a native iconv was committed + in 254273. By default, with no arguments + or with the lib argument, implies + iconv with build-time and run-time + dependencies. build implies a build-time + dependency, and patch implies a patch-time + dependency. If the port uses the WCHAR_T or + //TRANSLIT iconv extensions, add the relevant + arguments so that the correct iconv is used. For more + information see . + - - 5.2-CURRENT after time_t is changed to a - 64-bit value on sparc64. - - 502107 - + + <literal>imake</literal> - - 5.2-CURRENT after Intel C/C++ compiler support in some headers and execve(2) changes to be more strictly conforming to POSIX. - - 502108 - + Possible arguments: (none), env, + notall, noman - - 5.2-CURRENT after the introduction of the - bus_alloc_resource_any API - - 502109 - + Add devel/imake as a + build-time dependency and run xmkmf -a during + the configure stage. If the + env argument is given, the + configure target is not set. If the + flag is a problem for the port, add the + notall argument. If xmkmf + does not generate a install.man + target, add the noman argument. + - - 5.2-CURRENT after the addition of UTF-8 locales - - 502110 - + + <literal>kmod</literal> - - 5.2-CURRENT after the removal of the getvfsent(3) - API - - 502111 - + Possible arguments: (none) - - 5.2-CURRENT after the addition of the .warning - directive for make. - 502112 - + Fills in the boilerplate for kernel module ports, + currently: - - 5.2-CURRENT after ttyioctl() was made mandatory - for serial drivers. - 502113 - + + + Add kld to + CATEGORIES. + - - 5.2-CURRENT after import of the ALTQ framework. - - 502114 - + + Set SSP_UNSAFE. + - - 5.2-CURRENT after changing sema_timedwait(9) to - return 0 on success and a non-zero error code on - failure. - - 502115 - + + Set IGNORE if the kernel sources are + not found in SRC_BASE. + - - 5.2-CURRENT after changing kernel dev_t to - be pointer to struct cdev *. - - 502116 - + + Define KMODDIR to + /boot/modules by default, add it to + PLIST_SUB and + MAKE_ENV, and create it upon + installation. If KMODDIR is set to + /boot/kernel, it will be rewritten to + /boot/modules. This prevents breaking + packages when upgrading the kernel due to + /boot/kernel being renamed to + /boot/kernel.old in the process. + - - 5.2-CURRENT after changing kernel udev_t to dev_t. - - 502117 - + + Handle cross-referencing kernel modules upon + installation and deinstallation, using @kld. + + + - - 5.2-CURRENT after adding support for CLOCK_VIRTUAL - and CLOCK_PROF to clock_gettime(2) and clock_getres(2). - - 502118 - + + <literal>lha</literal> - - 5.2-CURRENT after changing network interface - cloning overhaul. - - 502119 - + Possible arguments: (none) - - 5.2-CURRENT after the update of the package tools - to revision 20040629. - - 502120 - + Set EXTRACT_SUFX to + .lzh + - - 5.2-CURRENT after marking Bluetooth code as - non-i386 specific. - - 502121 - + + <literal>libarchive</literal> - - 5.2-CURRENT after the introduction of the KDB - debugger framework, the conversion of DDB into a - backend and the introduction of the GDB backend. - - 502122 - + Possible arguments: (none) - - 5.2-CURRENT after change to make - VFS_ROOT take a struct - thread argument as does vflush. Struct kinfo_proc - now has a user data pointer. - The switch of the default X implementation to - xorg was also made at this time. - - 502123 - + Registers a dependency on archivers/libarchive. Any ports + depending on libarchive must include + USES=libarchive. + - - 5.2-CURRENT after the change to separate the way - ports rc.d and legacy scripts are started. - - 502124 - + + <literal>libedit</literal> - - 5.2-CURRENT after the backout of the - previous change. - - 502125 - + Possible arguments: (none) - - 5.2-CURRENT after the removal of - kmem_alloc_pageable() and the import of gcc 3.4.2. - - 502126 - + Registers a dependency on devel/libedit. Any ports depending on + libedit must include + USES=libedit. + - - 5.2-CURRENT after changing the UMA kernel - API to allow ctors/inits to fail. - - 502127 - + + <literal>libtool</literal> - - 5.2-CURRENT after the change of the - vfs_mount signature as well as global replacement of - PRISON_ROOT with SUSER_ALLOWJAIL for the suser(9) - API. - - 502128 - + Possible arguments: (none), keepla, + build - - 5.3-BETA/RC before the pfil API change - 503000 - + Patches libtool scripts. This must be + added to all ports that use libtool. The + keepla argument can be used to keep + .la files. Some ports do not ship with + their own copy of libtool and need a build time dependency on + devel/libtool, use the + :build argument to add such + dependency. + - - 5.3-RELEASE - 503001 - + + <literal>localbase</literal> - - 5.3-STABLE after branching for RELENG_5_3 - 503100 - + Possible arguments: (none) - - 5.3-STABLE after addition of glibc style - &man.strftime.3; padding options. - 503101 - + Ensures that libraries from dependencies in + LOCALBASE are used instead of the ones from + the base system. Ports that depend on libraries that are also + present in the base system should use this. It is also used + internally by a few other USES. + - - 5.3-STABLE after OpenBSD's nc(1) import MFC. - 503102 - + + <literal>lua</literal> - - 5.4-PRERELEASE after the MFC of the fixes in - <src/include/stdbool.h> and - <src/sys/i386/include/_types.h> - for using the GCC-compatibility of the Intel C/C++ compiler. - 503103 - + Possible arguments: (none), + XY+, + XY, + build, run - - 5.4-PRERELEASE after the MFC of the change of - ifi_epoch from wall clock time to uptime. - 503104 - + Adds a dependency on Lua. By + default this is a library dependency, unless overridden by the + build or run option. The + default version is 5.2, unless set by the + XY parameter (for + example, 51 or + 52+). + - - 5.4-PRERELEASE after the MFC of the fix of EOVERFLOW check in vswprintf(3). - 503105 - + + <literal>makeinfo</literal> - - 5.4-RELEASE. - 504000 - + Possible arguments: (none) - - 5.4-STABLE after branching for RELENG_5_4 - 504100 - + Add a build-time dependency on makeinfo + if it is not present in the base system. + - - 5.4-STABLE after increasing the default - thread stacksizes - 504101 - + + <literal>makeself</literal> - - 5.4-STABLE after the addition of sha256 - 504102 - + Possible arguments: (none) - - 5.4-STABLE after the MFC of if_bridge - 504103 - + Indicates that the distribution files are makeself archives + and sets the appropriate dependencies. + - - 5.4-STABLE after the MFC of bsdiff and portsnap - 504104 - + + <literal>metaport</literal> - - 5.4-STABLE after MFC of ldconfig_local_dirs - change. - 504105 - + Possible arguments: (none) - - 5.5-RELEASE. - 505000 - + Sets the following variables to make it easier to create a + metaport: MASTER_SITES, + DISTFILES, EXTRACT_ONLY, + NO_BUILD, NO_INSTALL, + NO_MTREE, NO_ARCH. + - - 5.5-STABLE after branching for RELENG_5_5 - 505100 - + + <literal>mono</literal> - - 6.0-CURRENT - 600000 - + Possible arguments: (none) - - 6.0-CURRENT after permanently enabling PFIL_HOOKS - in the kernel. - - 600001 - + Adds a dependency on the Mono + (currently only C#) framework by setting the appropriate + dependencies. + - - 6.0-CURRENT after initial addition of - ifi_epoch to struct if_data. Backed out after a - few days. Do not use this value. - - 600002 - + + <literal>motif</literal> - - 6.0-CURRENT after the re-addition of the - ifi_epoch member of struct if_data. - - 600003 - + Possible arguments: (none) - - 6.0-CURRENT after addition of the struct inpcb - argument to the pfil API. - - 600004 - + Uses x11-toolkits/open-motif + as a library dependency. End users can set + WANT_LESSTIF for the dependency to be on + x11-toolkits/lesstif instead of + x11-toolkits/open-motif. + - - 6.0-CURRENT after addition of the "-d - DESTDIR" argument to newsyslog. - - 600005 - + + <literal>ncurses</literal> - - 6.0-CURRENT after addition of glibc style - &man.strftime.3; padding options. - - 600006 - + Possible arguments: (none), base, + port - - 6.0-CURRENT after addition of 802.11 framework - updates. - - 600007 - + Uses ncurses, and causes some + useful variables to be set. + - - 6.0-CURRENT after changes to VOP_*VOBJECT() functions - and introduction of MNTK_MPSAFE flag for Giantfree filesystems. - - 600008 - + + <literal>ninja</literal> - - 6.0-CURRENT after addition of the cpufreq framework - and drivers. - - 600009 - + Possible arguments: (none) - - 6.0-CURRENT after importing OpenBSD's nc(1). - 600010 - + Uses ninja to build the port. + End users can set NINJA_VERBOSE for verbose + output. + - - 6.0-CURRENT after removing semblance of SVID2 - matherr() support. - 600011 - + + <literal>objc</literal> - - 6.0-CURRENT after increase of default thread stacks' - size. - 600012 - + Possible arguments: (none) - - 6.0-CURRENT after fixes in - <src/include/stdbool.h> and - <src/sys/i386/include/_types.h> - for using the GCC-compatibility of the Intel C/C++ compiler. - 600013 - + Add objective C dependencies (compiler, runtime library) if + the base system does not support it. + - - 6.0-CURRENT after EOVERFLOW checks in vswprintf(3) fixed. - 600014 - + + <literal>openal</literal> - - 6.0-CURRENT after changing the struct if_data - member, ifi_epoch, from wall clock time to uptime. - 600015 - + Possible arguments: al, + soft (default), si, + alut - - 6.0-CURRENT after LC_CTYPE disk format changed. - 600016 - + Uses OpenAL. The backend can be + specified, with the software implementation as the default. The + user can specify a preferred backend with + WANT_OPENAL. Valid values for this knob are + soft (default) and + si. + - - 6.0-CURRENT after NLS catalogs disk format changed. - 600017 - + + <literal>pathfix</literal> - - 6.0-CURRENT after LC_COLLATE disk format changed. - 600018 - + Possible arguments: (none) - - Installation of acpica includes into /usr/include. - 600019 - + Look for Makefile.in and + configure in the port's associated sources + and fix common paths to make sure they respect the FreeBSD + hierarchy. If the port uses automake, set + PATHFIX_MAKEFILEIN to + Makefile.am if needed. + - - Addition of MSG_NOSIGNAL flag to send(2) API. - 600020 - + + <literal>pear</literal> - - Addition of fields to cdevsw - 600021 - + Possible arguments: (none) - - Removed gtar from base system. - 600022 - + Adds a dependency on devel/pear. It will setup default + behavior for software using the PHP + Extension and Application Repository. See for more information. + - - LOCAL_CREDS, LOCAL_CONNWAIT socket options added to unix(4). - 600023 - + + <literal>perl5</literal> - - &man.hwpmc.4; and related tools added to 6.0-CURRENT. - 600024 - + Possible arguments: (none) - - struct icmphdr added to 6.0-CURRENT. - 600025 - + Depends on Perl. These variables + can be set: - - pf updated to 3.7. - 600026 - + + + PERL_VERSION: Full version of + Perl to use, or the default if + not set + - - Kernel libalias and ng_nat introduced. - 600027 - + + PERL_ARCH: Directory name of + architecture dependent libraries, defaults to + mach + - - POSIX ttyname_r(3) made available through unistd.h and libc. - 600028 - + + PERL_PORT: Name of the + Perl port to be installed, the + default is derived from + PERL_VERSION + - - 6.0-CURRENT after libpcap updated to v0.9.1 alpha 096. - 600029 - + + SITE_PERL: Directory name for site + specific Perl packages + - - 6.0-CURRENT after importing NetBSD's if_bridge(4). - 600030 - + + USE_PERL5: Phases in which to use + Perl, can be + extract, patch, + build, install, or + run. It can also be + configure, modbuild, + or modbuildtiny when + Makefile.PL, + Build.PL, or the Module::Build::Tiny + flavor of Build.PL is required. It + defaults to build run. + + + - - 6.0-CURRENT after struct ifnet was broken out - of the driver softcs. - 600031 - + + <literal>pgsql</literal> - - 6.0-CURRENT after the import of libpcap v0.9.1. - 600032 - + Possible arguments: (none), + X.Y, + X.Y+, + X.Y- - - 6.0-STABLE after bump of all shared library - versions that had not been changed since - RELENG_5. - 600033 - + Provide support for PostgreSQL. Maintainer can set version + required. Minimum and maximum versions can be specified; for + example, 9.0-, 8.4+. - - 6.0-STABLE after credential argument is added to - dev_clone event handler. 6.0-RELEASE. - 600034 - + Add PostgreSQL component dependency, using + WANT_PGSQL=component[:target]. for example, + WANT_PGSQL=server:configure pltcl plperl For + the full list use make -V + _USE_PGSQL_DEP. + - - 6.0-STABLE after 6.0-RELEASE - 600100 - + + <literal>pkgconfig</literal> - - 6.0-STABLE after incorporating scripts from the - local_startup directories into the base &man.rcorder.8;. - 600101 - + Possible arguments: (none), build + (default), run, + both - - 6.0-STABLE after updating the ELF types and - constants. - 600102 - + Uses devel/pkgconf. With no + arguments or with the build argument, it + implies pkg-config as a build-time + dependency. run implies a run-time + dependency and both implies both run-time and + build-time dependencies. + - - 6.0-STABLE after MFC of pidfile(3) API. - 600103 - + + <literal>pure</literal> - - 6.0-STABLE after MFC of ldconfig_local_dirs - change. - 600104 - + Possible arguments: (none), ffi - - 6.0-STABLE after NLS catalog support of - csh(1). - 600105 - + Uses lang/pure. Largely used + for building related pure ports. + With the ffi argument, it implies devel/pure-ffi as a run-time + dependency. + - - 6.1-RELEASE - 601000 - + + <literal>python</literal> - - 6.1-STABLE after 6.1-RELEASE. - 601100 - + Possible arguments: (none), + X.Y, + X.Y+, + -X.Y, + X.Y-Z.A, + build, run - - 6.1-STABLE after the import of csup. - 601101 - + Uses Python. A supported version + or version range can be specified. If Python is only needed at + build or run time, it can be set as a build or run dependency + with build or run. See + for more information. + - - 6.1-STABLE after the iwi(4) update. - 601102 - + + <literal>qmail</literal> - - 6.1-STABLE after the resolver update to - BIND9, and exposure of reentrant version of - netdb functions. - 601103 - + Possible arguments: (none), build, + run, both, + vars - - 6.1-STABLE after DSO (dynamic shared - objects) support has been enabled in - OpenSSL. - 601104 - + Uses mail/qmail. With the + build argument, it implies + qmail as a build-time dependency. + run implies a run-time dependency. Using no + argument or the both argument implies both + run-time and build-time dependencies. vars + will only set QMAIL variables for the port to use. + - - 6.1-STABLE after 802.11 fixups changed the - api for the IEEE80211_IOC_STA_INFO ioctl. - 601105 - + + <literal>qmake</literal> - - 6.2-RELEASE - 602000 - + Possible arguments: (none), norecursive, + outsource - - 6.2-STABLE after 6.2-RELEASE. - 602100 - + Uses QMake for configuring. For + more information see . + - - 6.2-STABLE after the addition of Wi-Spy - quirk. - 602101 - + + <literal>readline</literal> - - 6.2-STABLE after pci_find_extcap() addition. - 602102 - + Possible arguments: (none), port - - 6.2-STABLE after MFC of dlsym change to look - for a requested symbol both - in specified dso and its implicit dependencies. - 602103 - + Uses readline as a library + dependency, and sets CPPFLAGS and + LDFLAGS as necessary. If the + port argument is used or if readline is not + present in the base system, add a dependency on devel/readline + - - 6.2-STABLE after MFC of ng_deflate(4) and - ng_pred1(4) netgraph nodes and new compression and - encryption modes for ng_ppp(4) node. - 602104 - + + <literal>scons</literal> - - 6.2-STABLE after MFC of BSD licensed version of &man.gzip.1; - ported from NetBSD. - 602105 - + Possible arguments: (none) - - 6.2-STABLE after MFC of PCI MSI and MSI-X - support. - 602106 - + Provide support for the use of devel/scons + - - 6.2-STABLE after MFC of ncurses 5.6 and wide - character support. - 602107 - + + <literal>shared-mime-info</literal> - - 6.2-STABLE after MFC of CAM 'SG' peripheral device, - which implements a subset of Linux SCSI SG passthrough device API. - 602108 - + Possible arguments: (none) - - 6.2-STABLE after MFC of readline 5.2 patchset 002. - 602109 - + Uses update-mime-database from + misc/shared-mime-info. This uses + will automatically add a post-install step in such a way that + the port itself still can specify there own post-install step if + needed. It also add an @shared-mime-info + para to the plist. + - - 6.2-STABLE after MFC of pmap_invalidate_cache(), - pmap_change_attr(), pmap_mapbios(), pmap_mapdev_attr(), - and pmap_unmapbios() for amd64 and i386. - 602110 - + + <literal>shebangfix</literal> - - 6.2-STABLE after MFC of BOP_BDFLUSH and caused - breakage of the filesystem modules KBI. - 602111 - + Possible arguments: (none) - - 6.2-STABLE after libutil(3) MFC's. - 602112 - + A lot of software uses incorrect locations for script + interpreters, most notably /usr/bin/perl + and /bin/bash. The shebagngfix macro fixes + shebang lines in scripts listed in + SHEBANG_FILES. The shebangfix macro is run + from ${WRKSRC}, so it can contain paths that + are relative to ${WRKSRC}. It can also deal + with absolute paths if files outside of + ${WRKSRC} require patching. For + example: - - 6.2-STABLE after MFC of wide and single byte - ctype separation. Newly compiled binary that references - to ctype.h may require a new symbol, __mb_sb_limit, - which is not available on older systems. - 602113 - + USES= shebangfix +SHEBANG_FILES= scripts/foobar.pl scripts/*.sh - - 6.2-STABLE after ctype ABI forward compatibility - restored. - 602114 - + Currently + Bash, + Java, Ksh, + Lua, + Perl, PHP, + Python, + Ruby, Tcl, + and Tk are supported by default. To + support another interpreter, set + SHEBANG_LANG, + interp_OLD_CMD and + interp_CMD. For + example: - - 6.2-STABLE after back out of wide and single byte - ctype separation. - 602115 - + SHEBANG_LANG= lua +lua_OLD_CMD= /usr/bin/lua +lua_CMD= ${LOCALBASE}/bin/lua - - 6.3-RELEASE - 603000 - + interp_OLD_CMD + will contain multiple values. Any entry with spaces must be + quoted. For example, if it was not already defined, the + Ksh entry could be defined as: - - 6.3-STABLE after 6.3-RELEASE. - 603100 - + SHEBANG_LANG= ksh +ksh_OLD_CMD= "/usr/bin/env ksh" /bin/ksh /usr/bin/ksh +ksh_CMD= ${LOCALBASE}/bin/ksh - - 6.3-STABLE after fixing - multibyte type support in bit macro. - 603101 - + Some software uses strange locations for an interpreter. + For example, an application might expect + Python to be located in + /opt/bin/python2.7. The strange path to be + replaced can be declared in the port + Makefile: - - 6.3-STABLE after adding l_sysid to struct flock. - 603102 - + python_OLD_CMD= /opt/bin/python2.7 - - 6.3-STABLE after MFC of the - memrchr function. - 603103 - + + The fixing of shebangs is done during the + patch phase. If scripts are + created with incorrect shebangs during the + build phase, the build process (for + examples, the configure script, or the + Makefiles) must be patched to generate + the right shebangs. Correct paths for supported interpreters + are available in + interp_CMD. + + - - 6.3-STABLE after MFC of support for - :u variable modifier in make(1). - 603104 - + + <literal>tar</literal> - - 6.4-RELEASE - 604000 - + Possible arguments: (none), Z, + bz2, bzip2, + lzma, tbz, + tbz2, + tgz, txz, + xz - - 6.4-STABLE after 6.4-RELEASE. - 604100 - + Set EXTRACT_SUFX to + .tar, .tar.Z, + .tar.bz2, .tar.bz2, + .tar.lzma, .tbz, + .tbz2, + .tgz, .txz or + .tar.xz respectively. + - - 7.0-CURRENT. - 700000 - + + <literal>tcl</literal> - - 7.0-CURRENT after bump of all shared library - versions that had not been changed since - RELENG_5. - 700001 - + Possible arguments: PORT - - 7.0-CURRENT after credential argument is added to - dev_clone event handler. - 700002 - + Add a dependency on Tcl. The + PORT parameter can be either + tcl or tk. Either a + version or wrapper dependency can be appended using + PORT:version or + PORT:wrapper. The version can be empty, one + or more exact version numbers (currently 84, + 85, or 86), or a minimal + version number (currently 84+, + 85+ or 86+). A build- or + run-time only dependency can be specified using + PORT,build or PORT,run. + After including bsd.port.pre.mk the port + can inspect the results using these variables: - - 7.0-CURRENT after memmem(3) is added to libc. - 700003 - + + + TCL_VER: chosen major.minor version + of Tcl + - - 7.0-CURRENT after solisten(9) kernel arguments - are modified to accept a backlog parameter. - 700004 - + + TCLSH: full path of the + Tcl interpreter + - - 7.0-CURRENT after IFP2ENADDR() was changed to return - a pointer to IF_LLADDR(). - 700005 - + + TCL_LIBDIR: path of the + Tcl libraries + - - 7.0-CURRENT after addition of if_addr - member to struct ifnet and IFP2ENADDR() - removal. - 700006 - + + TCL_INCLUDEDIR: path of the + Tcl C header files + - - 7.0-CURRENT after incorporating scripts from the - local_startup directories into the base &man.rcorder.8;. - 700007 - + + TK_VER: chosen major.minor version of + Tk + - - 7.0-CURRENT after removal of MNT_NODEV mount - option. - 700008 - + + WISH: full path of the + Tk interpreter + - - 7.0-CURRENT after ELF-64 type changes and symbol - versioning. - 700009 - + + TK_LIBDIR: path of the + Tk libraries + - - 7.0-CURRENT after addition of hostb and vgapci - drivers, addition of pci_find_extcap(), and changing - the AGP drivers to no longer map the aperture. - 700010 - + + TK_INCLUDEDIR: path of the + Tk C header files + + + - - 7.0-CURRENT after tv_sec was made time_t on - all platforms but Alpha. - 700011 - + + <literal>terminfo</literal> - - 7.0-CURRENT after ldconfig_local_dirs change. - 700012 - + Possible arguments: (none) - - 7.0-CURRENT after changes to - /etc/rc.d/abi to support - /compat/linux/etc/ld.so.cache - being a symlink in a readonly filesystem. - 700013 - + Adds @terminfo + to the plist. Use when the port installs + *.terminfo files + in ${PREFIX}/share/misc. + - - 7.0-CURRENT after pts import. - 700014 - + + <literal>tk</literal> - - 7.0-CURRENT after the introduction of version 2 - of &man.hwpmc.4;'s ABI. - 700015 - + Same as arguments for tcl - - 7.0-CURRENT after addition of &man.fcloseall.3; - to libc. - 700016 - + Small wrapper when using both Tcl + and Tk. The same variables are + returned as when using Tcl. + - - 7.0-CURRENT after removal of ip6fw. - 700017 - + + <literal>twisted</literal> - - 7.0-CURRENT after import of snd_emu10kx. - 700018 - + Possible arguments: (none), ARGS - - 7.0-CURRENT after import of OpenSSL 0.9.8b. - 700019 - + Add a dependency on twistedCore. + The list of required components can be specified as a value of + this variable. ARGS can be one of: - - 7.0-CURRENT after addition of bus_dma_get_tag - function - 700020 - + + + build: add + twistedCore or any specified + component as build dependency. + - - 7.0-CURRENT after libpcap 0.9.4 and - tcpdump 3.9.4 import. - 700021 - + + run: add + twistedCore or any specified + component as run dependency. + + - - 7.0-CURRENT after dlsym change to look - for a requested symbol both - in specified dso and its implicit dependencies. - 700022 - + Besides build and run, + one or more other supported twisted + components can be specified. Supported values are listed in + Uses/twisted.mk. + - - 7.0-CURRENT after adding new sound IOCTLs. - 700023 - + + <literal>uidfix</literal> - - 7.0-CURRENT after import of OpenSSL 0.9.8d. - 700024 - + Possible arguments: (none) - - 7.0-CURRENT after the addition of libelf. - 700025 - + Changes some default behavior (mostly variables) of + the build system to allow installing this port as a normal + user. Try this in the port before adding + NEED_ROOT=yes + - - 7.0-CURRENT after major changes on sound - sysctls. - 700026 - + + <literal>uniquefiles</literal> - - 7.0-CURRENT after the addition of Wi-Spy - quirk. - 700027 - + Possible arguments: (none), dirs - - 7.0-CURRENT after the addition of sctp calls to libc - - 700028 - + Make files or directories 'unique', by adding a prefix or + suffix. If the dirs argument is used, the + port needs a prefix (a only a prefix) based on + UNIQUE_PREFIX for standard directories + DOCSDIR, EXAMPLESDIR, + DATADIR, WWWDIR, + ETCDIR. These variables are available for + ports: - - 7.0-CURRENT after the GNU &man.gzip.1; implementation was - replaced with a BSD licensed version ported from NetBSD. - 700029 - + + + UNIQUE_PREFIX: The prefix to be used + for directories and files. Default: + ${PKGNAMEPREFIX}. + - - 7.0-CURRENT after the removal of IPIP tunnel encapsulation (VIFF_TUNNEL) from the IPv4 multicast forwarding code. - - 700030 - + + UNIQUE_PREFIX_FILES: A list of files + that need to be prefixed. Default: empty. + - - 7.0-CURRENT after the modification of bus_setup_intr() (newbus). - - 700031 - + + UNIQUE_SUFFIX: The suffix to be used + for files. Default: + ${PKGNAMESUFFIX}. + - - 7.0-CURRENT after the inclusion of ipw(4) and iwi(4) firmwares. - - 700032 - + + UNIQUE_SUFFIX_FILES: A list of files + that need to be suffixed. Default: empty. + + + - - 7.0-CURRENT after the inclusion of ncurses wide character support. - - 700033 - + + <literal>webplugin</literal> - - 7.0-CURRENT after changes to how insmntque(), - getnewvnode(), and vfs_hash_insert() work. - - 700034 - + Possible arguments: (none), ARGS - - 7.0-CURRENT after addition of a notify mechanism - for CPU frequency changes. - - 700035 - + Automatically create and remove symbolic links for each + application that supports the webplugin framework. + ARGS can be one of: - - 7.0-CURRENT after import of the ZFS filesystem. - 700036 - + + + gecko: support plug-ins based on + Gecko + - - 7.0-CURRENT after addition of CAM 'SG' peripheral device, - which implements a subset of Linux SCSI SG passthrough device API. - 700037 - + + native: support plug-ins for Gecko, + Opera, and WebKit-GTK + - - 7.0-CURRENT after changing &man.getenv.3;, &man.putenv.3;, - &man.setenv.3; and &man.unsetenv.3; to be POSIX - conformant. - 700038 - + + linux: support Linux plug-ins + - - 7.0-CURRENT after the changes in 700038 were - backed out. - 700039 - + + all (default, implicit): support all + plug-in types + - - 7.0-CURRENT after the addition of &man.flopen.3; - to libutil. - 700040 - + + (individual entries): support only the browsers + listed + + - - 7.0-CURRENT after enabling symbol versioning, and changing - the default thread library to libthr. - 700041 - + These variables can be adjusted: - - 7.0-CURRENT after the import of gcc 4.2.0. - 700042 - + + + WEBPLUGIN_FILES: No default, must be + set manually. The plug-in files to install. + - - 7.0-CURRENT after bump of all shared library - versions that had not been changed since - RELENG_6. - 700043 - + + WEBPLUGIN_DIR: The directory to + install the plug-in files to, default + PREFIX/lib/browser_plugins/WEBPLUGIN_NAME. + Set this if the port installs plug-in files outside of the + default directory to prevent broken symbolic links. + - - 7.0-CURRENT after changing the argument for - vn_open()/VOP_OPEN() from filedescriptor index to the - struct file *. - 700044 - + + WEBPLUGIN_NAME: The final directory + to install the plug-in files into, default + PKGBASE. + + + - - 7.0-CURRENT after changing &man.pam.nologin.8; to - provide an account management function instead of an - authentication function to the PAM framework. - 700045 - + + <literal>xfce</literal> - - 7.0-CURRENT after updated 802.11 wireless - support. - 700046 - + Possible arguments: (none), gtk3 - - 7.0-CURRENT after adding TCP LRO interface - capabilities. - 700047 - + Provide support for Xfce related + ports. See for details. - - 7.0-CURRENT after - RFC 3678 API support added to the IPv4 stack. - Legacy RFC 1724 behaviour of the IP_MULTICAST_IF - ioctl has now been removed; 0.0.0.0/8 may no longer - be used to specify an interface index. - struct ipmreqn should be used instead. - 700048 - + The gtk3 argument specifies that the port + requires GTK3 support. It adds + additional features provided by some core components, for + example, x11/libxfce4menu and + x11-wm/xfce4-panel. + - - 7.0-CURRENT after importing pf from OpenBSD - 4.1 - 700049 - + + <literal>zip</literal> - - 7.0-CURRENT after adding IPv6 support for - FAST_IPSEC, deleting KAME IPSEC, and renaming - FAST_IPSEC to IPSEC. - (not changed) - + Possible arguments: (none), + infozip - - 7.0-CURRENT after converting setenv/putenv/etc. - calls from traditional BSD to POSIX. - 700050 - + Indicates that the distribution files use the ZIP + compression algorithm. For files using the InfoZip algorithm + the infozip argument must be passed to set + the appropriate dependencies. + - - 7.0-CURRENT after adding new mmap/lseek/etc - syscalls. - 700051 - + + <literal>zope</literal> - - 7.0-CURRENT after moving I4B headers to - include/i4b. - 700052 - + Possible arguments: (none) - - 7.0-CURRENT after the addition of support for - PCI domains - 700053 - + Uses www/zope. Mostly used + for building zope related ports. + ZOPE_VERSION can be used by a port to + indicate that a specific version of + zope shall be used. + + - - 7.0-CURRENT after MFC of wide and single byte - ctype separation. - 700054 - + - - 7.0-RELEASE, and 7.0-CURRENT after ABI backwards compatibility - to the FreeBSD 4/5/6 versions of the PCIOCGETCONF, - PCIOCREAD and PCIOCWRITE IOCTLs was MFC'ed, which - required the ABI of the PCIOCGETCONF IOCTL to be - broken again - 700055 - + - - 7.0-STABLE after 7.0-RELEASE - 700100 - + - - 7.0-STABLE after the MFC of m_collapse(). - 700101 - + <literal>__FreeBSD_version</literal> + Values - - 7.0-STABLE after the MFC of kdb_enter_why(). - 700102 - + Here is a convenient list of + __FreeBSD_version values as defined in + sys/param.h: - - 7.0-STABLE after adding l_sysid to struct flock. - 700103 - +
+ <literal>__FreeBSD_version</literal> Values - - 7.0-STABLE after the MFC of procstat(1). - 700104 - + + + + Value - - 7.0-STABLE after the MFC of umtx features. - 700105 - + Date - - 7.0-STABLE after the MFC of &man.write.2; support - to &man.psm.4;. - 700106 - + Release + + - - 7.0-STABLE after the MFC of F_DUP2FD command - to &man.fcntl.2;. - 700107 - + + + 119411 + + 2.0-RELEASE + - - 7.0-STABLE after some &man.lockmgr.9; changes, which - makes it necessary to include - sys/lock.h in order to use - &man.lockmgr.9;. - 700108 - + + 199501, 199503 + March 19, 1995 + 2.1-CURRENT + - - 7.0-STABLE after MFC of the - memrchr function. - 700109 - + + 199504 + April 9, 1995 + 2.0.5-RELEASE + - - 7.0-STABLE after MFC of kernel NFS lockd client. - - 700110 - + + 199508 + August 26, 1995 + 2.2-CURRENT before 2.1 + - - 7.0-STABLE after addition of physically contiguous - jumbo frame support. - 700111 - + + 199511 + November 10, 1995 + 2.1.0-RELEASE + - - 7.0-STABLE after MFC of kernel DTrace support. - - 700112 - + + 199512 + November 10, 1995 + 2.2-CURRENT before 2.1.5 + - - 7.1-RELEASE - 701000 - + + 199607 + July 10, 1996 + 2.1.5-RELEASE + - - 7.1-STABLE after 7.1-RELEASE. - 701100 - + + 199608 + July 12, 1996 + 2.2-CURRENT before 2.1.6 + - - 8.0-CURRENT. Separating wide and single byte - ctype. - 800000 - + + 199612 + November 15, 1996 + 2.1.6-RELEASE + - - 8.0-CURRENT after libpcap 0.9.8 and tcpdump 3.9.8 - import. - 800001 - + + 199612 + + 2.1.7-RELEASE + - - 8.0-CURRENT after renaming kthread_create() - and friends to kproc_create() etc. - 800002 - + + 220000 + February 19, 1997 + 2.2-RELEASE + - - 8.0-CURRENT after ABI backwards compatibility - to the FreeBSD 4/5/6 versions of the PCIOCGETCONF, - PCIOCREAD and PCIOCWRITE IOCTLs was added, which - required the ABI of the PCIOCGETCONF IOCTL to be - broken again - 800003 - + + (not changed) + + 2.2.1-RELEASE + - - 8.0-CURRENT after agp(4) driver moved from - src/sys/pci to src/sys/dev/agp - 800004 - + + (not changed) + + 2.2-STABLE after 2.2.1-RELEASE + - - 8.0-CURRENT after - changes - to the jumbo frame allocator. - 800005 - + + 221001 + April 15, 1997 + 2.2-STABLE after texinfo-3.9 + - - 8.0-CURRENT after the addition of callgraph - capture functionality to &man.hwpmc.4;. - 800006 - + + 221002 + April 30, 1997 + 2.2-STABLE after top + - - 8.0-CURRENT after kdb_enter() gains a "why" - argument. - 800007 - + + 222000 + May 16, 1997 + 2.2.2-RELEASE + - - 8.0-CURRENT after LK_EXCLUPGRADE option - removal. - 800008 - + + 222001 + May 19, 1997 + 2.2-STABLE after 2.2.2-RELEASE + - - 8.0-CURRENT after introduction of - &man.lockmgr.disown.9; - 800009 - + + 225000 + October 2, 1997 + 2.2.5-RELEASE + - - 8.0-CURRENT after the &man.vn.lock.9; prototype - change. - 800010 - + + 225001 + November 20, 1997 + 2.2-STABLE after 2.2.5-RELEASE + - - 8.0-CURRENT after the &man.VOP.LOCK.9; and - &man.VOP.UNLOCK.9; prototype changes. - 800011 - + + 225002 + December 27, 1997 + 2.2-STABLE after ldconfig -R merge + - - 8.0-CURRENT after introduction of - &man.lockmgr.recursed.9;, &man.BUF.RECURSED.9; and - &man.BUF.ISLOCKED.9; and the removal of - BUF_REFCNT(). - 800012 - + + 226000 + March 24, 1998 + 2.2.6-RELEASE + - - 8.0-CURRENT after introduction of the - ASCII encoding. - 800013 - + + 227000 + July 21, 1998 + 2.2.7-RELEASE + - - 8.0-CURRENT after changing the prototype of - &man.lockmgr.9; and removal of - lockcount() and - LOCKMGR_ASSERT(). - 800014 - + + 227001 + July 21, 1998 + 2.2-STABLE after 2.2.7-RELEASE + - - 8.0-CURRENT after extending the types - of the &man.fts.3; structures. - 800015 - + + 227002 + September 19, 1998 + 2.2-STABLE after semctl2 change + - - 8.0-CURRENT after adding an argumentt to MEXTADD(9) - - 800016 - - - 8.0-CURRENT after the introduction of - LK_NODUP and LK_NOWITNESS options in the - &man.lockmgr.9; space. - 800017 - - - 8.0-CURRENT after the addition of - m_collapse. - 800018 - - - 8.0-CURRENT after the addition of current - working directory, root directory, and jail - directory support to the kern.proc.filedesc - sysctl. - 800019 - - - 8.0-CURRENT after introduction of - &man.lockmgr.assert.9; and - BUF_ASSERT functions. - 800020 - - - 8.0-CURRENT after introduction of - &man.lockmgr.args.9; and LK_INTERNAL flag - removal. - 800021 - - - 8.0-CURRENT after changing the default system ar - to BSD &man.ar.1;. - 800022 - - - 8.0-CURRENT after changing the prototypes of - &man.lockstatus.9; and &man.VOP.ISLOCKED.9;, more - specifically retiring the - struct thread argument. - 800023 - - - 8.0-CURRENT after axing out the - lockwaiters and - BUF_LOCKWAITERS functions, - changing the return value fo brelvp - from void to int and introducing new flags for - &man.lockinit.9;. - 800024 - - - 8.0-CURRENT after adding F_DUP2FD command - to &man.fcntl.2;. - 800025 - - - 8.0-CURRENT after changing the priority parameter - to cv_broadcastpri such that 0 means no priority. - - 800026 - - - 8.0-CURRENT after changing the bpf monitoring ABI - when zerocopy bpf buffers were added. - - 800027 - - - 8.0-CURRENT after adding l_sysid to struct flock. - - 800028 - - - 8.0-CURRENT after reintegration of the - BUF_LOCKWAITERS function and the - addition of &man.lockmgr.waiters.9;. - 800029 - - - 8.0-CURRENT after the introduction of the - &man.rw.try.rlock.9; and &man.rw.try.wlock.9; functions. - - 800030 - - - 8.0-CURRENT after the introduction of the - lockmgr_rw and - lockmgr_args_rw functions. - 800031 - - - 8.0-CURRENT after the implementation of the - openat and related syscalls, introduction of the O_EXEC - flag for the &man.open.2;, and providing the - corresponding linux compatibility syscalls. - 800032 - - - 8.0-CURRENT after added &man.write.2; support for - &man.psm.4; in native operation level. Now arbitrary - commands can be written to /dev/psm%d - and status can be read back from it. - 800033 - - - 8.0-CURRENT after introduction of the - memrchr function. - 800034 - - - 8.0-CURRENT after introduction of the - fdopendir function. - 800035 - - - 8.0-CURRENT after switchover of 802.11 wireless - to multi-bss support (aka vaps). - 800036 - - - 8.0-CURRENT after addition of multi routing - table support (a.k.a. setfib(1), setfib(2)). - 800037 - - - 8.0-CURRENT after removal of netatm and - ISDN4BSD. - 800038 - - - 8.0-CURRENT after removal of sgtty. - 800039 - - - 8.0-CURRENT with kernel NFS lockd client. - 800040 - - - 8.0-CURRENT after addition of arc4random_buf(3) - and arc4random_uniform(3). - 800041 - - - 8.0-CURRENT after addition of cpuctl(4). - 800042 - - - 8.0-CURRENT after changing bpf(4) to use a - single device node, instead of device cloning. - 800043 - - - 8.0-CURRENT after the commit of the first step of - the vimage project renaming global variables to be - virtualized with a V_ prefix with macros to map them - back to their global names. - 800044 - - - 8.0-CURRENT after the integration of the - MPSAFE TTY layer, including changes to various - drivers and utilities that interact with it. - 800045 - - - 8.0-CURRENT after the separation of the GDT - per CPU on amd64 architecture. - 800046 - - - 8.0-CURRENT after removal of VSVTX, VSGID - and VSUID. - 800047 - - - 8.0-CURRENT after converting the kernel NFS mount - code to accept individual mount options in the - nmount() iovec, not just one big - struct nfs_args. - 800048 - - - 8.0-CURRENT after the removal of &man.suser.9; and - &man.suser.cred.9;. - 800049 - - - -
+ + 228000 + November 29, 1998 + 2.2.8-RELEASE + - - Note that 2.2-STABLE sometimes identifies itself as - 2.2.5-STABLE after the 2.2.5-RELEASE. The pattern - used to be year followed by the month, but we decided to change it - to a more straightforward major/minor system starting from 2.2. - This is because the parallel development on several branches made - it infeasible to classify the releases simply by their real - release dates. If you are making a port now, you do not have to - worry about old -CURRENTs; they are listed here just for your - reference. - -
+ + 228001 + November 29, 1998 + 2.2-STABLE after 2.2.8-RELEASE + - - Writing something after - <filename>bsd.port.mk</filename> + + 300000 + February 19, 1996 + 3.0-CURRENT before mount2 change + - Do not write anything after the .include - <bsd.port.mk> line. It usually can be avoided by - including bsd.port.pre.mk somewhere in the - middle of your Makefile and - bsd.port.post.mk at the end. + + 300001 + September 24, 1997 + 3.0-CURRENT after mount2 change + - - You need to include either the - bsd.port.pre.mk/bsd.port.post.mk pair or - bsd.port.mk only; do not mix these two usages. - + + 300002 + June 2, 1998 + 3.0-CURRENT after semctl2 change + - bsd.port.pre.mk only defines a few - variables, which can be used in tests in the - Makefile, bsd.port.post.mk - defines the rest. + + 300003 + June 7, 1998 + 3.0-CURRENT after ioctl arg changes + - Here are some important variables defined in - bsd.port.pre.mk (this is not the complete list, - please read bsd.port.mk for the complete - list). + + 300004 + September 3, 1998 + 3.0-CURRENT after ELF conversion + - - - - - Variable - Description - - + + 300005 + October 16, 1998 + 3.0-RELEASE + - - - ARCH - The architecture as returned by uname - -m (e.g., i386) - + + 300006 + October 16, 1998 + 3.0-CURRENT after 3.0-RELEASE + - - OPSYS - The operating system type, as returned by - uname -s (e.g., - FreeBSD) - + + 300007 + January 22, 1999 + 3.0-STABLE after 3/4 branch + - - OSREL - The release version of the operating system (e.g., - 2.1.5 or - 2.2.7) - + + 310000 + February 9, 1999 + 3.1-RELEASE + - - OSVERSION - The numeric version of the operating system; the same as - __FreeBSD_version. - + + 310001 + March 27, 1999 + 3.1-STABLE after 3.1-RELEASE + - - PORTOBJFORMAT - The object format of the system - (elf or aout; - note that for modern versions of FreeBSD, - aout is deprecated.) - + + 310002 + April 14, 1999 + 3.1-STABLE after C++ constructor/destructor order + change + - - LOCALBASE - The base of the local tree (e.g., - /usr/local/) - + + 320000 + + 3.2-RELEASE + - - PREFIX - Where the port installs itself (see more on - PREFIX). - - - - + + 320001 + May 8, 1999 + 3.2-STABLE + - - If you have to define the variables - USE_IMAKE, USE_X_PREFIX, or - MASTERDIR, do so before including - bsd.port.pre.mk. - + + 320002 + August 29, 1999 + 3.2-STABLE after binary-incompatible IPFW and + socket changes + - Here are some examples of things you can write after - bsd.port.pre.mk: + + 330000 + September 2, 1999 + 3.3-RELEASE + - # no need to compile lang/perl5 if perl5 is already in system -.if ${OSVERSION} > 300003 -BROKEN= perl is in system -.endif + + 330001 + September 16, 1999 + 3.3-STABLE + -# only one shlib version number for ELF -.if ${PORTOBJFORMAT} == "elf" -TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR} -.else -TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR} -.endif + + 330002 + November 24, 1999 + 3.3-STABLE after adding mkstemp3 + to libc + -# software already makes link for ELF, but not for a.out -post-install: -.if ${PORTOBJFORMAT} == "aout" - ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so -.endif + + 340000 + December 5, 1999 + 3.4-RELEASE + - You did remember to use tab instead of spaces after - BROKEN= and - TCL_LIB_FILE=, did you not? - :-). - + + 340001 + December 17, 1999 + 3.4-STABLE + - - 在 wrapper scripts 中使用 <function>exec</function> 述句 + + 350000 + June 20, 2000 + 3.5-RELEASE + - 若某 port 為了執行其他程式而安裝了一個 shell script, - 而該程式同時也是該 script 最後一個動作,那麼需要確定該 script - 是用 exec 述句(statement),舉例而言: + + 350001 + July 12, 2000 + 3.5-STABLE + - #!/bin/sh -exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@" + + 400000 + January 22, 1999 + 4.0-CURRENT after 3.4 branch + - exec 述句以所指定的程式取代了該 shell - 的程序。 若省略 exec ,那麼該 shell 程序 - 將會在程式執行中一直存在於記憶體,這無疑地浪費了系統資源。 + + 400001 + February 20, 1999 + 4.0-CURRENT after change in dynamic linker + handling + - + + 400002 + March 13, 1999 + 4.0-CURRENT after C++ constructor/destructor + order change + - - UIDs 及 GIDs + + 400003 + March 27, 1999 + 4.0-CURRENT after functioning + dladdr3 + - The current list of reserved UIDs and GIDs can be found - in ports/UIDs and - ports/GIDs. + + 400004 + April 5, 1999 + 4.0-CURRENT after __deregister_frame_info dynamic + linker bug fix (also 4.0-CURRENT after EGCS 1.1.2 + integration) + - If your port requires a certain user to be on the installed - system, let the pkg-install script call - pw to create it automatically. Look at - net/cvsup-mirror for an example. - Please note that this is strongly discouraged, please register - user/group ID numbers as stated below. + + 400005 + April 27, 1999 + 4.0-CURRENT after suser9 API change + (also 4.0-CURRENT after newbus) + - If your port must use the same user/group ID number when it is - installed as a binary package as when it was compiled, then you must - choose a free UID from 50 to 999 and register it either in - ports/UIDs (for users) or in - ports/GIDs (for groups). Look at - japanese/Wnn6 for an example. + + 400006 + May 31, 1999 + 4.0-CURRENT after cdevsw registration + change + - Make sure you do not use a UID already used by the system or - other ports. + + 400007 + June 17, 1999 + 4.0-CURRENT after the addition of so_cred for + socket level credentials + - Please include a patch against these two files when you - require a new user or group to be created for your - port. - + + 400008 + June 20, 1999 + 4.0-CURRENT after the addition of a poll syscall + wrapper to libc_r + - - Do things rationally + + 400009 + July 20, 1999 + 4.0-CURRENT after the change of the kernel's + dev_t type to struct + specinfo pointer + - The Makefile should do things simply and - reasonably. If you can make it a couple of lines shorter or more - readable, then do so. Examples include using a make - .if construct instead of a shell - if construct, not redefining - do-extract if you can redefine - EXTRACT* instead, and using - GNU_CONFIGURE instead of CONFIGURE_ARGS - += --prefix=${PREFIX}. + + 400010 + September 25, 1999 + 4.0-CURRENT after fixing a hole + in jail2 + - If you find yourself having to write a lot - of new code to try to do something, please go back and review - bsd.port.mk to see if it contains an - existing implementation of what you are trying to do. While - hard to read, there are a great many seemingly-hard problems for - which bsd.port.mk already provides a - shorthand solution. - + + 400011 + September 29, 1999 + 4.0-CURRENT after the sigset_t + datatype change + - - Respect both <varname>CC</varname> and - <varname>CXX</varname> + + 400012 + November 15, 1999 + 4.0-CURRENT after the cutover to the GCC 2.95.2 + compiler + - The port should respect both CC - and CXX variables. What we mean by this - is that the port should not set the values of these variables - absolutely, overriding existing values; instead, it should append - whatever values it needs to the existing values. This is so that - build options that affect all ports can be set globally. + + 400013 + December 4, 1999 + 4.0-CURRENT after adding pluggable linux-mode + ioctl handlers + - If the port does not respect these variables, - please add NO_PACKAGE=ignores either cc or - cxx to the Makefile. + + 400014 + January 18, 2000 + 4.0-CURRENT after importing OpenSSL + - An example of a Makefile respecting - both CC and CXX - variables follows. Note the ?=: + + 400015 + January 27, 2000 + 4.0-CURRENT after the C++ ABI change in GCC + 2.95.2 from -fvtable-thunks to -fno-vtable-thunks by + default + - CC?= gcc - CXX?= g++ + + 400016 + February 27, 2000 + 4.0-CURRENT after importing OpenSSH + - Here is an example which respects neither - CC nor CXX - variables: + + 400017 + March 13, 2000 + 4.0-RELEASE + - CC= gcc - CXX= g++ + + 400018 + March 17, 2000 + 4.0-STABLE after 4.0-RELEASE + - Both CC and CXX - variables can be defined on FreeBSD systems in - /etc/make.conf. The first example - defines a value if it was not previously set in - /etc/make.conf, preserving any - system-wide definitions. The second example clobbers - anything previously defined. - + + 400019 + May 5, 2000 + 4.0-STABLE after the introduction of delayed + checksums. + - - Respect <varname>CFLAGS</varname> + + 400020 + June 4, 2000 + 4.0-STABLE after merging libxpg4 code into + libc. + - The port should respect the CFLAGS variable. - What we mean by this is that the port should not set the value of - this variable absolutely, overriding the existing value; instead, - it should append whatever values it needs to the existing value. - This is so that build options that affect all ports can be set - globally. + + 400021 + July 8, 2000 + 4.0-STABLE after upgrading Binutils to 2.10.0, + ELF branding changes, and tcsh in the base + system. + - If it does not, please add NO_PACKAGE=ignores - cflags to the Makefile. + + 410000 + July 14, 2000 + 4.1-RELEASE + - An example of a Makefile respecting - the CFLAGS variable follows. Note the - +=: + + 410001 + July 29, 2000 + 4.1-STABLE after 4.1-RELEASE + - CFLAGS+= -Wall -Werror + + 410002 + September 16, 2000 + 4.1-STABLE after setproctitle3 moved from + libutil to libc. + - Here is an example which does not respect the - CFLAGS variable: + + 411000 + September 25, 2000 + 4.1.1-RELEASE + - CFLAGS= -Wall -Werror + + 411001 + + 4.1.1-STABLE after 4.1.1-RELEASE + - The CFLAGS variable is defined on - FreeBSD systems in /etc/make.conf. The - first example appends additional flags to the - CFLAGS variable, preserving any system-wide - definitions. The second example clobbers anything previously - defined. + + 420000 + October 31, 2000 + 4.2-RELEASE + - You should remove optimization flags from the third party - Makefiles. System CFLAGS - contains system-wide optimization flags. An example from - an unmodified Makefile: + + 420001 + January 10, 2001 + 4.2-STABLE after combining libgcc.a and + libgcc_r.a, and associated GCC linkage + changes. + - CFLAGS= -O3 -funroll-loops -DHAVE_SOUND + + 430000 + March 6, 2001 + 4.3-RELEASE + - Using system optimization flags, the - Makefile would look similar to the - following example: + + 430001 + May 18, 2001 + 4.3-STABLE after wint_t introduction. + - CFLAGS+= -DHAVE_SOUND + + 430002 + July 22, 2001 + 4.3-STABLE after PCI powerstate API + merge. + - + + 440000 + August 1, 2001 + 4.4-RELEASE + - - Threading libraries + + 440001 + October 23, 2001 + 4.4-STABLE after d_thread_t introduction. + - The threading library must be linked to the binaries - using a special linker flag -pthread on - &os;. If a port insists on linking - -lpthread or -lc_r - directly, patch it to use PTHREAD_LIBS - variable provided by the ports framework. This variable - usually has the value of -pthread, but - on certain architectures and &os; versions it can have - different values, so do not just hardcode - -pthread into patches and always use - PTHREAD_LIBS. + + 440002 + November 4, 2001 + 4.4-STABLE after mount structure changes (affects + filesystem klds). + - - If building the port errors out with unrecognized - option '-pthread' when setting - PTHREAD_LIBS, it may be desirable to use - gcc as linker by setting - CONFIGURE_ENV to LD=${CC}. - The -pthread option is not supported by - ld directly. - + + 440003 + December 18, 2001 + 4.4-STABLE after the userland components of smbfs + were imported. + - + + 450000 + December 20, 2001 + 4.5-RELEASE + - - Feedback + + 450001 + February 24, 2002 + 4.5-STABLE after the usb structure element + rename. + - Do send applicable changes/patches to the original - author/maintainer for inclusion in next release of the code. This - will only make your job that much easier for the next - release. - + + 450004 + April 16, 2002 + 4.5-STABLE after the + sendmail_enable rc.conf5 + variable was made to take the value + NONE. + - - <filename>README.html</filename> + + 450005 + April 27, 2002 + 4.5-STABLE after moving to XFree86 4 by default + for package builds. + - Do not include the README.html file. This - file is not part of the cvs collection but is generated using the - make readme command. - - + + 450006 + May 1, 2002 + 4.5-STABLE after accept filtering was fixed so + that is no longer susceptible to an easy DoS. + - - Marking a port not installable with <varname>BROKEN</varname>, - <varname>FORBIDDEN</varname>, or <varname>IGNORE</varname> + + 460000 + June 21, 2002 + 4.6-RELEASE + - In certain cases users should be prevented from installing - a port. To tell a user that - a port should not be installed, there are several - make variables that can be used in a port's - Makefile. The value of the following - make variables will be the reason that is - given back to users for why the port refuses to install itself. - Please use the correct make variable as - each make variable conveys radically different meanings to - both users, and to automated systems that depend on the - Makefiles, such as - the ports build cluster, - FreshPorts, and - portsmon. + + 460001 + June 21, 2002 + 4.6-STABLE sendfile2 fixed to comply with + documentation, not to count any headers sent against + the amount of data to be sent from the file. + - - Variables + + 460002 + July 19, 2002 + 4.6.2-RELEASE + - - - BROKEN is reserved for ports that - currently do not compile, install, or deinstall correctly. - It should be used for ports where the problem is - believed to be temporary. + + 460100 + June 26, 2002 + 4.6-STABLE + - If instructed, the build cluster will still attempt to - try to build - them to see if the underlying problem has been - resolved. (However, in general, the cluster is run without - this.) + + 460101 + June 26, 2002 + 4.6-STABLE after MFC of `sed -i'. + - For instance, use - BROKEN when a port: + + 460102 + September 1, 2002 + 4.6-STABLE after MFC of many new pkg_install + features from the HEAD. + - - - does not compile - + + 470000 + October 8, 2002 + 4.7-RELEASE + - - fails its configuration or installation process - + + 470100 + October 9, 2002 + 4.7-STABLE + - - installs files outside of - ${LOCALBASE} - + + 470101 + November 10, 2002 + Start generated __std{in,out,err}p references + rather than __sF. This changes std{in,out,err} from a + compile time expression to a runtime one. + - - does not remove all its files cleanly upon - deinstall (however, it may be acceptable, and desirable, - for the port to leave user-modified files behind) - - + + 470102 + January 23, 2003 + 4.7-STABLE after MFC of mbuf changes to replace + m_aux mbufs by m_tag's + - + + 470103 + February 14, 2003 + 4.7-STABLE gets OpenSSL 0.9.7 + - - FORBIDDEN is used for ports that - do contain a security vulnerability or induce grave - concern regarding the security of a FreeBSD system with - a given port installed (ex: a reputably insecure program - or a program that provides easily exploitable services). - Ports should be marked as FORBIDDEN - as soon as a particular piece of software has a - vulnerability and there is no released upgrade. Ideally - ports should be upgraded as soon as possible when a - security vulnerability is discovered so as to reduce the - number of vulnerable FreeBSD hosts (we like being known - for being secure), however sometimes there is a - noticeable time gap between disclosure of a - vulnerability and an updated release of the - vulnerable software. Do not mark a port - FORBIDDEN for any reason other than - security. - + + 480000 + March 30, 2003 + + - - IGNORE is reserved for ports that - should not be built for some other reason. - It should be used for ports where the problem is - believed to be structural. - The build - cluster will not, under any - circumstances, build ports marked as - IGNORE. For instance, use - IGNORE when a port: + + 480100 + April 5, 2003 + 4.8-STABLE + - - - compiles but does not run properly - + + 480101 + May 22, 2003 + 4.8-STABLE after realpath3 has been made + thread-safe + - - does not work on the installed version of &os; - + + 480102 + August 10, 2003 + 4.8-STABLE 3ware API changes to twe. + - - requires &os; kernel sources to build, but the - user does not have them installed - + + 490000 + October 27, 2003 + 4.9-RELEASE + - - has a distfile which may not be automatically - fetched due to licensing restrictions - + + 490100 + October 27, 2003 + 4.9-STABLE + - - does not work with some other currently installed - port (for instance, the port depends on - www/apache21 but - www/apache13 - is installed) - - + + 490101 + January 8, 2004 + 4.9-STABLE after e_sid was added to struct + kinfo_eproc. + - - If a port would conflict with a currently installed - port (for example, if they install a file in the same - place that perfoms a different function), - use - CONFLICTS instead. - CONFLICTS will set - IGNORE by itself. - - + + 490102 + February 4, 2004 + 4.9-STABLE after MFC of libmap functionality + for rtld. + - - If a port should be marked IGNORE - only on certain architectures, there are two other - convenience variables that will automatically set - IGNORE for you: - ONLY_FOR_ARCHS and - NOT_FOR_ARCHS. Examples: + + 491000 + May 25, 2004 + 4.10-RELEASE + - ONLY_FOR_ARCHS= i386 amd64 + + 491100 + June 1, 2004 + 4.10-STABLE + - NOT_FOR_ARCHS= alpha ia64 sparc64 + + 491101 + August 11, 2004 + 4.10-STABLE after MFC of revision 20040629 of + the package tools + - A custom IGNORE message can be set - using ONLY_FOR_ARCHS_REASON and - NOT_FOR_ARCHS_REASON. Per architecture - entries are possible with - ONLY_FOR_ARCHS_REASON_ARCH - and - NOT_FOR_ARCHS_REASON_ARCH. - + + 491102 + November 16, 2004 + 4.10-STABLE after VM fix dealing with unwiring + of fictitious pages + - - If a port fetches i386 binaries and installs them, - IA32_BINARY_PORT should be set. If this - variable is set, it will be checked whether the - /usr/lib32 directory is available for - IA32 versions of libraries and whether the kernel - has IA32 compatibility compiled in. If one of these two - dependencies is not satisfied, IGNORE will - be set automatically. - + + 492000 + December 17, 2004 + 4.11-RELEASE + - + + 492100 + December 17, 2004 + 4.11-STABLE + - - - Implementation Notes + + 492101 + April 18, 2006 + 4.11-STABLE after adding libdata/ldconfig + directories to mtree files. + - The strings should not be quoted. - Also, the wording of the string should be somewhat - different due to the way the information is shown to the - user. Examples: + + 500000 + March 13, 2000 + 5.0-CURRENT + - BROKEN= this port is unsupported on FreeBSD 5.x + + 500001 + April 18, 2000 + 5.0-CURRENT after adding addition ELF header + fields, and changing our ELF binary branding + method. + - IGNORE= is unsupported on FreeBSD 5.x + + 500002 + May 2, 2000 + 5.0-CURRENT after kld metadata changes. + - resulting in the following output from - make describe: + + 500003 + May 18, 2000 + 5.0-CURRENT after buf/bio changes. + - ===> foobar-0.1 is marked as broken: this port is unsupported on FreeBSD 5.x. + + 500004 + May 26, 2000 + 5.0-CURRENT after binutils upgrade. + - ===> foobar-0.1 is unsupported on FreeBSD 5.x. - - + + 500005 + June 3, 2000 + 5.0-CURRENT after merging libxpg4 code into + libc and after TASKQ interface introduction. + - - Marking a port for removal with <varname>DEPRECATED</varname> - or <varname>EXPIRATION_DATE</varname> + + 500006 + June 10, 2000 + 5.0-CURRENT after the addition of AGP + interfaces. + - Do remember that BROKEN and - FORBIDDEN are to be used as a - temporary resort if a port is not working. Permanently - broken ports should be removed from the tree - entirely. + + 500007 + June 29, 2000 + 5.0-CURRENT after Perl upgrade to 5.6.0 + - When it makes sense to do so, users can be warned about - a pending port removal with DEPRECATED - and EXPIRATION_DATE. The former is - simply a string stating why the port is scheduled for removal; - the latter is a string in ISO 8601 format (YYYY-MM-DD). Both - will be shown to the user. + + 500008 + July 7, 2000 + 5.0-CURRENT after the update of KAME code to + 2000/07 sources. + - It is possible to set DEPRECATED - without an EXPIRATION_DATE (for - instance, recommending a newer version of the port), but - the converse does not make any sense. + + 500009 + July 14, 2000 + 5.0-CURRENT after ether_ifattach() and + ether_ifdetach() changes. + - There is no set policy on how much notice to give. - Current practice seems to be one month for security-related - issues and two months for build issues. This also gives any - interested committers a little time to fix the problems. - + + 500010 + July 16, 2000 + 5.0-CURRENT after changing mtree defaults + back to original variant, adding -L to follow + symlinks. + - - Avoid use of the <literal>.error</literal> construct + + 500011 + July 18, 2000 + 5.0-CURRENT after kqueue API changed. + - The correct way for a Makefile to - signal that the port can not be installed due to some external - factor (for instance, the user has specified an illegal - combination of build options) is to set a nonblank value to - IGNORE. This value will be formatted and - shown to the user by make install. + + 500012 + September 2, 2000 + 5.0-CURRENT after setproctitle3 moved from + libutil to libc. + - It is a common mistake to use .error - for this purpose. The problem with this is that many - automated tools that work with the ports tree will fail in - this situation. The most common occurrence of this is seen - when trying to build /usr/ports/INDEX - (see ). However, even more - trivial commands such as make -V maintainer - also fail in this scenario. This is not acceptable. + + 500013 + September 10, 2000 + 5.0-CURRENT after the first SMPng commit. + - - How to avoid using <literal>.error</literal> - Assume that someone has the line - USE_POINTYHAT=yes - in make.conf. The first of - the next two Makefile snippets will - cause make index to fail, while the - second one will not: - .if USE_POINTYHAT -.error "POINTYHAT is not supported" -.endif - .if USE_POINTYHAT -IGNORE=POINTYHAT is not supported -.endif - + + 500014 + January 4, 2001 + 5.0-CURRENT after <sys/select.h> moved to + <sys/selinfo.h>. + - + + 500015 + January 10, 2001 + 5.0-CURRENT after combining libgcc.a and + libgcc_r.a, and associated GCC linkage + changes. + - - <filename>sysctl</filename> 使用時機 + + 500016 + January 24, 2001 + 5.0-CURRENT after change allowing libc and libc_r + to be linked together, deprecating -pthread + option. + - sysctl 除了在 targets 之外,都不鼓勵使用。 - 這是因為任何 makevar - 的評估都有可能會使得程序執行速度變慢。例如在 - make index 的過程中就會需要用到 - sysctl + + 500017 + February 18, 2001 + 5.0-CURRENT after switch from struct ucred to + struct xucred to stabilize kernel-exported API for + mountd et al. + - 若要使用 &man.sysctl.8; 則必須透過 SYSCTL - 此一變數才可,因為這樣才會包含完整路徑, - 同時也可以隨時因應使用者需求而替換為其他路徑。 - + + 500018 + February 24, 2001 + 5.0-CURRENT after addition of CPUTYPE make + variable for controlling CPU-specific + optimizations. + - - Rerolling distfiles + + 500019 + June 9, 2001 + 5.0-CURRENT after moving machine/ioctl_fd.h to + sys/fdcio.h + - Sometimes the authors of software change the content of - released distfiles without changing the file's name. You have - to verify that the changes are official and have been performed - by the author. It has happened in the past that the distfile - was silently altered on the download servers with the intent - to cause harm or compromise end user security. + + 500020 + June 15, 2001 + 5.0-CURRENT after locale names renaming. + - Put the old distfile aside, download the new one, unpack - them and compare the content with &man.diff.1;. If you see - nothing suspicious, you can update distinfo. - Be sure to summarize the differences in your PR or commit log, - so that other people know that you have taken care to ensure - that nothing bad has happened. + + 500021 + June 22, 2001 + 5.0-CURRENT after Bzip2 import. + Also signifies removal of S/Key. + - You might also want to contact the authors of the software - and confirm the changes with them. - + + 500022 + July 12, 2001 + 5.0-CURRENT after SSE support. + - - Necessary workarounds + + 500023 + September 14, 2001 + 5.0-CURRENT after KSE Milestone 2. + - Sometimes it is necessary to work around bugs in - software included with older versions of &os;. + + 500024 + October 1, 2001 + 5.0-CURRENT after d_thread_t, + and moving UUCP to ports. + - - - Some versions of &man.make.1; were broken - on at least 4.8 and 5.0 with respect to handling - comparisons based on OSVERSION. - This would often lead to failures during - make describe (and thus, the overall - ports make index). The workaround is - to enclose the conditional comparison in spaces, e.g.: - if ( ${OSVERSION} > 500023 ) - Be aware that test-installing a port on 4.9 or 5.2 - will not detect this problem. - + + 500025 + October 4, 2001 + 5.0-CURRENT after ABI change for descriptor + and creds passing on 64 bit platforms. + - + + 500026 + October 9, 2001 + 5.0-CURRENT after moving to XFree86 4 by default + for package builds, and after the new libc strnstr() + function was added. + - + + 500027 + October 10, 2001 + 5.0-CURRENT after the new libc strcasestr() + function was added. + - - Miscellanea + + 500028 + December 14, 2001 + 5.0-CURRENT after the userland components of + smbfs were imported. + - The files - pkg-descr and pkg-plist - should each be double-checked. If you are reviewing a port and feel - they can be worded better, do so. + + (not changed) + + 5.0-CURRENT after the new C99 specific-width + integer types were added. + - Do not copy more copies of the GNU General Public License into - our system, please. + + 500029 + January 29, 2002 + 5.0-CURRENT after a change was made in the return + value of sendfile2. + - Please be careful to note any legal issues! Do not let us - illegally distribute software! - + + 500030 + February 15, 2002 + 5.0-CURRENT after the introduction of the + type fflags_t, which is the + appropriate size for file flags. + - + + 500031 + February 24, 2002 + 5.0-CURRENT after the usb structure element + rename. + - - A Sample <filename>Makefile</filename> + + 500032 + March 16, 2002 + 5.0-CURRENT after the introduction of + Perl 5.6.1. + - Here is a sample Makefile that you can use to - create a new port. Make sure you remove all the extra comments (ones - between brackets)! + + 500033 + April 3, 2002 + 5.0-CURRENT after the + sendmail_enable rc.conf5 + variable was made to take the value + NONE. + - It is recommended that you follow this format (ordering of - variables, empty lines between sections, etc.). This format is - designed so that the most important information is easy to locate. We - recommend that you use portlint to check the - Makefile. + + 500034 + April 30, 2002 + 5.0-CURRENT after mtx_init() grew a third + argument. + - [the header...just to make it easier for us to identify the ports.] -# New ports collection makefile for: xdvi -[the "version required" line is only needed when the PORTVERSION - variable is not specific enough to describe the port.] -# Date created: 26 May 1995 -[this is the person who did the original port to FreeBSD, in particular, the -person who wrote the first version of this Makefile. Remember, this should -not be changed when upgrading the port later.] -# Whom: Satoshi Asami <asami@FreeBSD.org> -# -# $FreeBSD$ -[ ^^^^^^^^^ This will be automatically replaced with RCS ID string by CVS -when it is committed to our repository. If upgrading a port, do not alter -this line back to "$FreeBSD$". CVS deals with it automatically.] -# + + 500035 + May 13, 2002 + 5.0-CURRENT with Gcc 3.1. + -[section to describe the port itself and the master site - PORTNAME - and PORTVERSION are always first, followed by CATEGORIES, - and then MASTER_SITES, which can be followed by MASTER_SITE_SUBDIR. - PKGNAMEPREFIX and PKGNAMESUFFIX, if needed, will be after that. - Then comes DISTNAME, EXTRACT_SUFX and/or DISTFILES, and then - EXTRACT_ONLY, as necessary.] -PORTNAME= xdvi -PORTVERSION= 18.2 -CATEGORIES= print -[do not forget the trailing slash ("/")! - if you are not using MASTER_SITE_* macros] -MASTER_SITES= ${MASTER_SITE_XCONTRIB} -MASTER_SITE_SUBDIR= applications -PKGNAMEPREFIX= ja- -DISTNAME= xdvi-pl18 -[set this if the source is not in the standard ".tar.gz" form] -EXTRACT_SUFX= .tar.Z + + 500036 + May 17, 2002 + 5.0-CURRENT without Perl in /usr/src + -[section for distributed patches -- can be empty] -PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/ -PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz + + 500037 + May 29, 2002 + 5.0-CURRENT after the addition of + dlfunc3 + -[maintainer; *mandatory*! This is the person who is volunteering to - handle port updates, build breakages, and to whom a users can direct - questions and bug reports. To keep the quality of the Ports Collection - as high as possible, we no longer accept new ports that are assigned to - "ports@FreeBSD.org".] -MAINTAINER= asami@FreeBSD.org -COMMENT= A DVI Previewer for the X Window System + + 500038 + July 24, 2002 + 5.0-CURRENT after the types of some struct + sockbuf members were changed and the structure was + reordered. + -[dependencies -- can be empty] -RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript -LIB_DEPENDS= Xpm.5:${PORTSDIR}/graphics/xpm + + 500039 + September 1, 2002 + 5.0-CURRENT after GCC 3.2.1 import. + Also after headers stopped using + _BSD_FOO_T_ and started using _FOO_T_DECLARED. + This value can also be used as a conservative + estimate of the start of bzip21 package + support. + -[this section is for other standard bsd.port.mk variables that do not - belong to any of the above] -[If it asks questions during configure, build, install...] -IS_INTERACTIVE= yes -[If it extracts to a directory other than ${DISTNAME}...] -WRKSRC= ${WRKDIR}/xdvi-new -[If the distributed patches were not made relative to ${WRKSRC}, you - may need to tweak this] -PATCH_DIST_STRIP= -p1 -[If it requires a "configure" script generated by GNU autoconf to be run] -GNU_CONFIGURE= yes -[If it requires GNU make, not /usr/bin/make, to build...] -USE_GMAKE= yes -[If it is an X application and requires "xmkmf -a" to be run...] -USE_IMAKE= yes -[et cetera.] + + 500040 + September 20, 2002 + 5.0-CURRENT after various changes to disk + functions were made in the name of removing dependency + on disklabel structure internals. + -[non-standard variables to be used in the rules below] -MY_FAVORITE_RESPONSE= "yeah, right" + + 500041 + October 1, 2002 + 5.0-CURRENT after the addition of + getopt_long3 to libc. + -[then the special rules, in the order they are called] -pre-fetch: - i go fetch something, yeah + + 500042 + October 15, 2002 + 5.0-CURRENT after Binutils 2.13 upgrade, which + included new FreeBSD emulation, vec, and output + format. + -post-patch: - i need to do something after patch, great + + 500043 + November 1, 2002 + 5.0-CURRENT after adding weak pthread_XXX stubs + to libc, obsoleting libXThrStub.so. + 5.0-RELEASE. + -pre-install: - and then some more stuff before installing, wow + + 500100 + January 17, 2003 + 5.0-CURRENT after branching for + RELENG_5_0 + -[and then the epilogue] -.include <bsd.port.mk> - + + 500101 + February 19, 2003 + <sys/dkstat.h> is empty. Do not include + it. + - - Keeping Up + + 500102 + February 25, 2003 + 5.0-CURRENT after the d_mmap_t interface + change. + - The &os; Ports Collection is constantly changing. Here is - some information on how to keep up. + + 500103 + February 26, 2003 + 5.0-CURRENT after taskqueue_swi changed to run + without Giant, and taskqueue_swi_giant added to run + with Giant. + - - FreshPorts + + 500104 + February 27, 2003 + cdevsw_add() and cdevsw_remove() no + longer exists. + Appearance of MAJOR_AUTO allocation facility. + - One of the easiest ways to learn about updates that have - already been committed is by subscribing to - FreshPorts. - You can select multiple ports to monitor. Maintainers are - strongly encouraged to subscribe, because they will receive - notification of not only their own changes, but also any - changes that any other &os; committer has made. (These are - often necessary to keep up with changes in the underlying - ports framework—although it would be most polite to - receive an advance heads-up from those committing such changes, - sometimes this is overlooked or just simply impractical. - Also, in some cases, the changes are very minor in nature. - We expect everyone to use their best judgement in these - cases.) + + 500105 + March 4, 2003 + 5.0-CURRENT after new cdevsw initialization + method. + - If you wish to use FreshPorts, all you need is an - account. If your registered email address is - @FreeBSD.org, you will see the opt-in link on the - right hand side of the webpages. - For those of you who already have a FreshPorts account, but are not - using your @FreeBSD.org email address, - just change your email to @FreeBSD.org, subscribe, - then change it back again. + + 500106 + March 8, 2003 + devstat_add_entry() has been replaced by + devstat_new_entry() + - FreshPorts also has - a sanity test feature which automatically tests each commit to the - FreeBSD ports tree. If subscribed to this service, you will be - notified of any errors which FreshPorts detects during sanity - testing of your commits. - + + 500107 + March 15, 2003 + Devstat interface change; see sys/sys/param.h + 1.149 + - - The Web Interface to the Source Repository + + 500108 + March 15, 2003 + Token-Ring interface changes. + - It is possible to browse the files in the source repository by - using a web interface. Changes that affect the entire port system - are now documented in the - - CHANGES file. Changes that affect individual ports - are now documented in the - - UPDATING file. However, the definitive answer to any - question is undoubtedly to read the source code of - bsd.port.mk, and associated files. + + 500109 + March 25, 2003 + Addition of vm_paddr_t. + - + + 500110 + March 28, 2003 + 5.0-CURRENT after realpath3 has been made + thread-safe + - - The &os; Ports Mailing List + + 500111 + April 9, 2003 + 5.0-CURRENT after usbhid3 has been synced + with NetBSD + - If you maintain ports, you should consider following the - &a.ports;. Important changes to the way ports work will be announced - there, and then committed to CHANGES. + + 500112 + April 17, 2003 + 5.0-CURRENT after new NSS implementation + and addition of POSIX.1 getpw*_r, getgr*_r + functions + - + + 500113 + May 2, 2003 + 5.0-CURRENT after removal of the old rc + system. + - - The &os; Port Building Cluster on - <systemitem class="fqdomainname">pointyhat.FreeBSD.org</systemitem> + + 501000 + June 4, 2003 + 5.1-RELEASE. + - One of the least-publicized strengths of &os; is that - an entire cluster of machines is dedicated to continually - building the Ports Collection, for each of the major OS - releases and for each Tier-1 architecture. You can find - the results of these builds at - package building logs - and errors. + + 501100 + June 2, 2003 + 5.1-CURRENT after branching for + RELENG_5_1. + - Individual ports are built unless they are specifically - marked with IGNORE. Ports that are - marked with BROKEN will still be attempted, - to see if the underlying problem has been resolved. (This - is done by passing TRYBROKEN to the - port's Makefile.) + + 501101 + June 29, 2003 + 5.1-CURRENT after correcting the semantics of + sigtimedwait(2) and sigwaitinfo(2). + - + + 501102 + July 3, 2003 + 5.1-CURRENT after adding the lockfunc and + lockfuncarg fields to + bus_dma_tag_create9. + - - The &os; Port Distfile Survey + + 501103 + July 31, 2003 + 5.1-CURRENT after GCC 3.3.1-pre 20030711 snapshot + integration. + - The build cluster is dedicated to building the latest - release of each port with distfiles that have already been - fetched. However, as the Internet continually changes, - distfiles can quickly go missing. The FreeBSD - Ports distfiles survey attempts to query every - download site for every port to find out if each distfile - is still currently available. Maintainers are asked to - check this report periodically, not only to speed up the - building process for users, but to help avoid wasting - bandwidth of the sites that volunteer to host all these - distfiles. + + 501104 + August 5, 2003 + 5.1-CURRENT 3ware API changes to twe. + - + + 501105 + August 17, 2003 + 5.1-CURRENT dynamically-linked /bin and /sbin + support and movement of libraries to /lib. + - + + 501106 + September 8, 2003 + 5.1-CURRENT after adding kernel support for + Coda 6.x. + - The &os; Ports Monitoring System + + 501107 + September 17, 2003 + 5.1-CURRENT after 16550 UART constants moved from + <dev/sio/sioreg.h> to + <dev/ic/ns16550.h>. + Also when libmap functionality was unconditionally + supported by rtld. + - Another handy resource is the - - FreeBSD Ports Monitoring System (also known as - portsmon). This system comprises a - database that processes information from several sources - and allows its to be browsed via a web interface. Currently, - the ports Problem Reports (PRs), the error logs from - the build cluster, and individual files from the ports - collection are used. In the future, this will be expanded - to include the distfile survey, as well as other sources. + + 501108 + September 23, 2003 + 5.1-CURRENT after PFIL_HOOKS API update + - To get started, you can view all information about a - particular port by using the - - Overview of One Port. + + 501109 + September 27, 2003 + 5.1-CURRENT after adding kiconv(3) + - As of this writing, this is the only resource available - that maps GNATS PR entries to portnames. (PR submitters - do not always include the portname in their Synopsis, although - we would prefer that they did.) So, portsmon - is a good place to start if you want to find out whether an - existing port has any PRs filed against it and/or any build - errors; or, to find out if a new port that you may be thinking - about creating has already been submitted. - + + 501110 + September 28, 2003 + 5.1-CURRENT after changing default operations + for open and close in cdevsw + - + + 501111 + October 16, 2003 + 5.1-CURRENT after changed layout of + cdevsw + + + + 501112 + October 16, 2003 + 5.1-CURRENT after adding kobj multiple + inheritance + + + + 501113 + October 31, 2003 + 5.1-CURRENT after the if_xname change in + struct ifnet + + + + 501114 + November 16, 2003 + 5.1-CURRENT after changing /bin and /sbin to + be dynamically linked + + + + 502000 + December 7, 2003 + 5.2-RELEASE + + + + 502010 + February 23, 2004 + 5.2.1-RELEASE + + + + 502100 + December 7, 2003 + 5.2-CURRENT after branching for + RELENG_5_2 + + + + 502101 + December 19, 2003 + 5.2-CURRENT after __cxa_atexit/__cxa_finalize + functions were added to libc. + + + + 502102 + January 30, 2004 + 5.2-CURRENT after change of default thread + library from libc_r to libpthread. + + + + 502103 + February 21, 2004 + 5.2-CURRENT after device driver API + megapatch. + + + + 502104 + February 25, 2004 + 5.2-CURRENT after getopt_long_only() + addition. + + + + 502105 + March 5, 2004 + 5.2-CURRENT after NULL is made into ((void *)0) + for C, creating more warnings. + + + + 502106 + March 8, 2004 + 5.2-CURRENT after pf is linked to the build and + install. + + + + 502107 + March 10, 2004 + 5.2-CURRENT after time_t is changed to a + 64-bit value on sparc64. + + + + 502108 + March 12, 2004 + 5.2-CURRENT after Intel C/C++ compiler support in + some headers and execve(2) changes to be more strictly + conforming to POSIX. + + + + 502109 + March 22, 2004 + 5.2-CURRENT after the introduction of the + bus_alloc_resource_any API + + + + 502110 + March 27, 2004 + 5.2-CURRENT after the addition of UTF-8 + locales + + + + 502111 + April 11, 2004 + 5.2-CURRENT after the removal of the getvfsent(3) + API + + + + 502112 + April 13, 2004 + 5.2-CURRENT after the addition of the .warning + directive for make. + + + + 502113 + June 4, 2004 + 5.2-CURRENT after ttyioctl() was made mandatory + for serial drivers. + + + + 502114 + June 13, 2004 + 5.2-CURRENT after import of the ALTQ + framework. + + + + 502115 + June 14, 2004 + 5.2-CURRENT after changing sema_timedwait(9) to + return 0 on success and a non-zero error code on + failure. + + + + 502116 + June 16, 2004 + 5.2-CURRENT after changing kernel dev_t to be + pointer to struct cdev *. + + + + 502117 + June 17, 2004 + 5.2-CURRENT after changing kernel udev_t to + dev_t. + + + + 502118 + June 17, 2004 + 5.2-CURRENT after adding support for + CLOCK_VIRTUAL and CLOCK_PROF to clock_gettime(2) and + clock_getres(2). + + + + 502119 + June 22, 2004 + 5.2-CURRENT after changing network interface + cloning overhaul. + + + + 502120 + July 2, 2004 + 5.2-CURRENT after the update of the package tools + to revision 20040629. + + + + 502121 + July 9, 2004 + 5.2-CURRENT after marking Bluetooth code as + non-i386 specific. + + + + 502122 + July 11, 2004 + 5.2-CURRENT after the introduction of the KDB + debugger framework, the conversion of DDB into a + backend and the introduction of the GDB + backend. + + + + 502123 + July 12, 2004 + 5.2-CURRENT after change to make VFS_ROOT take a + struct thread argument as does vflush. Struct + kinfo_proc now has a user data pointer. The switch of + the default X implementation to + xorg was also made at this + time. + + + + 502124 + July 24, 2004 + 5.2-CURRENT after the change to separate the way + ports rc.d and legacy scripts are started. + + + + 502125 + July 28, 2004 + 5.2-CURRENT after the backout of the previous + change. + + + + 502126 + July 31, 2004 + 5.2-CURRENT after the removal of + kmem_alloc_pageable() and the import of gcc + 3.4.2. + + + + 502127 + August 2, 2004 + 5.2-CURRENT after changing the UMA kernel + API to allow ctors/inits to fail. + + + + 502128 + August 8, 2004 + 5.2-CURRENT after the change of the + vfs_mount signature as well as global replacement of + PRISON_ROOT with SUSER_ALLOWJAIL for the suser(9) + API. + + + + 503000 + August 23, 2004 + 5.3-BETA/RC before the pfil API change + + + + 503001 + September 22, 2004 + 5.3-RELEASE + + + + 503100 + October 16, 2004 + 5.3-STABLE after branching for RELENG_5_3 + + + + 503101 + December 3, 2004 + 5.3-STABLE after addition of glibc style + strftime3 padding options. + + + + 503102 + February 13, 2005 + 5.3-STABLE after OpenBSD's nc(1) import + MFC. + + + + 503103 + February 27, 2005 + 5.4-PRERELEASE after the MFC of the fixes in + <src/include/stdbool.h> and + <src/sys/i386/include/_types.h> + for using the GCC-compatibility of the Intel C/C++ + compiler. + + + + 503104 + February 28, 2005 + 5.4-PRERELEASE after the MFC of the change of + ifi_epoch from wall clock time to uptime. + + + + 503105 + March 2, 2005 + 5.4-PRERELEASE after the MFC of the fix of + EOVERFLOW check in vswprintf(3). + + + + 504000 + April 3, 2005 + 5.4-RELEASE. + + + + 504100 + April 3, 2005 + 5.4-STABLE after branching for RELENG_5_4 + + + + 504101 + May 11, 2005 + 5.4-STABLE after increasing the default + thread stacksizes + + + + 504102 + June 24, 2005 + 5.4-STABLE after the addition of sha256 + + + + 504103 + October 3, 2005 + 5.4-STABLE after the MFC of if_bridge + + + + 504104 + November 13, 2005 + 5.4-STABLE after the MFC of bsdiff and + portsnap + + + + 504105 + January 17, 2006 + 5.4-STABLE after MFC of ldconfig_local_dirs + change. + + + + 505000 + May 12, 2006 + 5.5-RELEASE. + + + + 505100 + May 12, 2006 + 5.5-STABLE after branching for RELENG_5_5 + + + + 600000 + August 18, 2004 + 6.0-CURRENT + + + + 600001 + August 27, 2004 + 6.0-CURRENT after permanently enabling PFIL_HOOKS + in the kernel. + + + + 600002 + August 30, 2004 + 6.0-CURRENT after initial addition of + ifi_epoch to struct if_data. Backed out after a + few days. Do not use this value. + + + + 600003 + September 8, 2004 + 6.0-CURRENT after the re-addition of the + ifi_epoch member of struct if_data. + + + + 600004 + September 29, 2004 + 6.0-CURRENT after addition of the struct inpcb + argument to the pfil API. + + + + 600005 + October 5, 2004 + 6.0-CURRENT after addition of the "-d + DESTDIR" argument to newsyslog. + + + + 600006 + November 4, 2004 + 6.0-CURRENT after addition of glibc style + strftime3 padding options. + + + + 600007 + December 12, 2004 + 6.0-CURRENT after addition of 802.11 framework + updates. + + + + 600008 + January 25, 2005 + 6.0-CURRENT after changes to VOP_*VOBJECT() + functions and introduction of MNTK_MPSAFE flag for + Giantfree filesystems. + + + + 600009 + February 4, 2005 + 6.0-CURRENT after addition of the cpufreq + framework and drivers. + + + + 600010 + February 6, 2005 + 6.0-CURRENT after importing OpenBSD's + nc(1). + + + + 600011 + February 12, 2005 + 6.0-CURRENT after removing semblance of SVID2 + matherr() support. + + + + 600012 + February 15, 2005 + 6.0-CURRENT after increase of default thread + stacks' size. + + + + 600013 + February 19, 2005 + 6.0-CURRENT after fixes in + <src/include/stdbool.h> and + <src/sys/i386/include/_types.h> + for using the GCC-compatibility of the Intel C/C++ + compiler. + + + + 600014 + February 21, 2005 + 6.0-CURRENT after EOVERFLOW checks in + vswprintf(3) fixed. + + + + 600015 + February 25, 2005 + 6.0-CURRENT after changing the struct if_data + member, ifi_epoch, from wall clock time to + uptime. + + + + 600016 + February 26, 2005 + 6.0-CURRENT after LC_CTYPE disk format + changed. + + + + 600017 + February 27, 2005 + 6.0-CURRENT after NLS catalogs disk format + changed. + + + + 600018 + February 27, 2005 + 6.0-CURRENT after LC_COLLATE disk format + changed. + + + + 600019 + February 28, 2005 + Installation of acpica includes into + /usr/include. + + + + 600020 + March 9, 2005 + Addition of MSG_NOSIGNAL flag to send(2) + API. + + + + 600021 + March 17, 2005 + Addition of fields to cdevsw + + + + 600022 + March 21, 2005 + Removed gtar from base system. + + + + 600023 + April 13, 2005 + LOCAL_CREDS, LOCAL_CONNWAIT socket options added + to unix(4). + + + + 600024 + April 19, 2005 + hwpmc4 and related tools added to + 6.0-CURRENT. + + + + 600025 + April 26, 2005 + struct icmphdr added to 6.0-CURRENT. + + + + 600026 + May 3, 2005 + pf updated to 3.7. + + + + 600027 + May 6, 2005 + Kernel libalias and ng_nat introduced. + + + + 600028 + May 13, 2005 + POSIX ttyname_r(3) made available through + unistd.h and libc. + + + + 600029 + May 29, 2005 + 6.0-CURRENT after libpcap updated to v0.9.1 alpha + 096. + + + + 600030 + June 5, 2005 + 6.0-CURRENT after importing NetBSD's + if_bridge(4). + + + + 600031 + June 10, 2005 + 6.0-CURRENT after struct ifnet was broken out + of the driver softcs. + + + + 600032 + July 11, 2005 + 6.0-CURRENT after the import of libpcap + v0.9.1. + + + + 600033 + July 25, 2005 + 6.0-STABLE after bump of all shared library + versions that had not been changed since + RELENG_5. + + + + 600034 + August 13, 2005 + 6.0-STABLE after credential argument is added to + dev_clone event handler. 6.0-RELEASE. + + + + 600100 + November 1, 2005 + 6.0-STABLE after 6.0-RELEASE + + + + 600101 + December 21, 2005 + 6.0-STABLE after incorporating scripts from the + local_startup directories into the base + rcorder8. + + + + 600102 + December 30, 2005 + 6.0-STABLE after updating the ELF types and + constants. + + + + 600103 + January 15, 2006 + 6.0-STABLE after MFC of pidfile(3) API. + + + + 600104 + January 17, 2006 + 6.0-STABLE after MFC of ldconfig_local_dirs + change. + + + + 600105 + February 26, 2006 + 6.0-STABLE after NLS catalog support of + csh(1). + + + + 601000 + May 6, 2006 + 6.1-RELEASE + + + + 601100 + May 6, 2006 + 6.1-STABLE after 6.1-RELEASE. + + + + 601101 + June 22, 2006 + 6.1-STABLE after the import of csup. + + + + 601102 + July 11, 2006 + 6.1-STABLE after the iwi(4) update. + + + + 601103 + July 17, 2006 + 6.1-STABLE after the resolver update to + BIND9, and exposure of reentrant version of + netdb functions. + + + + 601104 + August 8, 2006 + 6.1-STABLE after DSO (dynamic shared + objects) support has been enabled in + OpenSSL. + + + + 601105 + September 2, 2006 + 6.1-STABLE after 802.11 fixups changed the + api for the IEEE80211_IOC_STA_INFO ioctl. + + + + 602000 + November 15, 2006 + 6.2-RELEASE + + + + 602100 + September 15, 2006 + 6.2-STABLE after 6.2-RELEASE. + + + + 602101 + December 12, 2006 + 6.2-STABLE after the addition of Wi-Spy + quirk. + + + + 602102 + December 28, 2006 + 6.2-STABLE after pci_find_extcap() + addition. + + + + 602103 + January 16, 2007 + 6.2-STABLE after MFC of dlsym change to look for + a requested symbol both in specified dso and its + implicit dependencies. + + + + 602104 + January 28, 2007 + 6.2-STABLE after MFC of ng_deflate(4) and + ng_pred1(4) netgraph nodes and new compression and + encryption modes for ng_ppp(4) node. + + + + 602105 + February 20, 2007 + 6.2-STABLE after MFC of BSD licensed version of + gzip1 ported from NetBSD. + + + + 602106 + March 31, 2007 + 6.2-STABLE after MFC of PCI MSI and MSI-X + support. + + + + 602107 + April 6, 2007 + 6.2-STABLE after MFC of ncurses 5.6 and wide + character support. + + + + 602108 + April 11, 2007 + 6.2-STABLE after MFC of CAM 'SG' peripheral + device, which implements a subset of Linux SCSI SG + passthrough device API. + + + + 602109 + April 17, 2007 + 6.2-STABLE after MFC of readline 5.2 patchset + 002. + + + + 602110 + May 2, 2007 + 6.2-STABLE after MFC of pmap_invalidate_cache(), + pmap_change_attr(), pmap_mapbios(), + pmap_mapdev_attr(), and pmap_unmapbios() for amd64 and + i386. + + + + 602111 + June 11, 2007 + 6.2-STABLE after MFC of BOP_BDFLUSH and caused + breakage of the filesystem modules KBI. + + + + 602112 + September 21, 2007 + 6.2-STABLE after libutil(3) MFC's. + + + + 602113 + October 25, 2007 + 6.2-STABLE after MFC of wide and single byte + ctype separation. Newly compiled binary that + references to ctype.h may require a new symbol, + __mb_sb_limit, which is not available on older + systems. + + + + 602114 + October 30, 2007 + 6.2-STABLE after ctype ABI forward compatibility + restored. + + + + 602115 + November 21, 2007 + 6.2-STABLE after back out of wide and single byte + ctype separation. + + + + 603000 + November 25, 2007 + 6.3-RELEASE + + + + 603100 + November 25, 2007 + 6.3-STABLE after 6.3-RELEASE. + + + + 603101 + December 7, 2007 + 6.3-STABLE after fixing + multibyte type support in bit macro. + + + + 603102 + April 24, 2008 + 6.3-STABLE after adding l_sysid to struct + flock. + + + + 603103 + May 27, 2008 + 6.3-STABLE after MFC of the + memrchr function. + + + + 603104 + June 15, 2008 + 6.3-STABLE after MFC of support for + :u variable modifier in + make(1). + + + + 604000 + October 4, 2008 + 6.4-RELEASE + + + + 604100 + October 4, 2008 + 6.4-STABLE after 6.4-RELEASE. + + + + 700000 + July 11, 2005 + 7.0-CURRENT. + + + + 700001 + July 23, 2005 + 7.0-CURRENT after bump of all shared library + versions that had not been changed since + RELENG_5. + + + + 700002 + August 13, 2005 + 7.0-CURRENT after credential argument is added to + dev_clone event handler. + + + + 700003 + August 25, 2005 + 7.0-CURRENT after memmem(3) is added to + libc. + + + + 700004 + October 30, 2005 + 7.0-CURRENT after solisten(9) kernel arguments + are modified to accept a backlog parameter. + + + + 700005 + November 11, 2005 + 7.0-CURRENT after IFP2ENADDR() was changed to + return a pointer to IF_LLADDR(). + + + + 700006 + November 11, 2005 + 7.0-CURRENT after addition of + if_addr member to struct + ifnet and IFP2ENADDR() removal. + + + + 700007 + December 2, 2005 + 7.0-CURRENT after incorporating scripts from the + local_startup directories into the base + rcorder8. + + + + 700008 + December 5, 2005 + 7.0-CURRENT after removal of MNT_NODEV mount + option. + + + + 700009 + December 19, 2005 + 7.0-CURRENT after ELF-64 type changes and symbol + versioning. + + + + 700010 + December 20, 2005 + 7.0-CURRENT after addition of hostb and vgapci + drivers, addition of pci_find_extcap(), and changing + the AGP drivers to no longer map the aperture. + + + + 700011 + December 31, 2005 + 7.0-CURRENT after tv_sec was made time_t on + all platforms but Alpha. + + + + 700012 + January 8, 2006 + 7.0-CURRENT after ldconfig_local_dirs + change. + + + + 700013 + January 12, 2006 + 7.0-CURRENT after changes to + /etc/rc.d/abi to support + /compat/linux/etc/ld.so.cache + being a symlink in a readonly filesystem. + + + + 700014 + January 26, 2006 + 7.0-CURRENT after pts import. + + + + 700015 + March 26, 2006 + 7.0-CURRENT after the introduction of version 2 + of hwpmc4's ABI. + + + + 700016 + April 22, 2006 + 7.0-CURRENT after addition of fcloseall3 + to libc. + + + + 700017 + May 13, 2006 + 7.0-CURRENT after removal of ip6fw. + + + + 700018 + July 15, 2006 + 7.0-CURRENT after import of snd_emu10kx. + + + + 700019 + July 29, 2006 + 7.0-CURRENT after import of OpenSSL + 0.9.8b. + + + + 700020 + September 3, 2006 + 7.0-CURRENT after addition of bus_dma_get_tag + function + + + + 700021 + September 4, 2006 + 7.0-CURRENT after libpcap 0.9.4 and tcpdump 3.9.4 + import. + + + + 700022 + September 9, 2006 + 7.0-CURRENT after dlsym change to look for a + requested symbol both in specified dso and its + implicit dependencies. + + + + 700023 + September 23, 2006 + 7.0-CURRENT after adding new sound IOCTLs for the + OSSv4 mixer API. + + + + 700024 + September 28, 2006 + 7.0-CURRENT after import of OpenSSL + 0.9.8d. + + + + 700025 + November 11, 2006 + 7.0-CURRENT after the addition of libelf. + + + + 700026 + November 26, 2006 + 7.0-CURRENT after major changes on sound + sysctls. + + + + 700027 + November 30, 2006 + 7.0-CURRENT after the addition of Wi-Spy + quirk. + + + + 700028 + December 15, 2006 + 7.0-CURRENT after the addition of sctp calls to + libc + + + + 700029 + January 26, 2007 + 7.0-CURRENT after the GNU gzip1 + implementation was replaced with a BSD licensed + version ported from NetBSD. + + + + 700030 + February 7, 2007 + 7.0-CURRENT after the removal of IPIP tunnel + encapsulation (VIFF_TUNNEL) from the IPv4 multicast + forwarding code. + + + + 700031 + February 23, 2007 + 7.0-CURRENT after the modification of + bus_setup_intr() (newbus). + + + + 700032 + March 2, 2007 + 7.0-CURRENT after the inclusion of ipw(4) and + iwi(4) firmware. + + + + 700033 + March 9, 2007 + 7.0-CURRENT after the inclusion of ncurses wide + character support. + + + + 700034 + March 19, 2007 + 7.0-CURRENT after changes to how insmntque(), + getnewvnode(), and vfs_hash_insert() work. + + + + 700035 + March 26, 2007 + 7.0-CURRENT after addition of a notify mechanism + for CPU frequency changes. + + + + 700036 + April 6, 2007 + 7.0-CURRENT after import of the ZFS + filesystem. + + + + 700037 + April 8, 2007 + 7.0-CURRENT after addition of CAM 'SG' peripheral + device, which implements a subset of Linux SCSI SG + passthrough device API. + + + + 700038 + April 30, 2007 + 7.0-CURRENT after changing getenv3, + putenv3, setenv3 and unsetenv3 to + be POSIX conformant. + + + + 700039 + May 1, 2007 + 7.0-CURRENT after the changes in 700038 were + backed out. + + + + 700040 + May 10, 2007 + 7.0-CURRENT after the addition of flopen3 + to libutil. + + + + 700041 + May 13, 2007 + 7.0-CURRENT after enabling symbol versioning, and + changing the default thread library to libthr. + + + + 700042 + May 19, 2007 + 7.0-CURRENT after the import of gcc + 4.2.0. + + + + 700043 + May 21, 2007 + 7.0-CURRENT after bump of all shared library + versions that had not been changed since + RELENG_6. + + + + 700044 + June 7, 2007 + 7.0-CURRENT after changing the argument for + vn_open()/VOP_OPEN() from file descriptor index to the + struct file *. + + + + 700045 + June 10, 2007 + 7.0-CURRENT after changing pam_nologin8 to + provide an account management function instead of an + authentication function to the PAM framework. + + + + 700046 + June 11, 2007 + 7.0-CURRENT after updated 802.11 wireless + support. + + + + 700047 + June 11, 2007 + 7.0-CURRENT after adding TCP LRO interface + capabilities. + + + + 700048 + June 12, 2007 + 7.0-CURRENT after + RFC 3678 API support added to the IPv4 stack. + Legacy RFC 1724 behavior of the IP_MULTICAST_IF + ioctl has now been removed; 0.0.0.0/8 may no longer + be used to specify an interface index. + Use struct ipmreqn instead. + + + + 700049 + July 3, 2007 + 7.0-CURRENT after importing pf from OpenBSD + 4.1 + + + + (not changed) + + 7.0-CURRENT after adding IPv6 support for + FAST_IPSEC, deleting KAME IPSEC, and renaming + FAST_IPSEC to IPSEC. + + + + 700050 + July 4, 2007 + 7.0-CURRENT after converting setenv/putenv/etc. + calls from traditional BSD to POSIX. + + + + 700051 + July 4, 2007 + 7.0-CURRENT after adding new mmap/lseek/etc + syscalls. + + + + 700052 + July 6, 2007 + 7.0-CURRENT after moving I4B headers to + include/i4b. + + + + 700053 + September 30, 2007 + 7.0-CURRENT after the addition of support for + PCI domains + + + + 700054 + October 25, 2007 + 7.0-CURRENT after MFC of wide and single byte + ctype separation. + + + + 700055 + October 28, 2007 + 7.0-RELEASE, and 7.0-CURRENT after ABI backwards + compatibility to the FreeBSD 4/5/6 versions of the + PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs was + MFCed, which required the ABI of the PCIOCGETCONF + IOCTL to be broken again + + + + 700100 + December 22, 2007 + 7.0-STABLE after 7.0-RELEASE + + + + 700101 + February 8, 2008 + 7.0-STABLE after the MFC of m_collapse(). + + + + 700102 + March 30, 2008 + 7.0-STABLE after the MFC of + kdb_enter_why(). + + + + 700103 + April 10, 2008 + 7.0-STABLE after adding l_sysid to struct + flock. + + + + 700104 + April 11, 2008 + 7.0-STABLE after the MFC of procstat(1). + + + + 700105 + April 11, 2008 + 7.0-STABLE after the MFC of umtx + features. + + + + 700106 + April 15, 2008 + 7.0-STABLE after the MFC of write2 support + to psm4. + + + + 700107 + April 20, 2008 + 7.0-STABLE after the MFC of F_DUP2FD command + to fcntl2. + + + + 700108 + May 5, 2008 + 7.0-STABLE after some lockmgr9 changes, + which makes it necessary to include + sys/lock.h to use + lockmgr9. + + + + 700109 + May 27, 2008 + 7.0-STABLE after MFC of the + memrchr function. + + + + 700110 + August 5, 2008 + 7.0-STABLE after MFC of kernel NFS lockd + client. + + + + 700111 + August 20, 2008 + 7.0-STABLE after addition of physically + contiguous jumbo frame support. + + + + 700112 + August 27, 2008 + 7.0-STABLE after MFC of kernel DTrace + support. + + + + 701000 + November 25, 2008 + 7.1-RELEASE + + + + 701100 + November 25, 2008 + 7.1-STABLE after 7.1-RELEASE. + + + + 701101 + January 10, 2009 + 7.1-STABLE after strndup + merge. + + + + 701102 + January 17, 2009 + 7.1-STABLE after cpuctl(4) support + added. + + + + 701103 + February 7, 2009 + 7.1-STABLE after the merge of + multi-/no-IPv4/v6 jails. + + + + 701104 + February 14, 2009 + 7.1-STABLE after the store of the suspension + owner in the struct mount, and introduction of + vfs_susp_clean method into the struct vfsops. + + + + 701105 + March 12, 2009 + 7.1-STABLE after the incompatible change + to the kern.ipc.shmsegs sysctl to allow allocating + larger SysV shared memory segments on 64bit + architectures. + + + + 701106 + March 14, 2009 + 7.1-STABLE after the merge of a fix for + POSIX semaphore wait operations. + + + + 702000 + April 15, 2009 + 7.2-RELEASE + + + + 702100 + April 15, 2009 + 7.2-STABLE after 7.2-RELEASE. + + + + 702101 + May 15, 2009 + 7.2-STABLE after ichsmb(4) was changed to + use left-adjusted slave addressing to match other + SMBus controller drivers. + + + + 702102 + May 28, 2009 + 7.2-STABLE after MFC of the + fdopendir function. + + + + 702103 + June 06, 2009 + 7.2-STABLE after MFC of PmcTools. + + + + 702104 + July 14, 2009 + 7.2-STABLE after MFC of the + closefrom system call. + + + + 702105 + July 31, 2009 + 7.2-STABLE after MFC of the SYSVIPC ABI + change. + + + + 702106 + September 14, 2009 + 7.2-STABLE after MFC of the x86 PAT + enhancements and addition of d_mmap_single() and + the scatter/gather list VM object type. + + + + 703000 + February 9, 2010 + 7.3-RELEASE + + + + 703100 + February 9, 2010 + 7.3-STABLE after 7.3-RELEASE. + + + + 704000 + December 22, 2010 + 7.4-RELEASE + + + + 704100 + December 22, 2010 + 7.4-STABLE after 7.4-RELEASE. + + + + 800000 + October 11, 2007 + 8.0-CURRENT. Separating wide and single byte + ctype. + + + + 800001 + October 16, 2007 + 8.0-CURRENT after libpcap 0.9.8 and tcpdump 3.9.8 + import. + + + + 800002 + October 21, 2007 + 8.0-CURRENT after renaming kthread_create() + and friends to kproc_create() etc. + + + + 800003 + October 24, 2007 + 8.0-CURRENT after ABI backwards compatibility + to the FreeBSD 4/5/6 versions of the PCIOCGETCONF, + PCIOCREAD and PCIOCWRITE IOCTLs was added, which + required the ABI of the PCIOCGETCONF IOCTL to be + broken again + + + + 800004 + November 12, 2007 + 8.0-CURRENT after agp(4) driver moved from + src/sys/pci to src/sys/dev/agp + + + + 800005 + December 4, 2007 + 8.0-CURRENT after changes to the jumbo frame + allocator (rev 174247). + + + + 800006 + December 7, 2007 + 8.0-CURRENT after the addition of callgraph + capture functionality to hwpmc4. + + + + 800007 + December 25, 2007 + 8.0-CURRENT after kdb_enter() gains a "why" + argument. + + + + 800008 + December 28, 2007 + 8.0-CURRENT after LK_EXCLUPGRADE option + removal. + + + + 800009 + January 9, 2008 + 8.0-CURRENT after introduction of + lockmgr_disown9 + + + + 800010 + January 10, 2008 + 8.0-CURRENT after the vn_lock9 prototype + change. + + + + 800011 + January 13, 2008 + 8.0-CURRENT after the VOP_LOCK9 and + VOP_UNLOCK9 prototype changes. + + + + 800012 + January 19, 2008 + 8.0-CURRENT after introduction of + lockmgr_recursed9, BUF_RECURSED9 and + BUF_ISLOCKED9 and the removal of + BUF_REFCNT(). + + + + 800013 + January 23, 2008 + 8.0-CURRENT after introduction of the + ASCII encoding. + + + + 800014 + January 24, 2008 + 8.0-CURRENT after changing the prototype of + lockmgr9 and removal of + lockcount() and + LOCKMGR_ASSERT(). + + + + 800015 + January 26, 2008 + 8.0-CURRENT after extending the types + of the fts3 structures. + + + + 800016 + February 1, 2008 + 8.0-CURRENT after adding an argument to + MEXTADD(9) + + + + 800017 + February 6, 2008 + 8.0-CURRENT after the introduction of + LK_NODUP and LK_NOWITNESS options in the + lockmgr9 space. + + + + 800018 + February 8, 2008 + 8.0-CURRENT after the addition of + m_collapse. + + + + 800019 + February 9, 2008 + 8.0-CURRENT after the addition of current + working directory, root directory, and jail + directory support to the kern.proc.filedesc + sysctl. + + + + 800020 + February 13, 2008 + 8.0-CURRENT after introduction of + lockmgr_assert9 and + BUF_ASSERT functions. + + + + 800021 + February 15, 2008 + 8.0-CURRENT after introduction of + lockmgr_args9 and LK_INTERNAL flag + removal. + + + + 800022 + (backed out) + 8.0-CURRENT after changing the default system ar + to BSD ar1. + + + + 800023 + February 25, 2008 + 8.0-CURRENT after changing the prototypes of + lockstatus9 and VOP_ISLOCKED9, more + specifically retiring the + struct thread argument. + + + + 800024 + March 1, 2008 + 8.0-CURRENT after axing out the + lockwaiters and + BUF_LOCKWAITERS functions, + changing the return value of + brelvp from void to int and + introducing new flags for lockinit9. + + + + 800025 + March 8, 2008 + 8.0-CURRENT after adding F_DUP2FD command + to fcntl2. + + + + 800026 + March 12, 2008 + 8.0-CURRENT after changing the priority parameter + to cv_broadcastpri such that 0 means no + priority. + + + + 800027 + March 24, 2008 + 8.0-CURRENT after changing the bpf monitoring ABI + when zerocopy bpf buffers were added. + + + + 800028 + March 26, 2008 + 8.0-CURRENT after adding l_sysid to struct + flock. + + + + 800029 + March 28, 2008 + 8.0-CURRENT after reintegration of the + BUF_LOCKWAITERS function and the + addition of lockmgr_waiters9. + + + + 800030 + April 1, 2008 + 8.0-CURRENT after the introduction of the + rw_try_rlock9 and rw_try_wlock9 + functions. + + + + 800031 + April 6, 2008 + 8.0-CURRENT after the introduction of the + lockmgr_rw and + lockmgr_args_rw + functions. + + + + 800032 + April 8, 2008 + 8.0-CURRENT after the implementation of the + openat and related syscalls, introduction of the + O_EXEC flag for the open2, and providing the + corresponding linux compatibility syscalls. + + + + 800033 + April 8, 2008 + 8.0-CURRENT after added write2 support for + psm4 in native operation level. Now arbitrary + commands can be written to + /dev/psm%d and status can be + read back from it. + + + + 800034 + April 10, 2008 + 8.0-CURRENT after introduction of the + memrchr function. + + + + 800035 + April 16, 2008 + 8.0-CURRENT after introduction of the + fdopendir function. + + + + 800036 + April 20, 2008 + 8.0-CURRENT after switchover of 802.11 wireless + to multi-bss support (aka vaps). + + + + 800037 + May 9, 2008 + 8.0-CURRENT after addition of multi routing + table support (aka setfib(1), setfib(2)). + + + + 800038 + May 26, 2008 + 8.0-CURRENT after removal of netatm and + ISDN4BSD. Also, the addition of the + Compact C Type (CTF) tools. + + + + 800039 + June 14, 2008 + 8.0-CURRENT after removal of sgtty. + + + + 800040 + June 26, 2008 + 8.0-CURRENT with kernel NFS lockd client. + + + + 800041 + July 22, 2008 + 8.0-CURRENT after addition of arc4random_buf(3) + and arc4random_uniform(3). + + + + 800042 + August 8, 2008 + 8.0-CURRENT after addition of cpuctl(4). + + + + 800043 + August 13, 2008 + 8.0-CURRENT after changing bpf(4) to use a + single device node, instead of device cloning. + + + + 800044 + August 17, 2008 + 8.0-CURRENT after the commit of the first step of + the vimage project renaming global variables to be + virtualized with a V_ prefix with macros to map them + back to their global names. + + + + 800045 + August 20, 2008 + 8.0-CURRENT after the integration of the + MPSAFE TTY layer, including changes to various + drivers and utilities that interact with it. + + + + 800046 + September 8, 2008 + 8.0-CURRENT after the separation of the GDT + per CPU on amd64 architecture. + + + + 800047 + September 10, 2008 + 8.0-CURRENT after removal of VSVTX, VSGID + and VSUID. + + + + 800048 + September 16, 2008 + 8.0-CURRENT after converting the kernel NFS mount + code to accept individual mount options in the + nmount() iovec, not just one big + struct nfs_args. + + + + 800049 + September 17, 2008 + 8.0-CURRENT after the removal of suser9 + and suser_cred9. + + + + 800050 + October 20, 2008 + 8.0-CURRENT after buffer cache API + change. + + + + 800051 + October 23, 2008 + 8.0-CURRENT after the removal of the + MALLOC9 and FREE9 macros. + + + + 800052 + October 28, 2008 + 8.0-CURRENT after the introduction of accmode_t + and renaming of VOP_ACCESS 'a_mode' argument + to 'a_accmode'. + + + + 800053 + November 2, 2008 + 8.0-CURRENT after the prototype change of + vfs_busy9 and the introduction of its + MBF_NOWAIT and MBF_MNTLSTLOCK flags. + + + + 800054 + November 22, 2008 + 8.0-CURRENT after the addition of buf_ring, + memory barriers and ifnet functions to facilitate + multiple hardware transmit queues for cards that + support them, and a lockless ring-buffer + implementation to enable drivers to more efficiently + manage queuing of packets. + + + + 800055 + November 27, 2008 + 8.0-CURRENT after the addition of Intel™ + Core, Core2, and Atom support to + hwpmc4. + + + + 800056 + November 29, 2008 + 8.0-CURRENT after the introduction of + multi-/no-IPv4/v6 jails. + + + + 800057 + December 1, 2008 + 8.0-CURRENT after the switch to the + ath hal source code. + + + + 800058 + December 12, 2008 + 8.0-CURRENT after the introduction of + the VOP_VPTOCNP operation. + + + + 800059 + December 15, 2008 + 8.0-CURRENT incorporates the + new arp-v2 rewrite. + + + + 800060 + December 19, 2008 + 8.0-CURRENT after the addition of makefs. + + + + 800061 + January 15, 2009 + 8.0-CURRENT after TCP Appropriate Byte + Counting. + + + + 800062 + January 28, 2009 + 8.0-CURRENT after removal of minor(), + minor2unit(), unit2minor(), etc. + + + + 800063 + February 18, 2009 + 8.0-CURRENT after GENERIC config change to use + the USB2 stack, but also the addition of + fdevname(3). + + + + 800064 + February 23, 2009 + 8.0-CURRENT after the USB2 stack is moved to and + replaces dev/usb. + + + + 800065 + February 26, 2009 + 8.0-CURRENT after the renaming of all functions + in libmp(3). + + + + 800066 + February 27, 2009 + 8.0-CURRENT after changing USB devfs handling and + layout. + + + + 800067 + February 28, 2009 + 8.0-CURRENT after adding getdelim(), getline(), + stpncpy(), strnlen(), wcsnlen(), wcscasecmp(), and + wcsncasecmp(). + + + + 800068 + March 2, 2009 + 8.0-CURRENT after renaming the ushub devclass to + uhub. + + + + 800069 + March 9, 2009 + 8.0-CURRENT after libusb20.so.1 was renamed to + libusb.so.1. + + + + 800070 + March 9, 2009 + 8.0-CURRENT after merging IGMPv3 and + Source-Specific Multicast (SSM) to the IPv4 + stack. + + + + 800071 + March 14, 2009 + 8.0-CURRENT after gcc was patched to use C99 + inline semantics in c99 and gnu99 mode. + + + + 800072 + March 15, 2009 + 8.0-CURRENT after the IFF_NEEDSGIANT flag has + been removed; non-MPSAFE network device drivers are no + longer supported. + + + + 800073 + March 18, 2009 + 8.0-CURRENT after the dynamic string token + substitution has been implemented for rpath and needed + paths. + + + + 800074 + March 24, 2009 + 8.0-CURRENT after tcpdump 4.0.0 and + libpcap 1.0.0 import. + + + + 800075 + April 6, 2009 + 8.0-CURRENT after layout of structs vnet_net, + vnet_inet and vnet_ipfw has been changed. + + + + 800076 + April 9, 2009 + 8.0-CURRENT after adding delay profiles in + dummynet. + + + + 800077 + April 14, 2009 + 8.0-CURRENT after removing VOP_LEASE() and + vop_vector.vop_lease. + + + + 800078 + April 15, 2009 + 8.0-CURRENT after struct rt_weight fields have + been added to struct rt_metrics and struct + rt_metrics_lite, changing the layout of struct + rt_metrics_lite. A bump to RTM_VERSION was made, but + backed out. + + + + 800079 + April 15, 2009 + 8.0-CURRENT after struct llentry pointers are + added to struct route and struct route_in6. + + + + 800080 + April 15, 2009 + 8.0-CURRENT after layout of struct inpcb has been + changed. + + + + 800081 + April 19, 2009 + 8.0-CURRENT after the layout of struct + malloc_type has been changed. + + + + 800082 + April 21, 2009 + 8.0-CURRENT after the layout of struct ifnet has + changed, and with if_ref() and if_rele() ifnet + refcounting. + + + + 800083 + April 22, 2009 + 8.0-CURRENT after the implementation of a + low-level Bluetooth HCI API. + + + + 800084 + April 29, 2009 + 8.0-CURRENT after IPv6 SSM and MLDv2 + changes. + + + + 800085 + April 30, 2009 + 8.0-CURRENT after enabling support for + VIMAGE kernel builds with one active image. + + + + 800086 + May 8, 2009 + 8.0-CURRENT after adding support for input lines + of arbitrarily length in patch(1). + + + + 800087 + May 11, 2009 + 8.0-CURRENT after some VFS KPI changes. The + thread argument has been removed from the FSD parts of + the VFS. VFS_* functions do not + need the context any more because it always refers to + curthread. In some special cases, + the old behavior is retained. + + + + 800088 + May 20, 2009 + 8.0-CURRENT after net80211 monitor mode + changes. + + + + 800089 + May 23, 2009 + 8.0-CURRENT after adding UDP control block + support. + + + + 800090 + May 23, 2009 + 8.0-CURRENT after virtualizing interface + cloning. + + + + 800091 + May 27, 2009 + 8.0-CURRENT after adding hierarchical jails + and removing global securelevel. + + + + 800092 + May 29, 2009 + 8.0-CURRENT after changing + sx_init_flags() KPI. The + SX_ADAPTIVESPIN is retired and a + new SX_NOADAPTIVE flag is + introduced to handle the reversed + logic. + + + + 800093 + May 29, 2009 + 8.0-CURRENT after adding mnt_xflag to + struct mount. + + + + 800094 + May 30, 2009 + 8.0-CURRENT after adding + VOP_ACCESSX9. + + + + 800095 + May 30, 2009 + 8.0-CURRENT after changing the polling KPI. + The polling handlers now return the number of packets + processed. A new + IFCAP_POLLING_NOCOUNT is also + introduced to specify that the return value is + not significant and the counting should be + skipped. + + + + 800096 + June 1, 2009 + 8.0-CURRENT after updating to the new netisr + implementation and after changing the way we + store and access FIBs. + + + + + 800097 + June 8, 2009 + 8.0-CURRENT after the introduction of vnet + destructor hooks and infrastructure. + + + + 800097 + June 11, 2009 + 8.0-CURRENT after the introduction of netgraph + outbound to inbound path call detection and queuing, + which also changed the layout of struct + thread. + + + + 800098 + June 14, 2009 + 8.0-CURRENT after OpenSSL 0.9.8k import. + + + + 800099 + June 22, 2009 + 8.0-CURRENT after NGROUPS update and moving + route virtualization into its own VImage + module. + + + + 800100 + June 24, 2009 + 8.0-CURRENT after SYSVIPC ABI change. + + + + 800101 + June 29, 2009 + 8.0-CURRENT after the removal of the + /dev/net/* per-interface character + devices. + + + + 800102 + July 12, 2009 + 8.0-CURRENT after padding was added to + struct sackhint, struct tcpcb, and struct + tcpstat. + + + + 800103 + July 13, 2009 + 8.0-CURRENT after replacing struct tcpopt + with struct toeopt in the TOE driver interface + to the TCP syncache. + + + + 800104 + July 14, 2009 + 8.0-CURRENT after the addition of the + linker-set based per-vnet allocator. + + + + 800105 + July 19, 2009 + 8.0-CURRENT after version bump for all + shared libraries that do not have symbol versioning + turned on. + + + + 800106 + July 24, 2009 + 8.0-CURRENT after introduction of OBJT_SG + VM object type. + + + + 800107 + August 2, 2009 + 8.0-CURRENT after making the newbus subsystem + Giant free by adding the newbus sxlock and + 8.0-RELEASE. + + + + 800108 + November 21, 2009 + 8.0-STABLE after implementing EVFILT_USER kevent + filter. + + + + 800500 + January 7, 2010 + 8.0-STABLE after + __FreeBSD_version bump to make + pkg_add -r use + packages-8-stable. + + + + 800501 + January 24, 2010 + 8.0-STABLE after change of the + scandir(3) and + alphasort(3) prototypes to + conform to SUSv4. + + + + 800502 + January 31, 2010 + 8.0-STABLE after addition of + sigpause(3). + + + + 800503 + February 25, 2010 + 8.0-STABLE after addition of SIOCGIFDESCR + and SIOCSIFDESCR ioctls to network interfaces. These + ioctl can be used to manipulate interface description, + as inspired by OpenBSD. + + + + 800504 + March 1, 2010 + 8.0-STABLE after MFC of importing x86emu, a + software emulator for real mode x86 CPU from + OpenBSD. + + + + 800505 + May 18, 2010 + 8.0-STABLE after MFC of adding liblzma, xz, + xzdec, and lzmainfo. + + + + 801000 + June 14, 2010 + 8.1-RELEASE + + + + 801500 + June 14, 2010 + 8.1-STABLE after 8.1-RELEASE. + + + + 801501 + November 3, 2010 + 8.1-STABLE after KBI change in struct sysentvec, + and implementation of PL_FLAG_SCE/SCX/EXEC/SI and + pl_siginfo for ptrace(PT_LWPINFO) . + + + + 802000 + December 22, 2010 + 8.2-RELEASE + + + + 802500 + December 22, 2010 + 8.2-STABLE after 8.2-RELEASE. + + + + 802501 + February 28, 2011 + 8.2-STABLE after merging DTrace changes, + including support for userland tracing. + + + + 802502 + March 6, 2011 + 8.2-STABLE after merging log2 and log2f + into libm. + + + + 802503 + May 1, 2011 + 8.2-STABLE after upgrade of the gcc to the last + GPLv2 version from the FSF gcc-4_2-branch. + + + + 802504 + May 28, 2011 + 8.2-STABLE after introduction of the KPI and + supporting infrastructure for modular congestion + control. + + + + 802505 + May 28, 2011 + 8.2-STABLE after introduction of Hhook and Khelp + KPIs. + + + + 802506 + May 28, 2011 + 8.2-STABLE after addition of OSD to struct + tcpcb. + + + + 802507 + June 6, 2011 + 8.2-STABLE after ZFS v28 import. + + + + 802508 + June 8, 2011 + 8.2-STABLE after removal of the schedtail event + handler and addition of the sv_schedtail method to + struct sysvec. + + + + 802509 + July 14, 2011 + 8.2-STABLE after merging the SSSE3 support + into binutils. + + + + 802510 + July 19, 2011 + 8.2-STABLE after addition of + RFTSIGZMB flag for + rfork(2). + + + + 802511 + September 9, 2011 + 8.2-STABLE after addition of automatic detection + of USB mass storage devices which do not support the + no synchronize cache SCSI command. + + + + 802512 + September 10, 2011 + 8.2-STABLE after merging of + re-factoring of auto-quirk. + + + + 802513 + October 25, 2011 + 8.2-STABLE after merging of the MAP_PREFAULT_READ + flag to mmap(2). + + + + 802514 + November 16, 2011 + 8.2-STABLE after merging of + addition of posix_fallocate(2) syscall. + + + + 802515 + January 6, 2012 + 8.2-STABLE after merging of addition of the + posix_fadvise(2) system call. + + + + 802516 + January 16, 2012 + 8.2-STABLE after merging gperf 3.0.3 + + + + 802517 + February 15, 2012 + 8.2-STABLE after introduction of the new + extensible sysctl(3) interface NET_RT_IFLISTL + to query address lists (rev + 231769). + + + + 803000 + March 3, 2012 + 8.3-RELEASE. + + + + 803500 + March 3, 2012 + 8.3-STABLE after branching releng/8.3 + (RELENG_8_3). + + + + 804000 + March 28, 2013 + 8.4-RELEASE. + + + + 804500 + March 28, 2013 + 8.4-STABLE after 8.4-RELEASE. + + + + 804504 + September 9, 2014 + 8.4-STABLE after FreeBSD-SA-14:18 + (rev 271305). + + + + 804505 + September 16, 2014 + 8.4-STABLE after FreeBSD-SA-14:19 + (rev 271668). + + + + 804506 + October 21, 2014 + 8.4-STABLE after FreeBSD-SA-14:21 + (rev 273413). + + + + 804507 + November 4, 2014 + 8.4-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, + and FreeBSD-SA-14:25 (rev + 274162). + + + + 804508 + February 25, 2015 + 8-STABLE after FreeBSD-EN-15:01.vt, + FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, + FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind (rev + 279287). + + + + 900000 + August 22, 2009 + 9.0-CURRENT. + + + + 900001 + September 8, 2009 + 9.0-CURRENT after importing x86emu, a software + emulator for real mode x86 CPU from OpenBSD. + + + + 900002 + September 23, 2009 + 9.0-CURRENT after implementing the EVFILT_USER + kevent filter functionality. + + + + 900003 + December 2, 2009 + 9.0-CURRENT after addition of + sigpause(3) and PIE + support in csu. + + + + 900004 + December 6, 2009 + 9.0-CURRENT after addition of libulog and its + libutempter compatibility interface. + + + + 900005 + December 12, 2009 + 9.0-CURRENT after addition of sleepq_sleepcnt(), which can be used to query the number of waiters on a specific waiting queue. + + + + 900006 + January 4, 2010 + 9.0-CURRENT after change of the + scandir(3) and + alphasort(3) prototypes to + conform to SUSv4. + + + + 900007 + January 13, 2010 + 9.0-CURRENT after the removal of utmp(5) and + the addition of utmpx (see + getutxent(3)) for improved + logging of user logins and system events. + + + + 900008 + January 20, 2010 + 9.0-CURRENT after the import of BSDL bc/dc and + the deprecation of GNU bc/dc. + + + + 900009 + January 26, 2010 + 9.0-CURRENT after the addition of SIOCGIFDESCR + and SIOCSIFDESCR ioctls to network interfaces. These + ioctl can be used to manipulate interface description, + as inspired by OpenBSD. + + + + 900010 + March 22, 2010 + 9.0-CURRENT after the import of zlib + 1.2.4. + + + + 900011 + April 24, 2010 + 9.0-CURRENT after adding soft-updates + journalling. + + + + 900012 + May 10, 2010 + 9.0-CURRENT after adding liblzma, xz, xzdec, + and lzmainfo. + + + + 900013 + May 24, 2010 + 9.0-CURRENT after bringing in USB fixes for + linux(4). + + + + 900014 + June 10, 2010 + 9.0-CURRENT after adding Clang. + + + + 900015 + July 22, 2010 + 9.0-CURRENT after the import of BSD grep. + + + + 900016 + July 28, 2010 + 9.0-CURRENT after adding mti_zone to + struct malloc_type_internal. + + + + 900017 + August 23, 2010 + 9.0-CURRENT after changing back default grep to + GNU grep and adding WITH_BSD_GREP knob. + + + + 900018 + August 24, 2010 + 9.0-CURRENT after the + pthread_kill(3) -generated signal + is identified as SI_LWP in si_code. Previously, + si_code was SI_USER. + + + + 900019 + August 28, 2010 + 9.0-CURRENT after addition of the + MAP_PREFAULT_READ flag to + mmap(2). + + + + 900020 + September 9, 2010 + 9.0-CURRENT after adding drain functionality + to sbufs, which also changed the layout of + struct sbuf. + + + + 900021 + September 13, 2010 + 9.0-CURRENT after DTrace has grown support + for userland tracing. + + + + 900022 + October 2, 2010 + 9.0-CURRENT after addition of the BSDL man + utilities and retirement of GNU/GPL man + utilities. + + + + 900023 + October 11, 2010 + 9.0-CURRENT after updating xz to git 20101010 + snapshot. + + + + 900024 + November 11, 2010 + 9.0-CURRENT after libgcc.a was replaced + by libcompiler_rt.a. + + + + 900025 + November 12, 2010 + 9.0-CURRENT after the introduction of the + modularised congestion control. + + + + 900026 + November 30, 2010 + 9.0-CURRENT after the introduction of Serial + Management Protocol (SMP) passthrough and the + XPT_SMP_IO and XPT_GDEV_ADVINFO CAM CCBs. + + + + 900027 + December 5, 2010 + 9.0-CURRENT after the addition of log2 to + libm. + + + + 900028 + December 21, 2010 + 9.0-CURRENT after the addition of the Hhook + (Helper Hook), Khelp (Kernel Helpers) and Object + Specific Data (OSD) KPIs. + + + + 900029 + December 28, 2010 + 9.0-CURRENT after the modification of the TCP + stack to allow Khelp modules to interact with it via + helper hook points and store per-connection data in + the TCP control block. + + + + 900030 + January 12, 2011 + 9.0-CURRENT after the update of libdialog to + version 20100428. + + + + 900031 + February 7, 2011 + 9.0-CURRENT after the addition of + pthread_getthreadid_np(3). + + + + 900032 + February 8, 2011 + 9.0-CURRENT after the removal of the uio_yield + prototype and symbol. + + + + 900033 + February 18, 2011 + 9.0-CURRENT after the update of binutils to + version 2.17.50. + + + + 900034 + March 8, 2011 + 9.0-CURRENT after the struct sysvec + (sv_schedtail) changes. + + + + 900035 + March 29, 2011 + 9.0-CURRENT after the update of base gcc and + libstdc++ to the last GPLv2 licensed revision. + + + + 900036 + April 18, 2011 + 9.0-CURRENT after the removal of libobjc and + Objective-C support from the base system. + + + + 900037 + May 13, 2011 + 9.0-CURRENT after importing the libprocstat(3) + library and fuser(1) utility to the base + system. + + + + 900038 + May 22, 2011 + 9.0-CURRENT after adding a lock flag argument to + VFS_FHTOVP(9). + + + + 900039 + June 28, 2011 + 9.0-CURRENT after importing pf from OpenBSD + 4.5. + + + + 900040 + July 19, 2011 + Increase default MAXCPU for FreeBSD to 64 on + amd64 and ia64 and to 128 for XLP (mips). + + + + 900041 + August 13, 2011 + 9.0-CURRENT after the implementation of Capsicum + capabilities; fget(9) gains a rights argument. + + + + 900042 + August 28, 2011 + Bump shared libraries' version numbers for + libraries whose ABI has changed in preparation for + 9.0. + + + + 900043 + September 2, 2011 + Add automatic detection of USB mass storage + devices which do not support the no synchronize cache + SCSI command. + + + + 900044 + September 10, 2011 + Re-factor auto-quirk. 9.0-RELEASE. + + + + + + 900045 + January 2, 2012 + 9-CURRENT after MFC of true/false from + 1000002. + + + + 900500 + January 2, 2012 + 9.0-STABLE. + + + + 900501 + January 6, 2012 + 9.0-STABLE after merging of addition of the + posix_fadvise(2) system call. + + + + 900502 + January 16, 2012 + 9.0-STABLE after merging gperf 3.0.3 + + + + 900503 + February 15, 2012 + 9.0-STABLE after introduction of the new + extensible sysctl(3) interface NET_RT_IFLISTL + to query address lists (rev + 231768). + + + + 900504 + March 3, 2012 + 9.0-STABLE after changes related to mounting + of filesystem inside a jail (rev + 232728). + + + + 900505 + March 13, 2012 + 9.0-STABLE after introduction of new tcp(4) + socket options: TCP_KEEPINIT, TCP_KEEPIDLE, + TCP_KEEPINTVL, and TCP_KEEPCNT (rev + 232945). + + + + 900506 + May 22, 2012 + 9.0-STABLE after introduction of the + quick_exit function and + related changes required for C++11 (rev + 235786). + + + + 901000 + August 5, 2012 + 9.1-RELEASE. + + + + 901500 + August 6, 2012 + 9.1-STABLE after branching releng/9.1 + (RELENG_9_1). + + + + 901501 + November 11, 2012 + 9.1-STABLE after LIST_PREV() added to queue.h + (rev 242893) and KBI change in USB + serial devices (rev + 240659). + + + + 901502 + November 28, 2012 + 9.1-STABLE after USB serial jitter buffer + requires rebuild of USB serial device modules. + + + + 901503 + February 21, 2013 + 9.1-STABLE after USB moved to the driver + structure requiring a rebuild of all USB modules. + Also indicates the presence of nmtree. + + + + 901504 + March 15, 2013 + 9.1-STABLE after install gained -l, -M, -N and + related flags and cat gained the -l option. + + + + 901505 + June 13, 2013 + 9.1-STABLE after fixes in ctfmerge bootstrapping + (rev 249243). + + + + 902001 + August 3, 2013 + releng/9.2 branched from + stable/9 + (rev 253912). + + + + 902501 + August 2, 2013 + 9.2-STABLE after creation of + releng/9.2 branch + (rev 253913). + + + + 902502 + August 26, 2013 + 9.2-STABLE after inclusion of the + PIM_RESCAN CAM path inquiry flag + (rev 254938). + + + + 902503 + August 27, 2013 + 9.2-STABLE after inclusion of the + SI_UNMAPPED cdev flag + (rev 254979). + + + + 902504 + October 22, 2013 + 9.2-STABLE after inclusion of support for + first boot rc8 scripts + (rev 256917). + + + + 902505 + December 12, 2013 + 9.2-STABLE after Heimdal encoding fix + (rev 259448). + + + + 902506 + December 31, 2013 + 9-STABLE after MAP_STACK fixes + (rev 260082). + + + + 902507 + March 5, 2014 + 9-STABLE after upgrade of libc++ to 3.4 release + (rev 262801). + + + + 902508 + March 14, 2014 + 9-STABLE after merge of the Radeon KMS driver + (rev 263170). + + + + 902509 + March 21, 2014 + 9-STABLE after upgrade of llvm/clang to 3.4 release + (rev 263509). + + + + 902510 + March 27, 2014 + 9-STABLE after merge of the vt(4) driver + (rev 263818). + + + + 902511 + March 27, 2014 + 9-STABLE after FreeBSD-SA-14:06.openssl + (rev 264289). + + + + 902512 + April 30, 2014 + 9-STABLE after FreeBSD-SA-14:08.tcp + (rev 265123). + + + + 903000 + June 20, 2014 + 9-RC1 releng/9.3 branch + (rev 267656). + + + + 903500 + June 20, 2014 + 9.3-STABLE releng/9.3 branch + (rev 267657). + + + + 903501 + July 8, 2014 + 9-STABLE after FreeBSD-SA-14:17.kmem + (rev 268433). + + + + 903502 + August 19, 2014 + 9-STABLE after SOCK_DGRAM + bug fix (rev 269789). + + + + 903503 + September 9, 2014 + 9-STABLE after FreeBSD-SA-14:18 + (rev 269687). + + + + 903504 + September 16, 2014 + 9-STABLE after FreeBSD-SA-14:19 + (rev 271668). + + + + 903505 + October 21, 2014 + 9-STABLE after FreeBSD-SA-14:20, FreeBSD-SA-14:21, + and FreeBSD-SA-14:22 (rev + 273412). + + + + 903506 + November 4, 2014 + 9-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, + and FreeBSD-SA-14:25 (rev + 274162). + + + + 903507 + December 13, 2014 + 9-STABLE after merging an important fix to the LLVM + vectorizer, which could lead to buffer overruns in some + cases (rev 275742). + + + + 903508 + February 25, 2015 + 9-STABLE after FreeBSD-EN-15:01.vt, + FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, + FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind (rev + 279287). + + + + 903509 + February 29, 2016 + 9-STABLE after bumping the default value of + compat.linux.osrelease to + 2.6.18 to support the linux-c6-* ports + out of the box (rev 296219). + + + + 1000000 + September 26, 2011 + 10.0-CURRENT. + + + + 1000001 + November 4, 2011 + 10-CURRENT after addition of the posix_fadvise(2) + system call. + + + + 1000002 + December 12, 2011 + 10-CURRENT after defining boolean true/false in + sys/types.h, sizeof(bool) may have changed (rev + 228444). 10-CURRENT after + xlocale.h was introduced (rev + 227753). + + + + 1000003 + December 16, 2011 + 10-CURRENT after major changes to carp(4), + changing size of struct in_aliasreq, + struct in6_aliasreq (rev + 228571) and straitening arguments + check of SIOCAIFADDR (rev + 228574). + + + + 1000004 + January 1, 2012 + 10-CURRENT after the removal of skpc(9) and the + addition of memcchr(9) (rev + 229200). + + + + 1000005 + January 16, 2012 + 10-CURRENT after the removal of support for + SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, + SIOCSIFDSTADDR ioctls (rev + 230207). + + + + 1000006 + January 26, 2012 + 10-CURRENT after introduction of read capacity + data asynchronous notification in the cam(4) layer + (rev 230590). + + + + 1000007 + February 5, 2012 + 10-CURRENT after introduction of new tcp(4) + socket options: TCP_KEEPINIT, TCP_KEEPIDLE, + TCP_KEEPINTVL, and TCP_KEEPCNT (rev + 231025). + + + + 1000008 + February 11, 2012 + 10-CURRENT after introduction of the new + extensible sysctl(3) interface NET_RT_IFLISTL + to query address lists (rev + 231505). + + + + 1000009 + February 25, 2012 + 10-CURRENT after import of libarchive 3.0.3 + (rev 232153). + + + + 1000010 + March 31, 2012 + 10-CURRENT after xlocale cleanup (rev + 233757). + + + + 1000011 + April 16, 2012 + 10-CURRENT import of LLVM/Clang 3.1 trunk r154661 + (rev 234353). + + + + 1000012 + May 2, 2012 + 10-CURRENT jemalloc import + (rev 234924). + + + + 1000013 + May 22, 2012 + 10-CURRENT after byacc import + (rev 235788). + + + + 1000014 + June 27, 2012 + 10-CURRENT after BSD sort becoming the default + sort (rev 237629). + + + + 1000015 + July 12, 2012 + 10-CURRENT after import of OpenSSL 1.0.1c + (rev 238405). + + + + (not changed) + July 13, 2012 + 10-CURRENT after the fix for LLVM/Clang 3.1 + regression (rev 238429). + + + + 1000016 + August 8, 2012 + 10-CURRENT after KBI change in ucom4 + (rev 239179). + + + + 1000017 + August 8, 2012 + 10-CURRENT after adding streams feature to the + USB stack (rev 239214). + + + + 1000018 + September 8, 2012 + 10-CURRENT after major rewrite of pf4 + (rev 240233). + + + + 1000019 + October 6, 2012 + 10-CURRENT after pfil9 KBI/KPI changed + to supply packets in net byte order to AF_INET + filter hooks (rev 241245). + + + + 1000020 + October 16, 2012 + 10-CURRENT after the network interface cloning + KPI changed and struct if_clone becoming opaque (rev + 241610). + + + + 1000021 + October 22, 2012 + 10-CURRENT after removal of support for + non-MPSAFE filesystems and addition of support for + FUSEFS (rev + 241519, + 241897). + + + + 1000022 + October 22, 2012 + 10-CURRENT after the entire IPv4 stack switched + to network byte order for IP packet header storage + (rev 241913). + + + + 1000023 + November 5, 2012 + 10-CURRENT after jitter buffer in the common USB + serial driver code, to temporarily store characters + if the TTY buffer is full. Add flow stop and start + signals when this happens (rev + 242619). + + + + 1000024 + November 5, 2012 + 10-CURRENT after clang was made the default + compiler on i386 and amd64 + (rev 242624). + + + + 1000025 + November 17, 2012 + 10-CURRENT after the sin6_scope_id member + variable in struct sockaddr_in6 was changed to being + filled by the kernel before passing the structure to + the userland via sysctl or routing socket. This means + the KAME-specific embedded scope id in + sin6_addr.s6_addr[2] is always cleared in userland + application (rev 243443). + + + + 1000026 + January 11, 2013 + 10-CURRENT after install gained the -N flag (rev + 245313). May also be used to + indicate the presence of nmtree. + + + + 1000027 + January 29, 2013 + 10-CURRENT after cat gained the -l flag (rev + 246083). + + + + 1000028 + February 13, 2013 + 10-CURRENT after USB moved to the driver + structure requiring a rebuild of all USB modules (rev + 246759). + + + + 1000029 + March 4, 2013 + 10-CURRENT after the introduction of tickless + callout facility which also changed the layout of struct + callout (rev 247777). + + + + 1000030 + March 12, 2013 + 10-CURRENT after KPI breakage introduced in the + VM subsystem to support read/write locking (rev + 248084). + + + + 1000031 + April 26, 2013 + 10-CURRENT after the dst parameter of the + ifnet if_output method was + changed to take const qualifier (rev + 249925). + + + + 1000032 + May 1, 2013 + 10-CURRENT after the introduction of the + accept4 (rev + 250154) and + pipe2 (rev + 250159) system calls. + + + + 1000033 + May 21, 2013 + 10-CURRENT after flex 2.5.37 import (rev + 250881). + + + + 1000034 + June 3, 2013 + 10-CURRENT after the addition of these + functions to libm: cacos, + cacosf, + cacosh, + cacoshf, + casin, + casinf, + casinh, + casinhf, + catan, + catanf, + catanh, + catanhf, + logl, + log2l, + log10l, + log1pl, + expm1l (rev + 251294). + + + + 1000035 + June 8, 2013 + 10-CURRENT after the introduction of the + aio_mlock system call (rev + 251526). + + + + 1000036 + July 9, 2013 + 10-CURRENT after the addition of a new function + to the kernel GSSAPI module's + function call interface (rev + 253049). + + + + 1000037 + July 9, 2013 + 10-CURRENT after the migration of statistics + structures to PCPU counters. + Changed structures include: ahstat, + arpstat, + espstat, + icmp6_ifstat, + icmp6stat, + in6_ifstat, + ip6stat, + ipcompstat, + ipipstat, + ipsecstat, + mrt6stat, + mrtstat, + pfkeystat, + pim6stat, + pimstat, + rip6stat, + udpstat (rev + 253081). + + + + 1000038 + July 16, 2013 + 10-CURRENT after making ARM + EABI the default ABI on arm, + armeb, armv6, and armv6eb architectures + (rev 253396). + + + + 1000039 + July 22, 2013 + 10-CURRENT after CAM + and mps4 driver scanning changes + (rev 253549). + + + + 1000040 + July 24, 2013 + 10-CURRENT after addition of libusb + pkgconf files (rev 253638). + + + + 1000041 + August 5, 2013 + 10-CURRENT after change from + time_second to + time_uptime + in PF_INET6 + (rev 253970). + + + + 1000042 + August 9, 2013 + 10-CURRENT after VM subsystem change to unify + soft and hard busy mechanisms + (rev 254138). + + + + 1000043 + August 13, 2013 + 10-CURRENT after WITH_ICONV is + enabled by default. A new src.conf5 option, + WITH_LIBICONV_COMPAT (disabled by + default) adds libiconv_open to + provide compatibility with the + libiconv port (rev + 254273). + + + + 1000044 + August 15, 2013 + 10-CURRENT after libc.so + conversion to an ld1 + script (rev + 251668, + 254358). + + + + 1000045 + August 15, 2013 + 10-CURRENT after devfs programming interface + change by replacing the cdevsw flag + D_UNMAPPED_IO with the struct cdev + flag SI_UNMAPPED (rev + 254389). + + + + 1000046 + August 19, 2013 + 10-CURRENT after addition of + M_PROTO[9-12] and removal of + M_FRAG|M_FIRSTFRAG|M_LASTFRAG + mbuf flags (rev 254524, + 254526). + + + + 1000047 + August 21, 2013 + 10-CURRENT after stat2 update to allow + storing some Windows/DOS and CIFS file attributes + as stat2 flags (rev + 254627). + + + + 1000048 + August 22, 2013 + 10-CURRENT after modification of structure + xsctp_inpcb + (rev 254672). + + + + 1000049 + August 24, 2013 + 10-CURRENT after physio9 support for + devices that do not function properly with split + I/O, such as sa4 (rev + 254760). + + + + 1000050 + August 24, 2013 + 10-CURRENT after modifications of structure + mbuf (rev + 254780, + 254799, + 254804, + 254807 + 254842). + + + + 1000051 + August 25, 2013 + 10-CURRENT after Radeon KMS driver import + (rev 254885, + 254887). + + + + 1000052 + September 3, 2013 + 10-CURRENT after import of NetBSD + libexecinfo is connected to the + build (rev 255180). + + + + 1000053 + September 6, 2013 + 10-CURRENT after API and ABI changes to the + Capsicum framework (rev + 255305). + + + + 1000054 + September 6, 2013 + 10-CURRENT after gcc and + libstdc++ are no longer built by + default (rev 255321). + + + + 1000055 + September 6, 2013 + 10-CURRENT after addition of + MMAP_32BIT mmap2 flag + (rev 255426). + + + + 1000100 + December 7, 2013 + releng/10.0 branched from + stable/10 + (rev 259065). + + + + 1000500 + October 10, 2013 + 10-STABLE after branch from head/ + (rev 256283). + + + + 1000501 + October 22, 2013 + 10-STABLE after addition of first-boot rc8 + support (rev 256916). + + + + 1000502 + November 20, 2013 + 10-STABLE after removal of iconv symbols from + libc.so.7 + (rev 258398). + + + + 1000510 + December 7, 2013 + releng/10.0 __FreeBSD_version + update to prevent the value from going backwards + (rev 259067). + + + + 1000700 + December 7, 2013 + 10-STABLE after releng/10.0 branch + (rev 259069). + + + + 1000701 + December 15, 2013 + 10.0-STABLE after Heimdal encoding fix + (rev 259447). + + + + 1000702 + December 31, 2013 + 10-STABLE after MAP_STACK fixes + (rev 260135). + + + + 1000703 + March 5, 2014 + 10-STABLE after upgrade of libc++ to 3.4 release + (rev 262801). + + + + 1000704 + March 7, 2014 + 10-STABLE after MFC of the vt(4) driver + (rev 262861). + + + + 1000705 + March 21, 2014 + 10-STABLE after upgrade of llvm/clang to 3.4 release + (rev 263508). + + + + 1000706 + April 6, 2014 + 10-STABLE after GCC support for + __block definition (rev + 264214). + + + + 1000707 + April 8, 2014 + 10-STABLE after FreeBSD-SA-14:06.openssl (rev + 264289). + + + + 1000708 + April 30, 2014 + 10-STABLE after FreeBSD-SA-14:07.devfs, + FreeBSD-SA-14:08.tcp, and FreeBSD-SA-14:09.openssl (rev + 265122). + + + + 1000709 + May 13, 2014 + 10-STABLE after support for UDP-Lite protocol (RFC + 3828) (rev 265946). + + + + 1000710 + June 13, 2014 + 10-STABLE after changes to strcasecmp3, moving + strcasecmp_l() and + strncasecmp_l() from + <string.h> to + <strings.h> for POSIX 2008 + compliance (rev 267465). + + + + 1000711 + July 8, 2014 + 10-STABLE after FreeBSD-SA-14:17.kmem + (rev 268432). + + + + 1000712 + August 1, 2014 + 10-STABLE after nfsd8 4.1 merge + (rev 269398). + + + + 1000713 + August 3, 2014 + 10-STABLE after regex3 library update + to add > and < + delimiters (rev 269484). + + + + 1000714 + August 3, 2014 + 10-STABLE after SOCK_DGRAM + bug fix (rev 269490). + + + + 1000715 + September 9, 2014 + 10-STABLE after FreeBSD-SA-14:18 + (rev 269686). + + + + 1000716 + September 16, 2014 + 10-STABLE after FreeBSD-SA-14:19 + (rev 271667). + + + + 1000717 + September 18, 2014 + 10-STABLE after i915 HW context support + (rev 271816). + + + + 1001000 + October 2, 2014 + 10.1-RC1 after releng/10.1 branch + (rev 272463). + + + + 1001500 + October 2, 2014 + 10-STABLE after releng/10.1 branch + (rev 272464). + + + + 1001501 + October 21, 2014 + 10-STABLE after FreeBSD-SA-14:20, FreeBSD-SA-14:22, + and FreeBSD-SA-14:23 (rev + 273411). + + + + 1001502 + November 4, 2014 + 10-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, + and FreeBSD-SA-14:25 (rev + 274162). + + + + 1001503 + November 25, 2014 + 10-STABLE after merging new libraries/utilities (dpv + and figpar) for data throughput visualization (rev + 275040). + + + + 1001504 + December 13, 2014 + 10-STABLE after merging an important fix to the LLVM + vectorizer, which could lead to buffer overruns in some + cases (rev 275742). + + + + 1001505 + January 3, 2015 + 10-STABLE after merging some arm constants in r276312 + (rev 276633). + + + + 1001506 + January 12, 2015 + 10-STABLE after merging max table size update for + yacc (rev 277087). + + + + 1001507 + January 27, 2015 + 10-STABLE after changes to the UDP tunneling callback + to provide a context pointer and the source sockaddr (rev + 277790). + + + + 1001508 + February 18, 2015 + 10-STABLE after addition of the + CDAI_TYPE_EXT_INQ request type (rev + 278974). + + + + 1001509 + February 25, 2015 + 10-STABLE after FreeBSD-EN-15:01.vt, + FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, + FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind (rev + 279287). + + + + 1001511 + 19 March, 2015 + 10-STABLE after sys/capability.h + is renamed to sys/capsicum.h (rev + 280224/). + + + + 1001512 + 24 March, 2015 + 10-STABLE after addition of new mtio(4), sa(4) ioctls + (rev 281954). + + + + 1001513 + 24 April, 2015 + 10-STABLE after starting the process of removing the + use of the deprecated "M_FLOWID" flag from the network + code (rev 281955). + + + + 1002000 + 24 July, 2015 + releng/10.2 branched from + 10-STABLE (rev 285830). + + + + 1002500 + 24 July, 2015 + 10-STABLE after releng/10.2 + branched from 10-STABLE (rev + 285831). + + + + 1002501 + 8 October, 2015 + 10-STABLE after merge of ZFS changes that affected + the internal interface of zfeature_info structure (rev + 28857). + + + + + 1100000 + October 10, 2013 + 11.0-CURRENT + (rev 256284). + + + + 1100001 + October 19, 2013 + + 11.0-CURRENT after addition of support for "first + boot" rc.d scripts, so ports can make + use of this (rev 256776). + + + + 1100002 + November 5, 2013 + + 11.0-CURRENT after dropping support for historic + ioctls (rev 257696). + + + + 1100003 + November 17, 2013 + 11.0-CURRENT after iconv changes + (rev 258284). + + + + 1100004 + December 15, 2013 + 11.0-CURRENT after the behavior change of + gss_pseudo_random introduced in + r259286 (rev 259424). + + + + 1100005 + December 28, 2013 + + 11.0-CURRENT after r259951 - Do not coalesce entries + in vm_map_stack() (rev + 260010). + + + + 1100006 + January 28, 2014 + 11.0-CURRENT after upgrades of libelf and libdwarf + (rev 261246). + + + + 1100007 + January 30, 2014 + 11.0-CURRENT after upgrade of libc++ to 3.4 release + (rev 261283). + + + + 1100008 + February 14, 2014 + 11.0-CURRENT after libc++ 3.4 ABI compatibility fix + (rev 261801). + + + + 1100009 + February 16, 2014 + 11.0-CURRENT after upgrade of llvm/clang to 3.4 + release (rev 261991). + + + + 1100010 + February 28, 2014 + 11.0-CURRENT after upgrade of ncurses to 5.9 release + (rev 262629). + + + + 1100011 + March 13, 2014 + 11.0-CURRENT after ABI change in struct if_data + (rev 263102). + + + + 1100012 + March 14, 2014 + 11.0-CURRENT after removal of Novell IPX protocol + support (rev 263140). + + + + 1100013 + March 14, 2014 + 11.0-CURRENT after removal of AppleTalk protocol + support (rev 263152). + + + + 1100014 + March 16, 2014 + 11.0-CURRENT after renaming + <sys/capability.h> to + <sys/capsicum.h> to avoid a + clash with similarly named headers in other operating + systems. A compatibility header is left in place to limit + build breakage, but will be deprecated in due course + (rev 263235). + + + + 1100015 + March 22, 2014 + 11.0-CURRENT after cnt rename to + vm_cnt (rev + 263620). + + + + 1100016 + March 23, 2014 + 11.0-CURRENT after addition of + armv6hf TARGET_ARCH + (rev 263660). + + + + 1100017 + April 4, 2014 + 11.0-CURRENT after GCC support for + __block definition (rev + 264121). + + + + 1100018 + April 6, 2014 + 11.0-CURRENT after support for UDP-Lite protocol (RFC + 3828) (rev 264212). + + + + 1100019 + April 8, 2014 + 11.0-CURRENT after FreeBSD-SA-14:06.openssl (rev + 264265). + + + + 1100020 + May 1, 2014 + 11.0-CURRENT after removing lindev in favor of having + /dev/full by default (rev + 265212). + + + + 1100021 + May 6, 2014 + 11.0-CURRENT after src.opts.mk + changes, decoupling make.conf5 from + buildworld (rev + 265419). + + + + 1100022 + May 30, 2014 + 11.0-CURRENT after changes to strcasecmp3, + moving strcasecmp_l() and + strncasecmp_l() from + <string.h> to + <strings.h> for POSIX 2008 + compliance (rev 266865). + + + + 1100023 + June 13, 2014 + 11.0-CURRENT after the CUSE library and kernel module + have been attached to the build by default (rev + 267440). + + + + 1100024 + June 27, 2014 + 11.0-CURRENT after sysctl3 + API change (rev + 267992). + + + + 1100025 + June 30, 2014 + 11.0-CURRENT after regex3 library update + to add > and < + delimiters (rev 268066). + + + + 1100026 + July 1, 2014 + 11.0-CURRENT after the internal interface between the + NFS modules, including the krpc, was changed by (rev + 268115). + + + + 1100027 + July 8, 2014 + 11.0-CURRENT after FreeBSD-SA-14:17.kmem + (rev 268431). + + + + 1100028 + July 21, 2014 + 11.0-CURRENT after hdestroy() + compliance fix changed ABI (rev + 268945). + + + + 1100029 + August 3, 2014 + 11.0-CURRENT after SOCK_DGRAM + bug fix (rev 269489). + + + + 1100030 + September 1, 2014 + 11.0-CURRENT after SOCK_RAW + sockets were changed to not modify packets at all (rev + 270929). + + + + 1100031 + September 9, 2014 + 11.0-CURRENT after FreeBSD-SA-14:18.openssl + (rev 269686). + + + + 1100032 + September 11, 2014 + 11.0-CURRENT after API changes to + ifa_ifwithbroadaddr, + ifa_ifwithdstaddr, + ifa_ifwithnet, and + ifa_ifwithroute (rev + 271438). + + + + 1100033 + September 9, 2014 + 11.0-CURRENT after changing + access, eaccess, and + faccessat to validate the mode argument + (rev 271657). + + + + 1100034 + September 16, 2014 + 11.0-CURRENT after FreeBSD-SA-14:19.tcp + (rev 271666). + + + + 1100035 + September 17, 2014 + 11.0-CURRENT after i915 HW context support + (rev 271705). + + + + 1100036 + September 17, 2014 + Version bump to have ABI note distinguish binaries + ready for strict mmap2 flags checking + (rev 271724). + + + + 1100037 + October 6, 2014 + 11.0-CURRENT after addition of + explicit_bzero3 (rev + 272673). + + + + 1100038 + October 11, 2014 + 11.0-CURRENT after cleanup of TCP wrapper headers + (rev 272951). + + + + 1100039 + October 18, 2014 + 11.0-CURRENT after removal of + MAP_RENAME and + MAP_NORESERVE (rev + 273250). + + + + 1100040 + October 21, 2014 + 11.0-CURRENT after FreeBSD-SA-14:23 (rev + 273146). + + + + 1100041 + October 30, 2014 + 11.0-CURRENT after API changes to + syscall_register, + syscall32_register, + syscall_register_helper and + syscall32_register_helper (rev + 273707). + + + + 1100042 + November 3, 2014 + 11.0-CURRENT after a change to struct + tcpcb (rev + 274046). + + + + 1100043 + November 4, 2014 + 11.0-CURRENT after enabling vt4 by default + (rev 274085). + + + + 1100044 + November 4, 2014 + 11.0-CURRENT after adding new libraries/utilities + (dpv and figpar) for data throughput visualization (rev + 274116). + + + + 1100045 + November 4, 2014 + 11.0-CURRENT after FreeBSD-SA-14:23, + FreeBSD-SA-14:24, and FreeBSD-SA-14:25 (rev + 274162). + + + + 1100046 + November 13, 2014 + 11.0-CURRENT after kern_poll + signature change (rev + 274462). + + + + 1100047 + November 13, 2014 + 11.0-CURRENT after removal of no-at version + of VFS syscalls helpers, like kern_open + (rev 274476). + + + + 1100048 + December 1, 2014 + 11.0-CURRENT after starting the process of removing + the use of the deprecated "M_FLOWID" flag from the network + code (rev 275358). + + + + 1100049 + December 9, 2014 + 11.0-CURRENT after importing an important fix to the + LLVM vectorizer, which could lead to buffer overruns in + some cases (rev 275633). + + + + 1100050 + December 12, 2014 + 11.0-CURRENT after adding AES-ICM and AES-GCM to + OpenCrypto (rev 275732). + + + + 1100051 + December 23, 2014 + 11.0-CURRENT after removing old NFS client and server + code from the kernel (rev + 276096). + + + + 1100052 + December 31, 2014 + 11.0-CURRENT after upgrade of clang, llvm and lldb to + 3.5.0 release (rev 276479). + + + + 1100053 + January 7, 2015 + 11.0-CURRENT after MCLGET() gained a return value + (rev 276750). + + + + 1100054 + January 15, 2015 + 11.0-CURRENT after rewrite of callout subsystem + (rev 277213). + + + + 1100055 + January 22, 2015 + 11.0-CURRENT after reverting callout changes in + r277213 (rev 277528). + + + + 1100056 + January 23, 2015 + 11.0-CURRENT after addition of + futimens and + utimensat system calls + (rev 277610). + + + + + 1100057 + January 29, 2015 + 11.0-CURRENT after removal of d_thread_t + (rev 277897). + + + + 1100058 + February 5, 2015 + 11.0-CURRENT after addition of support for probing + the SCSI VPD Extended Inquiry page (0x86) + (rev 278228). + + + + 1100059 + February 9, 2015 + 11.0-CURRENT after import of xz 5.2.0, + which added multi-threaded compression and lzma + gained libthr dependency + (rev 278433). + + + + 1100060 + February 16, 2015 + 11.0-CURRENT after forwarding + FBIO_BLANK + to framebuffer clients + (rev 278846). + + + + 1100061 + February 18, 2015 + 11.0-CURRENT after CDAI_FLAG_NONE + addition (rev 278964). + + + + 1100062 + February 23, 2015 + 11.0-CURRENT after mtio4 and sa4 + API and ioctl2 additions + (rev 279221). + + + + 1100063 + March 7, 2015 + 11.0-CURRENT after adding mutex support to the + pps_ioctl() API in the kernel (rev + 279728). + + + + 1100064 + March 7, 2015 + 11.0-CURRENT after adding PPS support to USB serial + drivers (rev 279729). + + + + 1100065 + March 15, 2015 + 11.0-CURRENT after upgrading clang, llvm and lldb to + 3.6.0 (rev 280031). + + + + 1100066 + March 20, 2015 + + 11.0-CURRENT after removal of SSLv2 support from + OpenSSL (rev 280306). + + + + 1100067 + March 25, 2015 + 11.0-CURRENT after removal of SSLv2 support from + fetch1 and fetch3 (rev + 280630). + + + + 1100068 + April 6, 2015 + 11.0-CURRENT after change to net.inet6.ip6.mif6table + sysctl (rev 281172). + + + + 1100069 + April 15, 2015 + 11.0-CURRENT after removal of const qualifier from + iconv3 (rev 281550). + + + + 1100071 + April 29, 2015 + 11.0-CURRENT after API/ABI change to + smb4 (rev 281985). + + + + 1100072 + May 1, 2015 + 11.0-CURRENT after adding reallocarray3 in + libc (rev 282314). + + + + 1100073 + May 8, 2015 + 11.0-CURRENT after extending the maximum number of + allowed PCM channels in a PCM stream to 127 and decreasing + the maximum number of sub-channels to 1 (rev + 282650). + + + + 1100074 + May 25, 2015 + 11.0-CURRENT after adding preliminary support for + x86-64 Linux binaries (rev 283424), + and upgrading clang and llvm to 3.6.1 (rev + 283526). + + + + 1100075 + May 27, 2015 + 11.0-CURRENT after dounmount() requiring a reference + on the passed struct mount (rev + 283602). + + + + 1100076 + June 4, 2015 + 11.0-CURRENT after disabled generation of legacy + formatted password databases entries by default. (rev + 283983). + + + + 1100077 + June 10, 2015 + 11.0-CURRENT after API changes to + lim_cur, + lim_max, and + lim_rlimit (rev + 284215). + + + + 1100079 + August 18, 2015 + 11.0-CURRENT after import of jemalloc 4.0.0 + (rev 286866). + + + + 1100080 + October 5, 2015 + 11.0-CURRENT after upgrading clang, llvm, lldb, + compiler-rt and libc++ to 3.7.0 (rev + 288943). + + + + 1100081 + October 16, 2015 + 11.0-CURRENT after undating ZFS to support resumable + send/receive (rev r289362). + + + + 1100085 + October 30, 2015 + 11.0-CURRENT after import of OpenSSL 1.0.2d (rev + 290207). + + + + 1100088 + November 7, 2015 + 11.0-CURRENT after string collation and locales + rework (rev 290495). + + + + 1100089 + November 7, 2015 + 11.0-CURRENT after API change to + sysctl_add_oid9 (rev 290475 + and r290505). + + + + 1100090 + November 10, 2015 + 11.0-CURRENT after API change to callout_stop macro; + (rev 290664). + + + + 1100092 + December 19, 2015 + 11.0-CURRENT after removal of vm_pageout_grow_cache + (rev 292469). + + + + 1100093 + December 30, 2015 + 11.0-CURRENT after removal of sys/crypto/sha2.h + (rev 292782). + + + + 1100094 + January 15, 2016 + 11.0-CURRENT after LinuxKPI PCI changes + (rev 294086). + + + + 1100095 + January 19, 2016 + 11.0-CURRENT after LRO optimizations + (rev 294327). + + + + 1100096 + January 21, 2016 + 11.0-CURRENT after LinuxKPI idr_* additions + (rev 294505). + + + + 1100097 + January 26, 2016 + 11.0-CURRENT after API change to dpv(3) + (rev 294860). + + + + 1100098 + February 16, 2016 + 11.0-CURRENT after API change to rman + (rev 294883). + + + + 1100100 + February 26, 2016 + 11.0-CURRENT after bus_alloc_resource_anywhere() API + addition (rev 296136). + + + + + + + Note that 2.2-STABLE sometimes identifies itself as + 2.2.5-STABLE after the 2.2.5-RELEASE. The + pattern used to be year followed by the month, but we decided to + change it to a more straightforward major/minor system starting + from 2.2. This is because the parallel development on several + branches made it infeasible to classify the releases merely by + their real release dates. Do not worry about old -CURRENTs; + they are listed here just for reference. + + +
Index: zh_TW.UTF-8/books/porters-handbook/zh_TW.po =================================================================== --- zh_TW.UTF-8/books/porters-handbook/zh_TW.po +++ zh_TW.UTF-8/books/porters-handbook/zh_TW.po @@ -0,0 +1,37193 @@ +# $FreeBSD$ +# +# raycherng <>, 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2016-03-07 06:18+0800\n" +"PO-Revision-Date: 2016-03-28 13:26+0800\n" +"Last-Translator: raycherng\n" +"Language-Team: American English \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.5\n" + +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "translator-credits" + +#. (itstool) path: info/title +#: book.translate.xml:39 +msgid "FreeBSD Porter's Handbook" +msgstr "FreeBSD Porter 手冊" + +#. (itstool) path: authorgroup/author +#: book.translate.xml:42 +msgid "The FreeBSD Documentation Project" +msgstr "The FreeBSD Documentation Project" + +#. (itstool) path: info/pubdate +#. (itstool) path: info/releaseinfo +#: book.translate.xml:47 book.translate.xml:131 +msgid "" +"$FreeBSD: head/en_US.ISO8859-1/books/porters-handbook/book.xml 48314 " +"2016-03-02 19:33:50Z wblock $" +msgstr "" +"$FreeBSD: head/en_US.ISO8859-1/books/porters-handbook/book.xml 48314 " +"2016-03-02 19:33:50Z wblock $" + +#. (itstool) path: info/copyright +#: book.translate.xml:49 +msgid "" +"2000 2001 2002 2003 " +"2004 2005 2006 2007 " +"2008 2009 2010 2011 " +"2012 2013 2014 2015 " +"2016 The FreeBSD " +"Documentation Project" +msgstr "" +"2000 2001 2002 2003 " +"2004 2005 2006 2007 " +"2008 2009 2010 2011 " +"2012 2013 2014 2015 " +"2016 The FreeBSD " +"Documentation Project" + +#. (itstool) path: legalnotice/title +#: book.translate.xml:73 +msgid "Copyright" +msgstr "版權所有" + +#. (itstool) path: legalnotice/para +#: book.translate.xml:75 +msgid "" +"Redistribution and use in source (XML DocBook) and 'compiled' forms (XML, " +"HTML, PDF, PostScript, RTF and so forth) with or without modification, are " +"permitted provided that the following conditions are met:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:82 +msgid "" +"Redistributions of source code (XML DocBook) must retain the above copyright " +"notice, this list of conditions and the following disclaimer as the first " +"lines of this file unmodified." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:88 +msgid "" +"Redistributions in compiled form (transformed to other DTDs, converted to " +"PDF, PostScript, RTF and other formats) must reproduce the above copyright " +"notice, this list of conditions and the following disclaimer in the " +"documentation and/or other materials provided with the distribution." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:97 +msgid "" +"THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT \"AS IS" +"\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE " +"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE " +"ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE " +"LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR " +"CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF " +"SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS " +"INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN " +"CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) " +"ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF " +"THE POSSIBILITY OF SUCH DAMAGE." +msgstr "" + +#. (itstool) path: legalnotice/para +#: book.translate.xml:114 +msgid "FreeBSD is a registered trademark of the FreeBSD Foundation." +msgstr "FreeBSD 是 FreeBSD 基金會的註冊商標。" + +#. (itstool) path: legalnotice/para +#: book.translate.xml:116 +msgid "" +"UNIX is a registered trademark of The Open Group in the United States and " +"other countries." +msgstr "UNIX 是 The Open Group 在美國和其他國家的註冊商標。" + +#. (itstool) path: legalnotice/para +#: book.translate.xml:118 +msgid "" +"Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JRE, JSP, JVM, " +"Netra, OpenJDK, Solaris, StarOffice, SunOS and VirtualBox are trademarks or " +"registered trademarks of Sun Microsystems, Inc. in the United States and " +"other countries." +msgstr "" +"Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JRE, JSP, JVM, " +"Netra, OpenJDK, Solaris, StarOffice, SunOS 和 VirtualBox 是 Sun Microsystems, " +"Inc. 在美國和其他國家的註冊商標。" + +#. (itstool) path: legalnotice/para +#: book.translate.xml:123 +msgid "" +"Many of the designations used by manufacturers and sellers to distinguish " +"their products are claimed as trademarks. Where those designations appear in " +"this document, and the FreeBSD Project was aware of the trademark claim, the " +"designations have been followed by the or the ® symbol." +msgstr "" + +#. (itstool) path: chapter/title +#. (itstool) path: sect2/title +#. (itstool) path: sect1/title +#: book.translate.xml:142 book.translate.xml:7226 book.translate.xml:7835 +#: book.translate.xml:10507 book.translate.xml:11091 book.translate.xml:14844 +msgid "Introduction" +msgstr "楔子" + +#. (itstool) path: chapter/para +#: book.translate.xml:144 +msgid "" +"The FreeBSD Ports Collection is the way almost everyone installs " +"applications (\"ports\") on FreeBSD. Like everything else about FreeBSD, it " +"is primarily a volunteer effort. It is important to keep this in mind when " +"reading this document." +msgstr "" +"幾乎每個 FreeBSD 愛用者都是透過 FreeBSD Ports Collection 來裝各式應用程式" +"(\"ports\")。如同 FreeBSD 的其他部分一樣, 這些 ports 都主要來自許多志工的努" +"力成果,所以在閱讀這份文件時, 請務必感恩在心。" + +#. (itstool) path: chapter/para +#: book.translate.xml:149 +msgid "" +"In FreeBSD, anyone may submit a new port, or volunteer to maintain an " +"existing unmaintained port. No special commit privilege is needed." +msgstr "" +"在 FreeBSD 上面,每個人都可以提交新的 port, 或假如該 port 並沒有人維護的話," +"可以自願維護 —— 這點並不需要任何 commit 的權限,就可以來做這件事情。" + +#. (itstool) path: chapter/title +#: book.translate.xml:164 +msgid "Making a New Port" +msgstr "製作新的 Port" + +#. (itstool) path: chapter/para +#: book.translate.xml:166 +msgid "Interested in making a new port, or upgrading existing ports? Great!" +msgstr "開始對製作新的 port 或更新現有 port 有一些興趣了嗎?太好囉!" + +#. (itstool) path: chapter/para +#: book.translate.xml:169 +msgid "" +"What follows are some guidelines for creating a new port for FreeBSD. To " +"upgrade an existing port, read this, then read ." +msgstr "" +"下面將介紹一些建立 port 時該注意的事項。如果是想升級現有的 port ,那麼也請參" +"閱 說明。" + +#. (itstool) path: chapter/para +#: book.translate.xml:173 +msgid "" +"When this document is not sufficiently detailed, refer to /usr/" +"ports/Mk/bsd.port.mk, which is included by all port " +"Makefiles. Even those not hacking Makefiles daily can gain much knowledge from it. Additionally, specific " +"questions can be sent to the FreeBSD ports mailing list." +msgstr "" +"因為這份文件可能講得不是十分詳細,可能需要參考 /usr/ports/Mk/bsd." +"port.mk 這檔是所有 port 的 Makefile 檔都會用" +"到的。就算你不是每天不斷 hacking Makefile,也可以也可以" +"從中獲得很多相關知識。 此外,若有其他特定 port 的問題,也可以到 FreeBSD " +"ports mailing list 來獲得答案。" + +#. (itstool) path: note/para +#: book.translate.xml:181 +msgid "" +"Only a fraction of the variables (VAR) that can be overridden are mentioned in this document. Most (if " +"not all) are documented at the start of /usr/ports/Mk/bsd.port.mk; the others probably ought to be. Note that this file uses a non-" +"standard tab setting: Emacs and Vim will recognize the setting on loading the file. Both " +"vi1 and ex1 can be set to use the " +"correct value by typing :set tabstop=4 once the file has " +"been loaded." +msgstr "" +"本文內所提及的環境變數 (VAR)部份, " +"只有一些可以替換(overridden)。大部份的環境變數(非全部)通常都會寫在 /usr/ports/Mk/bsd.port.mk<" +"/filename> 內,其他的也是差不多。 請注意:該檔並非使用一般的 tab 設定值,而是採用 1 個 tab 等於 4 個 space。 <" +"application>EmacsVim " +"應該都會在載入該檔時順便讀取相關設定值。 vi<" +"manvolnum>1ex<" +"/refentrytitle>1 這兩個程式也都可以打 " +":set tabstop=4 以修改設定值。" + +#. (itstool) path: chapter/para +#: book.translate.xml:195 +msgid "" +"Looking for something easy to start with? Take a look at the list of requested ports " +"and see if you can work on one (or more)." +msgstr "" +"想要找簡單的開始上手嗎? 到 請求協助的 ports 清單 瞧瞧,看看是否有你可以幫上忙的。" + +#. (itstool) path: chapter/title +#: book.translate.xml:211 +msgid "Quick Porting" +msgstr "打造 Port 快速上手篇" + +#. (itstool) path: chapter/para +#: book.translate.xml:213 +msgid "" +"This section describes how to quickly create a new port. For applications " +"where this quick method is not adequate, the full Slow Porting process is described in ." +msgstr "" +"本節主要介紹如何來快速打造 port,然而實際應用時這快速方法可能不足,完整的 " +"慢速打造 Port 的步驟在 詳述。" + +#. (itstool) path: chapter/para +#: book.translate.xml:218 +msgid "" +"First, get the original tarball and put it into DISTDIR, " +"which defaults to /usr/ports/distfiles." +msgstr "" +"首先取得該應用程式的原始程式碼壓縮檔(tarball),並把它放到 DISTDIR,預設路徑應該是 /usr/ports/distfiles." + +#. (itstool) path: note/para +#: book.translate.xml:223 +msgid "" +"These steps assume that the software compiled out-of-the-box. In other " +"words, absolutely no changes were required for the application to work on a " +"FreeBSD system. If anything had to be changed, refer to ." +msgstr "" +"這些步驟假設軟體可以直接編譯。也就是不需要任何修改就可以直接在 FreeBSD 上執" +"行。如果需要修改,請參見。" + +#. (itstool) path: note/para +#: book.translate.xml:230 +msgid "" +"It is recommended to set the DEVELOPER " +"make1 variable in /etc/make.conf before getting " +"into porting." +msgstr "" + +#. (itstool) path: note/screen +#: book.translate.xml:234 +#, no-wrap +msgid "" +"# echo DEVELOPER=yes >> /etc/make.conf<" +"/userinput>" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:236 +msgid "" +"This setting enables the developer mode that displays " +"deprecation warnings and activates some further quality checks on calling " +"make." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:242 +msgid "Writing the Makefile" +msgstr "編寫 Makefile" + +#. (itstool) path: sect1/para +#: book.translate.xml:244 +msgid "" +"The minimal Makefile would look something like this:" +msgstr "最簡單的 Makefile 大概是像這樣:" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:247 +#, no-wrap +msgid "" +"# $FreeBSD$\n" +"\n" +"PORTNAME=\toneko\n" +"PORTVERSION=\t1.1b\n" +"CATEGORIES=\tgames\n" +"MASTER_SITES=\tftp://ftp.cs.columbia.edu/archives/X11R5/contrib/\n" +"\n" +"MAINTAINER=\tyouremail@example.com\n" +"COMMENT=\tCat chasing a mouse all over the screen\n" +"\n" +".include <bsd.port.mk>" +msgstr "" +"# $FreeBSD$\n" +"\n" +"PORTNAME=\toneko\n" +"PORTVERSION=\t1.1b\n" +"CATEGORIES=\tgames\n" +"MASTER_SITES=\tftp://ftp.cs.columbia.edu/archives/X11R5/contrib/\n" +"\n" +"MAINTAINER=\tyouremail@example.com\n" +"COMMENT=\tCat chasing a mouse all over the screen\n" +"\n" +".include <bsd.port.mk>" + +#. (itstool) path: note/para +#: book.translate.xml:260 +msgid "" +"In some cases, the Makefile of an existing port may " +"contain additional lines in the header, such as the name of the port and the " +"date it was created. This additional information has been declared obsolete, " +"and is being phased out." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:267 +msgid "" +"Try to figure it out. Do not worry about the contents of the " +"$FreeBSD$ line, it will be filled in automatically by " +"Subversion when the port is imported to our main " +"ports tree. A more detailed example is shown in the sample Makefile section." +msgstr "" +"嗯,大致就是這樣,看看你已經領略多少了呢? 看到 $FreeBSD$ 這一行的話,別想太多 ,當該 port " +"正式進入 port tree 時, Subversion 就會自動轉換為相關字串囉。 " +"有關這點的細節部份,可以參閱 sample Makefile 章節。" + +#. (itstool) path: sect1/title +#: book.translate.xml:278 +msgid "Writing the Description Files" +msgstr "撰寫說明檔" + +#. (itstool) path: sect1/para +#: book.translate.xml:280 +msgid "" +"There are two description files that are required for any port, whether they " +"actually package or not. They are pkg-descr and " +"pkg-plist. Their pkg- prefix " +"distinguishes them from other files." +msgstr "" +"無論是否打算再加工做成 package,有兩個檔案是任何 port 都必須要具備的。 這兩個檔分別是 pkg-descr<" +"/filename> 及 pkg-plist 。 他們檔名前面都有 pkg-<" +"/filename> 以跟其他檔案做區別。" + +#. (itstool) path: sect2/title +#: book.translate.xml:288 +msgid "pkg-descr" +msgstr "pkg-descr" + +#. (itstool) path: sect2/para +#: book.translate.xml:290 +msgid "" +"This is a longer description of the port. One to a few paragraphs concisely " +"explaining what the port does is sufficient." +msgstr "這是此 port 的詳細說明檔,請用一段或幾段文字來說明該 port 的作用" + +#. (itstool) path: note/para +#: book.translate.xml:295 +msgid "" +"This is not a manual or an in-depth description on how " +"to use or compile the port! Please be careful when copying from " +"the README or manpage. Too often they are " +"not a concise description of the port or are in an awkward format. For " +"example, manpages have justified spacing, which looks particularly bad with " +"monospaced fonts." +msgstr "" +"請注意,這檔絕非「該軟體的說明手冊」或是「如何編譯、使用該 port 的說明」! " +"若是從該軟體的 README 或 manpage 直接複製過來的話,請注意" +"。他們常常不是正確的 port 描述或是格式並不適合。例如,manpage會對齊空白,這用monospace字型來看會特別糟糕。" + +#. (itstool) path: sect2/para +#: book.translate.xml:305 +msgid "" +"A well-written pkg-descr describes the port completely " +"enough that users would not have to consult the documentation or visit the " +"website to understand what the software does, how it can be useful, or what " +"particularly nice features it has. Mentioning certain requirements like a " +"graphical toolkit, heavy dependencies, runtime environment, or " +"implementation languages help users decide whether this port will work for " +"them." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:314 +msgid "" +"Include a URL to the official WWW homepage. Prepend one " +"of the websites (pick the most common one) with WWW: " +"(followed by single space) so that automated tools will work correctly. If " +"the URI is the root of the website or directory, it must be terminated with " +"a slash." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:322 +msgid "" +"If the listed webpage for a port is not available, try to search the " +"Internet first to see if the official site moved, was renamed, or is hosted " +"elsewhere." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:327 +msgid "This example shows how pkg-descr looks:" +msgstr "這是 pkg-descr 內容的例子 :" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:330 +#, no-wrap +msgid "" +"This is a port of oneko, in which a cat chases a poor mouse all over\n" +"the screen.\n" +" :\n" +"(etc.)\n" +"\n" +"WWW: http://www.oneko.org/" +msgstr "" +"This is a port of oneko, in which a cat chases a poor mouse all over\n" +"the screen.\n" +" :\n" +"(etc.)\n" +"\n" +"WWW: http://www.oneko.org/" + +#. (itstool) path: sect2/title +#: book.translate.xml:339 +msgid "pkg-plist" +msgstr "pkg-plist" + +#. (itstool) path: sect2/para +#: book.translate.xml:341 +msgid "" +"This file lists all the files installed by the port. It is also called the " +"packing list because the package is generated by packing the " +"files listed here. The pathnames are relative to the installation prefix " +"(usually /usr/local)." +msgstr "" +"這是該 port 所會裝的所有檔案清單,另外因為 package 會由這清單所產生,因此也被稱為『packing list (打包清單)<" +"/quote>』。路徑是相對於安裝的 prefix (通常是 /usr/local )。" + +#. (itstool) path: sect2/para +#: book.translate.xml:347 +msgid "Here is a small example:" +msgstr "這是一個簡單的例子:" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:349 +#, no-wrap +msgid "" +"bin/oneko\n" +"man/man1/oneko.1.gz\n" +"lib/X11/app-defaults/Oneko\n" +"lib/X11/oneko/cat1.xpm\n" +"lib/X11/oneko/cat2.xpm\n" +"lib/X11/oneko/mouse.xpm" +msgstr "" +"bin/oneko\n" +"man/man1/oneko.1.gz\n" +"lib/X11/app-defaults/Oneko\n" +"lib/X11/oneko/cat1.xpm\n" +"lib/X11/oneko/cat2.xpm\n" +"lib/X11/oneko/mouse.xpm" + +#. (itstool) path: sect2/para +#: book.translate.xml:356 +msgid "" +"Refer to the pkg-create8 manual page for " +"details on the packing list." +msgstr "" +"關於 packing list 方面,可以詳閱 pkg-create<" +"/refentrytitle>8 manual page 。" + +#. (itstool) path: note/para +#: book.translate.xml:360 +msgid "" +"It is recommended to keep all the filenames in this file sorted " +"alphabetically. It will make verifying changes when upgrading the port much " +"easier." +msgstr "建議清單內的檔名,依照字母順序作排序,那麼下次要升級時, 會比較清楚、方便來更新這份清單。 " + +#. (itstool) path: tip/para +#: book.translate.xml:366 +msgid "" +"Creating a packing list manually can be a very tedious task. If the port " +"installs a large numbers of files, creating the packing list automatically might save time." +msgstr "" +"手動產生這份清單實在太苦了。尤其若該 port 會裝一大堆檔案的話, 請多善用 自動產生 packing list 會比較省時省力唷。" + +#. (itstool) path: sect2/para +#: book.translate.xml:372 +msgid "" +"There is only one case when pkg-plist can be omitted " +"from a port. If the port installs just a handful of files, list them in " +"PLIST_FILES, within the port's Makefile. For instance, we could get along without pkg-plist in the above oneko port by adding these lines " +"to the Makefile:" +msgstr "" +"只有在一種情況下可以省略 pkg-plist 檔: 若安裝的 port 相當單純,只有裝一些檔案,那麼可以在 <" +"filename>Makefile 內改用 PLIST_FILES 來取代。 " +"比如,可以在上述的 oneko port 內不必附上 pkg-plist" +" ,而只需在 Makefile 內加入下列幾行:" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:381 +#, no-wrap +msgid "" +"PLIST_FILES=\tbin/oneko \\\n" +"\t\tman/man1/oneko.1.gz \\\n" +"\t\tlib/X11/app-defaults/Oneko \\\n" +"\t\tlib/X11/oneko/cat1.xpm \\\n" +"\t\tlib/X11/oneko/cat2.xpm \\\n" +"\t\tlib/X11/oneko/mouse.xpm" +msgstr "" +"PLIST_FILES=\tbin/oneko \\\n" +"\t\tman/man1/oneko.1.gz \\\n" +"\t\tlib/X11/app-defaults/Oneko \\\n" +"\t\tlib/X11/oneko/cat1.xpm \\\n" +"\t\tlib/X11/oneko/cat2.xpm \\\n" +"\t\tlib/X11/oneko/mouse.xpm" + +#. (itstool) path: note/para +#: book.translate.xml:389 +msgid "" +"Usage of PLIST_FILES should not be abused. When looking " +"for the origin of a file, people usually try to grep through the pkg-plist files in the ports " +"tree. Listing files in PLIST_FILES in the " +"Makefile makes that search more difficult." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:399 +msgid "" +"If a port needs to create an empty directory, or creates directories outside " +"of ${PREFIX} during installation, refer to for more information." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:405 +msgid "" +"The price for this way of listing a port's files and directories is that the " +"keywords described in pkg-create8 and cannot be used. Therefore, it is suitable only for " +"simple ports and makes them even simpler. At the same time, it has the " +"advantage of reducing the number of files in the ports collection. Please " +"consider using this technique before resorting to pkg-plist." +msgstr "" +"然而,使用這個方法列出 port 的檔案和目錄是必須付出代價: 不能使用 pkg-create<" +"/refentrytitle>8 描述的關鍵字。 因此,這招僅適用於較簡單的 port ,以及簡化該 port 的作法。 " +"此外,這招還有一個好處:可以減少 ports collection 的整體檔案總數。 所以,在考慮是否要用 pkg-plist 之前, 可以先斟酌這個替代方案看看。" + +#. (itstool) path: sect2/para +#: book.translate.xml:415 +msgid "" +"Later we will see how pkg-plist and " +"PLIST_FILES can be used to fulfill more sophisticated tasks." +msgstr "" +"後面會介紹到如何運用 pkg-plistPLIST_FILES " +"這些技巧以因應更複雜的狀況。" + +#. (itstool) path: sect1/title +#: book.translate.xml:423 +msgid "Creating the Checksum File" +msgstr "產生 checksum 檔" + +#. (itstool) path: sect1/para +#: book.translate.xml:425 +msgid "" +"Just type make makesum. The ports make rules will " +"automatically generate the file distinfo." +msgstr "" +"只要打 make makesum 就好了, 接下來就會自動產生相對應的 distinfo<" +"/filename> 檔了唷 。" + +#. (itstool) path: sect1/title +#. (itstool) path: chapter/title +#: book.translate.xml:431 book.translate.xml:13085 +msgid "Testing the Port" +msgstr "測試 Port" + +#. (itstool) path: sect1/para +#: book.translate.xml:433 +msgid "" +"Make sure that the port rules do exactly what is desired, including " +"packaging up the port. These are the important points to verify:" +msgstr "接下來,必須檢驗是否有符合 port 的遊戲規則,包括打包該 port 為 package。 以下有幾個需要確認的重要地方:" + +#. (itstool) path: listitem/para +#: book.translate.xml:439 +msgid "" +"pkg-plist does not contain anything not installed by " +"the port." +msgstr "若該 port 沒裝的東西,不要列在 pkg-plist 內。" + +#. (itstool) path: listitem/para +#: book.translate.xml:444 +msgid "" +"pkg-plist contains everything that is installed by the " +"port." +msgstr "若該 port 有裝的東西,請務必列在 pkg-plist 內。" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:450 book.translate.xml:708 book.translate.xml:4279 +#: book.translate.xml:4332 book.translate.xml:6956 +msgid "install" +msgstr "安裝" + +#. (itstool) path: listitem/para +#: book.translate.xml:449 +msgid "" +"The port can be installed using the <_:buildtarget-1/> target. This verifies " +"that the install script works correctly." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:456 +msgid "deinstall" +msgstr "解除安裝" + +#. (itstool) path: listitem/para +#: book.translate.xml:455 +msgid "" +"The port can be deinstalled properly using the <_:buildtarget-1/> target. " +"This verifies that the deinstall script works correctly." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:462 book.translate.xml:630 book.translate.xml:631 +#: book.translate.xml:634 book.translate.xml:4421 +msgid "fetch" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:461 +msgid "" +"The port does not access network resources after the <_:buildtarget-1/> " +"target. This is important for package builders, such as ports-mgmt/poudriere." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:467 +msgid "" +"Make sure that make package can be run as a normal user " +"(that is, not as root). If that " +"fails, NEED_ROOT=yes must be added to the port " +"Makefile." +msgstr "" + +#. (itstool) path: procedure/title +#: book.translate.xml:476 +msgid "Recommended Test Ordering" +msgstr "建議的測試順序" + +#. (itstool) path: step/para +#: book.translate.xml:479 +msgid "make stage" +msgstr "make stage" + +#. (itstool) path: step/para +#: book.translate.xml:483 +msgid "make check-orphans" +msgstr "make check-orphans" + +#. (itstool) path: step/para +#: book.translate.xml:487 +msgid "make package" +msgstr "make package" + +#. (itstool) path: step/para +#: book.translate.xml:491 +msgid "make install" +msgstr "make install" + +#. (itstool) path: step/para +#: book.translate.xml:495 +msgid "make deinstall" +msgstr "make deinstall" + +#. (itstool) path: step/para +#: book.translate.xml:499 +msgid "pkg add package-filename" +msgstr "pkg add package-filename" + +#. (itstool) path: step/para +#: book.translate.xml:504 +msgid "make package (as user)" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:508 +msgid "Make certain no warnings are shown in any of the stages." +msgstr "確認在任何階段都沒有任何警告出現。" + +#. (itstool) path: sect1/para +#: book.translate.xml:511 +msgid "" +"Thorough automated testing can be done with ports-" +"mgmt/tinderbox or ports-mgmt/poudriere from the Ports Collection. These applications maintain " +"jails where all of the steps shown above can be tested " +"without affecting the state of the host system." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:521 +msgid "Checking the Port with portlint" +msgstr "以 portlint 來作檢查 Port" + +#. (itstool) path: sect1/para +#: book.translate.xml:524 +msgid "" +"Please use portlint to see if the port conforms to our " +"guidelines. The ports-mgmt/portlint program " +"is part of the ports collection. In particular, check that the Makefile is in the right shape and the package is named appropriately." +msgstr "" +"請用 portlint 來檢查該 port 是否有遵循我們的規則。 " +"ports-mgmt/portlint 是 ports collection 的其中一個套件。 它主要可以用來檢驗 Makefile 內容是否正確以及 package 是否有正確命名。" + +#. (itstool) path: sect1/title +#: book.translate.xml:536 +msgid "Submitting the New Port" +msgstr "提交新的 Port" + +#. (itstool) path: sect1/para +#: book.translate.xml:538 +msgid "" +"Before submitting the new port, read the DOs " +"and DON'Ts section." +msgstr "" +"提交新的 Port 前,請閱讀 DOs and DON'Ts 章節。" + +#. (itstool) path: sect1/para +#: book.translate.xml:542 +msgid "" +"Once happy with the port, the only thing remaining is to put it in the main " +"FreeBSD ports tree and make everybody else happy about it too. We do not " +"need the work directory or the pkgname.tgz package, so delete them now." +msgstr "" +"現在你很高興終於打造出 port 來囉,唯一剩下要做的就是把它正式放到 FreeBSD ports tree 內,才能讓每個人都能分享使用這個 port。 " +"我們不需要 work 目錄或是檔名像 pkgname.tgz 的 " +"package ,請現在刪除他們。" + +#. (itstool) path: sect1/para +#: book.translate.xml:549 +msgid "" +"Next, build the shar1 file. Assuming the " +"port is called oneko, cd to the " +"directory above where the oneko directory is located, and " +"then type: shar `find oneko` > oneko.shar" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:564 +msgid "" +"To submit oneko.shar, use the bug submit form (category " +"Ports Tree). Add a short description of the program to " +"the Description field of the PR (perhaps a short version of " +"COMMENT), and do not forget to add oneko.shar as an attachment." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:573 +msgid "" +"Giving a good description in the summary of the problem report makes the " +"work of port committers a lot easier. We prefer something like New " +"port: category/portname short description of the port for new ports. Using this scheme makes it easier and faster to begin " +"the work of committing the new port." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:582 +msgid "" +"One more time, do not include the original source distfile, the " +"work directory, or the package built with make " +"package; and, do use shar1 for new ports, not " +"diff1." +msgstr "" +"再次強調一點:不必附上原始 source 的 distfile ,也就是 work 目錄。 " +"同時,也不必附上 make package 時產生的 package。新的 port 請使用 " +"shar1<" +"/citerefentry> ,不要用 diff<" +"manvolnum>1 。" + +#. (itstool) path: sect1/para +#: book.translate.xml:588 +msgid "" +"After submitting the port, please be patient. The time needed to include a " +"new port in FreeBSD can vary from a few days to a few months. The list of " +"pending port PRs can be viewed at ." +msgstr "" +"送出 port 之後,請耐心等候佳音。 有時候可能需要等個幾天或幾個月時間,才會在 FreeBSD ports tree 上正式出現。 等待中的 port " +"PR 清單可以在 查閱。" + +#. (itstool) path: sect1/para +#: book.translate.xml:593 +msgid "" +"After looking at the new port, we will reply if necessary, and commit it to " +"the tree. The submitter's name will also be added to the list of Additional FreeBSD Contributors and other files." +msgstr "" +"在看過新的 port 之後,如果需要的話,我們會回覆您,然後會將它提交到 port tree 。 您的大名會被列在 Additional FreeBSD Contributors 列表上,以及其他檔案中。" + +#. (itstool) path: chapter/title +#: book.translate.xml:608 +msgid "Slow Porting" +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:610 +msgid "" +"Okay, so it was not that simple, and the port required some modifications to " +"get it to work. In this section, we will explain, step by step, how to " +"modify it to get it to work with the ports paradigm." +msgstr "" +"Ok...事實上並不太可能這麼簡單,port 方面可能需要作些修改才能正常使用。 因此, 本節將一步一步來介紹如何修改上一章的樣本以正常使用。" + +#. (itstool) path: sect1/title +#: book.translate.xml:616 +msgid "How Things Work" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:618 +msgid "" +"First, this is the sequence of events which occurs when the user first types " +"make in the port's directory. Having bsd.port." +"mk in another window while reading this really helps to " +"understand it." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:624 +msgid "" +"But do not worry not many people understand exactly how bsd.port." +"mk is working... :-)" +msgstr "" +"別太擔心,不是很多人都真的了解 bsd.port.mk 在做什麼... :-)<" +"/emphasis>" + +#. (itstool) path: step/para +#: book.translate.xml:630 +msgid "" +"The <_:buildtarget-1/> target is run. The <_:buildtarget-2/> target is " +"responsible for making sure that the tarball exists locally in " +"DISTDIR. If <_:buildtarget-3/> cannot find the required " +"files in DISTDIR it will look up the URL " +"MASTER_SITES, which is set in the Makefile, as well as " +"our FTP mirrors where we put distfiles as backup. It will then attempt to " +"fetch the named distribution file with FETCH, assuming " +"that the requesting site has direct access to the Internet. If that " +"succeeds, it will save the file in DISTDIR for future use " +"and proceed." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:647 book.translate.xml:748 book.translate.xml:754 +#: book.translate.xml:4399 book.translate.xml:4442 +msgid "extract" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:647 +msgid "" +"The <_:buildtarget-1/> target is run. It looks for the port's distribution " +"file (typically a gzipped tarball) in DISTDIR and unpacks it into a temporary subdirectory specified by " +"WRKDIR (defaults to work)." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:656 book.translate.xml:3897 book.translate.xml:4469 +#: book.translate.xml:16949 +msgid "patch" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:656 +msgid "" +"The <_:buildtarget-1/> target is run. First, any patches defined in " +"PATCHFILES are applied. Second, if any patch files named " +"patch-* are found in " +"PATCHDIR (defaults to the files " +"subdirectory), they are applied at this time in alphabetical order." +msgstr "" + +#. (itstool) path: para/buildtarget +#. (itstool) path: entry/buildtarget +#: book.translate.xml:666 book.translate.xml:749 book.translate.xml:3898 +#: book.translate.xml:8335 book.translate.xml:16477 book.translate.xml:16479 +msgid "configure" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:666 +msgid "" +"The <_:buildtarget-1/> target is run. This can do any one of many different " +"things." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:671 +msgid "If it exists, scripts/configure is run." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:676 +msgid "" +"If HAS_CONFIGURE or GNU_CONFIGURE is " +"set, WRKSRC/configure is run." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:684 book.translate.xml:3899 book.translate.xml:4278 +#: book.translate.xml:16951 +msgid "build" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:684 +msgid "" +"The <_:buildtarget-1/> target is run. This is responsible for descending " +"into the port's private working directory (WRKSRC) and " +"building it." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:691 book.translate.xml:703 +msgid "stage" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:691 +msgid "" +"The <_:buildtarget-1/> target is run. This puts the final set of built files " +"into a temporary directory (STAGEDIR, see ). The hierarchy of this directory mirrors that of the system " +"on which the package will be installed." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:700 book.translate.xml:710 +msgid "package" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:700 +msgid "" +"The <_:buildtarget-1/> target is run. This creates a package using the files " +"from the temporary directory created during the <_:buildtarget-2/> target " +"and the port's pkg-plist." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:708 +msgid "" +"The <_:buildtarget-1/> target is run. This installs the package created " +"during the <_:buildtarget-2/> target into the host system." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:717 +msgid "pre-something" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:719 +msgid "post-something" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:715 +msgid "" +"The above are the default actions. In addition, define targets <_:" +"buildtarget-1/> or <_:buildtarget-2/>, or put scripts with those names, in " +"the scripts subdirectory, and they will be run before " +"or after the default actions are done." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:725 book.translate.xml:729 book.translate.xml:935 +#: book.translate.xml:3160 book.translate.xml:5901 +msgid "post-extract" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:724 +msgid "" +"For example, if there is a <_:buildtarget-1/> target defined in the " +"Makefile, and a file pre-build in " +"the scripts subdirectory, the <_:buildtarget-2/> target " +"will be called after the regular extraction actions, and pre-" +"build will be executed before the default build rules are done. " +"It is recommended to use Makefile targets if the " +"actions are simple enough, because it will be easier for someone to figure " +"out what kind of non-default action the port requires." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:738 book.translate.xml:743 +msgid "do-something" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:741 book.translate.xml:753 book.translate.xml:1112 +#: book.translate.xml:5897 book.translate.xml:15048 +msgid "do-extract" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:737 +msgid "" +"The default actions are done by the <_:buildtarget-1/> targets from " +"bsd.port.mk. For example, the commands to extract a " +"port are in the target <_:buildtarget-2/>. If the default target does not do " +"the job right, redefine the <_:buildtarget-3/> target in the " +"Makefile." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:756 +msgid "post-deinstall" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:747 +msgid "" +"The main targets (for example, <_:buildtarget-1/>, <_:" +"buildtarget-2/>, etc.) do nothing more than make sure all the stages up to " +"that one are completed and call the real targets or scripts, and they are " +"not intended to be changed. To fix the extraction, fix <_:buildtarget-3/>, " +"but never ever change the way <_:buildtarget-4/> operates! Additionally, the " +"target <_:buildtarget-5/> is invalid and is not run by the ports " +"infrastructure." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:760 +msgid "" +"Now that what goes on when the user types make install is " +"better understood, let us go through the recommended steps to create the " +"perfect port." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:766 +msgid "Getting the Original Sources" +msgstr "取得原始碼" + +#. (itstool) path: sect1/para +#: book.translate.xml:768 +msgid "" +"Get the original sources (normally) as a compressed tarball (foo." +"tar.gz or foo.tar.bz2) and copy it into DISTDIR. Always use " +"mainstream sources when and where possible." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:775 +msgid "" +"Set the variable MASTER_SITES to reflect where the " +"original tarball resides. Shorthand definitions exist for most mainstream " +"sites in bsd.sites.mk. Please use these sites—and the " +"associated definitions—if at all possible, to help avoid the problem of " +"having the same information repeated over again many times in the source " +"base. As these sites tend to change over time, this becomes a maintenance " +"nightmare for everyone involved. See for details." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:786 +msgid "" +"If there is no FTP/HTTP site that is well-connected to the net, or can only " +"find sites that have irritatingly non-standard formats, put a copy on a " +"reliable FTP or HTTP server (for example, a home page)." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:792 +msgid "" +"If a convenient and reliable place to put the distfile cannot be found, we " +"can house it ourselves on ftp.FreeBSD.org; however, this is the least-preferred solution. The distfile " +"must be placed into ~/public_distfiles/ of someone's " +"freefall account. Ask the person who commits the " +"port to do this. This person will also set MASTER_SITES " +"to LOCAL/username where " +"username is their FreeBSD " +"cluster login." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:804 +msgid "" +"If the port's distfile changes all the time without any kind of version " +"update by the author, consider putting the distfile on a home page and " +"listing it as the first MASTER_SITES. Try to talk the " +"port author out of doing this; it really does help to establish some kind of " +"source code control. Hosting a specific version will prevent users from " +"getting checksum mismatch errors, and also reduce the " +"workload of maintainers of our FTP site. Also, if there is only one master " +"site for the port, it is recommended to house a backup on a home page and " +"list it as the second MASTER_SITES." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:817 +msgid "" +"If the port requires additional patches that are available on the Internet, " +"fetch them too and put them in DISTDIR. Do not worry if " +"they come from a site other than where the main source tarball comes, we " +"have a way to handle these situations (see the description of PATCHFILES below)." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:825 +msgid "Modifying the Port" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:827 +msgid "" +"Unpack a copy of the tarball in a private directory and make whatever " +"changes are necessary to get the port to compile properly under the current " +"version of FreeBSD. Keep careful track of steps, as " +"they will be needed to automate the process shortly. Everything, including " +"the deletion, addition, or modification of files has to be doable using an " +"automated script or patch file when the port is finished." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:836 +msgid "" +"If the port requires significant user interaction/customization to compile " +"or install, take a look at one of Larry Wall's classic " +"Configure scripts and perhaps do something " +"similar. The goal of the new ports collection is to make each port as " +"plug-and-play as possible for the end-user while using a " +"minimum of disk space." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:846 +msgid "" +"Unless explicitly stated, patch files, scripts, and other files created and " +"contributed to the FreeBSD ports collection are assumed to be covered by the " +"standard BSD copyright conditions." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:854 +msgid "Patching" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:856 +msgid "" +"In the preparation of the port, files that have been added or changed can be " +"recorded with diff1 for later feeding to " +"patch1. Doing this with a typical file involves saving a copy of the " +"original file before making any changes using a .orig " +"suffix." +msgstr "" + +#. (itstool) path: sect1/screen +#: book.translate.xml:862 +#, no-wrap +msgid "" +"% cp file " +"file.orig" +msgstr "" +"% cp file " +"file.orig" + +#. (itstool) path: sect1/para +#: book.translate.xml:864 +msgid "" +"After all changes have been made, cd back to the port " +"directory. Use make makepatch to generate updated patch " +"files in the files directory." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:870 +msgid "General Rules for Patching" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:872 +msgid "" +"Patch files are stored in PATCHDIR, usually " +"files/, from where they will be automatically applied. " +"All patches must be relative to WRKSRC. Typically " +"WRKSRC is a subdirectory of WRKDIR, " +"the directory where the distfile is extracted. Use make -V WRKSRC to see the actual path. The patch names are to follow these rules:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:884 +msgid "" +"Avoid having more than one patch modify the same file. For example, having " +"both patch-foobar.c and patch-foobar.c2 making changes to ${WRKSRC}/foobar.c makes " +"them fragile and difficult to debug." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:893 +msgid "" +"When creating names for patch files, replace each underscore (_) with two underscores (__) and each slash " +"(/) with one underscore (_). For " +"example, to patch a file named src/freeglut_joystick.c, " +"name the corresponding patch patch-src_freeglut__joystick.c. Do not name patches like patch-aa or " +"patch-ab. Always use the path and file name in patch " +"names. Using make makepatch automatically generates the " +"correct names." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:909 +msgid "" +"A patch may modify multiple files if the changes are related and the patch " +"is named appropriately. For example, patch-add-missing-stdlib.h." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:916 +msgid "" +"Only use characters [-+._a-zA-Z0-9] for naming patches. " +"In particular, do not use :: as a path " +"separator, use _ instead." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:924 +msgid "" +"Minimize the amount of non-functional whitespace changes in patches. It is " +"common in the Open Source world for projects to share large amounts of a " +"code base, but obey different style and indenting rules. When taking a " +"working piece of functionality from one project to fix similar areas in " +"another, please be careful: the resulting patch may be full of non-" +"functional changes. It not only increases the size of the ports repository " +"but makes it hard to find out what exactly caused the problem and what was " +"changed at all." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:934 +msgid "" +"If a file must be deleted, do it in the <_:buildtarget-1/> target rather " +"than as part of the patch." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:941 +msgid "Manual Patch Generation" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:944 +msgid "" +"Manual patch creation is usually not necessary. Automatic patch generation " +"as described earlier in this section is the preferred method. However, " +"manual patching may be required occasionally." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:950 +msgid "" +"Patches are saved into files named patch-* where " +"* indicates the pathname of the file that is " +"patched, such as patch-Imakefile or patch-src-" +"config.h." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:957 +msgid "" +"After the file has been modified, diff1 is used to record the " +"differences between the original and the modified version. > patch-pathname-file<" +"/replaceable>" +msgstr "" +"% diff -u file.orig <" +"replaceable>file > patch-pathname-file<" +"/replaceable>" + +#. (itstool) path: sect2/para +#: book.translate.xml:964 +msgid "" +"When generating patches for new, added files, is used to " +"tell diff1 to treat the non-existent original file as if it " +"existed but was empty:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:969 +#, no-wrap +msgid "" +"% diff -u -N newfile" +".orig newfile > patch-" +"pathname-newfile" +msgstr "" +"% diff -u -N newfile" +".orig newfile > patch-" +"pathname-newfile" + +#. (itstool) path: sect2/para +#: book.translate.xml:971 +msgid "" +"Do not add $FreeBSD$ RCS strings in patches. When patches " +"are added to the Subversion repository with " +"svn add, the fbsd:nokeywords property " +"is set to yes automatically so keywords in the patch are " +"not modified when committed. The property can be added manually with " +"svn propset fbsd:nokeywords yes files...." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:981 +msgid "" +"Using the recurse () option to " +"diff1 to generate patches is fine, but please look at the resulting " +"patches to make sure there is no unnecessary junk in there. In particular, " +"diffs between two backup files, Makefiles when the port " +"uses Imake or GNU configure, etc., are " +"unnecessary and have to be deleted. If it was necessary to edit " +"configure.in and run autoconf to " +"regenerate configure, do not take the diffs of " +"configure (it often grows to a few thousand lines!). " +"Instead, define USE_AUTOTOOLS=autoconf:261 and take the " +"diffs of configure.in." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:999 +msgid "Simple Automatic Replacements" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:1001 +msgid "" +"Simple replacements can be performed directly from the port " +"Makefile using the in-place mode of " +"sed1. This is useful when changes use the value of a variable:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:1006 +#, no-wrap +msgid "" +"post-patch:\n" +"\t@${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README" +msgstr "" +"post-patch:\n" +"\t@${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README" + +#. (itstool) path: sect2/para +#: book.translate.xml:1009 +msgid "" +"Quite often, software being ported uses the CR/LF convention in source " +"files. This may cause problems with further patching, compiler warnings, or " +"script execution (like /bin/sh^M not found.) To quickly " +"convert all files from CR/LF to just LF, add this entry to the port " +"Makefile:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:1016 +#, no-wrap +msgid "USES=\tdos2unix" +msgstr "USES=\tdos2unix" + +#. (itstool) path: sect2/para +#: book.translate.xml:1018 +msgid "A list of specific files to convert can be given:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:1020 +#, no-wrap +msgid "" +"USES=\tdos2unix\n" +"DOS2UNIX_FILES=\tutil.c util.h" +msgstr "" +"USES=\tdos2unix\n" +"DOS2UNIX_FILES=\tutil.c util.h" + +#. (itstool) path: sect2/para +#: book.translate.xml:1023 +msgid "" +"Use DOS2UNIX_REGEX to convert a group of files across " +"subdirectories. Its argument is a find1-compatible regular " +"expression. More on the format is in re_format7. This option is useful " +"for converting all files of a given extension. For example, convert all " +"source code files, leaving binary files intact:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:1031 +#, no-wrap +msgid "" +"USES=\tdos2unix\n" +"DOS2UNIX_REGEX=\t.*\\.([ch]|cpp)" +msgstr "" +"USES=\tdos2unix\n" +"DOS2UNIX_REGEX=\t.*\\.([ch]|cpp)" + +#. (itstool) path: sect2/para +#: book.translate.xml:1034 +msgid "" +"A similar option is DOS2UNIX_GLOB, which runs " +"find for each element listed in it." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:1038 +#, no-wrap +msgid "" +"USES=\tdos2unix\n" +"DOS2UNIX_GLOB=\t*.c *.cpp *.h" +msgstr "" +"USES=\tdos2unix\n" +"DOS2UNIX_GLOB=\t*.c *.cpp *.h" + +#. (itstool) path: sect1/title +#: book.translate.xml:1044 +msgid "Configuring" +msgstr "設定" + +#. (itstool) path: sect1/para +#: book.translate.xml:1046 +msgid "" +"Include any additional customization commands in the configure script and save it in the scripts " +"subdirectory. As mentioned above, it is also possible do this with " +"Makefile targets and/or scripts with the name " +"pre-configure or post-configure." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:1055 +msgid "Handling User Input" +msgstr "處理使用者輸入" + +#. (itstool) path: sect1/para +#: book.translate.xml:1057 +msgid "" +"If the port requires user input to build, configure, or install, set " +"IS_INTERACTIVE in the Makefile. This " +"will allow overnight builds to skip it. If the user sets the " +"variable BATCH in his environment (and if the user sets the " +"variable INTERACTIVE, then only those " +"ports requiring interaction are built). This will save a lot of wasted time " +"on the set of machines that continually build ports (see below)." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:1067 +msgid "" +"It is also recommended that if there are reasonable default answers to the " +"questions, PACKAGE_BUILDING be used to turn off the " +"interactive script when it is set. This will allow us to build the packages " +"for CDROMs and FTP." +msgstr "" + +#. (itstool) path: chapter/title +#: book.translate.xml:1083 +msgid "Configuring the Makefile" +msgstr "設定 Makefile" + +#. (itstool) path: chapter/para +#: book.translate.xml:1085 +msgid "" +"Configuring the Makefile is pretty simple, and again we " +"suggest looking at existing examples before starting. Also, there is a sample Makefile in this handbook, so take " +"a look and please follow the ordering of variables and sections in that " +"template to make the port easier for others to read." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:1093 +msgid "" +"Consider these problems in sequence during the design of the new " +"Makefile:" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:1097 +msgid "The Original Source" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:1099 +msgid "" +"Does it live in DISTDIR as a standard gzipped tarball named something like foozolix-1.2.tar.gz? If so, go on to the next step. If not, the distribution file " +"format might require overriding one or more of DISTVERSION, DISTNAME, EXTRACT_CMD, " +"EXTRACT_BEFORE_ARGS, EXTRACT_AFTER_ARGS, EXTRACT_SUFX, or DISTFILES." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:1111 +msgid "" +"In the worst case, create a custom <_:buildtarget-1/> target to override the " +"default. This is rarely, if ever, necessary." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:1117 +msgid "Naming" +msgstr "命名" + +#. (itstool) path: sect1/para +#: book.translate.xml:1119 +msgid "" +"The first part of the port's Makefile names the port, " +"describes its version number, and lists it in the correct category." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:1124 +msgid "PORTNAME and PORTVERSION" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:1127 +msgid "" +"Set PORTNAME to the base name of the port. Set " +"PORTVERSION to the version number of the port unless " +"DISTVERSION is used (see )." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:1134 +msgid "" +"The package name must be unique across the entire ports tree. Make sure that " +"the PORTNAME is not already in use by an existing port. " +"If the name has already been used, add either PKGNAMEPREFIX or " +"PKGNAMESUFFIX." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:1144 +msgid "PORTREVISION and PORTEPOCH" +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:1148 +msgid "PORTREVISION" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:1150 +msgid "" +"PORTREVISION is a monotonically increasing value which is " +"reset to 0 with every increase of PORTVERSION, typically " +"every time there is a new official vendor release. If PORTREVISION is non-zero, the value is appended to the package name. Changes to " +"PORTREVISION are used by automated tools like " +"pkg-version8 to determine that a new package is available." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:1160 +msgid "" +"PORTREVISION must be increased each time a change is made " +"to the port that changes the generated package in any way. That includes " +"changes that only affect a package built with non-default options." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:1166 +msgid "Examples of when PORTREVISION must be bumped:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1171 +msgid "" +"Addition of patches to correct security vulnerabilities, bugs, or to add new " +"functionality to the port." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1177 +msgid "" +"Changes to the port Makefile to enable or disable " +"compile-time options in the package." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1183 +msgid "" +"Changes in the packing list or the install-time behavior of the package. For " +"example, a change to a script which generates initial data for the package, " +"like ssh1 host keys." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1190 +msgid "" +"Version bump of a port's shared library dependency (in this case, someone " +"trying to install the old package after installing a newer version of the " +"dependency will fail since it will look for the old libfoo.x instead of " +"libfoo.(x+1))." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1198 +msgid "" +"Silent changes to the port distfile which have significant functional " +"differences. For example, changes to the distfile requiring a correction to " +"distinfo with no corresponding change to " +"PORTVERSION, where a diff -ru of the " +"old and new versions shows non-trivial changes to the code." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:1208 +msgid "" +"Examples of changes which do not require a PORTREVISION " +"bump:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1213 +msgid "" +"Style changes to the port skeleton with no functional change to what appears " +"in the resulting package." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1219 +msgid "" +"Changes to MASTER_SITES or other functional changes to " +"the port which do not affect the resulting package." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1225 +msgid "" +"Trivial patches to the distfile such as correction of typos, which are not " +"important enough that users of the package have to go to the trouble of " +"upgrading." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1232 +msgid "" +"Build fixes which cause a package to become compilable where it was " +"previously failing. As long as the changes do not introduce any functional " +"change on any other platforms on which the port did previously build. Since " +"PORTREVISION reflects the content of the package, if the " +"package was not previously buildable then there is no need to increase " +"PORTREVISION to mark a change." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:1243 +msgid "" +"A rule of thumb is to decide whether a change committed to a port is " +"something which some people would benefit from having. " +"Either because of an enhancement, fix, or by virtue that the new package " +"will actually work at all. Then weigh that against that fact that it will " +"cause everyone who regularly updates their ports tree to be compelled to " +"update. If yes, PORTREVISION must be bumped." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:1254 +msgid "" +"People using binary packages will never see the update " +"if PORTREVISION is not bumped. Without increasing " +"PORTREVISION, the package builders have no way to detect " +"the change and thus, will not rebuild the package." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:1264 +msgid "PORTEPOCH" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:1266 +msgid "" +"From time to time a software vendor or FreeBSD porter will do something " +"silly and release a version of their software which is actually numerically " +"less than the previous version. An example of this is a port which goes from " +"foo-20000801 to foo-1.0 (the former will be incorrectly treated as a newer " +"version since 20000801 is a numerically greater value than 1)." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:1275 +msgid "" +"The results of version number comparisons are not always obvious. " +"pkg version (see pkg-" +"version8) can be used " +"to test the comparison of two version number strings. For example:" +msgstr "" + +#. (itstool) path: tip/screen +#: book.translate.xml:1280 +#, no-wrap +msgid "" +"% pkg version -t 0.031 0.29\n" +">" +msgstr "" +"% pkg version -t 0.031 0.29\n" +">" + +#. (itstool) path: tip/para +#: book.translate.xml:1283 +msgid "" +"The > output indicates that version 0.031 is " +"considered greater than version 0.29, which may not have been obvious to the " +"porter." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:1288 +msgid "" +"In situations such as this, PORTEPOCH must be increased. " +"If PORTEPOCH is nonzero it is appended to the package " +"name as described in section 0 above. PORTEPOCH must " +"never be decreased or reset to zero, because that would cause comparison to " +"a package from an earlier epoch to fail. For example, the package would not " +"be detected as out of date. The new version number, 1.0,1 " +"in the above example, is still numerically less than the previous version, " +"20000801, but the ,1 suffix is treated specially by " +"automated tools and found to be greater than the implied suffix ,0 on the earlier package." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:1303 +msgid "" +"Dropping or resetting PORTEPOCH incorrectly leads to no " +"end of grief. If the discussion above was not clear enough, please consult " +"the FreeBSD ports mailing list." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:1308 +msgid "" +"It is expected that PORTEPOCH will not be used for the " +"majority of ports, and that sensible use of PORTVERSION " +"can often preempt it becoming necessary if a future release of the software " +"changes the version structure. However, care is needed by FreeBSD porters " +"when a vendor release is made without an official version number — such as a " +"code snapshot release. The temptation is to label the release " +"with the release date, which will cause problems as in the example above " +"when a new official release is made." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:1320 +msgid "" +"For example, if a snapshot release is made on the date 20000917, and the previous version of the software was version 1.2, do not use 20000917 for PORTVERSION. The correct way is a PORTVERSION of " +"1.2.20000917, or similar, so that the succeeding release, " +"say 1.3, is still a numerically greater value." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:1332 +msgid "" +"Example of PORTREVISION and PORTEPOCH " +"Usage" +msgstr "PORTREVISIONPORTEPOCH 的使用範例" + +#. (itstool) path: sect3/para +#: book.translate.xml:1335 +msgid "" +"The gtkmumble port, version 0.10, is " +"committed to the ports collection:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:1339 +#, no-wrap +msgid "" +"PORTNAME=\tgtkmumble\n" +"PORTVERSION=\t0.10" +msgstr "" +"PORTNAME=\tgtkmumble\n" +"PORTVERSION=\t0.10" + +#. (itstool) path: sect3/para +#: book.translate.xml:1342 +msgid "PKGNAME becomes gtkmumble-0.10." +msgstr "PKGNAME 變成 gtkmumble-0.10." + +#. (itstool) path: sect3/para +#: book.translate.xml:1345 +msgid "" +"A security hole is discovered which requires a local FreeBSD patch. " +"PORTREVISION is bumped accordingly." +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:1349 +#, no-wrap +msgid "" +"PORTNAME=\tgtkmumble\n" +"PORTVERSION=\t0.10\n" +"PORTREVISION=\t1" +msgstr "" +"PORTNAME=\tgtkmumble\n" +"PORTVERSION=\t0.10\n" +"PORTREVISION=\t1" + +#. (itstool) path: sect3/para +#: book.translate.xml:1353 +msgid "PKGNAME becomes gtkmumble-0.10_1" +msgstr "PKGNAME 變成 gtkmumble-0.10_1" + +#. (itstool) path: sect3/para +#: book.translate.xml:1356 +msgid "" +"A new version is released by the vendor, numbered 0.2 (it " +"turns out the author actually intended 0.10 to actually " +"mean 0.1.0, not what comes after 0.9 - " +"oops, too late now). Since the new minor version 2 is " +"numerically less than the previous version 10, " +"PORTEPOCH must be bumped to manually force the new " +"package to be detected as newer. Since it is a new vendor " +"release of the code, PORTREVISION is reset to 0 (or " +"removed from the Makefile)." +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:1369 +#, no-wrap +msgid "" +"PORTNAME=\tgtkmumble\n" +"PORTVERSION=\t0.2\n" +"PORTEPOCH=\t1" +msgstr "" +"PORTNAME=\tgtkmumble\n" +"PORTVERSION=\t0.2\n" +"PORTEPOCH=\t1" + +#. (itstool) path: sect3/para +#: book.translate.xml:1373 +msgid "PKGNAME becomes gtkmumble-0.2,1" +msgstr "PKGNAME 變成 gtkmumble-0.2,1" + +#. (itstool) path: sect3/para +#: book.translate.xml:1376 +msgid "" +"The next release is 0.3. Since PORTEPOCH never decreases, " +"the version variables are now:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:1380 +#, no-wrap +msgid "" +"PORTNAME=\tgtkmumble\n" +"PORTVERSION=\t0.3\n" +"PORTEPOCH=\t1" +msgstr "" +"PORTNAME=\tgtkmumble\n" +"PORTVERSION=\t0.3\n" +"PORTEPOCH=\t1" + +#. (itstool) path: sect3/para +#: book.translate.xml:1384 +msgid "PKGNAME becomes gtkmumble-0.3,1" +msgstr "PKGNAME 變成 gtkmumble-0.3,1" + +#. (itstool) path: note/para +#: book.translate.xml:1388 +msgid "" +"If PORTEPOCH were reset to 0 with this " +"upgrade, someone who had installed the gtkmumble-0.10_1 " +"package would not detect the gtkmumble-0.3 package as " +"newer, since 3 is still numerically less than " +"10. Remember, this is the whole point of " +"PORTEPOCH in the first place." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:1401 +msgid "PKGNAMEPREFIX and PKGNAMESUFFIX" +msgstr "PKGNAMEPREFIXPKGNAMESUFFIX" + +#. (itstool) path: sect2/para +#: book.translate.xml:1404 +msgid "" +"Two optional variables, PKGNAMEPREFIX and " +"PKGNAMESUFFIX, are combined with PORTNAME and PORTVERSION to form PKGNAME as ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-" +"${PORTVERSION}. Make sure this conforms to our guidelines for a good package name. In " +"particular, the use of a hyphen (-) in " +"PORTVERSION is not allowed. Also, if " +"the package name has the language- or the " +"-compiled.specifics part (see below), use " +"PKGNAMEPREFIX and PKGNAMESUFFIX, " +"respectively. Do not make them part of PORTNAME." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:1424 +msgid "Package Naming Conventions" +msgstr "套件命名慣例" + +#. (itstool) path: sect2/para +#: book.translate.xml:1426 +msgid "" +"These are the conventions to follow when naming packages. This is to make " +"the package directory easy to scan, as there are already thousands of " +"packages and users are going to turn away if they hurt their eyes!" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:1431 +msgid "" +"Package names take the form of language_region-name-" +"compiled.specifics-version.numbers." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:1434 +msgid "" +"The package name is defined as " +"${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}. Make " +"sure to set the variables to conform to that format." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:1441 +msgid "language_region-" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1444 +msgid "" +"FreeBSD strives to support the native language of its users. The " +"language- part is a two letter abbreviation of " +"the natural language defined by ISO-639 when the port is specific to a " +"certain language. Examples are ja for Japanese, " +"ru for Russian, vi for Vietnamese, " +"zh for Chinese, ko for Korean and " +"de for German." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1454 +msgid "" +"If the port is specific to a certain region within the language area, add " +"the two letter country code as well. Examples are en_US " +"for US English and fr_CH for Swiss French." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1460 +msgid "" +"The language- part is set in " +"PKGNAMEPREFIX." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:1466 +msgid "name" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1469 +msgid "" +"Make sure that the port's name and version are clearly separated and placed " +"into PORTNAME and PORTVERSION. The " +"only reason for PORTNAME to contain a version part is if " +"the upstream distribution is really named that way, as in the textproc/libxml2 or japanese/" +"kinput2-freewnn ports. Otherwise, PORTNAME " +"cannot contain any version-specific information. It is quite normal for " +"several ports to have the same PORTNAME, as the www/apache* ports do; in that case, different " +"versions (and different index entries) are distinguished by " +"PKGNAMEPREFIX and PKGNAMESUFFIX values." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1488 +msgid "" +"There is a tradition of naming Perl 5 modules by " +"prepending p5- and converting the double-colon separator " +"to a hyphen. For example, the Data::Dumper module becomes " +"p5-Data-Dumper." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:1498 +msgid "-compiled.specifics" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1501 +msgid "" +"If the port can be built with different hardcoded defaults (usually part of the directory name in a family " +"of ports), the -compiled.specifics part states " +"the compiled-in defaults. The hyphen is optional. Examples are paper size " +"and font units." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1509 +msgid "" +"The -compiled.specifics part is set in " +"PKGNAMESUFFIX." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:1515 +msgid "-version.numbers" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1518 +msgid "" +"The version string follows a dash (-) and is a period-" +"separated list of integers and single lowercase alphabetics. In particular, " +"it is not permissible to have another dash inside the version string. The " +"only exception is the string pl (meaning " +"patchlevel), which can be used only when " +"there are no major and minor version numbers in the software. If the " +"software version has strings like alpha, beta, " +"rc, or pre, take the first letter and put it " +"immediately after a period. If the version string continues after those " +"names, the numbers follow the single alphabet without an extra period " +"between them (for example, 1.0b2)." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:1535 +msgid "" +"The idea is to make it easier to sort ports by looking at the version " +"string. In particular, make sure version number components are always " +"delimited by a period, and if the date is part of the string, use the " +"0.0.yyyy.mm." +"dd format, not " +"dd.mm." +"yyyy or the non-Y2K compliant " +"yy.mm." +"dd format. It is important to prefix " +"the version with 0.0. in case a release with an actual " +"version number is made, which would be numerically less than " +"yyyy." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:1554 +msgid "" +"Package name must be unique among all of the ports tree, check that there is " +"not already a port with the same PORTNAME and if there is " +"add one of PKGNAMEPREFIX or PKGNAMESUFFIX." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:1560 +msgid "" +"Here are some (real) examples on how to convert the name as called by the " +"software authors to a suitable package name:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:1565 +msgid "Package Naming Examples" +msgstr "套件命名範例" + +#. (itstool) path: row/entry +#: book.translate.xml:1570 +msgid "Distribution Name" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1571 +msgid "PKGNAMEPREFIX" +msgstr "PKGNAMEPREFIX" + +#. (itstool) path: row/entry +#: book.translate.xml:1572 +msgid "PORTNAME" +msgstr "PORTNAME" + +#. (itstool) path: row/entry +#: book.translate.xml:1573 +msgid "PKGNAMESUFFIX" +msgstr "PKGNAMESUFFIX" + +#. (itstool) path: row/entry +#: book.translate.xml:1574 book.translate.xml:2640 +msgid "PORTVERSION" +msgstr "PORTVERSION" + +#. (itstool) path: row/entry +#: book.translate.xml:1575 +msgid "Reason" +msgstr "原因" + +#. (itstool) path: row/entry +#: book.translate.xml:1581 +msgid "mule-2.2.2" +msgstr "mule-2.2.2" + +#. (itstool) path: row/entry +#: book.translate.xml:1582 book.translate.xml:1584 book.translate.xml:1591 +#: book.translate.xml:1600 book.translate.xml:1602 book.translate.xml:1609 +#: book.translate.xml:1611 book.translate.xml:1619 book.translate.xml:1621 +#: book.translate.xml:1629 book.translate.xml:1631 book.translate.xml:1639 +#: book.translate.xml:1641 book.translate.xml:1648 book.translate.xml:1650 +#: book.translate.xml:1657 book.translate.xml:1659 book.translate.xml:1666 +#: book.translate.xml:1668 book.translate.xml:1678 book.translate.xml:1685 +#: book.translate.xml:1695 book.translate.xml:11266 book.translate.xml:11283 +#: book.translate.xml:11291 +msgid "(empty)" +msgstr "(空)" + +#. (itstool) path: row/entry +#: book.translate.xml:1583 book.translate.xml:1592 +msgid "mule" +msgstr "mule" + +#. (itstool) path: row/entry +#: book.translate.xml:1585 +msgid "2.2.2" +msgstr "2.2.2" + +#. (itstool) path: row/entry +#: book.translate.xml:1586 +msgid "No changes required" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1590 +msgid "mule-1.0.1" +msgstr "mule-1.0.1" + +#. (itstool) path: row/entry +#: book.translate.xml:1593 +msgid "1" +msgstr "1" + +#. (itstool) path: row/entry +#: book.translate.xml:1594 +msgid "1.0.1" +msgstr "1.0.1" + +#. (itstool) path: row/entry +#: book.translate.xml:1595 +msgid "mule already exists" +msgstr "mule 已存在" + +#. (itstool) path: row/entry +#: book.translate.xml:1599 +msgid "EmiClock-1.0.2" +msgstr "EmiClock-1.0.2" + +#. (itstool) path: row/entry +#: book.translate.xml:1601 +msgid "emiclock" +msgstr "emiclock" + +#. (itstool) path: row/entry +#: book.translate.xml:1603 +msgid "1.0.2" +msgstr "1.0.2" + +#. (itstool) path: row/entry +#: book.translate.xml:1604 +msgid "No uppercase names for single programs" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1608 +msgid "rdist-1.3alpha" +msgstr "rdist-1.3alpha" + +#. (itstool) path: row/entry +#: book.translate.xml:1610 +msgid "rdist" +msgstr "rdist" + +#. (itstool) path: row/entry +#: book.translate.xml:1612 +msgid "1.3.a" +msgstr "1.3.a" + +#. (itstool) path: row/entry +#: book.translate.xml:1613 +msgid "No strings like alpha allowed" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1618 +msgid "es-0.9-beta1" +msgstr "es-0.9-beta1" + +#. (itstool) path: row/entry +#: book.translate.xml:1620 +msgid "es" +msgstr "es" + +#. (itstool) path: row/entry +#: book.translate.xml:1622 +msgid "0.9.b1" +msgstr "0.9.b1" + +#. (itstool) path: row/entry +#: book.translate.xml:1623 +msgid "No strings like beta allowed" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1628 +msgid "mailman-2.0rc3" +msgstr "mailman-2.0rc3" + +#. (itstool) path: row/entry +#: book.translate.xml:1630 +msgid "mailman" +msgstr "mailman" + +#. (itstool) path: row/entry +#: book.translate.xml:1632 +msgid "2.0.r3" +msgstr "2.0.r3" + +#. (itstool) path: row/entry +#: book.translate.xml:1633 +msgid "No strings like rc allowed" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1638 +msgid "v3.3beta021.src" +msgstr "v3.3beta021.src" + +#. (itstool) path: row/entry +#: book.translate.xml:1640 +msgid "tiff" +msgstr "tiff" + +#. (itstool) path: row/entry +#: book.translate.xml:1642 +msgid "3.3" +msgstr "3.3" + +#. (itstool) path: row/entry +#: book.translate.xml:1643 +msgid "What the heck was that anyway?" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1647 book.translate.xml:1649 +msgid "tvtwm" +msgstr "tvtwm" + +#. (itstool) path: row/entry +#: book.translate.xml:1651 +msgid "pl11" +msgstr "pl11" + +#. (itstool) path: row/entry +#: book.translate.xml:1652 book.translate.xml:1661 +msgid "Version string always required" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1656 book.translate.xml:1658 +msgid "piewm" +msgstr "piewm" + +#. (itstool) path: row/entry +#: book.translate.xml:1660 book.translate.xml:1698 +msgid "1.0" +msgstr "1.0" + +#. (itstool) path: row/entry +#: book.translate.xml:1665 +msgid "xvgr-2.10pl1" +msgstr "xvgr-2.10pl1" + +#. (itstool) path: row/entry +#: book.translate.xml:1667 +msgid "xvgr" +msgstr "xvgr" + +#. (itstool) path: row/entry +#: book.translate.xml:1669 +msgid "2.10.1" +msgstr "2.10.1" + +#. (itstool) path: row/entry +#: book.translate.xml:1670 +msgid "pl allowed only when no major/minor version numbers" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1675 +msgid "gawk-2.15.6" +msgstr "gawk-2.15.6" + +#. (itstool) path: row/entry +#: book.translate.xml:1676 +msgid "ja-" +msgstr "ja-" + +#. (itstool) path: row/entry +#: book.translate.xml:1677 +msgid "gawk" +msgstr "gawk" + +#. (itstool) path: row/entry +#: book.translate.xml:1679 +msgid "2.15.6" +msgstr "2.15.6" + +#. (itstool) path: row/entry +#: book.translate.xml:1680 +msgid "Japanese language version" +msgstr "日文版" + +#. (itstool) path: row/entry +#: book.translate.xml:1684 +msgid "psutils-1.13" +msgstr "psutils-1.13" + +#. (itstool) path: row/entry +#: book.translate.xml:1686 +msgid "psutils" +msgstr "psutils" + +#. (itstool) path: row/entry +#: book.translate.xml:1687 +msgid "-letter" +msgstr "-letter" + +#. (itstool) path: row/entry +#: book.translate.xml:1688 +msgid "1.13" +msgstr "1.13" + +#. (itstool) path: row/entry +#: book.translate.xml:1689 +msgid "Paper size hardcoded at package build time" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1694 book.translate.xml:1696 +msgid "pkfonts" +msgstr "pkfonts" + +#. (itstool) path: row/entry +#: book.translate.xml:1697 +msgid "300" +msgstr "300" + +#. (itstool) path: row/entry +#: book.translate.xml:1699 +msgid "Package for 300dpi fonts" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:1705 +msgid "" +"If there is absolutely no trace of version information in the original " +"source and it is unlikely that the original author will ever release another " +"version, just set the version string to 1.0 (like the " +"piewm example above). Otherwise, ask the original author " +"or use the date string the source file was released on (0.0." +"yyyy.mm." +"dd) as the version." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:1718 +msgid "Categorization" +msgstr "分類" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:1721 book.translate.xml:5664 +msgid "CATEGORIES" +msgstr "CATEGORIES" + +#. (itstool) path: sect2/para +#: book.translate.xml:1723 +msgid "" +"When a package is created, it is put under /usr/ports/packages/" +"All and links are made from one or more subdirectories of " +"/usr/ports/packages. The names of these subdirectories " +"are specified by the variable CATEGORIES. It is intended " +"to make life easier for the user when he is wading through the pile of " +"packages on the FTP site or the CDROM. Please take a look at the current list of categories and pick " +"the ones that are suitable for the port." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:1735 +msgid "" +"This list also determines where in the ports tree the port is imported. If " +"there is more than one category here, the port files must be put in the " +"subdirectory with the name of the first category. See below for more discussion about how to pick " +"the right categories." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:1744 +msgid "Current List of Categories" +msgstr "目前分類清單" + +#. (itstool) path: sect2/para +#: book.translate.xml:1746 +msgid "" +"Here is the current list of port categories. Those marked with an asterisk " +"(*) are virtual categories—those " +"that do not have a corresponding subdirectory in the ports tree. They are " +"only used as secondary categories, and only for search purposes." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:1754 +msgid "" +"For non-virtual categories, there is a one-line description in " +"COMMENT in that subdirectory's Makefile." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1763 +msgid "Category" +msgstr "分類" + +#. (itstool) path: row/entry +#: book.translate.xml:1764 book.translate.xml:3014 book.translate.xml:8055 +#: book.translate.xml:8328 book.translate.xml:8364 book.translate.xml:8636 +#: book.translate.xml:8801 book.translate.xml:8875 book.translate.xml:8935 +#: book.translate.xml:9108 book.translate.xml:10264 book.translate.xml:10309 +#: book.translate.xml:10544 book.translate.xml:10620 book.translate.xml:10698 +#: book.translate.xml:10752 book.translate.xml:10853 book.translate.xml:10959 +#: book.translate.xml:11132 book.translate.xml:14953 +msgid "Description" +msgstr "描述" + +#. (itstool) path: row/entry +#: book.translate.xml:1765 +msgid "Notes" +msgstr "註" + +#. (itstool) path: row/entry +#: book.translate.xml:1771 +msgid "accessibility" +msgstr "accessibility" + +#. (itstool) path: row/entry +#: book.translate.xml:1772 +msgid "Ports to help disabled users." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1777 +msgid "afterstep*" +msgstr "afterstep*" + +#. (itstool) path: row/entry +#: book.translate.xml:1779 +msgid "" +"Ports to support the AfterStep window manager." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1785 +msgid "arabic" +msgstr "arabic" + +#. (itstool) path: row/entry +#: book.translate.xml:1786 +msgid "Arabic language support." +msgstr "阿拉伯文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:1791 +msgid "archivers" +msgstr "archivers" + +#. (itstool) path: row/entry +#: book.translate.xml:1792 +msgid "Archiving tools." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1797 +msgid "astro" +msgstr "astro" + +#. (itstool) path: row/entry +#: book.translate.xml:1798 +msgid "Astronomical ports." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1803 +msgid "audio" +msgstr "audio" + +#. (itstool) path: row/entry +#: book.translate.xml:1804 +msgid "Sound support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1809 +msgid "benchmarks" +msgstr "benchmarks" + +#. (itstool) path: row/entry +#: book.translate.xml:1810 +msgid "Benchmarking utilities." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1815 +msgid "biology" +msgstr "biology" + +#. (itstool) path: row/entry +#: book.translate.xml:1816 +msgid "Biology-related software." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1821 +msgid "cad" +msgstr "cad" + +#. (itstool) path: row/entry +#: book.translate.xml:1822 +msgid "Computer aided design tools." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1827 +msgid "chinese" +msgstr "chinese" + +#. (itstool) path: row/entry +#: book.translate.xml:1828 +msgid "Chinese language support." +msgstr "中文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:1833 +msgid "comms" +msgstr "comms" + +#. (itstool) path: row/entry +#: book.translate.xml:1834 +msgid "Communication software." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1835 +msgid "Mostly software to talk to the serial port." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1840 +msgid "converters" +msgstr "converters" + +#. (itstool) path: row/entry +#: book.translate.xml:1841 +msgid "Character code converters." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1846 +msgid "databases" +msgstr "databases" + +#. (itstool) path: row/entry +#: book.translate.xml:1847 +msgid "Databases." +msgstr "資料庫。" + +#. (itstool) path: row/entry +#: book.translate.xml:1852 +msgid "deskutils" +msgstr "deskutils" + +#. (itstool) path: row/entry +#: book.translate.xml:1853 +msgid "Things that used to be on the desktop before computers were invented." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1859 +msgid "devel" +msgstr "devel" + +#. (itstool) path: row/entry +#: book.translate.xml:1860 +msgid "Development utilities." +msgstr "開發公用程式。" + +#. (itstool) path: row/entry +#: book.translate.xml:1861 +msgid "" +"Do not put libraries here just because they are libraries. They should " +"not be in this category unless they truly do not belong " +"anywhere else." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1868 +msgid "dns" +msgstr "dns" + +#. (itstool) path: row/entry +#: book.translate.xml:1869 +msgid "DNS-related software." +msgstr "DNS 相關軟體。" + +#. (itstool) path: row/entry +#: book.translate.xml:1874 +msgid "docs*" +msgstr "docs*" + +#. (itstool) path: row/entry +#: book.translate.xml:1875 +msgid "Meta-ports for FreeBSD documentation." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1880 +msgid "editors" +msgstr "editors" + +#. (itstool) path: row/entry +#: book.translate.xml:1881 +msgid "General editors." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1882 +msgid "" +"Specialized editors go in the section for those tools. For example, a " +"mathematical-formula editor will go in math, and have " +"editors as a second category." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1890 +msgid "elisp*" +msgstr "elisp*" + +#. (itstool) path: row/entry +#: book.translate.xml:1891 +msgid "Emacs-lisp ports." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1896 +msgid "emulators" +msgstr "emulators" + +#. (itstool) path: row/entry +#: book.translate.xml:1897 +msgid "Emulators for other operating systems." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1898 +msgid "" +"Terminal emulators do not belong here. X-based ones go " +"to x11 and text-based ones to either comms or misc, depending on the exact functionality." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1907 +msgid "finance" +msgstr "finance" + +#. (itstool) path: row/entry +#: book.translate.xml:1908 +msgid "Monetary, financial and related applications." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1914 +msgid "french" +msgstr "french" + +#. (itstool) path: row/entry +#: book.translate.xml:1915 +msgid "French language support." +msgstr "法文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:1920 +msgid "ftp" +msgstr "ftp" + +#. (itstool) path: row/entry +#: book.translate.xml:1921 +msgid "FTP client and server utilities." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1923 +msgid "" +"If the port speaks both FTP and HTTP, " +"put it in ftp with a secondary category of " +"www." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1930 +msgid "games" +msgstr "games" + +#. (itstool) path: row/entry +#: book.translate.xml:1931 +msgid "Games." +msgstr "遊戲。" + +#. (itstool) path: row/entry +#: book.translate.xml:1936 +msgid "geography*" +msgstr "geography*" + +#. (itstool) path: row/entry +#: book.translate.xml:1937 +msgid "Geography-related software." +msgstr "地理相關軟體。" + +#. (itstool) path: row/entry +#: book.translate.xml:1942 +msgid "german" +msgstr "german" + +#. (itstool) path: row/entry +#: book.translate.xml:1943 +msgid "German language support." +msgstr "德文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:1948 +msgid "gnome*" +msgstr "gnome*" + +#. (itstool) path: row/entry +#: book.translate.xml:1949 +msgid "" +"Ports from the GNOME " +"Project." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1956 +msgid "gnustep*" +msgstr "gnustep*" + +#. (itstool) path: row/entry +#: book.translate.xml:1957 +msgid "Software related to the GNUstep desktop environment." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1963 +msgid "graphics" +msgstr "graphics" + +#. (itstool) path: row/entry +#: book.translate.xml:1964 +msgid "Graphics utilities." +msgstr "繪圖公用程式。" + +#. (itstool) path: row/entry +#: book.translate.xml:1969 +msgid "hamradio*" +msgstr "hamradio*" + +#. (itstool) path: row/entry +#: book.translate.xml:1970 +msgid "Software for amateur radio." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1975 +msgid "haskell*" +msgstr "haskell*" + +#. (itstool) path: row/entry +#: book.translate.xml:1976 +msgid "Software related to the Haskell language." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:1982 +msgid "hebrew" +msgstr "hebrew" + +#. (itstool) path: row/entry +#: book.translate.xml:1983 +msgid "Hebrew language support." +msgstr "希伯來文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:1988 +msgid "hungarian" +msgstr "hungarian" + +#. (itstool) path: row/entry +#: book.translate.xml:1989 +msgid "Hungarian language support." +msgstr "匈牙利文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:1994 +msgid "ipv6*" +msgstr "ipv6*" + +#. (itstool) path: row/entry +#: book.translate.xml:1995 +msgid "IPv6 related software." +msgstr "IPv6 相關軟體。" + +#. (itstool) path: row/entry +#: book.translate.xml:2000 +msgid "irc" +msgstr "irc" + +#. (itstool) path: row/entry +#: book.translate.xml:2001 +msgid "Internet Relay Chat utilities." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2006 +msgid "japanese" +msgstr "japanese" + +#. (itstool) path: row/entry +#: book.translate.xml:2007 +msgid "Japanese language support." +msgstr "日文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:2012 +msgid "java" +msgstr "java" + +#. (itstool) path: row/entry +#: book.translate.xml:2013 +msgid "Software related to the Java™ language." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2015 +msgid "" +"The java category must not be the only one for a port. " +"Save for ports directly related to the Java language, porters are also " +"encouraged not to use java as the main category of a " +"port." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2023 +msgid "kde*" +msgstr "kde*" + +#. (itstool) path: row/entry +#: book.translate.xml:2024 +msgid "" +"Ports from the KDE Project." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2031 +msgid "kld*" +msgstr "kld*" + +#. (itstool) path: row/entry +#: book.translate.xml:2032 +msgid "Kernel loadable modules." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2037 +msgid "korean" +msgstr "korean" + +#. (itstool) path: row/entry +#: book.translate.xml:2038 +msgid "Korean language support." +msgstr "韓文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:2043 +msgid "lang" +msgstr "lang" + +#. (itstool) path: row/entry +#: book.translate.xml:2044 +msgid "Programming languages." +msgstr "程式語言。" + +#. (itstool) path: row/entry +#: book.translate.xml:2049 +msgid "linux*" +msgstr "linux*" + +#. (itstool) path: row/entry +#: book.translate.xml:2050 +msgid "Linux applications and support utilities." +msgstr "Linux 應用程式和支援的公用程式" + +#. (itstool) path: row/entry +#: book.translate.xml:2056 +msgid "lisp*" +msgstr "lisp*" + +#. (itstool) path: row/entry +#: book.translate.xml:2057 +msgid "Software related to the Lisp language." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2062 +msgid "mail" +msgstr "mail" + +#. (itstool) path: row/entry +#: book.translate.xml:2063 +msgid "Mail software." +msgstr "郵件軟體" + +#. (itstool) path: row/entry +#: book.translate.xml:2068 +msgid "math" +msgstr "math" + +#. (itstool) path: row/entry +#: book.translate.xml:2069 +msgid "Numerical computation software and other utilities for mathematics." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2075 +msgid "mbone*" +msgstr "mbone*" + +#. (itstool) path: row/entry +#: book.translate.xml:2076 +msgid "MBone applications." +msgstr "MBone 應用程式。" + +#. (itstool) path: row/entry +#: book.translate.xml:2081 +msgid "misc" +msgstr "misc" + +#. (itstool) path: row/entry +#: book.translate.xml:2082 +msgid "Miscellaneous utilities" +msgstr "其他公用程式" + +#. (itstool) path: row/entry +#: book.translate.xml:2083 +msgid "" +"Things that do not belong anywhere else. If at all possible, try to find a " +"better category for the port than misc, as ports tend to " +"be overlooked in here." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2090 +msgid "multimedia" +msgstr "multimedia" + +#. (itstool) path: row/entry +#: book.translate.xml:2091 +msgid "Multimedia software." +msgstr "多媒體軟體。" + +#. (itstool) path: row/entry +#: book.translate.xml:2096 +msgid "net" +msgstr "net" + +#. (itstool) path: row/entry +#: book.translate.xml:2097 +msgid "Miscellaneous networking software." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2102 +msgid "net-im" +msgstr "net-im" + +#. (itstool) path: row/entry +#: book.translate.xml:2103 +msgid "Instant messaging software." +msgstr "即時通訊軟體。" + +#. (itstool) path: row/entry +#: book.translate.xml:2108 +msgid "net-mgmt" +msgstr "net-mgmt" + +#. (itstool) path: row/entry +#: book.translate.xml:2109 +msgid "Networking management software." +msgstr "網路管理軟體。" + +#. (itstool) path: row/entry +#: book.translate.xml:2114 +msgid "net-p2p" +msgstr "net-p2p" + +#. (itstool) path: row/entry +#: book.translate.xml:2115 +msgid "Peer to peer network applications." +msgstr "點對點 (Peer to peer) 網路應用程式。" + +#. (itstool) path: row/entry +#: book.translate.xml:2120 +msgid "news" +msgstr "news" + +#. (itstool) path: row/entry +#: book.translate.xml:2121 +msgid "USENET news software." +msgstr "USENET 新聞軟體。" + +#. (itstool) path: row/entry +#: book.translate.xml:2126 +msgid "palm" +msgstr "palm" + +#. (itstool) path: row/entry +#: book.translate.xml:2128 +msgid "" +"Software support for the Palm™ series." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2134 +msgid "parallel*" +msgstr "parallel*" + +#. (itstool) path: row/entry +#: book.translate.xml:2135 +msgid "Applications dealing with parallelism in computing." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2141 +msgid "pear*" +msgstr "pear*" + +#. (itstool) path: row/entry +#: book.translate.xml:2142 +msgid "Ports related to the Pear PHP framework." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2148 +msgid "perl5*" +msgstr "perl5*" + +#. (itstool) path: row/entry +#: book.translate.xml:2149 +msgid "Ports that require Perl version 5 to run." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2156 +msgid "plan9*" +msgstr "plan9*" + +#. (itstool) path: row/entry +#: book.translate.xml:2158 +msgid "" +"Various programs from Plan9." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2163 +msgid "polish" +msgstr "polish" + +#. (itstool) path: row/entry +#: book.translate.xml:2164 +msgid "Polish language support." +msgstr "波蘭文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:2169 +msgid "ports-mgmt" +msgstr "ports-mgmt" + +#. (itstool) path: row/entry +#: book.translate.xml:2170 +msgid "" +"Ports for managing, installing and developing FreeBSD ports and packages." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2175 +msgid "portuguese" +msgstr "portuguese" + +#. (itstool) path: row/entry +#: book.translate.xml:2176 +msgid "Portuguese language support." +msgstr "葡萄牙文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:2181 +msgid "print" +msgstr "print" + +#. (itstool) path: row/entry +#: book.translate.xml:2182 +msgid "Printing software." +msgstr "列印軟體。" + +#. (itstool) path: row/entry +#: book.translate.xml:2183 +msgid "Desktop publishing tools (previewers, etc.) belong here too." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2188 +msgid "python*" +msgstr "python*" + +#. (itstool) path: row/entry +#: book.translate.xml:2190 +msgid "" +"Software related to the Python language." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2196 +msgid "ruby*" +msgstr "ruby*" + +#. (itstool) path: row/entry +#: book.translate.xml:2197 +msgid "" +"Software related to the Ruby language." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2203 +msgid "rubygems*" +msgstr "rubygems*" + +#. (itstool) path: row/entry +#: book.translate.xml:2205 +msgid "" +"Ports of RubyGems " +"packages." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2211 +msgid "russian" +msgstr "russian" + +#. (itstool) path: row/entry +#: book.translate.xml:2212 +msgid "Russian language support." +msgstr "俄文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:2217 +msgid "scheme*" +msgstr "scheme*" + +#. (itstool) path: row/entry +#: book.translate.xml:2218 +msgid "Software related to the Scheme language." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2224 +msgid "science" +msgstr "science" + +#. (itstool) path: row/entry +#: book.translate.xml:2225 +msgid "" +"Scientific ports that do not fit into other categories such as " +"astro, biology and math." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2233 +msgid "security" +msgstr "security" + +#. (itstool) path: row/entry +#: book.translate.xml:2234 +msgid "Security utilities." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2239 +msgid "shells" +msgstr "shells" + +#. (itstool) path: row/entry +#: book.translate.xml:2240 +msgid "Command line shells." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2245 +msgid "spanish*" +msgstr "spanish*" + +#. (itstool) path: row/entry +#: book.translate.xml:2246 +msgid "Spanish language support." +msgstr "西班牙文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:2251 +msgid "sysutils" +msgstr "sysutils" + +#. (itstool) path: row/entry +#: book.translate.xml:2252 +msgid "System utilities." +msgstr "系統公用程式。" + +#. (itstool) path: row/entry +#: book.translate.xml:2257 +msgid "tcl*" +msgstr "tcl*" + +#. (itstool) path: row/entry +#: book.translate.xml:2258 +msgid "Ports that use Tcl to run." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2263 +msgid "textproc" +msgstr "textproc" + +#. (itstool) path: row/entry +#: book.translate.xml:2264 +msgid "Text processing utilities." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2265 +msgid "" +"It does not include desktop publishing tools, which go to print." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2270 +msgid "tk*" +msgstr "tk*" + +#. (itstool) path: row/entry +#: book.translate.xml:2271 +msgid "Ports that use Tk to run." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2276 +msgid "ukrainian" +msgstr "ukrainian" + +#. (itstool) path: row/entry +#: book.translate.xml:2277 +msgid "Ukrainian language support." +msgstr "烏克蘭文支援" + +#. (itstool) path: row/entry +#: book.translate.xml:2282 +msgid "vietnamese" +msgstr "vietnamese" + +#. (itstool) path: row/entry +#: book.translate.xml:2283 +msgid "Vietnamese language support." +msgstr "越南文支援。" + +#. (itstool) path: row/entry +#: book.translate.xml:2288 +msgid "windowmaker*" +msgstr "windowmaker*" + +#. (itstool) path: row/entry +#: book.translate.xml:2289 +msgid "Ports to support the WindowMaker window manager." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2295 +msgid "www" +msgstr "www" + +#. (itstool) path: row/entry +#: book.translate.xml:2296 +msgid "Software related to the World Wide Web." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2297 +msgid "HTML language support belongs here too." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2302 +msgid "x11" +msgstr "x11" + +#. (itstool) path: row/entry +#: book.translate.xml:2303 +msgid "The X Window System and friends." +msgstr "X Window 系統和他的朋友們。" + +#. (itstool) path: row/entry +#: book.translate.xml:2304 +msgid "" +"This category is only for software that directly supports the window system. " +"Do not put regular X applications here. Most of them go into other " +"x11-* categories (see below)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2312 +msgid "x11-clocks" +msgstr "x11-clocks" + +#. (itstool) path: row/entry +#: book.translate.xml:2313 +msgid "X11 clocks." +msgstr "X11 時鐘。" + +#. (itstool) path: row/entry +#: book.translate.xml:2318 +msgid "x11-drivers" +msgstr "x11-drivers" + +#. (itstool) path: row/entry +#: book.translate.xml:2319 +msgid "X11 drivers." +msgstr "X11 驅動程式。" + +#. (itstool) path: row/entry +#: book.translate.xml:2324 +msgid "x11-fm" +msgstr "x11-fm" + +#. (itstool) path: row/entry +#: book.translate.xml:2325 +msgid "X11 file managers." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2330 +msgid "x11-fonts" +msgstr "x11-fonts" + +#. (itstool) path: row/entry +#: book.translate.xml:2331 +msgid "X11 fonts and font utilities." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2336 +msgid "x11-servers" +msgstr "x11-servers" + +#. (itstool) path: row/entry +#: book.translate.xml:2337 +msgid "X11 servers." +msgstr "X11 伺服器。" + +#. (itstool) path: row/entry +#: book.translate.xml:2342 +msgid "x11-themes" +msgstr "x11-themes" + +#. (itstool) path: row/entry +#: book.translate.xml:2343 +msgid "X11 themes." +msgstr "X11 佈景主題。" + +#. (itstool) path: row/entry +#: book.translate.xml:2348 +msgid "x11-toolkits" +msgstr "x11-toolkits" + +#. (itstool) path: row/entry +#: book.translate.xml:2349 +msgid "X11 toolkits." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2354 +msgid "x11-wm" +msgstr "x11-wm" + +#. (itstool) path: row/entry +#: book.translate.xml:2355 +msgid "X11 window managers." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2360 +msgid "xfce*" +msgstr "xfce*" + +#. (itstool) path: row/entry +#: book.translate.xml:2361 +msgid "" +"Ports related to the Xfce " +"desktop environment." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2368 +msgid "zope*" +msgstr "zope*" + +#. (itstool) path: row/entry +#: book.translate.xml:2369 +msgid "Zope support." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:2379 +msgid "Choosing the Right Category" +msgstr "選擇正確的目錄" + +#. (itstool) path: sect2/para +#: book.translate.xml:2381 +msgid "" +"As many of the categories overlap, choosing which of the categories will be " +"the primary category of the port can be tedious. There are several rules " +"that govern this issue. Here is the list of priorities, in decreasing order " +"of precedence:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2389 +msgid "" +"The first category must be a physical category (see above). This is necessary to make the packaging work. " +"Virtual categories and physical categories may be intermixed after that." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2397 +msgid "" +"Language specific categories always come first. For example, if the port " +"installs Japanese X11 fonts, then the CATEGORIES line " +"would read japanese x11-fonts." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2404 +msgid "" +"Specific categories are listed before less-specific ones. For instance, an " +"HTML editor is listed as www editors, not the other way " +"around. Also, do not list net when the port belongs to " +"any of irc, mail, news, security, or www, as " +"net is included implicitly." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2416 +msgid "" +"x11 is used as a secondary category only when the " +"primary category is a natural language. In particular, do not put " +"x11 in the category line for X applications." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2424 +msgid "" +"Emacs modes are placed in the same ports category " +"as the application supported by the mode, not in editors. For example, an Emacs mode to edit " +"source files of some programming language goes into lang." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2434 +msgid "" +"Ports installing loadable kernel modules also have the virtual category " +"kld in their CATEGORIES line. This " +"is one of the things handled automatically by adding USES=kmod." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2442 +msgid "" +"misc does not appear with any other non-virtual " +"category. If there is misc with something else in " +"CATEGORIES, that means misc can safely " +"be deleted and the port placed only in the other subdirectory." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2451 +msgid "" +"If the port truly does not belong anywhere else, put it in misc." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:2456 +msgid "" +"If the category is not clearly defined, please put a comment to that effect " +"in the port " +"submission in the bug database so we can discuss it before we import " +"it. As a committer, send a note to the FreeBSD ports mailing list so we can discuss it first. Too often, new ports are imported to the " +"wrong category only to be moved right away. This causes unnecessary and " +"undesirable bloat in the master source repository." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:2467 +msgid "Proposing a New Category" +msgstr "提出新的目錄" + +#. (itstool) path: sect2/para +#: book.translate.xml:2469 +msgid "" +"As the Ports Collection has grown over time, various new categories have " +"been introduced. New categories can either be virtual " +"categories—those that do not have a corresponding subdirectory in the ports " +"tree— or physical categories—those that do. This " +"section discusses the issues involved in creating a new physical category. " +"Read it thouroughly before proposing a new one." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:2478 +msgid "" +"Our existing practice has been to avoid creating a new physical category " +"unless either a large number of ports would logically belong to it, or the " +"ports that would belong to it are a logically distinct group that is of " +"limited general interest (for instance, categories related to spoken human " +"languages), or preferably both." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:2485 +msgid "" +"The rationale for this is that such a change creates a fair amount of work for both the committers and also for all users " +"who track changes to the Ports Collection. In addition, proposed category " +"changes just naturally seem to attract controversy. (Perhaps this is because " +"there is no clear consensus on when a category is too big, " +"nor whether categories should lend themselves to browsing (and thus what " +"number of categories would be an ideal number), and so forth.)" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:2496 +msgid "Here is the procedure:" +msgstr "步驟如下:" + +#. (itstool) path: step/para +#: book.translate.xml:2500 +msgid "" +"Propose the new category on FreeBSD ports mailing list. Include " +"a detailed rationale for the new category, including why the existing " +"categories are not sufficient, and the list of existing ports proposed to " +"move. (If there are new ports pending in Bugzilla " +"that would fit this category, list them too.) If you are the maintainer and/" +"or submitter, respectively, mention that as it may help the case." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:2512 +msgid "Participate in the discussion." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:2516 +msgid "" +"If it seems that there is support for the idea, file a PR which includes " +"both the rationale and the list of existing ports that need to be moved. " +"Ideally, this PR would also include these patches:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2523 +msgid "" +"Makefiles for the new ports once they are repocopied" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2528 +msgid "Makefile for the new category" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2533 +msgid "Makefile for the old ports' categories" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2538 +msgid "Makefiles for ports that depend on the old ports" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:2543 +msgid "" +"(for extra credit, include the other files that have to change, as per the " +"procedure in the Committer's Guide.)" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:2551 +msgid "" +"Since it affects the ports infrastructure and involves moving and patching " +"many ports but also possibly running regression tests on the build cluster, " +"assign the PR to the Ports Management Team portmgr@FreeBSD.org." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:2558 +msgid "" +"If that PR is approved, a committer will need to follow the rest of the " +"procedure that is outlined in the Committer's " +"Guide." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:2564 +msgid "" +"Proposing a new virtual category is similar to the above but much less " +"involved, since no ports will actually have to move. In this case, the only " +"patches to include in the PR would be those to add the new category to " +"CATEGORIES of the affected ports." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:2572 +msgid "Proposing Reorganizing All the Categories" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:2574 +msgid "" +"Occasionally someone proposes reorganizing the categories with either a 2-" +"level structure, or some other kind of keyword structure. To date, nothing " +"has come of any of these proposals because, while they are very easy to " +"make, the effort involved to retrofit the entire existing ports collection " +"with any kind of reorganization is daunting to say the very least. Please " +"read the history of these proposals in the mailing list archives before " +"posting this idea. Furthermore, be prepared to be challenged to offer a " +"working prototype." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:2588 +msgid "The Distribution Files" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:2590 +msgid "" +"The second part of the Makefile describes the files " +"that must be downloaded to build the port, and where they can be downloaded." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:2595 +msgid "DISTVERSION/DISTNAME" +msgstr "DISTVERSION/DISTNAME" + +#. (itstool) path: sect2/para +#: book.translate.xml:2597 +msgid "" +"DISTNAME is the name of the port as called by the authors " +"of the software. DISTNAME defaults to " +"${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}, and DISTVERSION defaults to " +"${PORTVERSION} so override it only if necessary. " +"DISTNAME is only used in two places. First, the " +"distribution file list (DISTFILES) defaults to " +"${DISTNAME}${EXTRACT_SUFX}. Second, the " +"distribution file is expected to extract into a subdirectory named " +"WRKSRC, which defaults to work/${DISTNAME}." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:2611 +msgid "" +"Some vendor's distribution names which do not fit into the " +"${PORTNAME}-${PORTVERSION}-scheme can be handled automatically by " +"setting DISTVERSION. PORTVERSION will " +"be derived from it automatically." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:2619 +msgid "" +"Only one of PORTVERSION and DISTVERSION can be set at a time. If DISTVERSION does not " +"derive a correct PORTVERSION, do not use " +"DISTVERSION, set PORTVERSION to the " +"right value and set DISTNAME with PORTNAME with either some computation of PORTVERSION or " +"the verbatim upstream version." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:2633 +msgid "" +"Examples of DISTVERSION and the Derived " +"PORTVERSION" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2639 +msgid "DISTVERSION" +msgstr "DISTVERSION" + +#. (itstool) path: row/entry +#: book.translate.xml:2646 +msgid "0.7.1d" +msgstr "0.7.1d" + +#. (itstool) path: row/entry +#: book.translate.xml:2647 +msgid "0.7.1.d" +msgstr "0.7.1.d" + +#. (itstool) path: row/entry +#: book.translate.xml:2651 +msgid "10Alpha3" +msgstr "10Alpha3" + +#. (itstool) path: row/entry +#: book.translate.xml:2652 +msgid "10.a3" +msgstr "10.a3" + +#. (itstool) path: row/entry +#: book.translate.xml:2656 +msgid "3Beta7-pre2" +msgstr "3Beta7-pre2" + +#. (itstool) path: row/entry +#: book.translate.xml:2657 +msgid "3.b7.p2" +msgstr "3.b7.p2" + +#. (itstool) path: row/entry +#: book.translate.xml:2661 +msgid "8:f_17" +msgstr "8:f_17" + +#. (itstool) path: row/entry +#: book.translate.xml:2662 +msgid "8f.17" +msgstr "8f.17" + +#. (itstool) path: note/para +#: book.translate.xml:2669 +msgid "" +"PKGNAMEPREFIX and PKGNAMESUFFIX do not " +"affect DISTNAME. Also note that if WRKSRC is equal to ${WRKDIR}/${DISTNAME} while the " +"original source archive is named something other than ${PORTNAME}-" +"${PORTVERSION}${EXTRACT_SUFX}, leave DISTNAME " +"alone— defining only DISTFILES is easier than both " +"DISTNAME and WRKSRC (and possibly " +"EXTRACT_SUFX)." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:2685 +msgid "MASTER_SITES" +msgstr "MASTER_SITES" + +#. (itstool) path: sect2/para +#: book.translate.xml:2687 +msgid "" +"Record the directory part of the FTP/HTTP-URL pointing at the original " +"tarball in MASTER_SITES. Do not forget the trailing slash " +"(/)!" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:2691 +msgid "" +"The make macros will try to use this specification for " +"grabbing the distribution file with FETCH if they cannot " +"find it already on the system." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:2696 +msgid "" +"It is recommended that multiple sites are included on this list, preferably " +"from different continents. This will safeguard against wide-area network " +"problems. We are even planning to add support for automatically determining " +"the closest master site and fetching from there; having multiple sites will " +"go a long way towards helping this effort." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:2704 +msgid "" +"MASTER_SITES must not be blank. It must point to the " +"actual site hosting the distribution files. It cannot point to web archives, " +"or the FreeBSD distribution files cache sites. The only exception to this " +"rule is ports that do not have any distribution files. For example, meta-" +"ports do not have any distribution files, so MASTER_SITES " +"does not need to be set." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:2715 +msgid "" +"Using MASTER_SITE_* Variables" +msgstr "使用 MASTER_SITE_* 變數" + +#. (itstool) path: sect3/para +#: book.translate.xml:2719 +msgid "" +"Shortcut abbreviations are available for popular archives like SourceForge " +"(SOURCEFORGE), GNU (GNU), or Perl CPAN " +"(PERL_CPAN). MASTER_SITES can use them " +"directly:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:2726 +#, no-wrap +msgid "MASTER_SITES=\tGNU/make" +msgstr "MASTER_SITES=\tGNU/make" + +#. (itstool) path: sect3/para +#: book.translate.xml:2728 +msgid "" +"The older expanded format still works, but all ports have been converted to " +"the compact format. The expanded format looks like this:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:2732 +#, no-wrap +msgid "" +"MASTER_SITES=\t\t${MASTER_SITE_GNU}\n" +"MASTER_SITE_SUBDIR=\tmake" +msgstr "" +"MASTER_SITES=\t\t${MASTER_SITE_GNU}\n" +"MASTER_SITE_SUBDIR=\tmake" + +#. (itstool) path: sect3/para +#: book.translate.xml:2735 +msgid "" +"These values and variables are defined in Mk/bsd.sites." +"mk. New entries are added often, so make sure to check the " +"latest version of this file before submitting a port." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:2740 +msgid "" +"For any MASTER_SITE_FOO " +"variable, the shorthand FOO " +"can be used. For example, use:" +msgstr "" + +#. (itstool) path: tip/programlisting +#: book.translate.xml:2746 +#, no-wrap +msgid "MASTER_SITES=\tFOO" +msgstr "MASTER_SITES=\tFOO" + +#. (itstool) path: tip/para +#: book.translate.xml:2748 +msgid "If MASTER_SITE_SUBDIR is needed, use this:" +msgstr "" + +#. (itstool) path: tip/programlisting +#: book.translate.xml:2751 +#, no-wrap +msgid "" +"MASTER_SITES=\tFOO/bar" +msgstr "" +"MASTER_SITES=\tFOO/bar" + +#. (itstool) path: note/para +#: book.translate.xml:2755 +msgid "" +"Some MASTER_SITE_* names are " +"quite long, and for ease of use, shortcuts have been defined:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:2761 +msgid "" +"Shortcuts for MASTER_SITE_* " +"Macros" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2768 book.translate.xml:2851 +msgid "Macro" +msgstr "巨集" + +#. (itstool) path: row/entry +#: book.translate.xml:2769 +msgid "Shortcut" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2775 +msgid "PERL_CPAN" +msgstr "PERL_CPAN" + +#. (itstool) path: row/entry +#: book.translate.xml:2776 book.translate.xml:2883 +msgid "CPAN" +msgstr "CPAN" + +#. (itstool) path: row/entry +#: book.translate.xml:2780 +msgid "GITHUB" +msgstr "GITHUB" + +#. (itstool) path: row/entry +#: book.translate.xml:2781 book.translate.xml:2918 +msgid "GH" +msgstr "GH" + +#. (itstool) path: row/entry +#: book.translate.xml:2785 +msgid "GITHUB_CLOUD" +msgstr "GITHUB_CLOUD" + +#. (itstool) path: row/entry +#: book.translate.xml:2786 book.translate.xml:2923 +msgid "GHC" +msgstr "GHC" + +#. (itstool) path: row/entry +#: book.translate.xml:2790 +msgid "LIBREOFFICE_DEV" +msgstr "LIBREOFFICE_DEV" + +#. (itstool) path: row/entry +#: book.translate.xml:2791 book.translate.xml:2953 +msgid "LODEV" +msgstr "LODEV" + +#. (itstool) path: row/entry +#: book.translate.xml:2795 +msgid "NETLIB" +msgstr "NETLIB" + +#. (itstool) path: row/entry +#: book.translate.xml:2796 book.translate.xml:2968 +msgid "NL" +msgstr "NL" + +#. (itstool) path: row/entry +#: book.translate.xml:2800 +msgid "RUBYGEMS" +msgstr "RUBYGEMS" + +#. (itstool) path: row/entry +#: book.translate.xml:2801 +msgid "RG" +msgstr "RG" + +#. (itstool) path: row/entry +#: book.translate.xml:2805 +msgid "SOURCEFORGE" +msgstr "SOURCEFORGE" + +#. (itstool) path: row/entry +#: book.translate.xml:2806 book.translate.xml:2988 +msgid "SF" +msgstr "SF" + +#. (itstool) path: row/entry +#: book.translate.xml:2810 +msgid "SOURCEFORGE_JP" +msgstr "SOURCEFORGE_JP" + +#. (itstool) path: row/entry +#: book.translate.xml:2811 +msgid "SFJP" +msgstr "SFJP" + +#. (itstool) path: sect3/title +#: book.translate.xml:2820 +msgid "Magic MASTER_SITES Macros" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:2822 +msgid "" +"Several magic macros exist for popular sites with a " +"predictable directory structure. For these, just use the abbreviation and " +"the system will choose a subdirectory automatically. For a port named " +"Stardict, of version 1.2.3, and hosted " +"on SourceForge, adding this line:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:2830 +#, no-wrap +msgid "MASTER_SITES=\tSF" +msgstr "MASTER_SITES=\tSF" + +#. (itstool) path: sect3/para +#: book.translate.xml:2832 +msgid "" +"infers a subdirectory named /project/stardict/stardict/1.2.3. If the inferred directory is incorrect, it can be overridden:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:2837 +#, no-wrap +msgid "MASTER_SITES=\tSF/stardict/WyabdcRealPeopleTTS/${PORTVERSION}" +msgstr "MASTER_SITES=\tSF/stardict/WyabdcRealPeopleTTS/${PORTVERSION}" + +#. (itstool) path: sect3/para +#: book.translate.xml:2839 +msgid "This can also be written as" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:2841 +#, no-wrap +msgid "" +"MASTER_SITES=\tSF\n" +"MASTER_SITE_SUBDIR=\tstardict/WyabdcRealPeopleTTS/${PORTVERSION}" +msgstr "" +"MASTER_SITES=\tSF\n" +"MASTER_SITE_SUBDIR=\tstardict/WyabdcRealPeopleTTS/${PORTVERSION}" + +#. (itstool) path: table/title +#: book.translate.xml:2845 +msgid "Magic MASTER_SITES Macros" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2852 +msgid "Assumed subdirectory" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:2858 +msgid "APACHE_COMMONS_BINARIES" +msgstr "APACHE_COMMONS_BINARIES" + +#. (itstool) path: row/entry +#: book.translate.xml:2859 book.translate.xml:2864 +msgid "${PORTNAME:S,commons-,,}" +msgstr "${PORTNAME:S,commons-,,}" + +#. (itstool) path: row/entry +#: book.translate.xml:2863 +msgid "APACHE_COMMONS_SOURCE" +msgstr "APACHE_COMMONS_SOURCE" + +#. (itstool) path: row/entry +#: book.translate.xml:2868 +msgid "APACHE_JAKARTA" +msgstr "APACHE_JAKARTA" + +#. (itstool) path: row/entry +#: book.translate.xml:2869 +msgid "${PORTNAME:S,-,/,}/source" +msgstr "${PORTNAME:S,-,/,}/source" + +#. (itstool) path: row/entry +#: book.translate.xml:2873 +msgid "BERLIOS" +msgstr "BERLIOS" + +#. (itstool) path: row/entry +#: book.translate.xml:2874 +msgid "${PORTNAME:tl}.berlios" +msgstr "${PORTNAME:tl}.berlios" + +#. (itstool) path: row/entry +#: book.translate.xml:2878 +msgid "CHEESESHOP" +msgstr "CHEESESHOP" + +#. (itstool) path: row/entry +#: book.translate.xml:2879 +msgid "" +"source/${DISTNAME:C/(.).*/\\1/}/${DISTNAME:C/(.*)-[0-9].*/\\1/}" +msgstr "" +"source/${DISTNAME:C/(.).*/\\1/}/${DISTNAME:C/(.*)-[0-9].*/\\1/}" + +#. (itstool) path: row/entry +#: book.translate.xml:2884 +msgid "${PORTNAME:C/-.*//}" +msgstr "${PORTNAME:C/-.*//}" + +#. (itstool) path: row/entry +#: book.translate.xml:2888 +msgid "DEBIAN" +msgstr "DEBIAN" + +#. (itstool) path: row/entry +#: book.translate.xml:2889 +msgid "" +"pool/main/${PORTNAME:C/^((lib)?.).*$/\\1/}/${PORTNAME}" +msgstr "" +"pool/main/${PORTNAME:C/^((lib)?.).*$/\\1/}/${PORTNAME}" + +#. (itstool) path: row/entry +#: book.translate.xml:2893 +msgid "FARSIGHT" +msgstr "FARSIGHT" + +#. (itstool) path: row/entry +#: book.translate.xml:2894 book.translate.xml:2934 book.translate.xml:2939 +#: book.translate.xml:2944 book.translate.xml:2949 book.translate.xml:2954 +#: book.translate.xml:2969 book.translate.xml:2979 book.translate.xml:3024 +#: book.translate.xml:3030 +msgid "${PORTNAME}" +msgstr "${PORTNAME}" + +#. (itstool) path: row/entry +#: book.translate.xml:2898 +msgid "FESTIVAL" +msgstr "FESTIVAL" + +#. (itstool) path: row/entry +#: book.translate.xml:2899 +msgid "${PORTREVISION}" +msgstr "${PORTREVISION}" + +#. (itstool) path: row/entry +#: book.translate.xml:2903 +msgid "GCC" +msgstr "GCC" + +#. (itstool) path: row/entry +#: book.translate.xml:2904 +msgid "releases/${DISTNAME}" +msgstr "releases/${DISTNAME}" + +#. (itstool) path: row/entry +#: book.translate.xml:2908 +msgid "GENTOO" +msgstr "GENTOO" + +#. (itstool) path: row/entry +#: book.translate.xml:2909 +msgid "distfiles" +msgstr "distfiles" + +#. (itstool) path: row/entry +#: book.translate.xml:2913 +msgid "GIMP" +msgstr "GIMP" + +#. (itstool) path: row/entry +#: book.translate.xml:2914 +msgid "${PORTNAME}/${PORTVERSION:R}/" +msgstr "${PORTNAME}/${PORTVERSION:R}/" + +#. (itstool) path: row/entry +#: book.translate.xml:2919 +msgid "" +"${GH_ACCOUNT}/${GH_PROJECT}/tar.gz/${GH_TAGNAME}?dummy=/" +msgstr "" +"${GH_ACCOUNT}/${GH_PROJECT}/tar.gz/${GH_TAGNAME}?dummy=/" + +#. (itstool) path: row/entry +#: book.translate.xml:2924 +msgid "${GH_ACCOUNT}/${GH_PROJECT}/" +msgstr "${GH_ACCOUNT}/${GH_PROJECT}/" + +#. (itstool) path: row/entry +#: book.translate.xml:2928 +msgid "GNOME" +msgstr "GNOME" + +#. (itstool) path: row/entry +#: book.translate.xml:2929 +msgid "" +"sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}" +msgstr "" +"sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}" + +#. (itstool) path: row/entry +#: book.translate.xml:2933 +msgid "GNU" +msgstr "GNU" + +#. (itstool) path: row/entry +#: book.translate.xml:2938 +msgid "GNUPG" +msgstr "GNUPG" + +#. (itstool) path: row/entry +#: book.translate.xml:2943 +msgid "GNU_ALPHA" +msgstr "GNU_ALPHA" + +#. (itstool) path: row/entry +#: book.translate.xml:2948 +msgid "HORDE" +msgstr "HORDE" + +#. (itstool) path: row/entry +#: book.translate.xml:2958 +msgid "MATE" +msgstr "MATE" + +#. (itstool) path: row/entry +#: book.translate.xml:2959 +msgid "${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}" +msgstr "${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}" + +#. (itstool) path: row/entry +#: book.translate.xml:2963 +msgid "MOZDEV" +msgstr "MOZDEV" + +#. (itstool) path: row/entry +#: book.translate.xml:2964 book.translate.xml:2984 +msgid "${PORTNAME:tl}" +msgstr "${PORTNAME:tl}" + +#. (itstool) path: row/entry +#: book.translate.xml:2973 +msgid "QT" +msgstr "QT" + +#. (itstool) path: row/entry +#: book.translate.xml:2974 +msgid "archive/qt/${PORTVERSION:R}" +msgstr "archive/qt/${PORTVERSION:R}" + +#. (itstool) path: row/entry +#: book.translate.xml:2978 +msgid "SAMBA" +msgstr "SAMBA" + +#. (itstool) path: row/entry +#: book.translate.xml:2983 +msgid "SAVANNAH" +msgstr "SAVANNAH" + +#. (itstool) path: row/entry +#: book.translate.xml:2989 +msgid "${PORTNAME:tl}/${PORTNAME:tl}/${PORTVERSION}" +msgstr "${PORTNAME:tl}/${PORTNAME:tl}/${PORTVERSION}" + +#. (itstool) path: sect2/title +#: book.translate.xml:2998 +msgid "USE_GITHUB" +msgstr "USE_GITHUB" + +#. (itstool) path: sect2/para +#: book.translate.xml:3000 +msgid "" +"If the distribution file comes from a specific commit or tag on GitHub for which there is no officially " +"released file, there is an easy way to set the right DISTNAME and MASTER_SITES automatically. These variables " +"are available:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:3008 +msgid "USE_GITHUB Description" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:3013 book.translate.xml:4525 book.translate.xml:6983 +#: book.translate.xml:7040 book.translate.xml:7085 book.translate.xml:7173 +#: book.translate.xml:9000 book.translate.xml:9302 book.translate.xml:9370 +#: book.translate.xml:10263 book.translate.xml:10308 book.translate.xml:10543 +#: book.translate.xml:10852 book.translate.xml:11570 book.translate.xml:12982 +#: book.translate.xml:14952 +msgid "Variable" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:3015 +msgid "Default" +msgstr "" + +#. (itstool) path: row/entry +#. (itstool) path: listitem/para +#: book.translate.xml:3021 book.translate.xml:5712 +msgid "GH_ACCOUNT" +msgstr "GH_ACCOUNT" + +#. (itstool) path: row/entry +#: book.translate.xml:3022 +msgid "Account name of the GitHub user hosting the project" +msgstr "" + +#. (itstool) path: row/entry +#. (itstool) path: listitem/para +#: book.translate.xml:3028 book.translate.xml:5716 +msgid "GH_PROJECT" +msgstr "GH_PROJECT" + +#. (itstool) path: row/entry +#: book.translate.xml:3029 +msgid "Name of the project on GitHub" +msgstr "" + +#. (itstool) path: row/entry +#. (itstool) path: listitem/para +#: book.translate.xml:3035 book.translate.xml:5720 +msgid "GH_TAGNAME" +msgstr "GH_TAGNAME" + +#. (itstool) path: row/entry +#: book.translate.xml:3036 +msgid "" +"Name of the tag to download (2.0.1, hash, ...) Using the name of a branch " +"here is incorrect. It is also possible to use the hash of a commit id to do " +"a snapshot." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:3040 +msgid "" +"${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}" +msgstr "" +"${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}" + +#. (itstool) path: row/entry +#. (itstool) path: listitem/para +#: book.translate.xml:3044 book.translate.xml:5724 +msgid "GH_TUPLE" +msgstr "GH_TUPLE" + +#. (itstool) path: row/entry +#: book.translate.xml:3045 +msgid "" +"GH_TUPLE allows putting all the GH_ACCOUNT, GH_PROJECT, and GH_TAGNAME " +"into one variable. The format is account:" +"project:tagname:group. It is helpful when there is more " +"than one GitHub project from which to fetch." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:3059 +msgid "" +"Do not use GH_TUPLE for the default distribution file, as " +"it has no default." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3064 +msgid "Simple Use of USE_GITHUB" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:3066 +msgid "" +"While trying to make a port for version 1.2.7 of " +"pkg from the FreeBSD user on github, at , The Makefile would end up looking like this (slightly stripped for the example):" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3072 +#, no-wrap +msgid "" +"PORTNAME=\tpkg\n" +"PORTVERSION=\t1.2.7\n" +"\n" +"USE_GITHUB=\tyes\n" +"GH_ACCOUNT=\tfreebsd" +msgstr "" +"PORTNAME=\tpkg\n" +"PORTVERSION=\t1.2.7\n" +"\n" +"USE_GITHUB=\tyes\n" +"GH_ACCOUNT=\tfreebsd" + +#. (itstool) path: example/para +#: book.translate.xml:3078 +msgid "" +"It will automatically have MASTER_SITES set to " +"GH GHC and WRKSRC to " +"${WRKDIR}/pkg-1.2.7." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3085 +msgid "More Complete Use of USE_GITHUB" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:3088 +msgid "" +"While trying to make a port for the bleeding edge version of " +"pkg from the FreeBSD user on github, at , the Makefile ends up looking like this (slightly stripped for the example):" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3094 +#, no-wrap +msgid "" +"PORTNAME=\tpkg-devel\n" +"PORTVERSION=\t1.3.0.a.20140411\n" +"\n" +"USE_GITHUB=\tyes\n" +"GH_ACCOUNT=\tfreebsd\n" +"GH_PROJECT=\tpkg\n" +"GH_TAGNAME=\t6dbb17b" +msgstr "" +"PORTNAME=\tpkg-devel\n" +"PORTVERSION=\t1.3.0.a.20140411\n" +"\n" +"USE_GITHUB=\tyes\n" +"GH_ACCOUNT=\tfreebsd\n" +"GH_PROJECT=\tpkg\n" +"GH_TAGNAME=\t6dbb17b" + +#. (itstool) path: example/para +#: book.translate.xml:3102 +msgid "" +"It will automatically have MASTER_SITES set to " +"GH GHC and WRKSRC to " +"${WRKDIR}/pkg-6dbb17b." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3109 +msgid "" +"Use of USE_GITHUB with DISTVERSIONPREFIX" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:3112 +msgid "" +"From time to time, GH_TAGNAME is a slight variation from " +"DISTVERSION. For example, if the version is " +"1.0.2, the tag is v1.0.2. In those " +"cases, it is possible to use DISTVERSIONPREFIX or " +"DISTVERSIONSUFFIX:" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3119 +#, no-wrap +msgid "" +"PORTNAME=\tfoo\n" +"PORTVERSION=\t1.0.2\n" +"DISTVERSIONPREFIX=\tv\n" +"\n" +"USE_GITHUB=\tyes" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:3125 +msgid "" +"It will automatically set GH_TAGNAME to v1.0.2, while WRKSRC will be kept to ${WRKDIR}/" +"foo-1.0.2." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:3133 +msgid "Fetching Multiple Files from GitHub" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:3135 +msgid "" +"The USE_GITHUB framework also supports fetching multiple " +"distribution files from different places in GitHub. It works in a way very " +"similar to ." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:3140 +msgid "" +"Multiple values are added to GH_ACCOUNT, " +"GH_PROJECT, and GH_TAGNAME. Each " +"different value is assigned a tag. The main value can either have no tag, or " +"the :DEFAULT tag. A value can be omitted if it is the " +"same as the default as listed in ." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:3149 +msgid "" +"GH_TUPLE can also be used when there are a lot of " +"distribution files. It helps keep the account, project, tagname, and group " +"information at the same place." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:3154 +msgid "" +"For each tag, a ${WRKSRC_tag} " +"helper variable is created, containing the directory into which the file has " +"been extracted. The ${WRKSRC_tag} variables can be used to move directories around during <_:" +"buildtarget-1/>, or add to CONFIGURE_ARGS, or whatever is " +"needed so that the software builds correctly." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3165 +msgid "Use of USE_GITHUB with Multiple Distribution Files" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:3168 +msgid "" +"From time to time, there is a need to fetch more than one distribution file. " +"For example, when the upstream git repository uses submodules. This can be " +"done easily using tags in the GH_* variables:" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3175 +#, no-wrap +msgid "" +"PORTNAME=\tfoo\n" +"PORTVERSION=\t1.0.2\n" +"\n" +"USE_GITHUB=\tyes\n" +"GH_ACCOUNT=\tbar:icons,contrib\n" +"GH_PROJECT=\tfoo-icons:icons foo-contrib:contrib\n" +"GH_TAGNAME=\t1.0:icons fa579bc:contrib\n" +"\n" +"CONFIGURE_ARGS=\t--with-contrib=${WRKSRC_contrib}\n" +"\n" +"post-extract:\n" +" @${MV} ${WRKSRC_icons} ${WRKSRC}/icons" +msgstr "" +"PORTNAME=\tfoo\n" +"PORTVERSION=\t1.0.2\n" +"\n" +"USE_GITHUB=\tyes\n" +"GH_ACCOUNT=\tbar:icons,contrib\n" +"GH_PROJECT=\tfoo-icons:icons foo-contrib:contrib\n" +"GH_TAGNAME=\t1.0:icons fa579bc:contrib\n" +"\n" +"CONFIGURE_ARGS=\t--with-contrib=${WRKSRC_contrib}\n" +"\n" +"post-extract:\n" +" @${MV} ${WRKSRC_icons} ${WRKSRC}/icons" + +#. (itstool) path: example/para +#: book.translate.xml:3188 +msgid "" +"This will fetch three distribution files from github. The default one comes " +"from foo/foo and is version 1.0.2. " +"The second one, tagged icons, comes from bar/" +"foo-icons and is in version 1.0. The third one " +"comes from bar/foo-contrib and uses the " +"Git commit fa579bc. The " +"distribution files are named foo-foo-1.0.2_GH0.tar.gz, " +"bar-foo-icons-1.0_GH0.tar.gz, and bar-foo-" +"contrib-fa579bc_GH0.tar.gz." +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:3202 +msgid "" +"All the distribution files are extracted in ${WRKDIR} in " +"their respective subdirectories. The default file is still extracted in " +"${WRKSRC}, in this case, ${WRKDIR}/foo-1.0.2. Each additional distribution file is extracted in " +"${WRKSRC_tag}. Here, for the " +"icons tag, it is called ${WRKSRC_icons} and it contains ${WRKDIR}/foo-icons-1.0. The " +"file with the contrib tag is called " +"${WRKSRC_contrib} and contains ${WRKDIR}/foo-contrib-" +"fa579bc." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3218 +msgid "" +"Use of USE_GITHUB with Multiple Distribution Files Using " +"GH_TUPLE" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:3222 +msgid "" +"This is functionally equivalent to , but using GH_TUPLE:" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3225 +#, no-wrap +msgid "" +"PORTNAME=\tfoo\n" +"PORTVERSION=\t1.0.2\n" +"\n" +"USE_GITHUB=\tyes\n" +"GH_TUPLE=\tbar:foo-icons:1.0:icons \\\n" +"\t\tbar:foo-contrib:fa579bc:contrib\n" +"\n" +"CONFIGURE_ARGS=\t--with-contrib=${WRKSRC_contrib}\n" +"\n" +"post-extract:\n" +" @${MV} ${WRKSRC_icons} ${WRKSRC}/icons" +msgstr "" +"PORTNAME=\tfoo\n" +"PORTVERSION=\t1.0.2\n" +"\n" +"USE_GITHUB=\tyes\n" +"GH_TUPLE=\tbar:foo-icons:1.0:icons \\\n" +"\t\tbar:foo-contrib:fa579bc:contrib\n" +"\n" +"CONFIGURE_ARGS=\t--with-contrib=${WRKSRC_contrib}\n" +"\n" +"post-extract:\n" +" @${MV} ${WRKSRC_icons} ${WRKSRC}/icons" + +#. (itstool) path: example/para +#: book.translate.xml:3237 +msgid "" +"Grouping was used in the previous example with bar:icons,contrib. Some redundant information is present with GH_TUPLE because grouping is not possible." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:3246 +msgid "EXTRACT_SUFX" +msgstr "EXTRACT_SUFX" + +#. (itstool) path: sect2/para +#: book.translate.xml:3248 +msgid "" +"If there is one distribution file, and it uses an odd suffix to indicate the " +"compression mechanism, set EXTRACT_SUFX." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3252 +msgid "" +"For example, if the distribution file was named foo.tar.gzip instead of the more normal foo.tar.gz, write:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:3256 +#, no-wrap +msgid "" +"DISTNAME=\tfoo\n" +"EXTRACT_SUFX=\t.tar.gzip" +msgstr "" +"DISTNAME=\tfoo\n" +"EXTRACT_SUFX=\t.tar.gzip" + +#. (itstool) path: sect2/para +#: book.translate.xml:3259 +msgid "" +"The USES=tar[:xxx], " +"USES=lha or USES=zip automatically set " +"EXTRACT_SUFX to the most common archives extensions as " +"necessary, see for more details. If neither " +"of these are set then EXTRACT_SUFX defaults to ." +"tar.gz." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:3268 +msgid "" +"As EXTRACT_SUFX is only used in DISTFILES, only set one of them.." +msgstr "" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:3274 book.translate.xml:5700 +msgid "DISTFILES" +msgstr "DISTFILES" + +#. (itstool) path: sect2/para +#: book.translate.xml:3276 +msgid "" +"Sometimes the names of the files to be downloaded have no resemblance to the " +"name of the port. For example, it might be called source.tar.gz or similar. In other cases the application's source code might be " +"in several different archives, all of which must be downloaded." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3282 +msgid "" +"If this is the case, set DISTFILES to be a space " +"separated list of all the files that must be downloaded." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:3286 +#, no-wrap +msgid "DISTFILES=\tsource1.tar.gz source2.tar.gz" +msgstr "DISTFILES=\tsource1.tar.gz source2.tar.gz" + +#. (itstool) path: sect2/para +#: book.translate.xml:3288 +msgid "" +"If not explicitly set, DISTFILES defaults to " +"${DISTNAME}${EXTRACT_SUFX}." +msgstr "" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:3294 book.translate.xml:5708 +msgid "EXTRACT_ONLY" +msgstr "EXTRACT_ONLY" + +#. (itstool) path: sect2/para +#: book.translate.xml:3296 +msgid "" +"If only some of the DISTFILES must be extracted—for " +"example, one of them is the source code, while another is an uncompressed " +"document—list the filenames that must be extracted in EXTRACT_ONLY." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:3302 +#, no-wrap +msgid "" +"DISTFILES=\tsource.tar.gz manual.html\n" +"EXTRACT_ONLY=\tsource.tar.gz" +msgstr "" +"DISTFILES=\tsource.tar.gz manual.html\n" +"EXTRACT_ONLY=\tsource.tar.gz" + +#. (itstool) path: sect2/para +#: book.translate.xml:3305 +msgid "" +"When none of the DISTFILES need to be uncompressed, set " +"EXTRACT_ONLY to the empty string." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:3309 +#, no-wrap +msgid "EXTRACT_ONLY=" +msgstr "EXTRACT_ONLY=" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:3313 book.translate.xml:5756 +msgid "PATCHFILES" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3315 +msgid "" +"If the port requires some additional patches that are available by " +"FTP or HTTP, set PATCHFILES to the names of the files and PATCH_SITES to the " +"URL of the directory that contains them (the format is the same as " +"MASTER_SITES)." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3322 +msgid "" +"If the patch is not relative to the top of the source tree (that is, " +"WRKSRC) because it contains some extra pathnames, set " +"PATCH_DIST_STRIP accordingly. For instance, if all the " +"pathnames in the patch have an extra foozolix-1.0/ in " +"front of the filenames, then set PATCH_DIST_STRIP=-p1." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3330 +msgid "" +"Do not worry if the patches are compressed; they will be decompressed " +"automatically if the filenames end with .Z, ." +"gz, .bz2 or .xz." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3335 +msgid "" +"If the patch is distributed with some other files, such as documentation, in " +"a gzipped tarball, using PATCHFILES is " +"not possible. If that is the case, add the name and the location of the " +"patch tarball to DISTFILES and MASTER_SITES. Then, use EXTRA_PATCHES to point to those files " +"and bsd.port.mk will automatically apply them. In " +"particular, do not copy patch files into " +"${PATCHDIR}. That directory may not be writable." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:3349 +msgid "" +"If there are multiple patches and they need mixed values for the strip " +"parameter, it can be added alongside the patch name in PATCHFILES, e.g:" +msgstr "" + +#. (itstool) path: tip/programlisting +#: book.translate.xml:3353 +#, no-wrap +msgid "PATCHFILES=\tpatch1 patch2:-p1" +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:3355 +msgid "" +"This does not conflict with the " +"master site grouping feature, adding a group also works:" +msgstr "" + +#. (itstool) path: tip/programlisting +#: book.translate.xml:3358 +#, no-wrap +msgid "PATCHFILES=\tpatch2:-p1:source2" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3369 +msgid "pre-clean" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:3362 +msgid "" +"The tarball will have been extracted alongside the regular source by then, " +"so there is no need to explicitly extract it if it is a regular " +"gzipped or compressed tarball. Take " +"extra care not to overwrite something that already exists in that directory " +"if extracting it manually. Also, do not forget to add a command to remove " +"the copied patch in the <_:buildtarget-1/> target." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:3374 +msgid "Multiple Distribution or Patches Files from Multiple Locations" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3377 +msgid "" +"(Consider this to be a somewhat advanced topic; those new to " +"this document may wish to skip this section at first)." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3381 +msgid "" +"This section has information on the fetching mechanism known as both " +"MASTER_SITES:n and MASTER_SITES_NN. We " +"will refer to this mechanism as MASTER_SITES:n." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3386 +msgid "" +"A little background first. OpenBSD has a neat feature inside " +"DISTFILES and PATCHFILES which allows " +"files and patches to be postfixed with :n identifiers. " +"Here, n can be both [0-9] and denote a " +"group designation. For example:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:3394 +#, no-wrap +msgid "DISTFILES=\talpha:0 beta:1" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3396 +msgid "" +"In OpenBSD, distribution file alpha will be associated " +"with variable MASTER_SITES0 instead of our common " +"MASTER_SITES and beta with " +"MASTER_SITES1." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3403 +msgid "" +"This is a very interesting feature which can decrease that endless search " +"for the correct download site." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3406 +msgid "" +"Just picture 2 files in DISTFILES and 20 sites in " +"MASTER_SITES, the sites slow as hell where " +"beta is carried by all sites in MASTER_SITES, and alpha can only be found in the 20th site. " +"It would be such a waste to check all of them if the maintainer knew this " +"beforehand, would it not? Not a good start for that lovely weekend!" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3415 +msgid "" +"Now that you have the idea, just imagine more DISTFILES " +"and more MASTER_SITES. Surely our distfiles survey " +"meister would appreciate the relief to network strain that this " +"would bring." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:3421 +msgid "" +"In the next sections, information will follow on the FreeBSD implementation " +"of this idea. We improved a bit on OpenBSD's concept." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:3426 +msgid "Simplified Information" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:3428 +msgid "" +"This section explains how to quickly prepare fine grained fetching of " +"multiple distribution files and patches from different sites and " +"subdirectories. We describe here a case of simplified MASTER_SITES:" +"n usage. This will be sufficient for most scenarios. More detailed " +"information are available in ." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:3435 +msgid "" +"Some applications consist of multiple distribution files that must be " +"downloaded from a number of different sites. For example, " +"Ghostscript consists of the core of the program, " +"and then a large number of driver files that are used depending on the " +"user's printer. Some of these driver files are supplied with the core, but " +"many others must be downloaded from a variety of different sites." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:3444 +msgid "" +"To support this, each entry in DISTFILES may be followed " +"by a colon and a tag name. Each site listed in " +"MASTER_SITES is then followed by a colon, and the tag " +"that indicates which distribution files are downloaded from this site." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:3451 +msgid "" +"For example, consider an application with the source split in two parts, " +"source1.tar.gz and source2.tar.gz, " +"which must be downloaded from two different sites. The port's " +"Makefile would include lines like ." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3459 +msgid "" +"Simplified Use of MASTER_SITES:n with One File Per Site" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3462 +#, no-wrap +msgid "" +"MASTER_SITES=\tftp://ftp1.example.com/:source1 \\\n" +"\t\thttp://www.example.com/:source2\n" +"DISTFILES=\tsource1.tar.gz:source1 \\\n" +"\t\tsource2.tar.gz:source2" +msgstr "" +"MASTER_SITES=\tftp://ftp1.example.com/:source1 \\\n" +"\t\thttp://www.example.com/:source2\n" +"DISTFILES=\tsource1.tar.gz:source1 \\\n" +"\t\tsource2.tar.gz:source2" + +#. (itstool) path: sect3/para +#: book.translate.xml:3468 +msgid "" +"Multiple distribution files can have the same tag. Continuing the previous " +"example, suppose that there was a third distfile, source3.tar.gz, that is downloaded from ftp.example2.com. The Makefile would then be written like " +"." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3478 +msgid "" +"Simplified Use of MASTER_SITES:n with More Than One File " +"Per Site" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3481 +#, no-wrap +msgid "" +"MASTER_SITES=\tftp://ftp.example.com/:source1 \\\n" +"\t\thttp://www.example.com/:source2\n" +"DISTFILES=\tsource1.tar.gz:source1 \\\n" +"\t\tsource2.tar.gz:source2 \\\n" +"\t\tsource3.tar.gz:source2" +msgstr "" +"MASTER_SITES=\tftp://ftp.example.com/:source1 \\\n" +"\t\thttp://www.example.com/:source2\n" +"DISTFILES=\tsource1.tar.gz:source1 \\\n" +"\t\tsource2.tar.gz:source2 \\\n" +"\t\tsource3.tar.gz:source2" + +#. (itstool) path: sect3/title +#: book.translate.xml:3490 +msgid "Detailed Information" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:3492 +msgid "" +"Okay, so the previous example did not reflect the new port's needs? In this " +"section we will explain in detail how the fine grained fetching mechanism " +"MASTER_SITES:n works and how it can be used." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3500 +msgid "" +"Elements can be postfixed with :n where n is [^:,]+, " +"that is, n could conceptually be any alphanumeric " +"string but we will limit it to [a-zA-Z_][0-9a-zA-Z_]+ for " +"now." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3509 +msgid "" +"Moreover, string matching is case sensitive; that is, n " +"is different from N." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3513 +msgid "" +"However, these words cannot be used for postfixing purposes since they yield " +"special meaning: default, all and " +"ALL (they are used internally in item ). Furthermore, " +"DEFAULT is a special purpose word (check item )." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3523 +msgid "" +"Elements postfixed with :n belong to the group " +"n, :m belong to group m and so forth." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3530 +msgid "" +"Elements without a postfix are groupless, they all belong to the special " +"group DEFAULT. Any elements postfixed with " +"DEFAULT, is just being redundant unless an element " +"belongs to both DEFAULT and other groups at the same time " +"(check item )." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3538 +msgid "These examples are equivalent but the first one is preferred:" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:3541 +#, no-wrap +msgid "MASTER_SITES=\talpha" +msgstr "MASTER_SITES=\talpha" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:3543 +#, no-wrap +msgid "MASTER_SITES=\talpha:DEFAULT" +msgstr "MASTER_SITES=\talpha:DEFAULT" + +#. (itstool) path: listitem/para +#: book.translate.xml:3547 +msgid "" +"Groups are not exclusive, an element may belong to several different groups " +"at the same time and a group can either have either several different " +"elements or none at all." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3554 +msgid "" +"When an element belongs to several groups at the same time, use the comma " +"operator (,)." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3558 +msgid "" +"Instead of repeating it several times, each time with a different postfix, " +"we can list several groups at once in a single postfix. For instance, " +":m,n,o marks an element that belongs to group m, n and o." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3565 +msgid "All these examples are equivalent but the last one is preferred:" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:3568 +#, no-wrap +msgid "MASTER_SITES=\talpha alpha:SOME_SITE" +msgstr "MASTER_SITES=\talpha alpha:SOME_SITE" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:3570 +#, no-wrap +msgid "MASTER_SITES=\talpha:DEFAULT alpha:SOME_SITE" +msgstr "MASTER_SITES=\talpha:DEFAULT alpha:SOME_SITE" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:3572 +#, no-wrap +msgid "MASTER_SITES=\talpha:SOME_SITE,DEFAULT" +msgstr "MASTER_SITES=\talpha:SOME_SITE,DEFAULT" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:3574 +#, no-wrap +msgid "MASTER_SITES=\talpha:DEFAULT,SOME_SITE" +msgstr "MASTER_SITES=\talpha:DEFAULT,SOME_SITE" + +#. (itstool) path: listitem/para +#: book.translate.xml:3578 +msgid "" +"All sites within a given group are sorted according to " +"MASTER_SORT_AWK. All groups within MASTER_SITES and PATCH_SITES are sorted as well." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3586 +msgid "" +"Group semantics can be used in any of the variables MASTER_SITES, PATCH_SITES, MASTER_SITE_SUBDIR, PATCH_SITE_SUBDIR, DISTFILES, and PATCHFILES according to this syntax:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3597 +msgid "" +"All MASTER_SITES, PATCH_SITES, " +"MASTER_SITE_SUBDIR and PATCH_SITE_SUBDIR elements must be terminated with the forward slash / character. If any elements belong to any groups, the group postfix " +":n must come right after the " +"terminator /. The MASTER_SITES:n " +"mechanism relies on the existence of the terminator / to " +"avoid confusing elements where a :n is a valid part of " +"the element with occurrences where :n denotes group " +"n. For compatibility purposes, since the / terminator was not required before in both " +"MASTER_SITE_SUBDIR and PATCH_SITE_SUBDIR elements, if the postfix immediate preceding character is not a " +"/ then :n will be considered a valid " +"part of the element instead of a group postfix even if an element is " +"postfixed with :n. See both and ." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3627 +msgid "" +"Detailed Use of MASTER_SITES:n in " +"MASTER_SITE_SUBDIR" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3631 +#, no-wrap +msgid "MASTER_SITE_SUBDIR=\told:n new/:NEW" +msgstr "MASTER_SITE_SUBDIR=\told:n new/:NEW" + +#. (itstool) path: listitem/para +#: book.translate.xml:3635 +msgid "Directories within group DEFAULT -> old:n" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3641 +msgid "Directories within group NEW -> new" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3649 +msgid "" +"Detailed Use of MASTER_SITES:n with Comma Operator, " +"Multiple Files, Multiple Sites and Multiple Subdirectories" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3654 +#, no-wrap +msgid "" +"MASTER_SITES=\thttp://site1/%SUBDIR%/ http://site2/:DEFAULT \\\n" +"\t\thttp://site3/:group3 http://site4/:group4 \\\n" +"\t\thttp://site5/:group5 http://site6/:group6 \\\n" +"\t\thttp://site7/:DEFAULT,group6 \\\n" +"\t\thttp://site8/%SUBDIR%/:group6,group7 \\\n" +"\t\thttp://site9/:group8\n" +"DISTFILES=\tfile1 file2:DEFAULT file3:group3 \\\n" +"\t\tfile4:group4,group5,group6 file5:grouping \\\n" +"\t\tfile6:group7\n" +"MASTER_SITE_SUBDIR=\tdirectory-trial:1 directory-n/:groupn \\\n" +"\t\tdirectory-one/:group6,DEFAULT \\\n" +"\t\tdirectory" +msgstr "" +"MASTER_SITES=\thttp://site1/%SUBDIR%/ http://site2/:DEFAULT \\\n" +"\t\thttp://site3/:group3 http://site4/:group4 \\\n" +"\t\thttp://site5/:group5 http://site6/:group6 \\\n" +"\t\thttp://site7/:DEFAULT,group6 \\\n" +"\t\thttp://site8/%SUBDIR%/:group6,group7 \\\n" +"\t\thttp://site9/:group8\n" +"DISTFILES=\tfile1 file2:DEFAULT file3:group3 \\\n" +"\t\tfile4:group4,group5,group6 file5:grouping \\\n" +"\t\tfile6:group7\n" +"MASTER_SITE_SUBDIR=\tdirectory-trial:1 directory-n/:groupn \\\n" +"\t\tdirectory-one/:group6,DEFAULT \\\n" +"\t\tdirectory" + +#. (itstool) path: example/para +#: book.translate.xml:3667 +msgid "" +"The previous example results in this fine grained fetching. Sites are listed " +"in the exact order they will be used." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3673 +msgid "file1 will be fetched from" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3678 book.translate.xml:3714 book.translate.xml:3749 +#: book.translate.xml:3768 book.translate.xml:3803 book.translate.xml:3818 +msgid "MASTER_SITE_OVERRIDE" +msgstr "MASTER_SITE_OVERRIDE" + +#. (itstool) path: listitem/para +#: book.translate.xml:3682 book.translate.xml:3718 +msgid "http://site1/directory-trial:1/" +msgstr "http://site1/directory-trial:1/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3686 book.translate.xml:3722 +msgid "http://site1/directory-one/" +msgstr "http://site1/directory-one/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3690 book.translate.xml:3726 +msgid "http://site1/directory/" +msgstr "http://site1/directory/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3694 book.translate.xml:3730 +msgid "http://site2/" +msgstr "http://site2/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3698 book.translate.xml:3734 book.translate.xml:3784 +msgid "http://site7/" +msgstr "http://site7/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3702 book.translate.xml:3738 book.translate.xml:3757 +#: book.translate.xml:3792 book.translate.xml:3807 book.translate.xml:3826 +msgid "MASTER_SITE_BACKUP" +msgstr "MASTER_SITE_BACKUP" + +#. (itstool) path: listitem/para +#: book.translate.xml:3708 +msgid "" +"file2 will be fetched exactly as file1 since they both belong to the same group" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3744 +msgid "file3 will be fetched from" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3753 +msgid "http://site3/" +msgstr "http://site3/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3763 +msgid "file4 will be fetched from" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3772 +msgid "http://site4/" +msgstr "http://site4/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3776 +msgid "http://site5/" +msgstr "http://site5/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3780 +msgid "http://site6/" +msgstr "http://site6/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3788 +msgid "http://site8/directory-one/" +msgstr "http://site8/directory-one/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3798 +msgid "file5 will be fetched from" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3813 +msgid "file6 will be fetched from" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3822 +msgid "http://site8/" +msgstr "http://site8/" + +#. (itstool) path: listitem/para +#: book.translate.xml:3837 +msgid "" +"How do I group one of the special macros from bsd.sites.mk, for example, SourceForge (SF)?" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3841 +msgid "" +"This has been simplified as much as possible. See ." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3846 +msgid "" +"Detailed Use of MASTER_SITES:n with SourceForge " +"(SF)" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3849 +#, no-wrap +msgid "" +"MASTER_SITES=\thttp://site1/ SF/something/1.0:sourceforge,TEST\n" +"DISTFILES=\tsomething.tar.gz:sourceforge" +msgstr "" +"MASTER_SITES=\thttp://site1/ SF/something/1.0:sourceforge,TEST\n" +"DISTFILES=\tsomething.tar.gz:sourceforge" + +#. (itstool) path: example/para +#: book.translate.xml:3852 +msgid "" +"something.tar.gz will be fetched from all sites within " +"SourceForge." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3858 +msgid "" +"How do I use this with PATCH*?" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3861 +msgid "" +"All examples were done with MASTER* but they work exactly the same for PATCH* ones as can be seen in ." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:3869 +msgid "" +"Simplified Use of MASTER_SITES:n with " +"PATCH_SITES" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:3873 +#, no-wrap +msgid "" +"PATCH_SITES=\thttp://site1/ http://site2/:test\n" +"PATCHFILES=\tpatch1:test" +msgstr "" +"PATCH_SITES=\thttp://site1/ http://site2/:test\n" +"PATCHFILES=\tpatch1:test" + +#. (itstool) path: sect3/title +#: book.translate.xml:3881 +msgid "What Does Change for Ports? What Does Not?" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3885 +msgid "" +"All current ports remain the same. The MASTER_SITES:n " +"feature code is only activated if there are elements postfixed with " +":n like elements according to " +"the aforementioned syntax rules, especially as shown in item ." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3895 +msgid "checksum" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3896 +msgid "makesum" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3900 book.translate.xml:3907 book.translate.xml:3923 +#: book.translate.xml:5885 +msgid "do-fetch" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3901 book.translate.xml:3920 book.translate.xml:3921 +msgid "fetch-list" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3902 book.translate.xml:3927 book.translate.xml:3978 +msgid "master-sites" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3903 book.translate.xml:3928 book.translate.xml:3979 +msgid "patch-sites" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3894 +msgid "" +"The port targets remain the same: <_:buildtarget-1/>, <_:buildtarget-2/>, <_:" +"buildtarget-3/>, <_:buildtarget-4/>, <_:buildtarget-5/>, etc. With the " +"obvious exceptions of <_:buildtarget-6/>, <_:buildtarget-7/>, <_:" +"buildtarget-8/> and <_:buildtarget-9/>." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3907 +msgid "" +"<_:buildtarget-1/>: deploys the new grouping postfixed DISTFILES and PATCHFILES with their matching group " +"elements within both MASTER_SITES and " +"PATCH_SITES which use matching group elements within both " +"MASTER_SITE_SUBDIR and PATCH_SITE_SUBDIR. Check ." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3920 +msgid "" +"<_:buildtarget-1/>: works like old <_:buildtarget-2/> with the exception " +"that it groups just like <_:buildtarget-3/>." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3932 +msgid "master-sites-default" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3933 +msgid "patch-sites-default" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3927 +msgid "" +"<_:buildtarget-1/> and <_:buildtarget-2/>: (incompatible with older " +"versions) only return the elements of group DEFAULT; in " +"fact, they execute targets <_:buildtarget-3/> and <_:buildtarget-4/> " +"respectively." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3937 book.translate.xml:3975 book.translate.xml:3987 +msgid "master-sites-all" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3938 book.translate.xml:3976 book.translate.xml:3988 +msgid "patch-sites-all" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3940 +msgid "MASTER_SITES" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3941 +msgid "PATCH_SITES" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3936 +msgid "" +"Furthermore, using target either <_:buildtarget-1/> or <_:buildtarget-2/> is " +"preferred to directly checking either <_:buildtarget-3/> or <_:buildtarget-4/" +">. Also, directly checking is not guaranteed to work in any future versions. " +"Check item for more information on these new port targets." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3951 +msgid "New port targets" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3956 +msgid "master-sites-n" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3958 +msgid "patch-sites-n" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3964 +msgid "master-sites-DEFAULT" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3965 +msgid "patch-sites-DEFAULT" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3968 +msgid "master-sites-test" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:3969 +msgid "patch-sites-test" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3955 +msgid "" +"There are <_:buildtarget-1/> and <_:buildtarget-2/> targets which will list " +"the elements of the respective group n within " +"MASTER_SITES and PATCH_SITES " +"respectively. For instance, both <_:buildtarget-3/> and <_:buildtarget-4/> " +"will return the elements of group DEFAULT, <_:" +"buildtarget-5/> and <_:buildtarget-6/> of group test, and " +"thereon." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:3974 +msgid "" +"There are new targets <_:buildtarget-1/> and <_:buildtarget-2/> which do the " +"work of the old <_:buildtarget-3/> and <_:buildtarget-4/> ones. They return " +"the elements of all groups as if they all belonged to the same group with " +"the caveat that it lists as many MASTER_SITE_BACKUP and " +"MASTER_SITE_OVERRIDE as there are groups defined within " +"either DISTFILES or PATCHFILES; " +"respectively for <_:buildtarget-5/> and <_:buildtarget-6/>." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:3997 +msgid "DIST_SUBDIR" +msgstr "DIST_SUBDIR" + +#. (itstool) path: sect2/para +#: book.translate.xml:3999 +msgid "" +"Do not let the port clutter /usr/ports/distfiles. If " +"the port requires a lot of files to be fetched, or contains a file that has " +"a name that might conflict with other ports (for example, " +"Makefile), set DIST_SUBDIR to the " +"name of the port (${PORTNAME} or " +"${PKGNAMEPREFIX}${PORTNAME} are fine). This will change " +"DISTDIR from the default /usr/ports/distfiles to /usr/ports/distfiles/${DIST_SUBDIR}, and " +"in effect puts everything that is required for the port into that " +"subdirectory." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4013 +msgid "" +"It will also look at the subdirectory with the same name on the backup " +"master site at ftp.FreeBSD.org. (Setting " +"DISTDIR explicitly in Makefile will " +"not accomplish this, so please use DIST_SUBDIR.)" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:4021 +msgid "" +"This does not affect MASTER_SITES defined in the " +"Makefile." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:4028 +msgid "ALWAYS_KEEP_DISTFILES" +msgstr "ALWAYS_KEEP_DISTFILES" + +#. (itstool) path: sect2/para +#: book.translate.xml:4030 +msgid "" +"If the port uses binary distfiles and has a license that requires that the " +"source code is provided with packages distributed in binary form, like " +"GPL, ALWAYS_KEEP_DISTFILES will " +"instruct the FreeBSD build cluster to keep a copy of the files specified in " +"DISTFILES. Users of these ports will generally not need " +"these files, so it is a good idea to only add the source distfiles to " +"DISTFILES when PACKAGE_BUILDING is " +"defined." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:4042 +msgid "Use of ALWAYS_KEEP_DISTFILES" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:4045 +#, no-wrap +msgid "" +".if defined(PACKAGE_BUILDING)\n" +"DISTFILES+=\t\tfoo.tar.gz\n" +"ALWAYS_KEEP_DISTFILES=\tyes\n" +".endif" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4051 +msgid "" +"When adding extra files to DISTFILES, make sure to also " +"add them to distinfo. Also, the additional files will " +"normally be extracted into WRKDIR as well, which for some " +"ports may lead to undesirable side effects and require special handling." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:4061 +msgid "MAINTAINER" +msgstr "MAINTAINER" + +#. (itstool) path: sect1/para +#: book.translate.xml:4063 +msgid "Set your mail-address here. Please. :-)" +msgstr " 請在這裡設定你的 email 地址:-)" + +#. (itstool) path: sect1/para +#: book.translate.xml:4067 +msgid "" +"Only a single address without the comment part is allowed as a " +"MAINTAINER value. The format used is " +"user@hostname.domain. Please do not include any " +"descriptive text such as a real name in this entry. That merely confuses the " +"Ports infrastructure and most tools using it." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4074 +msgid "" +"The maintainer is responsible for keeping the port up to date and making " +"sure that it works correctly. For a detailed description of the " +"responsibilities of a port maintainer, refer to The challenge for port maintainers." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:4081 +msgid "" +"A maintainer volunteers to keep a port in good working order. Maintainers " +"have the primary responsibility for their ports, but not exclusive " +"ownership. Ports exist for the benefit of the community and, in reality, " +"belong to the community. What this means is that people other than the " +"maintainer can make changes to a port. Large changes to the Ports Collection " +"might require changes to many ports. The FreeBSD Ports Management Team or " +"members of other teams might modify ports to fix dependency issues or other " +"problems, like a version bump for a shared library update." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:4092 +msgid "" +"Some types of fixes have blanket approval from the Ports " +"Management Team portmgr@FreeBSD.org, allowing any committer " +"to fix those categories of problems on any port. These fixes do not need " +"approval from the maintainer. Blanket approval does not apply to ports that " +"are maintained by teams like autotools@FreeBSD.org, x11@FreeBSD.org, gnome@FreeBSD.org, or kde@FreeBSD.org. These teams use external repositories and can have work that would " +"conflict with changes that would normally fall under blanket approval." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:4101 +msgid "Blanket approval for most ports applies to these types of fixes:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:4106 +msgid "" +"Most infrastructure changes to a port (that is, modernizing, but not " +"changing the functionality). For example, converting to staging, " +"USE_GMAKE to USES=gmake, the new " +"LIB_DEPENDS format..." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:4115 +msgid "Trivial and tested build and runtime fixes." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4121 +msgid "" +"Other changes to the port will be sent to the maintainer for review and " +"approval before being committed. If the maintainer does not respond to an " +"update request after two weeks (excluding major public holidays), then that " +"is considered a maintainer timeout, and the update may be made without " +"explicit maintainer approval. If the maintainer does not respond within " +"three months, or if there have been three consecutive timeouts, then that " +"maintainer is considered absent without leave, and can be replaced as the " +"maintainer of the particular port in question. Exceptions to this are " +"anything maintained by the Ports Management Team portmgr@FreeBSD.org, or the Security Officer Team security-officer@FreeBSD.org. No unauthorized commits may ever be made to ports maintained by " +"those groups." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4135 +msgid "" +"We reserve the right to modify the maintainer's submission to better match " +"existing policies and style of the Ports Collection without explicit " +"blessing from the submitter or the maintainer. Also, large infrastructural " +"changes can result in a port being modified without the maintainer's " +"consent. These kinds of changes will never affect the port's functionality." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4143 +msgid "" +"The Ports Management Team portmgr@FreeBSD.org reserves the " +"right to revoke or override anyone's maintainership for any reason, and the " +"Security Officer Team security-officer@FreeBSD.org reserves " +"the right to revoke or override maintainership for security reasons." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:4150 +msgid "COMMENT" +msgstr "COMMENT" + +#. (itstool) path: sect1/para +#: book.translate.xml:4152 +msgid "This is a one-line description of the port. Please respect these rules:" +msgstr "這是關於這個 port的一行描述。請遵守這些原則:" + +#. (itstool) path: listitem/para +#: book.translate.xml:4157 +msgid "" +"Try to keep the COMMENT value at no longer than 70 characters, as this line " +"will be used by pkg info (see " +"pkg-info8) to display a one-line summary of the port;" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:4164 +msgid "" +"Do not include the package name (or version number of " +"the software);" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:4169 +msgid "The comment must begin with a capital and end without a period;" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:4174 +msgid "Do not start with an indefinite article (that is, A or An);" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:4179 +msgid "Names are capitalized (for example, Apache, JavaScript, Perl);" +msgstr "名字首字大寫 (例如, Apache, JavaScript, Perl);" + +#. (itstool) path: listitem/para +#: book.translate.xml:4184 +msgid "" +"For lists of words, use the Oxford comma (for example, green, red," +" and blue);" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:4189 +msgid "Spell check the text." +msgstr "請檢查拼字。" + +#. (itstool) path: sect1/para +#: book.translate.xml:4193 +msgid "Here is an example:" +msgstr "以下是範例:" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:4195 +#, no-wrap +msgid "COMMENT=\tCat chasing a mouse all over the screen" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4197 +msgid "" +"The COMMENT variable immediately follows the MAINTAINER variable in the " +"Makefile." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:4202 +msgid "PORTSCOUT" +msgstr "PORTSCOUT" + +#. (itstool) path: sect1/para +#: book.translate.xml:4204 +msgid "" +"Portscout is an automated distfile check utility " +"for the FreeBSD Ports Collection, described in detail in ." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4208 +msgid "" +"PORTSCOUT defines special conditions within which the " +"Portscout distfile scanner is restricted." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4212 +msgid "Situations where PORTSCOUT is set include:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:4217 +msgid "" +"When distfiles have to be ignored, whether for specific versions, or " +"specific minor revisions. For example, to exclude version 8.2 from distfile version checks because it is known to be broken, " +"add:" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:4222 +#, no-wrap +msgid "PORTSCOUT=\tignore:8.2" +msgstr "PORTSCOUT=\tignore:8.2" + +#. (itstool) path: listitem/para +#: book.translate.xml:4226 +msgid "" +"When specific versions or specific major and minor revisions of a distfile " +"must be checked. For example, if only version 0.6.4 must be monitored because newer versions have compatibility " +"issues with FreeBSD, add:" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:4232 +#, no-wrap +msgid "PORTSCOUT=\tlimit:^0\\.6\\.4" +msgstr "PORTSCOUT=\tlimit:^0\\.6\\.4" + +#. (itstool) path: listitem/para +#: book.translate.xml:4236 +msgid "" +"When URLs listing the available versions differ from the download URLs. For " +"example, to limit distfile version checks to the download page for the " +"databases/pgtune port, add:" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:4242 +#, no-wrap +msgid "PORTSCOUT=\tsite:http://pgfoundry.org/frs/?group_id=1000416" +msgstr "PORTSCOUT=\tsite:http://pgfoundry.org/frs/?group_id=1000416" + +#. (itstool) path: sect1/title +#: book.translate.xml:4248 +msgid "Dependencies" +msgstr "相依性" + +#. (itstool) path: sect1/para +#: book.translate.xml:4250 +msgid "" +"Many ports depend on other ports. This is a very convenient feature of most " +"Unix-like operating systems, including FreeBSD. Multiple ports can share a " +"common dependency, rather than bundling that dependency with every port or " +"package that needs it. There are seven variables that can be used to ensure " +"that all the required bits will be on the user's machine. There are also " +"some pre-supported dependency variables for common cases, plus a few more to " +"control the behavior of dependencies." +msgstr "" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:4260 book.translate.xml:5611 +msgid "LIB_DEPENDS" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4262 +msgid "" +"This variable specifies the shared libraries this port depends on. It is a " +"list of lib:dir tuples " +"where lib is the name of the shared library, " +"dir is the directory in which to find it in case " +"it is not available. For example," +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4270 +#, no-wrap +msgid "LIB_DEPENDS= libjpeg.so:${PORTSDIR}/graphics/jpeg" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4272 +msgid "" +"will check for a shared jpeg library with any version, and descend into the " +"graphics/jpeg subdirectory of the ports tree to build " +"and install it if it is not found." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4277 +msgid "" +"The dependency is checked twice, once from within the <_:buildtarget-1/> " +"target and then from within the <_:buildtarget-2/> target. Also, the name of " +"the dependency is put into the package so that pkg install (see pkg-install8) will automatically " +"install it if it is not on the user's system." +msgstr "" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:4287 book.translate.xml:5615 +msgid "RUN_DEPENDS" +msgstr "RUN_DEPENDS" + +#. (itstool) path: sect2/para +#: book.translate.xml:4289 +msgid "" +"This variable specifies executables or files this port depends on during run-" +"time. It is a list of path:dir:target tuples " +"where path is the name of the executable or file, " +"dir is the directory in which to find it in case " +"it is not available, and target is the target to " +"call in that directory. If path starts with a " +"slash (/), it is treated as a file and its existence is " +"tested with test -e; otherwise, it is assumed to be an " +"executable, and which -s is used to determine if the " +"program exists in the search path." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4303 +msgid "For example," +msgstr "例如," + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4305 +#, no-wrap +msgid "" +"RUN_DEPENDS=\t${LOCALBASE}/news/bin/innd:${PORTSDIR}/news/inn \\\n" +"\t\txmlcatmgr:${PORTSDIR}/textproc/xmlcatmgr" +msgstr "" +"RUN_DEPENDS=\t${LOCALBASE}/news/bin/innd:${PORTSDIR}/news/inn \\\n" +"\t\txmlcatmgr:${PORTSDIR}/textproc/xmlcatmgr" + +#. (itstool) path: sect2/para +#: book.translate.xml:4308 +msgid "" +"will check if the file or directory /usr/local/news/bin/innd exists, and build and install it from the news/inn subdirectory of the ports tree if it is not found. It will also " +"see if an executable called xmlcatmgr is in the search " +"path, and descend into textproc/xmlcatmgr to build and " +"install it if it is not found." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:4318 +msgid "" +"In this case, innd is actually an executable; if an " +"executable is in a place that is not expected to be in the search path, use " +"the full pathname." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:4325 +msgid "" +"The official search PATH used on the ports build cluster is" +msgstr "" + +#. (itstool) path: note/programlisting +#: book.translate.xml:4328 +#, no-wrap +msgid "/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" +msgstr "/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" + +#. (itstool) path: sect2/para +#: book.translate.xml:4331 +msgid "" +"The dependency is checked from within the <_:buildtarget-1/> target. Also, " +"the name of the dependency is put into the package so that pkg " +"install (see pkg-install8) will automatically " +"install it if it is not on the user's system. The target part can be omitted if it is the same as " +"DEPENDS_TARGET." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4339 +msgid "" +"A quite common situation is when RUN_DEPENDS is literally " +"the same as BUILD_DEPENDS, especially if ported software " +"is written in a scripted language or if it requires the same build and run-" +"time environment. In this case, it is both tempting and intuitive to " +"directly assign one to the other:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4347 +#, no-wrap +msgid "RUN_DEPENDS=\t${BUILD_DEPENDS}" +msgstr "RUN_DEPENDS=\t${BUILD_DEPENDS}" + +#. (itstool) path: sect2/para +#: book.translate.xml:4349 +msgid "" +"However, such assignment can pollute run-time dependencies with entries not " +"defined in the port's original BUILD_DEPENDS. This " +"happens because of make1's lazy evaluation of " +"variable assignment. Consider a Makefile with " +"USE_*, which are processed by " +"ports/Mk/bsd.*.mk to augment initial build " +"dependencies. For example, USES= gmake adds devel/gmake to BUILD_DEPENDS. To " +"prevent such additional dependencies from polluting RUN_DEPENDS, create another variable with the current content of " +"BUILD_DEPENDS and assign it to both " +"BUILD_DEPENDS and RUN_DEPENDS:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4366 +#, no-wrap +msgid "" +"MY_DEPENDS=\tsome:${PORTSDIR}/devel/some \\\n" +"\t\tother:${PORTSDIR}/lang/other\n" +"BUILD_DEPENDS=\t${MY_DEPENDS}\n" +"RUN_DEPENDS=\t${MY_DEPENDS}" +msgstr "" +"MY_DEPENDS=\tsome:${PORTSDIR}/devel/some \\\n" +"\t\tother:${PORTSDIR}/lang/other\n" +"BUILD_DEPENDS=\t${MY_DEPENDS}\n" +"RUN_DEPENDS=\t${MY_DEPENDS}" + +#. (itstool) path: important/para +#: book.translate.xml:4372 +msgid "" +"Do not use := to assign " +"BUILD_DEPENDS to RUN_DEPENDS or vice-" +"versa. All variables are expanded immediately, which is exactly the wrong " +"thing to do and almost always a failure." +msgstr "" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:4381 book.translate.xml:5607 +msgid "BUILD_DEPENDS" +msgstr "BUILD_DEPENDS" + +#. (itstool) path: sect2/para +#: book.translate.xml:4383 +msgid "" +"This variable specifies executables or files this port requires to build. " +"Like RUN_DEPENDS, it is a list of path:dir:target tuples. For example," +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4389 +#, no-wrap +msgid "BUILD_DEPENDS=\tunzip:${PORTSDIR}/archivers/unzip" +msgstr "BUILD_DEPENDS=\tunzip:${PORTSDIR}/archivers/unzip" + +#. (itstool) path: sect2/para +#: book.translate.xml:4391 book.translate.xml:4436 +msgid "" +"will check for an executable called unzip, and descend " +"into the archivers/unzip subdirectory of the ports tree " +"to build and install it if it is not found." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:4397 +msgid "" +"build here means everything from extraction to compilation. " +"The dependency is checked from within the <_:buildtarget-1/> target. The " +"target part can be omitted if it is the same as " +"DEPENDS_TARGET" +msgstr "" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:4406 book.translate.xml:5603 +msgid "FETCH_DEPENDS" +msgstr "FETCH_DEPENDS" + +#. (itstool) path: sect2/para +#: book.translate.xml:4408 +msgid "" +"This variable specifies executables or files this port requires to fetch. " +"Like the previous two, it is a list of path:" +"dir:target tuples. For example," +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4413 +#, no-wrap +msgid "FETCH_DEPENDS=\tncftp2:${PORTSDIR}/net/ncftp2" +msgstr "FETCH_DEPENDS=\tncftp2:${PORTSDIR}/net/ncftp2" + +#. (itstool) path: sect2/para +#: book.translate.xml:4415 +msgid "" +"will check for an executable called ncftp2, and descend " +"into the net/ncftp2 subdirectory of the ports tree to " +"build and install it if it is not found." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4420 book.translate.xml:4441 book.translate.xml:4468 +msgid "" +"The dependency is checked from within the <_:buildtarget-1/> target. The " +"target part can be omitted if it is the same as " +"DEPENDS_TARGET." +msgstr "" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:4427 book.translate.xml:5595 +msgid "EXTRACT_DEPENDS" +msgstr "EXTRACT_DEPENDS" + +#. (itstool) path: sect2/para +#: book.translate.xml:4429 +msgid "" +"This variable specifies executables or files this port requires for " +"extraction. Like the previous, it is a list of path:dir:target tuples. For example," +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4434 +#, no-wrap +msgid "EXTRACT_DEPENDS=\tunzip:${PORTSDIR}/archivers/unzip" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:4447 +msgid "" +"Use this variable only if the extraction does not already work (the default " +"assumes tar) and cannot be made to work using " +"USES=tar, USES=lha or " +"USES=zip described in ." +msgstr "" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:4456 book.translate.xml:5599 +msgid "PATCH_DEPENDS" +msgstr "PATCH_DEPENDS" + +#. (itstool) path: sect2/para +#: book.translate.xml:4458 +msgid "" +"This variable specifies executables or files this port requires to patch. " +"Like the previous, it is a list of path:" +"dir:target tuples. For example," +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4463 +#, no-wrap +msgid "PATCH_DEPENDS=\t${NONEXISTENT}:${PORTSDIR}/java/jfc:extract" +msgstr "PATCH_DEPENDS=\t${NONEXISTENT}:${PORTSDIR}/java/jfc:extract" + +#. (itstool) path: sect2/para +#: book.translate.xml:4465 +msgid "" +"will descend into the java/jfc subdirectory of the " +"ports tree to extract it." +msgstr "" + +#. (itstool) path: sect2/title +#. (itstool) path: listitem/para +#: book.translate.xml:4475 book.translate.xml:5800 +msgid "USES" +msgstr "USES" + +#. (itstool) path: sect2/para +#: book.translate.xml:4477 +msgid "" +"Parameters can be added to define different features and dependencies used " +"by the port. They are specified by adding this line to the " +"Makefile:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4481 +#, no-wrap +msgid "USES= feature[:arguments]" +msgstr "USES= feature[:arguments]" + +#. (itstool) path: sect2/para +#: book.translate.xml:4483 +msgid "" +"For the complete list of values, please see ." +msgstr "" + +#. (itstool) path: warning/para +#: book.translate.xml:4487 +msgid "" +"USES cannot be assigned after inclusion of bsd." +"port.pre.mk." +msgstr "" + +#. (itstool) path: sect2/title +#. (itstool) path: table/title +#: book.translate.xml:4493 book.translate.xml:4520 +msgid "USE_*" +msgstr "USE_*" + +#. (itstool) path: sect2/para +#: book.translate.xml:4495 +msgid "" +"Several variables exist to define common dependencies shared by many ports. " +"Their use is optional, but helps to reduce the verbosity of the port " +"Makefiles. Each of them is styled as " +"USE_*. These variables may be " +"used only in the port Makefiles and ports/Mk/" +"bsd.*.mk. They are not meant for user-settable options — use " +"PORT_OPTIONS for that purpose." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:4507 +msgid "" +"It is always incorrect to set any " +"USE_* in /etc/make." +"conf. For instance, setting" +msgstr "" + +#. (itstool) path: note/programlisting +#: book.translate.xml:4512 +#, no-wrap +msgid "USE_GCC=X.Y" +msgstr "USE_GCC=X.Y" + +#. (itstool) path: note/para +#: book.translate.xml:4514 +msgid "" +"(where X.Y is version number) would add a dependency on gccXY for every " +"port, including lang/gccXY itself!" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:4526 book.translate.xml:6984 book.translate.xml:7041 +#: book.translate.xml:7086 book.translate.xml:7174 book.translate.xml:7510 +#: book.translate.xml:9001 book.translate.xml:9303 book.translate.xml:11571 +msgid "Means" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:4532 +msgid "USE_GCC" +msgstr "USE_GCC" + +#. (itstool) path: row/entry +#: book.translate.xml:4533 +msgid "" +"The port requires GCC (gcc or g++) to " +"build. Some ports need any GCC version, some require modern, recent " +"versions. It is typically set to any (in this case, GCC " +"from base would be used on versions of FreeBSD that still have it, or " +"lang/gcc port would be installed when default C/C++ " +"compiler is Clang); or yes (means always use stable, " +"modern GCC from lang/gcc port). The exact version can " +"also be specified, with a value such as 4.7. The minimal " +"required version can be specified as 4.6+. The GCC from " +"the base system is used when it satisfies the requested version, otherwise " +"an appropriate compiler is built from the port, and CC " +"and CXX are adjusted accordingly." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4556 +msgid "" +"Variables related to gmake and " +"configure are described in , while autoconf, automake and libtool are described in . Perl related " +"variables are described in . X11 variables are " +"listed in . " +"deals with GNOME and with KDE related " +"variables. documents Java variables, while " +" contains information on Apache, PHP and PEAR modules. " +"Python is discussed in , while Ruby in . provides variables used for " +"SDL applications and finally, contains information on Xfce." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:4583 +msgid "Minimal Version of a Dependency" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4585 +msgid "" +"A minimal version of a dependency can be specified in any " +"*_DEPENDS except " +"LIB_DEPENDS using this syntax:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4590 +#, no-wrap +msgid "p5-Spiffy>=0.26:${PORTSDIR}/devel/p5-Spiffy" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4592 +msgid "" +"The first field contains a dependent package name, which must match the " +"entry in the package database, a comparison sign, and a package version. The " +"dependency is satisfied if p5-Spiffy-0.26 or newer is installed on the " +"machine." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:4599 +msgid "Notes on Dependencies" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:4603 +msgid "DEPENDS_TARGET" +msgstr "DEPENDS_TARGET" + +#. (itstool) path: sect2/para +#: book.translate.xml:4601 +msgid "" +"As mentioned above, the default target to call when a dependency is required " +"is <_:buildtarget-1/>. It defaults to install. This is a " +"user variable; it is never defined in a port's Makefile. If the port needs a special way to handle a dependency, use the " +":target part of *_DEPENDS instead of redefining " +"DEPENDS_TARGET." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4612 +msgid "" +"When running make clean, the port dependencies are " +"automatically cleaned too. If this is not desirable, define " +"NOCLEANDEPENDS in the environment. This may be " +"particularly desirable if the port has something that takes a long time to " +"rebuild in its dependency list, such as KDE, GNOME or Mozilla." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4620 +msgid "" +"To depend on another port unconditionally, use the variable " +"${NONEXISTENT} as the first field of BUILD_DEPENDS or RUN_DEPENDS. Use this only when the source of " +"the other port is needed. Compilation time can be saved by specifying the " +"target too. For instance" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4628 +#, no-wrap +msgid "BUILD_DEPENDS=\t${NONEXISTENT}:${PORTSDIR}/graphics/jpeg:extract" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4630 +msgid "will always descend to the jpeg port and extract it." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:4635 +msgid "Circular Dependencies Are Fatal" +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:4638 +msgid "Do not introduce any circular dependencies into the ports tree!" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4642 +msgid "" +"The ports building technology does not tolerate circular dependencies. If " +"one is introduced, someone, somewhere in the world, will have their FreeBSD " +"installation broken almost immediately, with many others quickly to follow. " +"These can really be hard to detect. If in doubt, before making that change, " +"make sure to run: cd /usr/ports; make index. That process " +"can be quite slow on older machines, but it may be able to save a large " +"number of people, including yourself, a lot of grief in the process." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:4655 +msgid "Problems Caused by Automatic Dependencies" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4657 +msgid "" +"Dependencies must be declared either explicitly or by using the OPTIONS framework. Using other methods " +"like automatic detection complicates indexing, which causes problems for " +"port and package management." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:4665 +msgid "Wrong Declaration of an Optional Dependency" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:4667 +#, no-wrap +msgid "" +".include <bsd.port.pre.mk>\n" +"\n" +".if exists(${LOCALBASE}/bin/foo)\n" +"LIB_DEPENDS=\tlibbar.so:${PORTSDIR}/foo/bar\n" +".endif" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4674 +msgid "" +"The problem with trying to automatically add dependencies is that files and " +"settings outside an individual port can change at any time. For example: an " +"index is built, then a batch of ports are installed. But one of the ports " +"installs the tested file. The index is now incorrect, because an installed " +"port unexpectedly has a new dependency. The index may still be wrong even " +"after rebuilding if other ports also determine their need for dependencies " +"based on the existence of other files." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:4685 +msgid "Correct Declaration of an Optional Dependency" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:4687 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tBAR\n" +"BAR_DESC=\tCalling cellphones via bar\n" +"\n" +"BAR_LIB_DEPENDS=\tlibbar.so:${PORTSDIR}/foo/bar" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4693 +msgid "" +"Testing option variables is the correct method. It will not cause " +"inconsistencies in the index of a batch of ports, provided the options were " +"defined prior to the index build. Simple scripts can then be used to " +"automate the building, installation, and updating of these ports and their " +"packages." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:4702 +msgid "" +"USE_* and " +"WANT_*" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4705 +msgid "" +"USE_* are set by the port " +"maintainer to define software on which this port depends. A port that needs " +"Firefox would set" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4709 +#, no-wrap +msgid "USE_FIREFOX=\tyes" +msgstr "USE_FIREFOX=\tyes" + +#. (itstool) path: sect2/para +#: book.translate.xml:4711 +msgid "" +"Some USE_* can accept version " +"numbers or other parameters. For example, a port that requires Apache 2.2 " +"would set" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4715 +#, no-wrap +msgid "USE_APACHE=\t22" +msgstr "USE_APACHE=\t22" + +#. (itstool) path: sect2/para +#: book.translate.xml:4717 +msgid "" +"For more control over dependencies in some cases, " +"WANT_* are available to more " +"precisely specify what is needed. For example, consider the mail/squirrelmail port. This port needs some PHP modules, " +"which are listed in USE_PHP:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4724 +#, no-wrap +msgid "USE_PHP=\tsession mhash gettext mbstring pcre openssl xml" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:4726 +msgid "" +"Those modules may be available in CLI or web versions, so the web version is " +"selected with WANT_*:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:4730 +#, no-wrap +msgid "WANT_PHP_WEB=\tyes" +msgstr "WANT_PHP_WEB=\tyes" + +#. (itstool) path: sect2/para +#: book.translate.xml:4732 +msgid "" +"Available USE_* and " +"WANT_* are defined in the " +"files in /usr/ports/Mk." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:4741 +msgid "MASTERDIR" +msgstr "MASTERDIR" + +#. (itstool) path: sect1/para +#: book.translate.xml:4743 +msgid "" +"If the port needs to build slightly different versions of packages by having " +"a variable (for instance, resolution, or paper size) take different values, " +"create one subdirectory per package to make it easier for users to see what " +"to do, but try to share as many files as possible between ports. Typically, " +"by using variables cleverly, only a very short Makefile " +"is needed in all but one of the directories. In the sole Makefile, use MASTERDIR to specify the directory where " +"the rest of the files are. Also, use a variable as part of PKGNAMESUFFIX so the packages " +"will have different names." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4755 +msgid "" +"This will be best demonstrated by an example. This is part of " +"japanese/xdvi300/Makefile;" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:4758 +#, no-wrap +msgid "" +"PORTNAME=\txdvi\n" +"PORTVERSION=\t17\n" +"PKGNAMEPREFIX=\tja-\n" +"PKGNAMESUFFIX=\t${RESOLUTION}\n" +"\n" +"# default\n" +"RESOLUTION?=\t300\n" +".if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \\\n" +" ${RESOLUTION} != 300 && ${RESOLUTION} != 400\n" +"pre-everything::\n" +"\t@${ECHO_MSG} \"Error: invalid value for RESOLUTION: " +"\\\"${RESOLUTION}\\\"\"\n" +"\t@${ECHO_MSG} \"Possible values are: 118, 240, 300 (default) and 400.\"\n" +"\t@${FALSE}\n" +".endif" +msgstr "" +"PORTNAME=\txdvi\n" +"PORTVERSION=\t17\n" +"PKGNAMEPREFIX=\tja-\n" +"PKGNAMESUFFIX=\t${RESOLUTION}\n" +"\n" +"# default\n" +"RESOLUTION?=\t300\n" +".if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \\\n" +" ${RESOLUTION} != 300 && ${RESOLUTION} != 400\n" +"pre-everything::\n" +"\t@${ECHO_MSG} \"Error: invalid value for RESOLUTION: " +"\\\"${RESOLUTION}\\\"\"\n" +"\t@${ECHO_MSG} \"Possible values are: 118, 240, 300 (default) and 400.\"\n" +"\t@${FALSE}\n" +".endif" + +#. (itstool) path: sect1/para +#: book.translate.xml:4773 +msgid "" +"japanese/xdvi300 also has all the regular " +"patches, package files, etc. Running make there, it will " +"take the default value for the resolution (300) and build the port normally." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4778 +msgid "" +"As for other resolutions, this is the entire " +"xdvi118/Makefile:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:4782 +#, no-wrap +msgid "" +"RESOLUTION=\t118\n" +"MASTERDIR=\t${.CURDIR}/../xdvi300\n" +"\n" +".include \"${MASTERDIR}/Makefile\"" +msgstr "" +"RESOLUTION=\t118\n" +"MASTERDIR=\t${.CURDIR}/../xdvi300\n" +"\n" +".include \"${MASTERDIR}/Makefile\"" + +#. (itstool) path: sect1/para +#: book.translate.xml:4787 +msgid "" +"(xdvi240/Makefile and xdvi400/Makefile are similar). MASTERDIR definition tells " +"bsd.port.mk that the regular set of subdirectories like " +"FILESDIR and SCRIPTDIR are to be found " +"under xdvi300. The RESOLUTION=118 " +"line will override the RESOLUTION=300 line in " +"xdvi300/Makefile and the port will be built with " +"resolution set to 118." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:4801 +msgid "Man Pages" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4803 +msgid "" +"If the port anchors its man tree somewhere other than PREFIX, use MANDIRS to specify those directories. Note " +"that the files corresponding to manual pages must be placed in pkg-" +"plist along with the rest of the files. The purpose of " +"MANDIRS is to enable automatic compression of manual " +"pages, therefore the file names are suffixed with .gz." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:4814 +msgid "Info Files" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4816 +msgid "" +"If the package needs to install GNU info files, list them " +"in INFO (without the trailing .info), " +"one entry per document. These files are assumed to be installed to " +"PREFIX/INFO_PATH. Change INFO_PATH " +"if the package uses a different location. However, this is not recommended. " +"These entries contain just the path relative to PREFIX/INFO_PATH. For example, lang/gcc34 installs " +"info files to PREFIX/INFO_PATH/gcc34, and " +"INFO will be something like this:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:4829 +#, no-wrap +msgid "INFO=\tgcc34/cpp gcc34/cppinternals gcc34/g77 ..." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4831 +msgid "" +"Appropriate installation/de-installation code will be automatically added to " +"the temporary pkg-plist before package registration." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:4838 +msgid "Makefile Options" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:4840 +msgid "" +"Many applications can be built with optional or differing configurations. " +"Examples include choice of natural (human) language, GUI versus command-" +"line, or type of database to support. Users may need a different " +"configuration than the default, so the ports system provides hooks the port " +"author can use to control which variant will be built. Supporting these " +"options properly will make users happy, and effectively provide two or more " +"ports for the price of one." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:4850 +msgid "OPTIONS" +msgstr "OPTIONS" + +#. (itstool) path: sect3/title +#: book.translate.xml:4853 +msgid "Background" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4855 +msgid "" +"OPTIONS_* give the user " +"installing the port a dialog showing the available options, and then saves " +"those options to ${PORT_DBDIR}/${OPTIONS_NAME}/options. " +"The next time the port is built, the options are reused. " +"PORT_DBDIR defaults to /var/db/ports. OPTIONS_NAME is to the port origin with an " +"underscore as the space separator, for example, for dns/bind99 it will be dns_bind99." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4867 +msgid "" +"When the user runs make config (or runs make " +"build for the first time), the framework checks for " +"${PORT_DBDIR}/${OPTIONS_NAME}/options. If that file does not " +"exist, the values of OPTIONS_* " +"are used, and a dialog box is displayed where the options can be enabled or " +"disabled. Then options is saved and the configured " +"variables are used when building the port." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4878 +msgid "" +"If a new version of the port adds new OPTIONS, the dialog " +"will be presented to the user with the saved values of old OPTIONS prefilled." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4883 +msgid "" +"make showconfig shows the saved configuration. Use " +"make rmconfig to remove the saved configuration." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:4889 +msgid "Syntax" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4891 +msgid "" +"OPTIONS_DEFINE contains a list of OPTIONS to be used. These are independent of each other and are not grouped:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:4895 +#, no-wrap +msgid "OPTIONS_DEFINE=\tOPT1 OPT2" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4897 +msgid "" +"Once defined, OPTIONS are described (optional, but " +"strongly recommended):" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:4900 +#, no-wrap +msgid "" +"OPT1_DESC=\tDescribe OPT1\n" +"OPT2_DESC=\tDescribe OPT2\n" +"OPT3_DESC=\tDescribe OPT3\n" +"OPT4_DESC=\tDescribe OPT4\n" +"OPT5_DESC=\tDescribe OPT5\n" +"OPT6_DESC=\tDescribe OPT6" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4907 +msgid "" +"ports/Mk/bsd.options.desc.mk has descriptions for many " +"common OPTIONS. While often useful, override them if the " +"description is insufficient for the port." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:4913 +msgid "" +"When describing options, view it from the perspective of the user: " +"What functionality does it change? and Why would I " +"want to enable this? Do not just repeat the name. For example, " +"describing the NLS option as include NLS support does not help the user, who can already see the option name but may " +"not know what it means. Describing it as Native Language Support via " +"gettext utilities is much more helpful." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:4927 +msgid "" +"Option names are always in all uppercase. They cannot use mixed case or " +"lowercase." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4931 +msgid "" +"OPTIONS can be grouped as radio choices, where only one " +"choice from each group is allowed:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:4935 +#, no-wrap +msgid "" +"OPTIONS_SINGLE=\t\tSG1\n" +"OPTIONS_SINGLE_SG1=\tOPT3 OPT4" +msgstr "" + +#. (itstool) path: warning/para +#: book.translate.xml:4939 +msgid "" +"There must be one of each OPTIONS_SINGLE group selected at all times for the options to be valid. One option " +"of each group must be added to " +"OPTIONS_DEFAULT." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4946 +msgid "" +"OPTIONS can be grouped as radio choices, where none or " +"only one choice from each group is allowed:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:4950 +#, no-wrap +msgid "" +"OPTIONS_RADIO=\t\tRG1\n" +"OPTIONS_RADIO_RG1=\tOPT7 OPT8" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4953 +msgid "" +"OPTIONS can also be grouped as multiple-choice lists, where at least one option must be enabled:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:4958 +#, no-wrap +msgid "" +"OPTIONS_MULTI=\t\tMG1\n" +"OPTIONS_MULTI_MG1=\tOPT5 OPT6" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4961 +msgid "" +"OPTIONS can also be grouped as multiple-choice lists, where none or any option can be enabled:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:4965 +#, no-wrap +msgid "" +"OPTIONS_GROUP=\t\tGG1\n" +"OPTIONS_GROUP_GG1=\tOPT9 OPT10" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4968 +msgid "" +"OPTIONS are unset by default, unless they are listed in " +"OPTIONS_DEFAULT:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:4972 +#, no-wrap +msgid "OPTIONS_DEFAULT=\tOPT1 OPT3 OPT6" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:4974 +msgid "" +"OPTIONS definitions must appear before the inclusion of " +"bsd.port.options.mk. PORT_OPTIONS " +"values can only be tested after the inclusion of bsd.port.options." +"mk. Inclusion of bsd.port.pre.mk can be used " +"instead, too, and is still widely used in ports written before the " +"introduction of bsd.port.options.mk. But be aware that " +"some variables will not work as expected after the inclusion of " +"bsd.port.pre.mk, typically some " +"USE_* flags." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:4990 +msgid "Simple Use of OPTIONS" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:4992 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tFOO BAR\n" +"FOO_DESC=\tOption foo support\n" +"BAR_DESC=\tFeature bar support\n" +"\n" +"OPTIONS_DEFAULT=FOO\n" +"\n" +"# Will add --with-foo / --without-foo\n" +"FOO_CONFIGURE_WITH=\tfoo\n" +"BAR_RUN_DEPENDS=\tbar:${PORTSDIR}/bar/bar\n" +"\n" +".include <bsd.port.mk>" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:5006 +msgid "Check for Unset Port OPTIONS" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:5009 +#, no-wrap +msgid "" +".if ! ${PORT_OPTIONS:MEXAMPLES}\n" +"CONFIGURE_ARGS+=--without-examples\n" +".endif" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:5013 +msgid "" +"The form shown above is discouraged. The preferred method is using a " +"configure knob to really enable and disable the feature to match the option:" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:5017 +#, no-wrap +msgid "" +"# Will add --with-examples / --without-examples\n" +"EXAMPLES_CONFIGURE_WITH=\texamples" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:5022 +msgid "Practical Use of OPTIONS" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:5024 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\t\tEXAMPLES\n" +"\n" +"OPTIONS_SINGLE=\t\tBACKEND\n" +"OPTIONS_SINGLE_BACKEND=\tMYSQL PGSQL BDB\n" +"\n" +"OPTIONS_MULTI=\t\tAUTH\n" +"OPTIONS_MULTI_AUTH=\tLDAP PAM SSL\n" +"\n" +"EXAMPLES_DESC=\t\tInstall extra examples\n" +"MYSQL_DESC=\t\tUse MySQL as backend\n" +"PGSQL_DESC=\t\tUse PostgreSQL as backend\n" +"BDB_DESC=\t\tUse Berkeley DB as backend\n" +"LDAP_DESC=\t\tBuild with LDAP authentication support\n" +"PAM_DESC=\t\tBuild with PAM support\n" +"SSL_DESC=\t\tBuild with OpenSSL support\n" +"\n" +"OPTIONS_DEFAULT=\tPGSQL LDAP SSL\n" +"\n" +"# Will add USE_PGSQL=yes\n" +"PGSQL_USE=\tpgsql=yes\n" +"# Will add --enable-postgres / --disable-postgres\n" +"PGSQL_CONFIGURE_ENABLE=\tpostgres\n" +"\n" +"ICU_LIB_DEPENDS=\tlibicuuc.so:${PORTSDIR}/devel/icu\n" +"\n" +"# Will add --with-examples / --without-examples\n" +"EXAMPLES_CONFIGURE_WITH=\texamples\n" +"\n" +"# Check other OPTIONS\n" +"\n" +".include <bsd.port.mk>" +msgstr "" +"OPTIONS_DEFINE=\t\tEXAMPLES\n" +"\n" +"OPTIONS_SINGLE=\t\tBACKEND\n" +"OPTIONS_SINGLE_BACKEND=\tMYSQL PGSQL BDB\n" +"\n" +"OPTIONS_MULTI=\t\tAUTH\n" +"OPTIONS_MULTI_AUTH=\tLDAP PAM SSL\n" +"\n" +"EXAMPLES_DESC=\t\tInstall extra examples\n" +"MYSQL_DESC=\t\tUse MySQL as backend\n" +"PGSQL_DESC=\t\tUse PostgreSQL as backend\n" +"BDB_DESC=\t\tUse Berkeley DB as backend\n" +"LDAP_DESC=\t\tBuild with LDAP authentication support\n" +"PAM_DESC=\t\tBuild with PAM support\n" +"SSL_DESC=\t\tBuild with OpenSSL support\n" +"\n" +"OPTIONS_DEFAULT=\tPGSQL LDAP SSL\n" +"\n" +"# Will add USE_PGSQL=yes\n" +"PGSQL_USE=\tpgsql=yes\n" +"# Will add --enable-postgres / --disable-postgres\n" +"PGSQL_CONFIGURE_ENABLE=\tpostgres\n" +"\n" +"ICU_LIB_DEPENDS=\tlibicuuc.so:${PORTSDIR}/devel/icu\n" +"\n" +"# Will add --with-examples / --without-examples\n" +"EXAMPLES_CONFIGURE_WITH=\texamples\n" +"\n" +"# Check other OPTIONS\n" +"\n" +".include <bsd.port.mk>" + +#. (itstool) path: sect3/title +#: book.translate.xml:5059 +msgid "Default Options" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5061 +msgid "These options are always on by default." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:5065 +msgid "DOCS — build and install documentation." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:5070 +msgid "NLS — Native Language Support." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:5075 +msgid "EXAMPLES — build and install examples." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:5080 +msgid "IPV6 — IPv6 protocol support." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:5086 +msgid "" +"There is no need to add these to OPTIONS_DEFAULT. To have " +"them active, and show up in the options selection dialog, however, they must " +"be added to OPTIONS_DEFINE." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:5095 +msgid "Feature Auto-Activation" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:5097 +msgid "" +"When using a GNU configure script, keep an eye on which optional features " +"are activated by auto-detection. Explicitly disable optional features that " +"are not needed by adding --without-xxx or --" +"disable-xxx in CONFIGURE_ARGS." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:5105 +msgid "Wrong Handling of an Option" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:5107 +#, no-wrap +msgid "" +".if ${PORT_OPTIONS:MFOO}\n" +"LIB_DEPENDS+=\t\tlibfoo.so:${PORTSDIR}/devel/foo\n" +"CONFIGURE_ARGS+=\t--enable-foo\n" +".endif" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:5113 +msgid "" +"In the example above, imagine a library libfoo is installed on the system. " +"The user does not want this application to use libfoo, so he toggled the " +"option off in the make config dialog. But the " +"application's configure script detects the library present in the system and " +"includes its support in the resulting executable. Now when the user decides " +"to remove libfoo from the system, the ports system does not protest (no " +"dependency on libfoo was recorded) but the application breaks." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:5124 +msgid "Correct Handling of an Option" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:5126 +#, no-wrap +msgid "" +"FOO_LIB_DEPENDS=\t\tlibfoo.so:${PORTSDIR}/devel/foo\n" +"# Will add --enable-foo / --disable-foo\n" +"FOO_CONFIGURE_ENABLE=\tfoo" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:5132 +msgid "" +"Under some circumstances, the shorthand conditional syntax can cause " +"problems with complex constructs. The errors are usually Malformed " +"conditional, an alternative syntax can be used." +msgstr "" + +#. (itstool) path: note/programlisting +#: book.translate.xml:5138 +#, no-wrap +msgid ".if !empty(VARIABLE:MVALUE)" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:5140 +msgid "as an alternative to" +msgstr "" + +#. (itstool) path: note/programlisting +#: book.translate.xml:5142 +#, no-wrap +msgid ".if ${VARIABLE:MVALUE}" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:5147 +msgid "Options Helpers" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:5149 +msgid "" +"There are some macros to help simplify conditional values which differ based " +"on the options set." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:5153 +msgid "OPTIONS_SUB" +msgstr "OPTIONS_SUB" + +#. (itstool) path: sect3/para +#: book.translate.xml:5155 +msgid "" +"If OPTIONS_SUB is set to yes then each " +"of the options added to OPTIONS_DEFINE will be added to " +"PLIST_SUB and SUB_LIST, for example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5161 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPTIONS_SUB=\tyes" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5164 book.translate.xml:5211 book.translate.xml:5248 +#: book.translate.xml:5290 book.translate.xml:5327 book.translate.xml:5357 +#: book.translate.xml:5387 book.translate.xml:5542 book.translate.xml:5633 +#: book.translate.xml:5818 book.translate.xml:5985 +msgid "is equivalent to:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5166 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"PLIST_SUB+=\tOPT1=\"\" NO_OPT1=\"@comment \"\n" +"SUB_LIST+=\tOPT1=\"\" NO_OPT1=\"@comment \"\n" +".else\n" +"PLIST_SUB+=\tOPT1=\"@comment \" NO_OPT1=\"\"\n" +"SUB_LIST+=\tOPT1=\"@comment \" NO_OPT1=\"\"\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"PLIST_SUB+=\tOPT1=\"\" NO_OPT1=\"@comment \"\n" +"SUB_LIST+=\tOPT1=\"\" NO_OPT1=\"@comment \"\n" +".else\n" +"PLIST_SUB+=\tOPT1=\"@comment \" NO_OPT1=\"\"\n" +"SUB_LIST+=\tOPT1=\"@comment \" NO_OPT1=\"\"\n" +".endif" + +#. (itstool) path: note/para +#: book.translate.xml:5179 +msgid "" +"The value of OPTIONS_SUB is ignored. Setting it to any " +"value will add PLIST_SUB and SUB_LIST " +"entries for all options." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:5188 +msgid "" +"OPT_USE and " +"OPT_USE_OFF" +msgstr "" +"OPT_USE and " +"OPT_USE_OFF" + +#. (itstool) path: sect3/para +#: book.translate.xml:5192 +msgid "" +"When option OPT is selected, for each " +"key=value pair in OPT_USE, " +"value is appended to the corresponding " +"USE_KEY. If " +"value has spaces in it, replace them with commas " +"and they will be changed back to spaces during processing. " +"OPT_USE_OFF works the same " +"way, but when OPT is not selected. " +"For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5207 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_USE=\tmysql=yes xorg=x11,xextproto,xext,xrandr\n" +"OPT1_USE_OFF=\topenssl=yes" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_USE=\tmysql=yes xorg=x11,xextproto,xext,xrandr\n" +"OPT1_USE_OFF=\topenssl=yes" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5213 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"USE_MYSQL=\tyes\n" +"USE_XORG=\tx11 xextproto xext xrandr\n" +".else\n" +"USE_OPENSSL=\tyes\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"USE_MYSQL=\tyes\n" +"USE_XORG=\tx11 xextproto xext xrandr\n" +".else\n" +"USE_OPENSSL=\tyes\n" +".endif" + +#. (itstool) path: sect3/title +#: book.translate.xml:5226 +msgid "OPT_CONFIGURE_ENABLE" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5228 +msgid "" +"When option OPT is selected, for each " +"entry in OPT_CONFIGURE_ENABLE then --enable-" +"entry is appended to " +"CONFIGURE_ARGS. When option OPT is not selected, --disable-" +"entry is appended to " +"CONFIGURE_ARGS. An optional argument can be specified " +"with an = symbol. This argument is only appended to the " +"--enable-entry configure " +"option. For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5244 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"OPT1_CONFIGURE_ENABLE=\ttest1 test2\n" +"OPT2_CONFIGURE_ENABLE=\ttest2=exhaustive" +msgstr "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"OPT1_CONFIGURE_ENABLE=\ttest1 test2\n" +"OPT2_CONFIGURE_ENABLE=\ttest2=exhaustive" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5250 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"CONFIGURE_ARGS+=\t--enable-test1 --enable-test2\n" +".else\n" +"CONFIGURE_ARGS+=\t--disable-test1 --disable-test2\n" +".endif\n" +"\n" +".if ${PORT_OPTIONS:MOPT2}\n" +"CONFIGURE_ARGS+=\t--enable-test2=exhaustive\n" +".else\n" +"CONFIGURE_ARGS+=\t--disable-test2\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"CONFIGURE_ARGS+=\t--enable-test1 --enable-test2\n" +".else\n" +"CONFIGURE_ARGS+=\t--disable-test1 --disable-test2\n" +".endif\n" +"\n" +".if ${PORT_OPTIONS:MOPT2}\n" +"CONFIGURE_ARGS+=\t--enable-test2=exhaustive\n" +".else\n" +"CONFIGURE_ARGS+=\t--disable-test2\n" +".endif" + +#. (itstool) path: sect3/title +#: book.translate.xml:5268 +msgid "OPT_CONFIGURE_WITH" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5270 +msgid "" +"When option OPT is selected, for each " +"entry in OPT_CONFIGURE_WITH then --with-" +"entry is appended to " +"CONFIGURE_ARGS. When option OPT is not selected, --without-" +"entry is appended to " +"CONFIGURE_ARGS. An optional argument can be specified " +"with an = symbol. This argument is only appended to the " +"--with-entry configure option. " +"For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5286 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"OPT1_CONFIGURE_WITH=\ttest1\n" +"OPT2_CONFIGURE_WITH=\ttest2=exhaustive" +msgstr "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"OPT1_CONFIGURE_WITH=\ttest1\n" +"OPT2_CONFIGURE_WITH=\ttest2=exhaustive" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5292 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"CONFIGURE_ARGS+=\t--with-test1\n" +".else\n" +"CONFIGURE_ARGS+=\t--without-test1\n" +".endif\n" +"\n" +".if ${PORT_OPTIONS:MOPT2}\n" +"CONFIGURE_ARGS+=\t--with-test2=exhaustive\n" +".else\n" +"CONFIGURE_ARGS+=\t--without-test2\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"CONFIGURE_ARGS+=\t--with-test1\n" +".else\n" +"CONFIGURE_ARGS+=\t--without-test1\n" +".endif\n" +"\n" +".if ${PORT_OPTIONS:MOPT2}\n" +"CONFIGURE_ARGS+=\t--with-test2=exhaustive\n" +".else\n" +"CONFIGURE_ARGS+=\t--without-test2\n" +".endif" + +#. (itstool) path: sect3/title +#: book.translate.xml:5310 +msgid "" +"OPT_CONFIGURE_ON and " +"OPT_CONFIGURE_OFF" +msgstr "" +"OPT_CONFIGURE_ON and " +"OPT_CONFIGURE_OFF" + +#. (itstool) path: sect3/para +#: book.translate.xml:5314 +msgid "" +"When option OPT is selected, the value of " +"OPT_CONFIGURE_ON, if defined, " +"is appended to CONFIGURE_ARGS. OPT_CONFIGURE_OFF works the same way, but when " +"OPT is not selected. For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5323 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_CONFIGURE_ON=\t--add-test\n" +"OPT1_CONFIGURE_OFF=\t--no-test" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_CONFIGURE_ON=\t--add-test\n" +"OPT1_CONFIGURE_OFF=\t--no-test" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5329 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"CONFIGURE_ARGS+=\t--add-test\n" +".else\n" +"CONFIGURE_ARGS+=\t--no-test\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"CONFIGURE_ARGS+=\t--add-test\n" +".else\n" +"CONFIGURE_ARGS+=\t--no-test\n" +".endif" + +#. (itstool) path: sect3/title +#: book.translate.xml:5341 +msgid "" +"OPT_CMAKE_ON and " +"OPT_CMAKE_OFF" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5345 +msgid "" +"When option OPT is selected, the value of " +"OPT_CMAKE_ON, if defined, is " +"appended to CMAKE_ARGS. OPT_CMAKE_OFF works the same way, but when OPT is not selected. For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5353 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_CMAKE_ON=\t-DTEST:BOOL=true\n" +"OPT1_CMAKE_OFF=\t-DOPTIMIZE:BOOL=true" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_CMAKE_ON=\t-DTEST:BOOL=true\n" +"OPT1_CMAKE_OFF=\t-DOPTIMIZE:BOOL=true" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5359 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"CMAKE_ARGS+=\t-DTEST:BOOL=true\n" +".else\n" +"CMAKE_ARGS+=\t-DOPTIMIZE:BOOL=true\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"CMAKE_ARGS+=\t-DTEST:BOOL=true\n" +".else\n" +"CMAKE_ARGS+=\t-DOPTIMIZE:BOOL=true\n" +".endif" + +#. (itstool) path: sect3/title +#: book.translate.xml:5371 +msgid "" +"OPT_QMAKE_ON and " +"OPT_QMAKE_OFF" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5375 +msgid "" +"When option OPT is selected, the value of " +"OPT_QMAKE_ON, if defined, is " +"appended to QMAKE_ARGS. OPT_QMAKE_OFF works the same way, but when OPT is not selected. For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5383 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_QMAKE_ON=\t-DTEST:BOOL=true\n" +"OPT1_QMAKE_OFF=\t-DPRODUCTION:BOOL=true" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_QMAKE_ON=\t-DTEST:BOOL=true\n" +"OPT1_QMAKE_OFF=\t-DPRODUCTION:BOOL=true" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5389 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"QMAKE_ARGS+=\t-DTEST:BOOL=true\n" +".else\n" +"QMAKE_ARGS+=\t-DPRODUCTION:BOOL=true\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"QMAKE_ARGS+=\t-DTEST:BOOL=true\n" +".else\n" +"QMAKE_ARGS+=\t-DPRODUCTION:BOOL=true\n" +".endif" + +#. (itstool) path: sect3/title +#: book.translate.xml:5401 +msgid "OPT_IMPLIES" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5403 +msgid "Provides a way to add dependencies between options." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5406 +msgid "" +"When OPT is selected, all the options listed in " +"this variable will be selected too. Using the OPT_CONFIGURE_ENABLE described earlier to illustrate:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5411 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"OPT1_IMPLIES=\tOPT2\n" +"\n" +"OPT1_CONFIGURE_ENABLE=\topt1\n" +"OPT2_CONFIGURE_ENABLE=\topt2" +msgstr "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"OPT1_IMPLIES=\tOPT2\n" +"\n" +"OPT1_CONFIGURE_ENABLE=\topt1\n" +"OPT2_CONFIGURE_ENABLE=\topt2" + +#. (itstool) path: sect3/para +#: book.translate.xml:5417 +msgid "Is equivalent to:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5419 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"CONFIGURE_ARGS+=\t--enable-opt1\n" +".else\n" +"CONFIGURE_ARGS+=\t--disable-opt1\n" +".endif\n" +"\n" +".if ${PORT_OPTIONS:MOPT2} || ${PORT_OPTIONS:MOPT1}\n" +"CONFIGURE_ARGS+=\t--enable-opt2\n" +".else\n" +"CONFIGURE_ARGS+=\t--disable-opt2\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"CONFIGURE_ARGS+=\t--enable-opt1\n" +".else\n" +"CONFIGURE_ARGS+=\t--disable-opt1\n" +".endif\n" +"\n" +".if ${PORT_OPTIONS:MOPT2} || ${PORT_OPTIONS:MOPT1}\n" +"CONFIGURE_ARGS+=\t--enable-opt2\n" +".else\n" +"CONFIGURE_ARGS+=\t--disable-opt2\n" +".endif" + +#. (itstool) path: example/title +#: book.translate.xml:5436 +msgid "Simple Use of OPT_IMPLIES" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:5439 +msgid "" +"This port has a X11 option, and a GNOME option that needs the X11 option to be selected " +"to build." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:5444 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tX11 GNOME\n" +"OPTIONS_DEFAULT=\tX11\n" +"\n" +"X11_USE=\txorg=xi,xextproto\n" +"GNOME_USE=\tgnome=gtk30\n" +"GNOME_IMPLIES=\tX11" +msgstr "" +"OPTIONS_DEFINE=\tX11 GNOME\n" +"OPTIONS_DEFAULT=\tX11\n" +"\n" +"X11_USE=\txorg=xi,xextproto\n" +"GNOME_USE=\tgnome=gtk30\n" +"GNOME_IMPLIES=\tX11" + +#. (itstool) path: sect3/title +#: book.translate.xml:5454 +msgid "" +"OPT_PREVENTS and " +"OPT_PREVENTS_MSG" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5458 +msgid "Provides a way to add conflicts between options." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5460 +msgid "" +"When OPT is selected, all the options listed in " +"this variable must be un-selected. If OPT_PREVENTS_MSG is also selected, its content will be " +"shown, explaining why they conflict. For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5466 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"OPT1_PREVENTS=\tOPT2\n" +"OPT1_PREVENTS_MSG=\tOPT1 and OPT2 enable conflicting options" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5470 +msgid "Is roughly equivalent to:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5472 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT2} || ${PORT_OPTIONS:MOPT1}\n" +"BROKEN=\tOption OPT1 conflicts with OPT2 (select only one)\n" +".endif" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5480 +msgid "" +"The only difference is that the first one will write an error after running " +"make config, suggesting changing the selected options." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:5485 +msgid "" +"Simple Use of OPT_PREVENTS" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:5488 +msgid "" +"This port has X509 and SCTP options. " +"Both options add patches, but the patches conflict with each other, so they " +"cannot be selected at the same time." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:5493 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tX509 SCTP\n" +"\n" +"SCTP_PATCHFILES=\t${PORTNAME}-6.8p1-sctp-2573.patch.gz:-p1\n" +"SCTP_CONFIGURE_WITH=\tsctp\n" +"\n" +"X509_PATCH_SITES=\thttp://www.roumenpetrov.info/openssh/x509/:x509\n" +"X509_PATCHFILES=\t${PORTNAME}-7.0p1+x509-8.5.diff.gz:-p1:x509\n" +"X509_PREVENTS=\t\tSCTP\n" +"X509_PREVENTS_MSG=\tX509 and SCTP patches conflict" +msgstr "" +"OPTIONS_DEFINE=\tX509 SCTP\n" +"\n" +"SCTP_PATCHFILES=\t${PORTNAME}-6.8p1-sctp-2573.patch.gz:-p1\n" +"SCTP_CONFIGURE_WITH=\tsctp\n" +"\n" +"X509_PATCH_SITES=\thttp://www.roumenpetrov.info/openssh/x509/:x509\n" +"X509_PATCHFILES=\t${PORTNAME}-7.0p1+x509-8.5.diff.gz:-p1:x509\n" +"X509_PREVENTS=\t\tSCTP\n" +"X509_PREVENTS_MSG=\tX509 and SCTP patches conflict" + +#. (itstool) path: sect3/title +#: book.translate.xml:5506 +msgid "" +"OPT_VARS and " +"OPT_VARS_OFF" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5510 +msgid "Provides a generic way to set and append to variables." +msgstr "" + +#. (itstool) path: warning/para +#: book.translate.xml:5513 +msgid "" +"Before using OPT_VARS and " +"OPT_VARS_OFF, see if there is " +"already a more specific helper available in ." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5519 +msgid "" +"When option OPT is selected, and " +"OPT_VARS defined, " +"key=value and key+=value pairs are evaluated from OPT_VARS. An = cause the existing " +"value of KEY to be overwritten, an += " +"appends to the value. OPT_VARS_OFF works the same way, but when OPT is " +"not selected." +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5534 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1 OPT2 OPT3\n" +"OPT1_VARS=\talso_build+=bin1\n" +"OPT2_VARS=\talso_build+=bin2\n" +"OPT3_VARS=\tbin3_build=yes\n" +"OPT3_VARS_OFF=\tbin3_build=no\n" +"\n" +"MAKE_ARGS=\tALSO_BUILD=\"${ALSO_BUILD}\" BIN3_BUILD=\"${BIN3_BUILD}\"" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5544 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1 OPT2\n" +"\n" +"MAKE_ARGS=\tALSO_BUILD=\"${ALSO_BUILD}\" BIN3_BUILD=\"${BIN3_BUILD}\"\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"ALSO_BUILD+=\tbin1\n" +".endif\n" +"\n" +".if ${PORT_OPTIONS:MOPT2}\n" +"ALSO_BUILD+=\tbin2\n" +".endif\n" +"\n" +".if ${PORT_OPTIONS:MOPT2}\n" +"BIN3_BUILD=\tyes\n" +".else\n" +"BIN3_BUILD=\tno\n" +".endif" +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:5565 +msgid "Values containing whitespace must be enclosed in quotes:" +msgstr "" + +#. (itstool) path: tip/programlisting +#: book.translate.xml:5568 +#, no-wrap +msgid "OPT_VARS=\tfoo=\"bar baz\"" +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:5570 +msgid "" +"This is due to the way make1 variable expansion " +"deals with whitespace. When OPT_VARS= foo=bar baz is " +"expanded, the variable ends up containing two strings, foo=bar and baz. But the submitter probably intended " +"there to be only one string, foo=bar baz. Quoting the " +"value prevents whitespace from being used as a delimiter." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:5582 +msgid "" +"Dependencies, OPT_DEPTYPE and OPT_DEPTYPE_OFF" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5587 +msgid "For any of these dependency types:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:5591 +msgid "PKG_DEPENDS" +msgstr "PKG_DEPENDS" + +#. (itstool) path: sect3/para +#: book.translate.xml:5619 +msgid "" +"When option OPT is selected, the value of " +"OPT_DEPTYPE, if defined, is appended to DEPTYPE. OPT_DEPTYPE_OFF works the " +"same, but when OPT is not selected. " +"For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5629 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_LIB_DEPENDS=\tliba.so:${PORTSDIR}/devel/a\n" +"OPT1_LIB_DEPENDS_OFF=\tlibb.so:${PORTSDIR}/devel/b" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5635 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"LIB_DEPENDS+=\tliba.so:${PORTSDIR}/devel/a\n" +".else\n" +"LIB_DEPENDS+=\tlibb.so:${PORTSDIR}/devel/b\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"LIB_DEPENDS+=\tliba.so:${PORTSDIR}/devel/a\n" +".else\n" +"LIB_DEPENDS+=\tlibb.so:${PORTSDIR}/devel/b\n" +".endif" + +#. (itstool) path: sect3/title +#: book.translate.xml:5647 +msgid "" +"Generic Variables Replacement, OPT_VARIABLE and " +"OPT_VARIABLE_OFF" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5652 +msgid "For any of these variables:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:5656 +msgid "ALL_TARGET" +msgstr "ALL_TARGET" + +#. (itstool) path: listitem/para +#: book.translate.xml:5660 +msgid "BROKEN" +msgstr "BROKEN" + +#. (itstool) path: listitem/para +#: book.translate.xml:5668 +msgid "CFLAGS" +msgstr "CFLAGS" + +#. (itstool) path: listitem/para +#. (itstool) path: row/entry +#: book.translate.xml:5672 book.translate.xml:7009 +msgid "CONFIGURE_ENV" +msgstr "CONFIGURE_ENV" + +#. (itstool) path: listitem/para +#. (itstool) path: sect2/title +#: book.translate.xml:5676 book.translate.xml:6115 +msgid "CONFLICTS" +msgstr "CONFLICTS" + +#. (itstool) path: listitem/para +#. (itstool) path: sect2/title +#: book.translate.xml:5680 book.translate.xml:6102 +msgid "CONFLICTS_BUILD" +msgstr "CONFLICTS_BUILD" + +#. (itstool) path: listitem/para +#. (itstool) path: sect2/title +#: book.translate.xml:5684 book.translate.xml:6085 +msgid "CONFLICTS_INSTALL" +msgstr "CONFLICTS_INSTALL" + +#. (itstool) path: listitem/para +#: book.translate.xml:5688 +msgid "CPPFLAGS" +msgstr "CPPFLAGS" + +#. (itstool) path: listitem/para +#: book.translate.xml:5692 +msgid "CXXFLAGS" +msgstr "CXXFLAGS" + +#. (itstool) path: listitem/para +#: book.translate.xml:5696 +msgid "DESKTOP_ENTRIES" +msgstr "DESKTOP_ENTRIES" + +#. (itstool) path: listitem/para +#: book.translate.xml:5704 +msgid "EXTRA_PATCHES" +msgstr "EXTRA_PATCHES" + +#. (itstool) path: listitem/para +#: book.translate.xml:5728 +msgid "IGNORE" +msgstr "IGNORE" + +#. (itstool) path: listitem/para +#: book.translate.xml:5732 +msgid "INFO" +msgstr "INFO" + +#. (itstool) path: listitem/para +#: book.translate.xml:5736 +msgid "INSTALL_TARGET" +msgstr "INSTALL_TARGET" + +#. (itstool) path: listitem/para +#: book.translate.xml:5740 +msgid "LDFLAGS" +msgstr "LDFLAGS" + +#. (itstool) path: listitem/para +#: book.translate.xml:5744 +msgid "LIBS" +msgstr "LIBS" + +#. (itstool) path: listitem/para +#: book.translate.xml:5748 +msgid "MAKE_ARGS" +msgstr "MAKE_ARGS" + +#. (itstool) path: listitem/para +#: book.translate.xml:5752 +msgid "MAKE_ENV" +msgstr "MAKE_ENV" + +#. (itstool) path: listitem/para +#: book.translate.xml:5760 +msgid "PATCH_SITES" +msgstr "PATCH_SITES" + +#. (itstool) path: listitem/para +#: book.translate.xml:5764 +msgid "PLIST_DIRS" +msgstr "PLIST_DIRS" + +#. (itstool) path: listitem/para +#: book.translate.xml:5768 +msgid "PLIST_DIRSTRY" +msgstr "PLIST_DIRSTRY" + +#. (itstool) path: listitem/para +#: book.translate.xml:5772 +msgid "PLIST_FILES" +msgstr "PLIST_FILES" + +#. (itstool) path: listitem/para +#: book.translate.xml:5776 +msgid "PLIST_SUB" +msgstr "PLIST_SUB" + +#. (itstool) path: listitem/para +#: book.translate.xml:5780 +msgid "PORTDOCS" +msgstr "PORTDOCS" + +#. (itstool) path: listitem/para +#: book.translate.xml:5784 +msgid "PORTEXAMPLES" +msgstr "PORTEXAMPLES" + +#. (itstool) path: listitem/para +#: book.translate.xml:5788 +msgid "SUB_FILES" +msgstr "SUB_FILES" + +#. (itstool) path: listitem/para +#: book.translate.xml:5792 +msgid "SUB_LIST" +msgstr "SUB_LIST" + +#. (itstool) path: listitem/para +#: book.translate.xml:5796 +msgid "TEST_TARGET" +msgstr "TEST_TARGET" + +#. (itstool) path: sect3/para +#: book.translate.xml:5804 +msgid "" +"When option OPT is selected, the value of " +"OPT_ABOVEVARIABLE, if defined, is appended to " +"ABOVEVARIABLE. " +"OPT_ABOVEVARIABLE_OFF works the same way, but when OPT is not selected. For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5814 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_USES=\tgmake\n" +"OPT1_CFLAGS_OFF=\t-DTEST" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"OPT1_USES=\tgmake\n" +"OPT1_CFLAGS_OFF=\t-DTEST" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5820 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"USES+=\t\tgmake\n" +".else\n" +"CFLAGS+=\t-DTEST\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"USES+=\t\tgmake\n" +".else\n" +"CFLAGS+=\t-DTEST\n" +".endif" + +#. (itstool) path: note/para +#: book.translate.xml:5831 +msgid "" +"Some variables are not in this list, in particular PKGNAMEPREFIX and PKGNAMESUFFIX. This is intentional. A port " +"must not change its name when its option set changes." +msgstr "" + +#. (itstool) path: warning/para +#: book.translate.xml:5839 +msgid "" +"Some of these variables, at least ALL_TARGET and " +"INSTALL_TARGET, have their default values set " +"after the options are processed." +msgstr "" + +#. (itstool) path: warning/para +#: book.translate.xml:5845 +msgid "With these lines in the Makefile:" +msgstr "" + +#. (itstool) path: warning/programlisting +#: book.translate.xml:5848 +#, no-wrap +msgid "" +"ALL_TARGET=\tall\n" +"\n" +"DOCS_ALL_TARGET=\tdoc" +msgstr "" +"ALL_TARGET=\tall\n" +"\n" +"DOCS_ALL_TARGET=\tdoc" + +#. (itstool) path: warning/para +#: book.translate.xml:5852 +msgid "" +"If the DOCS option is enabled, ALL_TARGET will have a final value of all doc; if the " +"option is disabled, it would have a value of all." +msgstr "" + +#. (itstool) path: warning/para +#: book.translate.xml:5857 +msgid "With only the options helper line in the Makefile:" +msgstr "" + +#. (itstool) path: warning/programlisting +#: book.translate.xml:5860 +#, no-wrap +msgid "DOCS_ALL_TARGET=\tdoc" +msgstr "DOCS_ALL_TARGET=\tdoc" + +#. (itstool) path: warning/para +#: book.translate.xml:5862 +msgid "" +"If the DOCS option is enabled, ALL_TARGET will have a final value of doc; if the option is " +"disabled, it would have a value of all." +msgstr "" + +#. (itstool) path: title/buildtarget +#. (itstool) path: para/buildtarget +#: book.translate.xml:5872 book.translate.xml:5874 book.translate.xml:5971 +msgid "TARGET-OPT-on" +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:5871 +msgid "Additional Build Targets, <_:buildtarget-1/> and <_:buildtarget-2/>" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5876 +msgid "" +"These Makefile targets can accept optional extra build " +"targets:" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5881 +msgid "pre-fetch" +msgstr "pre-fetch" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5889 +msgid "post-fetch" +msgstr "post-fetch" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5893 +msgid "pre-extract" +msgstr "pre-extract" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5905 +msgid "pre-patch" +msgstr "pre-patch" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5909 +msgid "do-patch" +msgstr "do-patch" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5913 +msgid "post-patch" +msgstr "post-patch" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5917 +msgid "pre-configure" +msgstr "pre-configure" + +#. (itstool) path: para/buildtarget +#. (itstool) path: entry/buildtarget +#: book.translate.xml:5921 book.translate.xml:10048 +msgid "do-configure" +msgstr "do-configure" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5925 +msgid "post-configure" +msgstr "post-configure" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5929 +msgid "pre-build" +msgstr "pre-build" + +#. (itstool) path: para/buildtarget +#. (itstool) path: entry/buildtarget +#: book.translate.xml:5933 book.translate.xml:9581 book.translate.xml:10046 +msgid "do-build" +msgstr "do-build" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5937 book.translate.xml:10152 +msgid "post-build" +msgstr "post-build" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5941 book.translate.xml:6509 book.translate.xml:12013 +#: book.translate.xml:12019 book.translate.xml:12043 +msgid "pre-install" +msgstr "pre-install" + +#. (itstool) path: para/buildtarget +#. (itstool) path: entry/buildtarget +#: book.translate.xml:5945 book.translate.xml:6510 book.translate.xml:10047 +#: book.translate.xml:12014 +msgid "do-install" +msgstr "do-install" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5949 book.translate.xml:6216 book.translate.xml:6306 +#: book.translate.xml:6511 book.translate.xml:6517 book.translate.xml:6692 +#: book.translate.xml:12021 +msgid "post-install" +msgstr "post-install" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5953 +msgid "post-stage" +msgstr "post-stage" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5957 +msgid "pre-package" +msgstr "pre-package" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5961 +msgid "do-package" +msgstr "do-package" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5965 +msgid "post-package" +msgstr "post-package" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5973 +msgid "TARGET" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:5974 +msgid "TARGET-OPT-off" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:5969 +msgid "" +"When option OPT is selected, the target <_:" +"buildtarget-1/>, if defined, is executed after <_:buildtarget-2/>. <_:" +"buildtarget-3/> works the same way, but when OPT is " +"not selected. For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5978 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +"post-patch-OPT1-on:\n" +"\t@${REINPLACE_CMD} -e '/opt1/d' ${WRKSRC}/Makefile\n" +"post-patch-OPT1-off:\n" +"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${LOCALBASE}/bin/|' " +"${WRKSRC}/Makefile" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +"post-patch-OPT1-on:\n" +"\t@${REINPLACE_CMD} -e '/opt1/d' ${WRKSRC}/Makefile\n" +"post-patch-OPT1-off:\n" +"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${LOCALBASE}/bin/|' " +"${WRKSRC}/Makefile" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:5987 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +"post-patch:\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"\t@${REINPLACE_CMD} -e '/opt1/d' ${WRKSRC}/Makefile\n" +".else\n" +"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${LOCALBASE}/bin/|' " +"${WRKSRC}/Makefile\n" +".endif" +msgstr "" +"OPTIONS_DEFINE=\tOPT1\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +"post-patch:\n" +".if ${PORT_OPTIONS:MOPT1}\n" +"\t@${REINPLACE_CMD} -e '/opt1/d' ${WRKSRC}/Makefile\n" +".else\n" +"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${LOCALBASE}/bin/|' " +"${WRKSRC}/Makefile\n" +".endif" + +#. (itstool) path: sect1/title +#: book.translate.xml:6002 +msgid "Specifying the Working Directory" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6004 +msgid "" +"Each port is extracted into a working directory, which must be writable. The " +"ports system defaults to having DISTFILES unpack in to a " +"directory called ${DISTNAME}. In other words, if the " +"Makefile has:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:6010 +#, no-wrap +msgid "" +"PORTNAME=\tfoo\n" +"PORTVERSION=\t1.0" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6013 +msgid "" +"then the port's distribution files contain a top-level directory, " +"foo-1.0, and the rest of the files are located under " +"that directory." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6017 +msgid "A number of variables can be overridden if that is not the case." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6021 +msgid "WRKSRC" +msgstr "WRKSRC" + +#. (itstool) path: sect2/para +#: book.translate.xml:6023 +msgid "" +"The variable lists the name of the directory that is created when the " +"application's distfiles are extracted. If our previous example extracted " +"into a directory called foo (and not foo-1.0) write:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6029 +#, no-wrap +msgid "WRKSRC=\t${WRKDIR}/foo" +msgstr "WRKSRC=\t${WRKDIR}/foo" + +#. (itstool) path: sect2/para +#: book.translate.xml:6031 +msgid "or possibly" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6033 +#, no-wrap +msgid "WRKSRC=\t${WRKDIR}/${PORTNAME}" +msgstr "WRKSRC=\t${WRKDIR}/${PORTNAME}" + +#. (itstool) path: sect2/title +#: book.translate.xml:6037 +msgid "WRKSRC_SUBDIR" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6039 +msgid "" +"If the source files needed for the port are in a subdirectory of the " +"extracted distribution file, set WRKSRC_SUBDIR to that " +"directory." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6043 +#, no-wrap +msgid "WRKSRC_SUBDIR=\tsrc" +msgstr "WRKSRC_SUBDIR=\tsrc" + +#. (itstool) path: sect2/title +#: book.translate.xml:6047 +msgid "NO_WRKSUBDIR" +msgstr "NO_WRKSUBDIR" + +#. (itstool) path: sect2/para +#: book.translate.xml:6049 +msgid "" +"If the port does not extract in to a subdirectory at all, then set " +"NO_WRKSUBDIR to indicate that." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6053 +#, no-wrap +msgid "NO_WRKSUBDIR=\tyes" +msgstr "NO_WRKSUBDIR=\tyes" + +#. (itstool) path: note/para +#: book.translate.xml:6056 +msgid "" +"Because WRKDIR is the only directory that is supposed to " +"be writable during the build, and is used to store many files recording the " +"status of the build, the port's extraction will be forced into a " +"subdirectory." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:6066 +msgid "Conflict Handling" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6068 +msgid "" +"There are three different variables to register a conflict between packages " +"and ports: CONFLICTS, CONFLICTS_INSTALL and CONFLICTS_BUILD." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:6074 +msgid "" +"The conflict variables automatically set the variable IGNORE, which is more fully documented in ." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6079 +msgid "" +"When removing one of several conflicting ports, it is advisable to retain " +"CONFLICTS in those other ports for a few months to cater " +"for users who only update once in a while." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6087 +msgid "" +"If the package cannot coexist with other packages (because of file " +"conflicts, runtime incompatibilities, etc.), list the other package names in " +"CONFLICTS_INSTALL. Use shell globs like * and ? here. Enumerate package names in there, " +"not port names or origins. Please make sure that CONFLICTS_INSTALL does not match this port's package itself. Otherwise enforcing its " +"installation with FORCE_PKG_REGISTER will no longer work. " +"CONFLICTS_INSTALL check is done after the build stage and " +"prior to the install stage." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6104 +msgid "" +"If the port cannot be built when other specific ports are already installed, " +"list the other port names in CONFLICTS_BUILD. Use shell " +"globs like * and ? here. Use package " +"names, not port names or origins. CONFLICTS_BUILD check " +"is done prior to the build stage. Build conflicts are not recorded in the " +"resulting package." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6117 +msgid "" +"If the port cannot be built if a certain port is already installed and the " +"resulting package cannot coexist with the other package, list the other " +"package name in CONFLICTS. use shell globs like " +"* and ? here. Enumerate package names " +"in there, not port names or origins. Please make sure that " +"CONFLICTS does not match this port's package itself. " +"Otherwise enforcing its installation with FORCE_PKG_REGISTER will no longer work. CONFLICTS check is done " +"prior to the build stage and prior to the install stage." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:6133 +msgid "Installing Files" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6136 +msgid "INSTALL_* Macros" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:6141 +msgid "*-install" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6139 +msgid "" +"Use the macros provided in bsd.port.mk to ensure " +"correct modes of files in the port's <_:buildtarget-1/> targets. Set " +"ownership directly in pkg-plist with the corresponding " +"entries, such as @(owner," +"group,), @owner " +"owner, and @group " +"group. These operators work until " +"overridden, or until the end of pkg-plist, so do not " +"forget to reset them after they are no longer needed. The default ownership " +"is root:wheel. See for more information." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6156 +msgid "" +"INSTALL_PROGRAM is a command to install binary " +"executables." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6161 +msgid "" +"INSTALL_SCRIPT is a command to install executable scripts." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6166 +msgid "" +"INSTALL_LIB is a command to install shared libraries (but " +"not static libraries)." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6171 +msgid "" +"INSTALL_KLD is a command to install kernel loadable " +"modules. Some architectures do not like having the modules stripped, so use " +"this command instead of INSTALL_PROGRAM." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6179 +msgid "" +"INSTALL_DATA is a command to install sharable data, " +"including static libraries." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6184 +msgid "" +"INSTALL_MAN is a command to install manpages and other " +"documentation (it does not compress anything)." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6190 +msgid "" +"These variables are set to the install1 command with the " +"appropriate flags for each situation." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:6194 +msgid "" +"Do not use INSTALL_LIB to install static libraries, " +"because stripping them renders them useless. Use INSTALL_DATA instead." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6202 +msgid "Stripping Binaries and Shared Libraries" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6204 +msgid "" +"Installed binaries should be stripped. Do not strip binaries manually unless " +"absolutely required. The INSTALL_PROGRAM macro installs " +"and strips a binary at the same time. The INSTALL_LIB " +"macro does the same thing to shared libraries." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6211 +msgid "" +"When a file must be stripped, but neither INSTALL_PROGRAM " +"nor INSTALL_LIB macros are desirable, " +"${STRIP_CMD} strips the program or shared library. This is " +"typically done within the <_:buildtarget-1/> target. For example:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6219 +#, no-wrap +msgid "" +"post-install:\n" +"\t${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/xdl" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6222 +msgid "When multiple files need to be stripped:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6224 +#, no-wrap +msgid "" +"post-install:\n" +".for l in geometry media body track world\n" +"\t${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}-${l}.so.0\n" +".endfor" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6229 +msgid "" +"Use file1 on a file to determine if it has been stripped. " +"Binaries are reported by file1 as stripped, or not stripped. Additionally, " +"strip1 will detect programs that have already been stripped and exit " +"cleanly." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6238 +msgid "Installing a Whole Tree of Files" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6240 +msgid "" +"Sometimes, a large number of files must be installed while preserving their " +"hierarchical organization. For example, copying over a whole directory tree " +"from WRKSRC to a target directory under PREFIX. Note that PREFIX, EXAMPLESDIR, DATADIR, and other path variables must always " +"be prepended with STAGEDIR to respect staging (see )." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6250 +msgid "" +"Two macros exist for this situation. The advantage of using these macros " +"instead of cp is that they guarantee proper file " +"ownership and permissions on target files. The first macro, " +"COPYTREE_BIN, will set all the installed files to be " +"executable, thus being suitable for installing into PREFIX/bin. The second macro, COPYTREE_SHARE, does not set " +"executable permissions on files, and is therefore suitable for installing " +"files under PREFIX/share target." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6261 +#, no-wrap +msgid "" +"post-install:\n" +"\t${MKDIR} ${STAGEDIR}${EXAMPLESDIR}\n" +"\t(cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . " +"${STAGEDIR}${EXAMPLESDIR})" +msgstr "" +"post-install:\n" +"\t${MKDIR} ${STAGEDIR}${EXAMPLESDIR}\n" +"\t(cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . " +"${STAGEDIR}${EXAMPLESDIR})" + +#. (itstool) path: sect2/para +#: book.translate.xml:6265 +msgid "" +"This example will install the contents of the examples " +"directory in the vendor distfile to the proper examples location of the port." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6269 +#, no-wrap +msgid "" +"post-install:\n" +"\t${MKDIR} ${STAGEDIR}${DATADIR}/summer\n" +"\t(cd ${WRKSRC}/temperatures && ${COPYTREE_SHARE} \"June July " +"August\" ${STAGEDIR}${DATADIR}/summer)" +msgstr "" +"post-install:\n" +"\t${MKDIR} ${STAGEDIR}${DATADIR}/summer\n" +"\t(cd ${WRKSRC}/temperatures && ${COPYTREE_SHARE} \"June July " +"August\" ${STAGEDIR}${DATADIR}/summer)" + +#. (itstool) path: sect2/para +#: book.translate.xml:6273 +msgid "" +"And this example will install the data of summer months to the " +"summer subdirectory of a DATADIR." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6277 +msgid "" +"Additional find arguments can be passed via the third " +"argument to COPYTREE_* macros. " +"For example, to install all files from the first example except Makefiles, " +"one can use these commands." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6284 +#, no-wrap +msgid "" +"post-install:\n" +"\t${MKDIR} ${STAGEDIR}${EXAMPLESDIR}\n" +"\t(cd ${WRKSRC}/examples && \\\n" +"\t${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR} \"! -name Makefile\")" +msgstr "" +"post-install:\n" +"\t${MKDIR} ${STAGEDIR}${EXAMPLESDIR}\n" +"\t(cd ${WRKSRC}/examples && \\\n" +"\t${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR} \"! -name Makefile\")" + +#. (itstool) path: sect2/para +#: book.translate.xml:6289 +msgid "" +"These macros do not add the installed files to pkg-plist. They must be added manually. For optional documentation " +"(PORTDOCS, see ) " +"and examples (PORTEXAMPLES), the %%PORTDOCS%% or %%PORTEXAMPLES%% prefixes must be prepended " +"in pkg-plist." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6300 +msgid "Install Additional Documentation" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6302 +msgid "" +"If the software has some documentation other than the standard man and info " +"pages that is useful for the user, install it under DOCSDIR This can be done, like the previous item, in the <_:buildtarget-1/> " +"target." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6308 +msgid "" +"Create a new directory for the port. The directory name is DOCSDIR. This usually equals PORTNAME. However, if the " +"user might want different versions of the port to be installed at the same " +"time, the whole PKGNAME can be used." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6315 +msgid "" +"Since only the files listed in pkg-plist are installed, " +"it is safe to always install documentation to STAGEDIR " +"(see ). Hence .if blocks are " +"only needed when the installed files are large enough to cause significant I/" +"O overhead." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6322 +#, no-wrap +msgid "" +"post-install:\n" +"\t${MKDIR} ${STAGEDIR}${DOCSDIR}\n" +"\t${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${STAGEDIR}${DOCSDIR}" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6326 +msgid "" +"Here are some handy variables and how they are expanded by default when used " +"in the Makefile:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6331 +msgid "" +"DATADIR gets expanded to PREFIX/share/PORTNAME." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6336 +msgid "" +"DATADIR_REL gets expanded to share/PORTNAME." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6341 +msgid "" +"DOCSDIR gets expanded to PREFIX/share/doc/" +"PORTNAME." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6346 +msgid "" +"DOCSDIR_REL gets expanded to share/doc/" +"PORTNAME." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6351 +msgid "" +"EXAMPLESDIR gets expanded to PREFIX/share/" +"examples/PORTNAME." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6356 +msgid "" +"EXAMPLESDIR_REL gets expanded to share/examples/" +"PORTNAME." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:6362 +msgid "" +"The DOCS option only controls additional documentation " +"installed in DOCSDIR. It does not apply to standard man " +"pages and info pages. Things installed in DATADIR and " +"EXAMPLESDIR are controlled by DATA and " +"EXAMPLES options, respectively." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6372 +msgid "" +"These variables are exported to PLIST_SUB. Their values " +"will appear there as pathnames relative to PREFIX if " +"possible. That is, share/doc/PORTNAME will be " +"substituted for %%DOCSDIR%% in the packing list by " +"default, and so on. (See more on pkg-plist substitution " +"here.)" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6381 +msgid "" +"All conditionally installed documentation files and directories are included " +"in pkg-plist with the %%PORTDOCS%% " +"prefix, for example:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6386 +#, no-wrap +msgid "" +"%%PORTDOCS%%%%DOCSDIR%%/AUTHORS\n" +"%%PORTDOCS%%%%DOCSDIR%%/CONTACT" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6389 +msgid "" +"As an alternative to enumerating the documentation files in pkg-" +"plist, a port can set the variable PORTDOCS to " +"a list of file names and shell glob patterns to add to the final packing " +"list. The names will be relative to DOCSDIR. Therefore, a " +"port that utilizes PORTDOCS, and uses a non-default " +"location for its documentation, must set DOCSDIR " +"accordingly. If a directory is listed in PORTDOCS or " +"matched by a glob pattern from this variable, the entire subtree of " +"contained files and directories will be registered in the final packing " +"list. If the DOCS option has been unset then files and " +"directories listed in PORTDOCS would not be installed or " +"added to port packing list. Installing the documentation at " +"PORTDOCS as shown above remains up to the port itself. A " +"typical example of utilizing PORTDOCS looks as follows:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6408 +#, no-wrap +msgid "PORTDOCS=\tREADME.* ChangeLog docs/*" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:6411 +msgid "" +"The equivalents of PORTDOCS for files installed under " +"DATADIR and EXAMPLESDIR are " +"PORTDATA and PORTEXAMPLES, " +"respectively." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:6417 +msgid "" +"The contents of pkg-message are displayed upon " +"installation. See the section on using " +"pkg-message for details. pkg-message does not need to be added to pkg-plist." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6427 +msgid "Subdirectories Under PREFIX" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6429 +msgid "" +"Try to let the port put things in the right subdirectories of " +"PREFIX. Some ports lump everything and put it in the " +"subdirectory with the port's name, which is incorrect. Also, many ports put " +"everything except binaries, header files and manual pages in a subdirectory " +"of lib, which does not work well with the BSD paradigm. " +"Many of the files must be moved to one of these directories: etc (setup/configuration files), libexec " +"(executables started internally), sbin (executables for " +"superusers/managers), info (documentation for info " +"browser) or share (architecture independent files). See " +"hier7 for details; the rules governing /usr " +"pretty much apply to /usr/local too. The exception are " +"ports dealing with USENET news. They may use PREFIX/" +"news as a destination for their files." +msgstr "" + +#. (itstool) path: chapter/title +#: book.translate.xml:6459 +msgid "Special Considerations" +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:6461 +msgid "" +"This section explains the most common things to consider when creating a " +"port." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:6465 +msgid "Staging" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6467 +msgid "" +"bsd.port.mk expects ports to work with a stage " +"directory. This means that a port must not install files directly to " +"the regular destination directories (that is, under PREFIX, for example) but instead into a separate directory from which the " +"package is then built. In many cases, this does not require root privileges, " +"making it possible to build packages as an unprivileged user. With staging, " +"the port is built and installed into the stage directory, STAGEDIR. A package is created from the stage directory and then installed " +"on the system. Automake tools refer to this concept as DESTDIR, but in FreeBSD, DESTDIR has a different meaning " +"(see )." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:6483 +msgid "" +"No port really needs to be root. It can mostly be " +"avoided by using USES=uidfix. If the port still runs commands like " +"chown8, chgrp1, or forces owner or " +"group with install1 then use USES=fakeroot to fake those calls. Some " +"patching of the port's Makefiles will be needed." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6492 +msgid "" +"Meta ports, or ports that do not install files themselves but only depend on " +"other ports, must avoid needlessly extracting the " +"mtree8 to the stage directory. This is the basic directory layout of " +"the package, and these empty directories will be seen as orphans. To prevent " +"mtree8 extraction, add this line:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:6499 +#, no-wrap +msgid "NO_MTREE=\tyes" +msgstr "NO_MTREE=\tyes" + +#. (itstool) path: tip/para +#: book.translate.xml:6502 +msgid "" +"Metaports should use USES=metaport. It sets up defaults for ports that do not fetch, build, or " +"install anything." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6507 +msgid "" +"Staging is enabled by prepending STAGEDIR to paths used " +"in the <_:buildtarget-1/>, <_:buildtarget-2/>, and <_:buildtarget-3/> " +"targets (see the examples through the book). Typically, this includes " +"PREFIX, ETCDIR, DATADIR, EXAMPLESDIR, MANPREFIX, " +"DOCSDIR, and so on. Directories should be created as part " +"of the <_:buildtarget-4/> target. Avoid using absolute paths whenever " +"possible." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6520 +msgid "" +"When creating a symlink, STAGEDIR is prepended to the " +"target path only. For example:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:6524 +#, no-wrap +msgid "" +"${LN} -sf libfoo.so.42 ${STAGEDIR}${PREFIX}/lib/<" +"replaceable>libfoo.so" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6526 +msgid "" +"The source path ${PREFIX}/lib/libfoo.so.42 looks fine but could, in fact, be incorrect. " +"Absolute paths can point to a wrong location, like when a remote file system " +"has been mounted with NFS under a non-root mount point. " +"Relative paths are less fragile, and often much shorter." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6534 +msgid "" +"Ports that install kernel modules must prepend STAGEDIR " +"to their destination, by default /boot/modules." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:6540 +msgid "Bundled Libraries" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6542 +msgid "" +"This section explains why bundled dependencies are considered bad and what " +"to do about them." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6546 +msgid "Why Bundled Libraries Are Bad" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6548 +msgid "" +"Some software requires the porter to locate third-party libraries and add " +"the required dependencies to the port. Other software bundles all necessary " +"libraries into the distribution file. The second approach seems easier at " +"first, but there are some serious drawbacks:" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6554 +msgid "" +"This list is loosely based on the Fedora and Gentoo " +"wikis, both licensed under the CC-BY-SA 3.0 license." +msgstr "" + +#. (itstool) path: varlistentry/term +#. (itstool) path: chapter/title +#: book.translate.xml:6561 book.translate.xml:14377 +msgid "Security" +msgstr "安全性" + +#. (itstool) path: listitem/para +#: book.translate.xml:6564 +msgid "" +"If vulnerabilities are found in the upstream library and fixed there, they " +"might not be fixed in the library bundled with the port. One reason could be " +"that the author is not aware of the problem. This means that the porter must " +"fix them, or upgrade to a non-vulnerable version, and send a patch to the " +"author. This all takes time, which results in software being vulnerable " +"longer than necessary. This in turn makes it harder to coordinate a fix " +"without unnecessarily leaking information about the vulnerability." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:6578 +msgid "Bugs" +msgstr "臭蟲" + +#. (itstool) path: listitem/para +#: book.translate.xml:6581 +msgid "" +"This problem is similar to the problem with security in the last paragraph, " +"but generally less severe." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:6587 +msgid "Forking" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6590 +msgid "" +"It is easier for the author to fork the upstream library once it is bundled. " +"While convenient on first sight, it means that the code diverges from " +"upstream making it harder to address security or other problems with the " +"software. A reason for this is that patching becomes harder." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6597 +msgid "" +"Another problem of forking is that because code diverges from upstream, bugs " +"get solved over and over again instead of just once at a central location. " +"This defeats the idea of open source software in the first place." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:6606 +msgid "Symbol collision" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6609 +msgid "" +"When a library is installed on the system, it might collide with the bundled " +"version. This can cause immediate errors at compile or link time. It can " +"also cause errors when running the program which might be harder to track " +"down. The latter problem could be caused because the versions of the two " +"libraries are incompatible." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:6620 +msgid "Licensing" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:6623 +msgid "" +"When bundling projects from different sources, license issues can arise more " +"easily, especially when licenses are incompatible." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:6630 +msgid "Waste of resources" +msgstr "浪費資源" + +#. (itstool) path: listitem/para +#: book.translate.xml:6633 +msgid "" +"Bundled libraries waste resources on several levels. It takes longer to " +"build the actual application, especially if these libraries are already " +"present on the system. At run-time, they can take up unnecessary memory when " +"the system-wide library is already loaded by one program and the bundled " +"library is loaded by another program." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:6644 +msgid "Waste of effort" +msgstr "浪費努力" + +#. (itstool) path: listitem/para +#: book.translate.xml:6647 +msgid "" +"When a library needs patches for FreeBSD, these patches have to be " +"duplicated again in the bundled library. This wastes developer time because " +"the patches might not apply cleanly. It can also be hard to notice that " +"these patches are required in the first place." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6658 +msgid "What to do About Bundled Libraries" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6660 +msgid "" +"Whenever possible, use the unbundled version of the library by adding a " +"LIB_DEPENDS to the port. If such a port does not exist " +"yet, consider creating it." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6665 +msgid "" +"Only use bundled libraries if the upstream has a good track record on " +"security and using unbundled versions leads to overly complex patches." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:6670 +msgid "" +"In some very special cases, for example emulators, like Wine, a port has to bundle libraries, because they are in a " +"different architecture, or they have been modified to fit the software's " +"use. In that case, those libraries should not be exposed to other ports for " +"linking. Add BUNDLE_LIBS=yes to the port's " +"Makefile. This will tell " +"pkg8 to not compute provided libraries. Always ask the Ports " +"Management Team portmgr@FreeBSD.org before adding this to a " +"port." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:6684 +msgid "Shared Libraries" +msgstr "共用函式庫" + +#. (itstool) path: sect1/para +#: book.translate.xml:6686 +msgid "" +"If the port installs one or more shared libraries, define a " +"USE_LDCONFIG make variable, which will instruct a " +"bsd.port.mk to run ${LDCONFIG} -m on " +"the directory where the new library is installed (usually PREFIX/" +"lib) during <_:buildtarget-1/> target to register it into the " +"shared library cache. This variable, when defined, will also facilitate " +"addition of an appropriate @exec /sbin/ldconfig -m and " +"@unexec /sbin/ldconfig -R pair into pkg-plist, so that a user who installed the package can start using the " +"shared library immediately and de-installation will not cause the system to " +"still believe the library is there." +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:6702 +#, no-wrap +msgid "USE_LDCONFIG=\tyes" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6704 +msgid "" +"The default directory can be overridden by setting USE_LDCONFIG to a list of directories into which shared libraries are to be " +"installed. For example, if the port installs shared libraries into " +"PREFIX/lib/foo and PREFIX/lib/bar " +"use this in Makefile:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:6713 +#, no-wrap +msgid "USE_LDCONFIG=\t${PREFIX}/lib/foo ${PREFIX}/lib/bar" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6715 +msgid "" +"Please double-check, often this is not necessary at all or can be avoided " +"through -rpath or setting LD_RUN_PATH " +"during linking (see lang/moscow_ml for an " +"example), or through a shell-wrapper which sets LD_LIBRARY_PATH before invoking the binary, like www/" +"seamonkey does." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6724 +msgid "" +"When installing 32-bit libraries on 64-bit system, use " +"USE_LDCONFIG32 instead." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6727 +msgid "" +"If the software uses autotools, and " +"specifically libtool, add USES=libtool." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6730 +msgid "" +"When the major library version number increments in the update to the new " +"port version, all other ports that link to the affected library must have " +"their PORTREVISION incremented, to force recompilation " +"with the new library version." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:6738 +msgid "Ports with Distribution Restrictions or Legal Concerns" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6741 +msgid "" +"Licenses vary, and some of them place restrictions on how the application " +"can be packaged, whether it can be sold for profit, and so on." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:6746 +msgid "" +"It is the responsibility of a porter to read the licensing terms of the " +"software and make sure that the FreeBSD project will not be held accountable " +"for violating them by redistributing the source or compiled binaries either " +"via FTP/HTTP or CD-ROM. If in doubt, please contact the FreeBSD ports " +"mailing list." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:6754 +msgid "" +"In situations like this, the variables described in the next sections can be " +"set." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6758 +msgid "NO_PACKAGE" +msgstr "NO_PACKAGE" + +#. (itstool) path: sect2/para +#: book.translate.xml:6760 +msgid "" +"This variable indicates that we may not generate a binary package of the " +"application. For instance, the license may disallow binary redistribution, " +"or it may prohibit distribution of packages created from patched sources." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6766 +msgid "" +"However, the port's DISTFILES may be freely mirrored on " +"FTP/HTTP. They may also be distributed on a CD-ROM (or similar media) unless " +"NO_CDROM is set as well." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6771 +msgid "" +"If the binary package is not generally useful, and the application must " +"always be compiled from the source code, use NO_PACKAGE. " +"For example, if the application has configuration information that is site " +"specific hard coded into it at compile time, set NO_PACKAGE." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6779 +msgid "" +"Set NO_PACKAGE to a string describing the reason why the " +"package cannot be generated." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6785 +msgid "NO_CDROM" +msgstr "NO_CDROM" + +#. (itstool) path: sect2/para +#: book.translate.xml:6787 +msgid "" +"This variable alone indicates that, although we are allowed to generate " +"binary packages, we may put neither those packages nor the port's " +"DISTFILES onto a CD-ROM (or similar media) for resale. " +"However, the binary packages and the port's DISTFILES " +"will still be available via FTP/HTTP." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6794 +msgid "" +"If this variable is set along with NO_PACKAGE, then only " +"the port's DISTFILES will be available, and only via FTP/" +"HTTP." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6799 +msgid "" +"Set NO_CDROM to a string describing the reason why the " +"port cannot be redistributed on CD-ROM. For instance, use this if the port's " +"license is for non-commercial use only." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6807 +msgid "NOFETCHFILES" +msgstr "NOFETCHFILES" + +#. (itstool) path: sect2/para +#: book.translate.xml:6809 +msgid "" +"Files defined in NOFETCHFILES are not fetchable from any " +"of MASTER_SITES. An example of such a file is when the " +"file is supplied on CD-ROM by the vendor." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6814 +msgid "" +"Tools which check for the availability of these files on " +"MASTER_SITES have to ignore these files and not report " +"about them." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6820 +msgid "RESTRICTED" +msgstr "RESTRICTED" + +#. (itstool) path: sect2/para +#: book.translate.xml:6822 +msgid "" +"Set this variable alone if the application's license permits neither " +"mirroring the application's DISTFILES nor distributing " +"the binary package in any way." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6827 +msgid "" +"Do not set NO_CDROM or NO_PACKAGE " +"along with RESTRICTED, since the latter variable implies " +"the former ones." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6832 +msgid "" +"Set RESTRICTED to a string describing the reason why the " +"port cannot be redistributed. Typically, this indicates that the port " +"contains proprietary software and that the user will need to manually " +"download the DISTFILES, possibly after registering for " +"the software or agreeing to accept the terms of an EULA." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6842 +msgid "RESTRICTED_FILES" +msgstr "RESTRICTED_FILES" + +#. (itstool) path: sect2/para +#: book.translate.xml:6844 +msgid "" +"When RESTRICTED or NO_CDROM is set, " +"this variable defaults to ${DISTFILES} ${PATCHFILES}, " +"otherwise it is empty. If only some of the distribution files are " +"restricted, then set this variable to list them." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6853 +msgid "LEGAL_TEXT" +msgstr "LEGAL_TEXT" + +#. (itstool) path: sect2/para +#: book.translate.xml:6855 +msgid "" +"If the port has legal concerns not addressed by the above variables, set " +"LEGAL_TEXT to a string explaining the concern. For " +"example, if special permission was obtained for FreeBSD to redistribute the " +"binary, this variable must indicate so." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6864 +msgid "/usr/ports/LEGAL and LEGAL" +msgstr "/usr/ports/LEGALLEGAL" + +#. (itstool) path: sect2/para +#: book.translate.xml:6867 +msgid "" +"A port which sets any of the above variables must also be added to " +"/usr/ports/LEGAL. The first column is a glob which " +"matches the restricted distfiles. The second column is the port's origin. " +"The third column is the output of make -VLEGAL." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6876 +msgid "Examples" +msgstr "範例" + +#. (itstool) path: sect2/para +#: book.translate.xml:6878 +msgid "" +"The preferred way to state \"the distfiles for this port must be fetched " +"manually\" is as follows:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:6881 +#, no-wrap +msgid "" +".if !exists(${DISTDIR}/${DISTNAME}${EXTRACT_SUFX})\n" +"IGNORE=\tmay not be redistributed because of licensing reasons. Please visit " +"some-website to accept their license and download " +"${DISTFILES} into ${DISTDIR}\n" +".endif" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6885 +msgid "" +"This both informs the user, and sets the proper metadata on the user's " +"machine for use by automated programs." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6888 +msgid "" +"Note that this stanza must be preceded by an inclusion of bsd.port." +"pre.mk." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:6894 +msgid "Building Mechanisms" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6897 +msgid "Building Ports in Parallel" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6899 +msgid "" +"The FreeBSD ports framework supports parallel building using multiple " +"make sub-processes, which allows SMP " +"systems to utilize all of their available CPU power, " +"allowing port builds to be faster and more effective." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6905 +msgid "" +"This is achieved by passing -jX flag to " +"make1 running on vendor code. This is the default build behavior of " +"ports. Unfortunately, not all ports handle parallel building well and it may " +"be required to explicitly disable this feature by adding the " +"MAKE_JOBS_UNSAFE=yes variable. It is used when a port is " +"known to be broken with -jX." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6916 +msgid "" +"make, gmake, fmake, " +"and imake" +msgstr "" +"make, gmake, fmake, " +"和 imake" + +#. (itstool) path: sect2/para +#: book.translate.xml:6919 +msgid "" +"Several differing make implementations exist. Ported " +"software often requires a particular implementation, like GNU make, known in FreeBSD as gmake, or fmake, the legacy FreeBSD make." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6926 +msgid "" +"If the port uses GNU make, add gmake to USES. If the legacy FreeBSD make is needed, add fmake there." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6931 +msgid "" +"MAKE_CMD can be used to reference the specific command " +"configured by the USES setting in the port's " +"Makefile. In rare cases when more than one " +"make implementation is listed in USES, " +"the variables GMAKE (for the GNU " +"version) or FMAKE (for the legacy FreeBSD version) are " +"available. Only use MAKE_CMD within the application " +"Makefiles in WRKSRC to call the " +"make implementation expected by the ported software." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6945 +msgid "" +"If the port is an X application that uses imake " +"to create Makefiles from Imakefiles, set USES= imake.. See the USES=imake section of for more details." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:6953 +msgid "all" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6952 +msgid "" +"If the port's source Makefile has something other than " +"<_:buildtarget-1/> as the main build target, set ALL_TARGET accordingly. The same goes for <_:buildtarget-2/> and " +"INSTALL_TARGET." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:6961 +msgid "configure Script" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:6963 +msgid "" +"If the port uses the configure script to generate " +"Makefile from Makefile.in, set " +"GNU_CONFIGURE=yes. To give extra arguments to the " +"configure script (the default argument is --" +"prefix=${PREFIX} --infodir=${PREFIX}/${INFO_PATH} --mandir=${MANPREFIX}/man " +"--build=${CONFIGURE_TARGET}), set those extra arguments in " +"CONFIGURE_ARGS. Extra environment variables can be passed " +"using CONFIGURE_ENV." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:6977 +msgid "Variables for Ports That Use configure" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:6990 +msgid "GNU_CONFIGURE" +msgstr "GNU_CONFIGURE" + +#. (itstool) path: row/entry +#: book.translate.xml:6991 +msgid "The port uses configure script to prepare build." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:6996 +msgid "HAS_CONFIGURE" +msgstr "HAS_CONFIGURE" + +#. (itstool) path: row/entry +#: book.translate.xml:6997 +msgid "" +"Same as GNU_CONFIGURE, except default configure target is " +"not added to CONFIGURE_ARGS." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7003 +msgid "CONFIGURE_ARGS" +msgstr "CONFIGURE_ARGS" + +#. (itstool) path: row/entry +#: book.translate.xml:7004 +msgid "Additional arguments passed to configure script." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7010 +msgid "" +"Additional environment variables to be set for configure " +"script run." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7015 +msgid "CONFIGURE_TARGET" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7016 +msgid "" +"Override default configure target. Default value is ${MACHINE_ARCH}-" +"portbld-freebsd${OSREL}." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7026 +msgid "Using cmake" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7028 +msgid "" +"For ports that use CMake, define USES= " +"cmake, or USES= cmake:outsource to build in a " +"separate directory (see below)." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:7034 +msgid "Variables for Ports That Use cmake" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7047 +msgid "CMAKE_ARGS" +msgstr "CMAKE_ARGS" + +#. (itstool) path: row/entry +#: book.translate.xml:7048 +msgid "" +"Port specific CMake flags to be passed to the " +"cmake binary." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7054 +msgid "CMAKE_BUILD_TYPE" +msgstr "CMAKE_BUILD_TYPE" + +#. (itstool) path: row/entry +#: book.translate.xml:7055 +msgid "" +"Type of build (CMake predefined build profiles). " +"Default is Release, or Debug if " +"WITH_DEBUG is set." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7063 +msgid "CMAKE_ENV" +msgstr "CMAKE_ENV" + +#. (itstool) path: row/entry +#: book.translate.xml:7064 +msgid "" +"Environment variables to be set for the cmake binary. " +"Default is ${CONFIGURE_ENV}." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7070 +msgid "CMAKE_SOURCE_PATH" +msgstr "CMAKE_SOURCE_PATH" + +#. (itstool) path: row/entry +#: book.translate.xml:7071 +msgid "Path to the source directory. Default is ${WRKSRC}." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:7079 +msgid "Variables the Users Can Define for cmake Builds" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7092 +msgid "CMAKE_VERBOSE" +msgstr "CMAKE_VERBOSE" + +#. (itstool) path: row/entry +#: book.translate.xml:7093 +msgid "" +"Enable verbose build output. Default not set, unless BATCH or PACKAGE_BUILDING are set." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7099 +msgid "CMAKE_NOCOLOR" +msgstr "CMAKE_NOCOLOR" + +#. (itstool) path: row/entry +#: book.translate.xml:7100 +msgid "" +"Disables color build output. Default not set, unless BATCH or PACKAGE_BUILDING are set." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7108 +msgid "" +"CMake supports these build profiles: " +"Debug, Release, " +"RelWithDebInfo and MinSizeRel. " +"Debug and Release profiles respect " +"system *FLAGS, RelWithDebInfo and " +"MinSizeRel will set CFLAGS to " +"-O2 -g and -Os -DNDEBUG " +"correspondingly. The lower-cased value of CMAKE_BUILD_TYPE is exported to PLIST_SUB and must be used if the " +"port installs *.cmake " +"depending on the build type (see deskutils/strigi for an example). Please note that some projects may define their " +"own build profiles and/or force particular build type by setting " +"CMAKE_BUILD_TYPE in CMakeLists.txt. " +"To make a port for such a project respect CFLAGS and " +"WITH_DEBUG, the CMAKE_BUILD_TYPE " +"definitions must be removed from those files." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7133 +msgid "" +"Most CMake-based projects support an out-of-" +"source method of building. The out-of-source build for a port can be " +"requested by using the :outsource suffix. When enabled, " +"CONFIGURE_WRKSRC, BUILD_WRKSRC and " +"INSTALL_WRKSRC will be set to ${WRKDIR}/.build and this directory will be used to keep all files generated during " +"configuration and build stages, leaving the source directory intact." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:7146 +msgid "USES= cmake Example" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:7148 +msgid "" +"This snippet demonstrates the use of CMake for a " +"port. CMAKE_SOURCE_PATH is not usually required, but can " +"be set when the sources are not located in the top directory, or if only a " +"subset of the project is intended to be built by the port." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:7155 +#, no-wrap +msgid "" +"USES=\t\t\tcmake:outsource\n" +"CMAKE_SOURCE_PATH=\t${WRKSRC}/subproject" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7161 +msgid "Using scons" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7163 +msgid "" +"If the port uses SCons, define " +"USE_SCONS=yes." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:7167 +msgid "Variables for Ports That Use scons" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7180 +msgid "SCONS_ARGS" +msgstr "SCONS_ARGS" + +#. (itstool) path: row/entry +#: book.translate.xml:7181 +msgid "Port specific SCons flags passed to the SCons environment." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7186 +msgid "SCONS_BUILDENV" +msgstr "SCONS_BUILDENV" + +#. (itstool) path: row/entry +#: book.translate.xml:7187 +msgid "Variables to be set in system environment." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7192 +msgid "SCONS_ENV" +msgstr "SCONS_ENV" + +#. (itstool) path: row/entry +#: book.translate.xml:7193 +msgid "Variables to be set in SCons environment." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7198 +msgid "SCONS_TARGET" +msgstr "SCONS_TARGET" + +#. (itstool) path: row/entry +#: book.translate.xml:7199 +msgid "" +"Last argument passed to SCons, similar to MAKE_TARGET." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7206 +msgid "" +"To make third party SConstruct respect everything that " +"is passed to SCons in SCONS_ENV (that is, most " +"importantly, CC/CXX/CFLAGS/CXXFLAGS), patch " +"SConstruct so build Environment is " +"constructed like this:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7214 +#, no-wrap +msgid "env = Environment(**ARGUMENTS)" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7216 +msgid "" +"It may be then modified with env.Append and env." +"Replace." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:7223 +msgid "Using GNU Autotools" +msgstr "使用 GNU Autotools" + +#. (itstool) path: sect2/para +#: book.translate.xml:7228 +msgid "" +"The various GNU autotools provide an abstraction mechanism for building a " +"piece of software over a wide variety of operating systems and machine " +"architectures. Within the Ports Collection, an individual port can make use " +"of these tools via a simple construct:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7234 +#, no-wrap +msgid "USE_AUTOTOOLS=\ttool[:env] ..." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7236 +msgid "" +"At the time of writing, tool can be one of " +"autoconf, autoheader, " +"automake, aclocal, " +"libtoolize. It can also be one the older legacy of " +"autoconf213, autoheader213, " +"automake14, aclocal14." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:7250 +msgid "run-autotools" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7246 +msgid "" +"env is used to specify that the environmental " +"variables are needed. It also adds a build dependency on the tool. The " +"relevant tool is not ran as part of the <_:" +"buildtarget-1/> target." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7252 +msgid "" +"Multiple tools can be specified at once, either by including them all on a " +"single line, or using the += Makefile construct." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7258 +msgid "libtool and libtoolize" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7261 +msgid "" +"Ports shipping with their own copy of libtool (search for a file named " +"ltmain.sh) need to have USES=libtool. If a port has " +"USE_AUTOTOOLS=libtoolize it probably also needs " +"USES=libtool. See the USES=libtool section in for more details." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7270 +msgid "libltdl.so" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7272 +msgid "" +"Some ports make use of the libltdl.so library package, " +"which is part of the libtool suite. Use of this library " +"does not automatically necessitate the use of libtool " +"itself. If the port needs libltdl.so, add a dependency " +"on it:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7280 +#, no-wrap +msgid "LIB_DEPENDS=\tlibltdl.so:${PORTSDIR}/devel/libltdl" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7284 +msgid "autoconf and autoheader" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7287 +msgid "" +"Some ports do not contain a configure script, but do contain an autoconf " +"template in configure.ac. Use these assignments to let " +"autoconf create the configure script, and also have " +"autoheader create template headers for use by the " +"configure script." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7295 +#, no-wrap +msgid "USE_AUTOTOOLS=\tautoconf[:env]" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7297 book.translate.xml:7339 +msgid "and" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7299 +#, no-wrap +msgid "USE_AUTOTOOLS=\tautoheader" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7301 +msgid "which also implies the use of autoconf." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7304 +msgid "" +"The additional optional variables AUTOCONF_ARGS and " +"AUTOHEADER_ARGS can be overridden by the port " +"Makefile if specifically requested. Most ports are " +"unlikely to need this. See bsd.autotools.mk for further " +"details." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7314 +msgid "automake and aclocal" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7317 +msgid "" +"Some packages only contain Makefile.am. These have to " +"be converted into Makefile.in using automake, and the further processed by configure to " +"generate an actual Makefile." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7324 +msgid "" +"Similarly, packages occasionally do not ship with an included " +"aclocal.m4, again required to build the software. This " +"can be achieved with aclocal, which scans " +"configure.ac or configure.in." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7331 +msgid "" +"aclocal has a similar relationship to automake as autoheader does to autoconf, described in the previous section. aclocal " +"implies the use of automake, thus we have:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7337 +#, no-wrap +msgid "USE_AUTOTOOLS=\tautomake[:env]" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7341 +#, no-wrap +msgid "USE_AUTOTOOLS=\taclocal" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7343 +msgid "" +"As with autoconf and autoheader, both " +"automake and aclocal have optional " +"argument variables, AUTOMAKE_ARGS and " +"ACLOCAL_ARGS respectively, which may be overridden by the " +"port Makefile if required." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:7355 +msgid "Using GNU gettext" +msgstr "使用 GNU gettext" + +#. (itstool) path: sect2/title +#: book.translate.xml:7358 +msgid "Basic Usage" +msgstr "基本用法" + +#. (itstool) path: sect2/para +#: book.translate.xml:7360 +msgid "" +"If the port requires gettext, set USES= gettext, and the port will inherit a dependency on libintl.so from devel/gettext. Other values " +"for gettext usage are listed in USES=gettext." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7367 +msgid "" +"A rather common case is a port using gettext and " +"configure. Generally, GNU configure " +"should be able to locate gettext automatically." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7372 +#, no-wrap +msgid "" +"USES=\tgettext\n" +"GNU_CONFIGURE=\tyes" +msgstr "" +"USES=\tgettext\n" +"GNU_CONFIGURE=\tyes" + +#. (itstool) path: sect2/para +#: book.translate.xml:7375 +msgid "" +"If it ever fails to, hints at the location of gettext can " +"be passed in CPPFLAGS and LDFLAGS as follows:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7380 +#, no-wrap +msgid "" +"USES=\tgettext\n" +"CPPFLAGS+=\t-I${LOCALBASE}/include\n" +"LDFLAGS+=\t-L${LOCALBASE}/lib\n" +"\n" +"GNU_CONFIGURE=\tyes" +msgstr "" +"USES=\tgettext\n" +"CPPFLAGS+=\t-I${LOCALBASE}/include\n" +"LDFLAGS+=\t-L${LOCALBASE}/lib\n" +"\n" +"GNU_CONFIGURE=\tyes" + +#. (itstool) path: sect2/title +#: book.translate.xml:7388 +msgid "Optional Usage" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7390 +msgid "" +"Some software products allow for disabling NLS. For " +"example, through passing to " +"configure. In that case, the port must use " +"gettext conditionally, depending on the status of the " +"NLS option. For ports of low to medium complexity, use " +"this idiom:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7398 +#, no-wrap +msgid "" +"GNU_CONFIGURE=\t\tyes\n" +"\n" +"OPTIONS_DEFINE=\t\tNLS\n" +"OPTIONS_SUB=\t\tyes\n" +"\n" +"NLS_USES=\t\tgettext\n" +"NLS_CONFIGURE_ENABLE=\tnls\n" +"\n" +".include <bsd.port.mk>" +msgstr "" +"GNU_CONFIGURE=\t\tyes\n" +"\n" +"OPTIONS_DEFINE=\t\tNLS\n" +"OPTIONS_SUB=\t\tyes\n" +"\n" +"NLS_USES=\t\tgettext\n" +"NLS_CONFIGURE_ENABLE=\tnls\n" +"\n" +".include <bsd.port.mk>" + +#. (itstool) path: sect2/para +#: book.translate.xml:7408 +msgid "Or using the older way of using options:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7410 +#, no-wrap +msgid "" +"GNU_CONFIGURE=\t\tyes\n" +"\n" +"OPTIONS_DEFINE=\t\tNLS\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MNLS}\n" +"USES+=\t\t\tgettext\n" +"PLIST_SUB+=\t\tNLS=\"\"\n" +".else\n" +"CONFIGURE_ARGS+=\t--disable-nls\n" +"PLIST_SUB+=\t\tNLS=\"@comment \"\n" +".endif\n" +"\n" +".include <bsd.port.mk>" +msgstr "" +"GNU_CONFIGURE=\t\tyes\n" +"\n" +"OPTIONS_DEFINE=\t\tNLS\n" +"\n" +".include <bsd.port.options.mk>\n" +"\n" +".if ${PORT_OPTIONS:MNLS}\n" +"USES+=\t\t\tgettext\n" +"PLIST_SUB+=\t\tNLS=\"\"\n" +".else\n" +"CONFIGURE_ARGS+=\t--disable-nls\n" +"PLIST_SUB+=\t\tNLS=\"@comment \"\n" +".endif\n" +"\n" +".include <bsd.port.mk>" + +#. (itstool) path: sect2/para +#: book.translate.xml:7426 +msgid "" +"The next item on the to-do list is to arrange so that the message catalog " +"files are included in the packing list conditionally. The " +"Makefile part of this task is already provided by the " +"idiom. It is explained in the section on advanced pkg-plist practices. In a nutshell, " +"each occurrence of %%NLS%% in pkg-plist will be replaced by @comment  if " +"NLS is disabled, or by a null string if NLS is enabled. Consequently, the " +"lines prefixed by %%NLS%% will become mere comments in " +"the final packing list if NLS is off; otherwise the prefix will be just left " +"out. Then insert %%NLS%% before each path to a message " +"catalog file in pkg-plist. For example:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7444 +#, no-wrap +msgid "" +"%%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo\n" +"%%NLS%%share/locale/no/LC_MESSAGES/foobar.mo" +msgstr "" +"%%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo\n" +"%%NLS%%share/locale/no/LC_MESSAGES/foobar.mo" + +#. (itstool) path: sect2/para +#: book.translate.xml:7447 +msgid "" +"In high complexity cases, more advanced techniques may be needed, such as " +"dynamic packing list generation." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7454 +msgid "Handling Message Catalog Directories" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7456 +msgid "" +"There is a point to note about installing message catalog files. The target " +"directories for them, which reside under LOCALBASE/share/locale, must not be created and removed by a port. The most popular " +"languages have their respective directories listed in PORTSDIR/" +"Templates/BSD.local.dist. The directories for many other " +"languages are governed by the devel/gettext " +"port. Consult its pkg-plist and see whether the port is " +"going to install a message catalog file for a unique language." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:7473 +msgid "Using Perl" +msgstr "使用 Perl" + +#. (itstool) path: sect1/para +#: book.translate.xml:7475 +msgid "" +"If MASTER_SITES is set to CPAN, the " +"correct subdirectory is usually selected automatically. If the default " +"subdirectory is wrong, CPAN/Module can be used to change " +"it. MASTER_SITES can also be set to the old " +"MASTER_SITE_PERL_CPAN, then the preferred value of " +"MASTER_SITE_SUBDIR is the top-level hierarchy name. For " +"example, the recommended value for p5-Module-Name is " +"Module. The top-level hierarchy can be examined at cpan.org. This " +"keeps the port working when the author of the module changes." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:7489 +msgid "" +"The exception to this rule is when the relevant directory does not exist or " +"the distfile does not exist in that directory. In such case, using author's " +"id as MASTER_SITE_SUBDIR is allowed. The CPAN:" +"AUTHOR macro can be used, which will be translated to the hashed " +"author directory. For example, CPAN:AUTHOR will be " +"converted to authors/id/A/AU/AUTHOR." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:7498 +msgid "" +"When a port needs Perl support, it must set " +"USES=perl5 with the optional USE_PERL5 " +"described in the perl5 USES description." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:7503 +msgid "Read-Only Variables for Ports That Use Perl" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7509 +msgid "Read only variables" +msgstr "唯讀變數" + +#. (itstool) path: row/entry +#: book.translate.xml:7516 +msgid "PERL" +msgstr "PERL" + +#. (itstool) path: row/entry +#: book.translate.xml:7517 +msgid "" +"The full path of the Perl 5 interpreter, either in the system or installed " +"from a port, but without the version number. Use this when the software " +"needs the path to the Perl interpreter. To " +"replace #!lines in scripts, use USES=shebangfix." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7527 +msgid "PERL_VERSION" +msgstr "PERL_VERSION" + +#. (itstool) path: row/entry +#: book.translate.xml:7528 +msgid "" +"The full version of Perl installed (for example, 5.8.9)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7533 +msgid "PERL_LEVEL" +msgstr "PERL_LEVEL" + +#. (itstool) path: row/entry +#: book.translate.xml:7534 +msgid "" +"The installed Perl version as an integer of the form MNNNPP (for example, 500809)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7540 +msgid "PERL_ARCH" +msgstr "PERL_ARCH" + +#. (itstool) path: row/entry +#: book.translate.xml:7541 +msgid "" +"Where Perl stores architecture dependent libraries. Defaults to " +"${ARCH}-freebsd." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7547 +msgid "PERL_PORT" +msgstr "PERL_PORT" + +#. (itstool) path: row/entry +#: book.translate.xml:7548 +msgid "" +"Name of the Perl port that is installed (for example, perl5)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7553 +msgid "SITE_PERL" +msgstr "SITE_PERL" + +#. (itstool) path: row/entry +#: book.translate.xml:7554 +msgid "" +"Directory name where site specific Perl packages go. This value is added to " +"PLIST_SUB." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:7563 +msgid "" +"Ports of Perl modules which do not have an official website must link to " +"cpan.org in the WWW line of pkg-descr. The preferred URL form is http://search.cpan.org/dist/" +"Module-Name/ (including the trailing slash)." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:7572 +msgid "" +"Do not use ${SITE_PERL} in dependency declarations. Doing " +"so assumes that perl5.mk has been included, which is " +"not always true. Ports depending on this port will have incorrect " +"dependencies if this port's files move later in an upgrade. The right way to " +"declare Perl module dependencies is shown in the example below." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:7582 +msgid "Perl Dependency Example" +msgstr "Perl 相依性範例" + +#. (itstool) path: example/programlisting +#: book.translate.xml:7584 +#, no-wrap +msgid "p5-IO-Tee>=0.64:${PORTSDIR}/devel/p5-IO-Tee" +msgstr "p5-IO-Tee>=0.64:${PORTSDIR}/devel/p5-IO-Tee" + +#. (itstool) path: sect1/para +#: book.translate.xml:7587 +msgid "" +"For Perl ports that install manual pages, the macro PERL5_MAN3 can be used inside pkg-plist. For example," +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:7591 +#, no-wrap +msgid "lib/perl5/5.14/man/man3/AnyEvent::I3.3.gz" +msgstr "lib/perl5/5.14/man/man3/AnyEvent::I3.3.gz" + +#. (itstool) path: sect1/para +#: book.translate.xml:7593 +msgid "can be replaced with" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:7595 +#, no-wrap +msgid "%%PERL5_MAN3%%/AnyEvent::I3.3.gz" +msgstr "%%PERL5_MAN3%%/AnyEvent::I3.3.gz" + +#. (itstool) path: note/para +#: book.translate.xml:7598 +msgid "" +"There are no PERL5_MANx macros for the other sections " +"(x in 1, 2 " +"and 4 to 9) because those get " +"installed in the regular directories." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:7607 +msgid "Using X11" +msgstr "使用 X11" + +#. (itstool) path: sect2/title +#: book.translate.xml:7610 +msgid "X.Org Components" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7612 +msgid "" +"The X11 implementation available in The Ports Collection is X.Org. If the " +"application depends on X components, set USE_XORG to the " +"list of required components. Available components, at the time of writing, " +"are:" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7618 +msgid "" +"bigreqsproto compositeproto damageproto dmx dmxproto dri2proto " +"dri3proto evieproto fixesproto fontcacheproto fontenc fontsproto fontutil " +"glproto ice inputproto kbproto libfs oldx pciaccess pixman presentproto " +"printproto randrproto recordproto renderproto resourceproto scrnsaverproto " +"sm trapproto videoproto x11 xau xaw xaw6 xaw7 xbitmaps xcb xcmiscproto " +"xcomposite xcursor xdamage xdmcp xevie xext xextproto xf86bigfontproto " +"xf86dgaproto xf86driproto xf86miscproto xf86rushproto xf86vidmodeproto " +"xfixes xfont xfontcache xft xi xinerama xineramaproto xkbfile xkbui xmu xmuu " +"xorg-macros xorg-server xp xpm xprintapputil xprintutil xproto " +"xproxymngproto xrandr xrender xres xscrnsaver xshmfence xt xtrans xtrap xtst " +"xv xvmc xxf86dga xxf86misc xxf86vm." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7633 +msgid "" +"Always up-to-date list can be found in /usr/ports/Mk/bsd.xorg.mk." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7636 +msgid "" +"The Mesa Project is an effort to provide free OpenGL implementation. To " +"specify a dependency on various components of this project, use " +"USE_GL. Valid options are: egl, gl, glesv2, " +"glew, glu, glut, glw and linux. For backwards " +"compatibility, the value of yes maps to glu." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:7646 +msgid "USE_XORG Example" +msgstr "USE_XORG 範例" + +#. (itstool) path: example/programlisting +#: book.translate.xml:7648 +#, no-wrap +msgid "" +"USE_XORG=\txrender xft xkbfile xt xaw\n" +"USE_GL=\t\tglu" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:7653 +msgid "Variables for Ports That Use X" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7658 +msgid "USES= imake" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7659 +msgid "The port uses imake." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:7663 +msgid "XMKMF" +msgstr "XMKMF" + +#. (itstool) path: row/entry +#: book.translate.xml:7664 +msgid "" +"Set to the path of xmkmf if not in the PATH. Defaults to xmkmf -a." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:7673 +msgid "Using X11-Related Variables" +msgstr "使用 X11 相關變數" + +#. (itstool) path: example/programlisting +#: book.translate.xml:7675 +#, no-wrap +msgid "" +"# Use some X11 libraries\n" +"USE_XORG=\tx11 xpm" +msgstr "" +"# Use some X11 libraries\n" +"USE_XORG=\tx11 xpm" + +#. (itstool) path: sect2/title +#: book.translate.xml:7681 +msgid "Ports That Require Motif" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7683 +msgid "" +"If the port requires a Motif library, define USES= motif " +"in the Makefile. Default Motif implementation is " +"x11-toolkits/open-motif. Users can choose " +"x11-toolkits/lesstif instead by setting " +"WANT_LESSTIF in their make.conf." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7693 +msgid "" +"MOTIFLIB will be set by motif.mk to " +"reference the appropriate Motif library. Please patch the source of the port " +"to use ${MOTIFLIB} wherever the Motif library is " +"referenced in the original Makefile or " +"Imakefile." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7701 +msgid "There are two common cases:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:7705 +msgid "" +"If the port refers to the Motif library as -lXm in its " +"Makefile or Imakefile, substitute " +"${MOTIFLIB} for it." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:7713 +msgid "" +"If the port uses XmClientLibs in its Imakefile, change it to ${MOTIFLIB} ${XTOOLLIB} ${XLIB}." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7720 +msgid "" +"Note that MOTIFLIB (usually) expands to -L/usr/" +"local/lib -lXm -lXp or /usr/local/lib/libXm.a, " +"so there is no need to add -L or -l in " +"front." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7728 +msgid "X11 Fonts" +msgstr "X11 字型" + +#. (itstool) path: sect2/para +#: book.translate.xml:7730 +msgid "" +"If the port installs fonts for the X Window System, put them in " +"LOCALBASE/lib/X11/fonts/local." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7736 +msgid "Getting a Fake DISPLAY with Xvfb" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7738 +msgid "" +"Some applications require a working X11 display for compilation to succeed. " +"This pose a problem for machines that operate headless. When this variable " +"is used, the build infrastructure will start the virtual framebuffer X " +"server. The working DISPLAY is then passed to the build. See " +"USES=display for " +"the possible arguments." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7746 +#, no-wrap +msgid "USES=\tdisplay" +msgstr "USES=\tdisplay" + +#. (itstool) path: sect2/title +#: book.translate.xml:7750 +msgid "Desktop Entries" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7752 +msgid "" +"Desktop entries (a Freedesktop standard) provide a way to " +"automatically adjust desktop features when a new program is installed, " +"without requiring user intervention. For example, newly-installed programs " +"automatically appear in the application menus of compatible desktop " +"environments. Desktop entries originated in the GNOME desktop environment, but are now a standard and also work with " +"KDE and Xfce. This bit " +"of automation provides a real benefit to the user, and desktop entries are " +"encouraged for applications which can be used in a desktop environment." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:7768 +msgid "Using Predefined .desktop Files" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:7771 +msgid "" +"Ports that include predefined *." +"desktop must include those files in pkg-plist and install them in the $LOCALBASE/share/applications directory. The INSTALL_DATA macro is useful for installing " +"these files." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:7782 +msgid "Updating Desktop Database" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:7784 +msgid "" +"If a port has a MimeType entry in its portname.desktop, the desktop database must be updated after " +"install and deinstall. To do this, define USES= desktop-" +"file-utils." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:7792 +msgid "Creating Desktop Entries with DESKTOP_ENTRIES" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:7795 +msgid "" +"Desktop entries can be easily created for applications by using " +"DESKTOP_ENTRIES. A file named " +"name.desktop will be " +"created, installed, and added to pkg-plist " +"automatically. Syntax is:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:7803 +#, no-wrap +msgid "" +"DESKTOP_ENTRIES=\t\"NAME\" \"COMMENT\" \"ICON\" \"COMMAND\" \"CATEGORY\" " +"StartupNotify" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:7805 +msgid "" +"The list of possible categories is available on the Freedesktop " +"website. StartupNotify indicates whether the " +"application is compatible with startup notifications. " +"These are typically a graphic indicator like a clock that appear at the " +"mouse pointer, menu, or panel to give the user an indication when a program " +"is starting. A program that is compatible with startup notifications clears " +"the indicator after it has started. Programs that are not compatible with " +"startup notifications would never clear the indicator (potentially confusing " +"and infuriating the user), and must have StartupNotify " +"set to false so the indicator is not shown at all." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:7821 +msgid "Example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:7823 +#, no-wrap +msgid "" +"DESKTOP_ENTRIES=\t\"ToME\" \"Roguelike game based on JRR Tolkien's work\" \\\n" +"\t\t\t\"${DATADIR}/xtra/graf/tome-128.png\" \\\n" +"\t\t\t\"tome -v -g\" \"Application;Game;RolePlaying;\" \\\n" +"\t\t\tfalse" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:7832 +msgid "Using GNOME" +msgstr "使用 GNOME" + +#. (itstool) path: sect2/para +#: book.translate.xml:7837 +msgid "" +"This chapter explains the GNOME framework as used by " +"ports. The framework can be loosely divided into the base components, " +"GNOME desktop components, and a few special macros that " +"simplify the work of port maintainers." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7843 +msgid "While developing a port or changing one, please set" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7845 +#, no-wrap +msgid "DEVELOPER=yes" +msgstr "DEVELOPER=yes" + +#. (itstool) path: sect2/para +#: book.translate.xml:7847 +msgid "" +"in the environment or in /etc/make.conf. This causes " +"the ports framework to enable additional checks." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7854 +msgid "Using USE_GNOME" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7856 +msgid "" +"Adding this variable to the port allows the use of the macros and components " +"defined in bsd.gnome.mk. The code in bsd." +"gnome.mk adds the needed build-time, run-time or library " +"dependencies or the handling of special files. GNOME " +"applications under FreeBSD use the USE_GNOME " +"infrastructure. Include all the needed components as a space-separated list. " +"The USE_GNOME components are divided into these virtual " +"lists: basic components, GNOME 3 components and legacy components. If the " +"port needs only GTK3 libraries, this is the shortest way to define it:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7870 +#, no-wrap +msgid "USE_GNOME=\tgtk30" +msgstr "USE_GNOME=\tgtk30" + +#. (itstool) path: sect2/para +#: book.translate.xml:7872 +msgid "" +"USE_GNOME components automatically add the dependencies " +"they need. Please see for an exhaustive " +"list of all USE_GNOME components and which other " +"components they imply and their dependencies." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:7878 +msgid "" +"Here is an example Makefile for a GNOME port that uses " +"many of the techniques outlined in this document. Please use it as a guide " +"for creating new ports." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:7883 +#, no-wrap +msgid "" +"# $FreeBSD$\n" +"\n" +"PORTNAME=\t regexxer\n" +"PORTVERSION=\t 0.10\n" +"CATEGORIES=\t devel textproc gnome\n" +"MASTER_SITES=\t GNOME\n" +"\n" +"MAINTAINER=\t kwm@FreeBSD.org\n" +"COMMENT=\t Interactive tool for performing search and replace operations\n" +"\n" +"USES=\t\t gettext gmake pathfix pkgconfig tar:xz\n" +"GNU_CONFIGURE=\tyes\n" +"USE_GNOME=\t gnomeprefix intlhack gtksourceviewmm3\n" +"CPPFLAGS+=\t -I${LOCALBASE}/include\n" +"LDFLAGS+=\t -L${LOCALBASE}/lib\n" +"INSTALLS_ICONS= yes\n" +"\n" +"GLIB_SCHEMAS=\t org.regexxer.gschema.xml\n" +"\n" +".include <bsd.port.mk>" +msgstr "" +"# $FreeBSD$\n" +"\n" +"PORTNAME=\t regexxer\n" +"PORTVERSION=\t 0.10\n" +"CATEGORIES=\t devel textproc gnome\n" +"MASTER_SITES=\t GNOME\n" +"\n" +"MAINTAINER=\t kwm@FreeBSD.org\n" +"COMMENT=\t Interactive tool for performing search and replace operations\n" +"\n" +"USES=\t\t gettext gmake pathfix pkgconfig tar:xz\n" +"GNU_CONFIGURE=\tyes\n" +"USE_GNOME=\t gnomeprefix intlhack gtksourceviewmm3\n" +"CPPFLAGS+=\t -I${LOCALBASE}/include\n" +"LDFLAGS+=\t -L${LOCALBASE}/lib\n" +"INSTALLS_ICONS= yes\n" +"\n" +"GLIB_SCHEMAS=\t org.regexxer.gschema.xml\n" +"\n" +".include <bsd.port.mk>" + +#. (itstool) path: note/para +#: book.translate.xml:7905 +msgid "" +"The USE_GNOME macro without any arguments does not add " +"any dependencies to the port. USE_GNOME cannot be set " +"after bsd.port.pre.mk." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:7913 book.translate.xml:15199 +msgid "Variables" +msgstr "變數" + +#. (itstool) path: sect2/para +#: book.translate.xml:7915 +msgid "" +"This section explains which macros are available and how they are used. Like " +"they are used in the above example. The " +"has a more in-depth explanation. USE_GNOME has to be set " +"for these macros to be of use." +msgstr "" + +#. (itstool) path: varlistentry/term +#. (itstool) id: book.translate.xml#gnome-icons +#: book.translate.xml:7923 +msgid "INSTALLS_ICONS" +msgstr "INSTALLS_ICONS" + +#. (itstool) path: listitem/para +#: book.translate.xml:7926 +msgid "" +"GTK+ ports which install " +"Freedesktop-style icons to ${LOCALBASE}/" +"share/icons should use this macro to ensure that the icons are " +"cached and will display correctly. The cache file is named icon-" +"theme.cache. Do not include that file in pkg-plist. This macro handles that automatically. This macro is not needed " +"for Qt, which use a internal method." +msgstr "" + +#. (itstool) path: varlistentry/term +#. (itstool) id: book.translate.xml#gnome-glibschema +#: book.translate.xml:7940 +msgid "GLIB_SCHEMAS" +msgstr "GLIB_SCHEMAS" + +#. (itstool) path: listitem/para +#: book.translate.xml:7943 +msgid "" +"List of all the glib schema files the port installs. The macro will add the " +"files to the port plist and handle the registration of these files on " +"install and deinstall." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:7948 +msgid "" +"The glib schema files are written in XML and end with the " +"gschema.xml extension. They are installed in the " +"share/glib-2.0/schemas/ directory. These schema files " +"contain all application config values with there default settings. The " +"actual database used by the applications is built by glib-" +"compile-schema, which is run by the GLIB_SCHEMAS macro." +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:7959 +#, no-wrap +msgid "GLIB_SCHEMAS=foo.gschema.xml" +msgstr "GLIB_SCHEMAS=foo.gschema.xml" + +#. (itstool) path: note/para +#: book.translate.xml:7962 +msgid "" +"Do not add glib schemas to the pkg-plist. If they are " +"listed in pkg-plist, they will not be registered and " +"the applications might not work properly." +msgstr "" + +#. (itstool) path: varlistentry/term +#. (itstool) id: book.translate.xml#gnome-gconfschema +#: book.translate.xml:7972 +msgid "GCONF_SCHEMAS" +msgstr "GCONF_SCHEMAS" + +#. (itstool) path: listitem/para +#: book.translate.xml:7975 +msgid "" +"List all the gconf schema files. The macro will add the schema files to the " +"port plist and will handle their registration on install and deinstall." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:7979 +msgid "" +"GConf is the XML-based database that virtually all GNOME " +"applications use for storing their settings. These files are installed into " +"the etc/gconf/schemas directory. This database is " +"defined by installed schema files that are used to generate %gconf." +"xml key files. For each schema file installed by the port, there " +"be an entry in the Makefile:" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:7989 +#, no-wrap +msgid "GCONF_SCHEMAS=my_app.schemas my_app2.schemas my_app3.schemas" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:7992 +msgid "" +"Gconf schemas are listed in the GCONF_SCHEMAS macro " +"rather than pkg-plist. If they are listed in " +"pkg-plist, they will not be registered and the " +"applications might not work properly." +msgstr "" + +#. (itstool) path: varlistentry/term +#. (itstool) id: book.translate.xml#gnome-omf +#: book.translate.xml:8003 +msgid "INSTALLS_OMF" +msgstr "INSTALLS_OMF" + +#. (itstool) path: listitem/para +#: book.translate.xml:8006 +msgid "" +"Open Source Metadata Framework (OMF) files are commonly " +"used by GNOME 2 applications. These files contain the application help file " +"information, and require special processing by ScrollKeeper/rarian. To " +"properly register OMF files when installing GNOME " +"applications from packages, make sure that omf files are " +"listed in pkg-plist and that the port Makefile has INSTALLS_OMF defined:" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:8018 +#, no-wrap +msgid "INSTALLS_OMF=yes" +msgstr "INSTALLS_OMF=yes" + +#. (itstool) path: listitem/para +#: book.translate.xml:8020 +msgid "" +"When set, bsd.gnome.mk automatically scans " +"pkg-plist and adds appropriate @exec " +"and @unexec directives for each .omf " +"to track in the OMF registration database." +msgstr "" + +#. (itstool) path: sect1/title +#. (itstool) path: table/title +#: book.translate.xml:8033 book.translate.xml:8048 +msgid "GNOME Components" +msgstr "GNOME 元件" + +#. (itstool) path: sect1/para +#: book.translate.xml:8035 +msgid "" +"For further help with a GNOME port, look at some of the existing ports for examples. " +"The FreeBSD GNOME page " +"has contact information if more help is needed. The components are divided " +"into GNOME components that are currently in use and legacy components. If " +"the component supports argument, they are listed between parenthesis in the " +"description. The first is the default. \"Both\" is shown if the component " +"defaults to adding to both build and run dependencies." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8053 book.translate.xml:8327 book.translate.xml:8362 +#: book.translate.xml:8635 book.translate.xml:10788 +msgid "Component" +msgstr "元件" + +#. (itstool) path: row/entry +#: book.translate.xml:8054 book.translate.xml:8363 +msgid "Associated program" +msgstr "相關程式" + +#. (itstool) path: row/entry +#: book.translate.xml:8061 +msgid "atk" +msgstr "atk" + +#. (itstool) path: row/entry +#: book.translate.xml:8062 +msgid "accessibility/atk" +msgstr "accessibility/atk" + +#. (itstool) path: row/entry +#: book.translate.xml:8063 +msgid "Accessibility toolkit (ATK)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8067 +msgid "atkmm" +msgstr "atkmm" + +#. (itstool) path: row/entry +#: book.translate.xml:8068 +msgid "accessibility/atkmm" +msgstr "accessibility/atkmm" + +#. (itstool) path: row/entry +#: book.translate.xml:8069 +msgid "c++ bindings for atk" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8073 +msgid "cairo" +msgstr "cairo" + +#. (itstool) path: row/entry +#: book.translate.xml:8074 +msgid "graphics/cairo" +msgstr "graphics/cairo" + +#. (itstool) path: row/entry +#: book.translate.xml:8075 +msgid "Vector graphics library with cross-device output support" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8080 +msgid "cairomm" +msgstr "cairomm" + +#. (itstool) path: row/entry +#: book.translate.xml:8081 +msgid "graphics/cairomm" +msgstr "graphics/cairomm" + +#. (itstool) path: row/entry +#: book.translate.xml:8082 +msgid "c++ bindings for cairo" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8086 +msgid "dconf" +msgstr "dconf" + +#. (itstool) path: row/entry +#: book.translate.xml:8087 +msgid "devel/dconf" +msgstr "devel/dconf" + +#. (itstool) path: row/entry +#: book.translate.xml:8088 +msgid "Configuration database system (both, build, run)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8093 +msgid "evolutiondataserver3" +msgstr "evolutiondataserver3" + +#. (itstool) path: row/entry +#: book.translate.xml:8094 +msgid "databases/evolution-data-server" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8095 +msgid "Data backends for the Evolution integrated mail/PIM suite" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8100 +msgid "gdkpixbuf2" +msgstr "gdkpixbuf2" + +#. (itstool) path: row/entry +#: book.translate.xml:8101 +msgid "graphics/gdk-pixbuf2" +msgstr "graphics/gdk-pixbuf2" + +#. (itstool) path: row/entry +#: book.translate.xml:8102 book.translate.xml:8404 +msgid "Graphics library for GTK+" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8106 +msgid "glib20" +msgstr "glib20" + +#. (itstool) path: row/entry +#: book.translate.xml:8107 +msgid "devel/glib20" +msgstr "devel/glib20" + +#. (itstool) path: row/entry +#: book.translate.xml:8108 +msgid "GNOME core library glib20" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8113 +msgid "glibmm" +msgstr "glibmm" + +#. (itstool) path: row/entry +#: book.translate.xml:8114 +msgid "devel/glibmm" +msgstr "devel/glibmm" + +#. (itstool) path: row/entry +#: book.translate.xml:8115 +msgid "c++ bindings for glib20" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8119 +msgid "gnomecontrolcenter3" +msgstr "gnomecontrolcenter3" + +#. (itstool) path: row/entry +#: book.translate.xml:8120 +msgid "sysutils/gnome-control-center" +msgstr "sysutils/gnome-control-center" + +#. (itstool) path: row/entry +#: book.translate.xml:8121 +msgid "GNOME 3 Control Center" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8125 +msgid "gnomedesktop3" +msgstr "gnomedesktop3" + +#. (itstool) path: row/entry +#: book.translate.xml:8126 +msgid "x11/gnome-desktop" +msgstr "x11/gnome-desktop" + +#. (itstool) path: row/entry +#: book.translate.xml:8127 +msgid "GNOME 3 desktop UI library" +msgstr "GNOME 3 桌面 UI 函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8131 +msgid "gsound" +msgstr "gsound" + +#. (itstool) path: row/entry +#: book.translate.xml:8132 +msgid "audio/gsound" +msgstr "audio/gsound" + +#. (itstool) path: row/entry +#: book.translate.xml:8133 +msgid "GObject library for playing system sounds (both, build, run)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8138 +msgid "gtk-update-icon-cache" +msgstr "gtk-update-icon-cache" + +#. (itstool) path: row/entry +#: book.translate.xml:8139 +msgid "graphics/gtk-update-icon-cache" +msgstr "graphics/gtk-update-icon-cache" + +#. (itstool) path: row/entry +#: book.translate.xml:8140 +msgid "Gtk-update-icon-cache utility from the Gtk+ toolkit" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8145 +msgid "gtk20" +msgstr "gtk20" + +#. (itstool) path: row/entry +#: book.translate.xml:8146 +msgid "x11-toolkits/gtk20" +msgstr "x11-toolkits/gtk20" + +#. (itstool) path: row/entry +#: book.translate.xml:8147 +msgid "Gtk+ 2 toolkit" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8151 +msgid "gtk30" +msgstr "gtk30" + +#. (itstool) path: row/entry +#: book.translate.xml:8152 +msgid "x11-toolkits/gtk30" +msgstr "x11-toolkits/gtk30" + +#. (itstool) path: row/entry +#: book.translate.xml:8153 +msgid "Gtk+ 3 toolkit" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8157 +msgid "gtkmm20" +msgstr "gtkmm20" + +#. (itstool) path: row/entry +#: book.translate.xml:8158 +msgid "x11-toolkits/gtkmm20" +msgstr "x11-toolkits/gtkmm20" + +#. (itstool) path: row/entry +#: book.translate.xml:8159 +msgid "c++ bindings 2.0 for the gtk20 toolkit" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8163 +msgid "gtkmm24" +msgstr "gtkmm24" + +#. (itstool) path: row/entry +#: book.translate.xml:8164 +msgid "x11-toolkits/gtkmm24" +msgstr "x11-toolkits/gtkmm24" + +#. (itstool) path: row/entry +#: book.translate.xml:8165 +msgid "c++ bindings 2.4 for the gtk20 toolkit" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8169 +msgid "gtkmm30" +msgstr "gtkmm30" + +#. (itstool) path: row/entry +#: book.translate.xml:8170 +msgid "x11-toolkits/gtkmm30" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8171 +msgid "c++ bindings 3.0 for the gtk30 toolkit" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8175 +msgid "gtksourceview2" +msgstr "gtksourceview2" + +#. (itstool) path: row/entry +#: book.translate.xml:8176 +msgid "x11-toolkits/gtksourceview2" +msgstr "x11-toolkits/gtksourceview2" + +#. (itstool) path: row/entry +#: book.translate.xml:8177 book.translate.xml:8473 +msgid "Widget that adds syntax highlighting to GtkTextView" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8182 +msgid "gtksourceview3" +msgstr "gtksourceview3" + +#. (itstool) path: row/entry +#: book.translate.xml:8183 +msgid "x11-toolkits/gtksourceview3" +msgstr "x11-toolkits/gtksourceview3" + +#. (itstool) path: row/entry +#: book.translate.xml:8184 +msgid "Text widget that adds syntax highlighting to the GtkTextView widget" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8189 +msgid "gtksourceviewmm3" +msgstr "gtksourceviewmm3" + +#. (itstool) path: row/entry +#: book.translate.xml:8190 +msgid "x11-toolkits/gtksourceviewmm3" +msgstr "x11-toolkits/gtksourceviewmm3" + +#. (itstool) path: row/entry +#: book.translate.xml:8191 +msgid "c++ bindings for the gtksourceview3 library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8195 +msgid "gvfs" +msgstr "gvfs" + +#. (itstool) path: row/entry +#: book.translate.xml:8196 +msgid "devel/gvfs" +msgstr "devel/gvfs" + +#. (itstool) path: row/entry +#: book.translate.xml:8197 +msgid "GNOME virtual file system" +msgstr "GNOME 虛擬檔案系統" + +#. (itstool) path: row/entry +#: book.translate.xml:8201 +msgid "intltool" +msgstr "intltool" + +#. (itstool) path: row/entry +#: book.translate.xml:8202 +msgid "textproc/intltool" +msgstr "textproc/intltool" + +#. (itstool) path: row/entry +#: book.translate.xml:8203 +msgid "Tool for internationalization (also see intlhack)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8208 +msgid "introspection" +msgstr "introspection" + +#. (itstool) path: row/entry +#: book.translate.xml:8209 +msgid "devel/gobject-introspection" +msgstr "devel/gobject-introspection" + +#. (itstool) path: row/entry +#: book.translate.xml:8210 +msgid "" +"Basic introspection bindings and tools to generate introspection bindings. " +"Most of the time :build is enough, :both/:run is only need for applications " +"that use introspection bindings. (both, build, run)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8218 +msgid "libgda5" +msgstr "libgda5" + +#. (itstool) path: row/entry +#: book.translate.xml:8219 +msgid "databases/libgda5" +msgstr "databases/libgda5" + +#. (itstool) path: row/entry +#: book.translate.xml:8220 book.translate.xml:8500 +msgid "Provides uniform access to different kinds of data sources" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8225 +msgid "libgda5-ui" +msgstr "libgda5-ui" + +#. (itstool) path: row/entry +#: book.translate.xml:8226 +msgid "databases/libgda5-ui" +msgstr "databases/libgda5-ui" + +#. (itstool) path: row/entry +#: book.translate.xml:8227 +msgid "UI library from the libgda5 library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8231 +msgid "libgdamm5" +msgstr "libgdamm5" + +#. (itstool) path: row/entry +#: book.translate.xml:8232 +msgid "databases/libgdamm5" +msgstr "databases/libgdamm5" + +#. (itstool) path: row/entry +#: book.translate.xml:8233 +msgid "c++ bindings for the libgda5 library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8237 +msgid "libgsf" +msgstr "libgsf" + +#. (itstool) path: row/entry +#: book.translate.xml:8238 +msgid "devel/libgsf" +msgstr "devel/libgsf" + +#. (itstool) path: row/entry +#: book.translate.xml:8239 +msgid "Extensible I/O abstraction for dealing with structured file formats" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8244 +msgid "librsvg2" +msgstr "librsvg2" + +#. (itstool) path: row/entry +#: book.translate.xml:8245 +msgid "graphics/librsvg2" +msgstr "graphics/librsvg2" + +#. (itstool) path: row/entry +#: book.translate.xml:8246 +msgid "Library for parsing and rendering SVG vector-graphic files" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8251 +msgid "libsigc++20" +msgstr "libsigc++20" + +#. (itstool) path: row/entry +#: book.translate.xml:8252 +msgid "devel/libsigc++20" +msgstr "devel/libsigc++20" + +#. (itstool) path: row/entry +#: book.translate.xml:8253 book.translate.xml:8571 +msgid "Callback Framework for C++" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8257 +msgid "libxml++26" +msgstr "libxml++26" + +#. (itstool) path: row/entry +#: book.translate.xml:8258 +msgid "textproc/libxml++26" +msgstr "textproc/libxml++26" + +#. (itstool) path: row/entry +#: book.translate.xml:8259 +msgid "c++ bindings for the libxml2 library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8263 +msgid "libxml2" +msgstr "libxml2" + +#. (itstool) path: row/entry +#: book.translate.xml:8264 +msgid "textproc/libxml2" +msgstr "textproc/libxml2" + +#. (itstool) path: row/entry +#: book.translate.xml:8265 +msgid "XML parser library (both, build, run)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8269 +msgid "libxslt" +msgstr "libxslt" + +#. (itstool) path: row/entry +#: book.translate.xml:8270 +msgid "textproc/libxslt" +msgstr "textproc/libxslt" + +#. (itstool) path: row/entry +#: book.translate.xml:8271 +msgid "XSLT C library (both, build, run)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8275 +msgid "metacity" +msgstr "metacity" + +#. (itstool) path: row/entry +#: book.translate.xml:8276 +msgid "x11-wm/metacity" +msgstr "x11-wm/metacity" + +#. (itstool) path: row/entry +#: book.translate.xml:8277 +msgid "Window manager from GNOME" +msgstr "GNOME 視窗管理員" + +#. (itstool) path: row/entry +#: book.translate.xml:8281 +msgid "nautilus3" +msgstr "nautilus3" + +#. (itstool) path: row/entry +#: book.translate.xml:8282 +msgid "x11-fm/nautilus" +msgstr "x11-fm/nautilus" + +#. (itstool) path: row/entry +#: book.translate.xml:8283 +msgid "GNOME file manager" +msgstr "GNOME 檔案管理員" + +#. (itstool) path: row/entry +#: book.translate.xml:8287 +msgid "pango" +msgstr "pango" + +#. (itstool) path: row/entry +#: book.translate.xml:8288 +msgid "x11-toolkits/pango" +msgstr "x11-toolkits/pango" + +#. (itstool) path: row/entry +#: book.translate.xml:8289 +msgid "Open-source framework for the layout and rendering of i18n text" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8294 +msgid "pangomm" +msgstr "pangomm" + +#. (itstool) path: row/entry +#: book.translate.xml:8295 +msgid "x11-toolkits/pangomm" +msgstr "x11-toolkits/pangomm" + +#. (itstool) path: row/entry +#: book.translate.xml:8296 +msgid "c++ bindings for the pango library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8300 +msgid "py3gobject3" +msgstr "py3gobject3" + +#. (itstool) path: row/entry +#: book.translate.xml:8301 +msgid "devel/py3-gobject3" +msgstr "devel/py3-gobject3" + +#. (itstool) path: row/entry +#: book.translate.xml:8302 +msgid "Python 3, GObject 3.0 bindings" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8306 +msgid "pygobject3" +msgstr "pygobject3" + +#. (itstool) path: row/entry +#: book.translate.xml:8307 +msgid "devel/py-gobject3" +msgstr "devel/py-gobject3" + +#. (itstool) path: row/entry +#: book.translate.xml:8308 +msgid "Python 2, GObject 3.0 bindings" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8312 +msgid "vte3" +msgstr "vte3" + +#. (itstool) path: row/entry +#: book.translate.xml:8313 +msgid "x11-toolkits/vte3" +msgstr "x11-toolkits/vte3" + +#. (itstool) path: row/entry +#: book.translate.xml:8314 book.translate.xml:8622 +msgid "Terminal widget with improved accessibility and I18N support" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:8322 +msgid "GNOME Macro Components" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8334 +msgid "gnomeprefix" +msgstr "gnomeprefix" + +#. (itstool) path: row/entry +#: book.translate.xml:8335 +msgid "Supply <_:buildtarget-1/> with some default locations." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8340 +msgid "intlhack" +msgstr "intlhack" + +#. (itstool) path: row/entry +#: book.translate.xml:8341 +msgid "" +"Same as intltool, but patches to make sure share/locale/ is used. Please only use when intltool alone is " +"not enough." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8348 +msgid "referencehack" +msgstr "referencehack" + +#. (itstool) path: row/entry +#: book.translate.xml:8349 +msgid "" +"This macro is there to help splitting of the API or reference documentation " +"into its own port." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:8357 +msgid "GNOME Legacy Components" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8370 +msgid "atspi" +msgstr "atspi" + +#. (itstool) path: row/entry +#: book.translate.xml:8371 +msgid "accessibility/at-spi" +msgstr "accessibility/at-spi" + +#. (itstool) path: row/entry +#: book.translate.xml:8372 +msgid "Assistive Technology Service Provider Interface" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8377 +msgid "esound" +msgstr "esound" + +#. (itstool) path: row/entry +#: book.translate.xml:8378 +msgid "audio/esound" +msgstr "audio/esound" + +#. (itstool) path: row/entry +#: book.translate.xml:8379 +msgid "Enlightenment sound package" +msgstr "Enlightenment 音效套件" + +#. (itstool) path: row/entry +#: book.translate.xml:8383 +msgid "gal2" +msgstr "gal2" + +#. (itstool) path: row/entry +#: book.translate.xml:8384 +msgid "x11-toolkits/gal2" +msgstr "x11-toolkits/gal2" + +#. (itstool) path: row/entry +#: book.translate.xml:8385 +msgid "Collection of widgets taken from GNOME 2 gnumeric" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8390 +msgid "gconf2" +msgstr "gconf2" + +#. (itstool) path: row/entry +#: book.translate.xml:8391 +msgid "devel/gconf2" +msgstr "devel/gconf2" + +#. (itstool) path: row/entry +#: book.translate.xml:8392 +msgid "Configuration database system for GNOME 2" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8396 +msgid "gconfmm26" +msgstr "gconfmm26" + +#. (itstool) path: row/entry +#: book.translate.xml:8397 +msgid "devel/gconfmm26" +msgstr "devel/gconfmm26" + +#. (itstool) path: row/entry +#: book.translate.xml:8398 +msgid "c++ bindings for gconf2" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8402 +msgid "gdkpixbuf" +msgstr "gdkpixbuf" + +#. (itstool) path: row/entry +#: book.translate.xml:8403 +msgid "graphics/gdk-pixbuf" +msgstr "graphics/gdk-pixbuf" + +#. (itstool) path: row/entry +#: book.translate.xml:8408 +msgid "glib12" +msgstr "glib12" + +#. (itstool) path: row/entry +#: book.translate.xml:8409 +msgid "devel/glib12" +msgstr "devel/glib12" + +#. (itstool) path: row/entry +#: book.translate.xml:8410 +msgid "glib 1.2 core library" +msgstr "glib 1.2 核心函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8414 +msgid "gnomedocutils" +msgstr "gnomedocutils" + +#. (itstool) path: row/entry +#: book.translate.xml:8415 +msgid "textproc/gnome-doc-utils" +msgstr "textproc/gnome-doc-utils" + +#. (itstool) path: row/entry +#: book.translate.xml:8416 +msgid "GNOME doc utils" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8420 +msgid "gnomemimedata" +msgstr "gnomemimedata" + +#. (itstool) path: row/entry +#: book.translate.xml:8421 +msgid "misc/gnome-mime-data" +msgstr "misc/gnome-mime-data" + +#. (itstool) path: row/entry +#: book.translate.xml:8422 +msgid "MIME and Application database for GNOME 2" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8426 +msgid "gnomesharp20" +msgstr "gnomesharp20" + +#. (itstool) path: row/entry +#: book.translate.xml:8427 +msgid "x11-toolkits/gnome-sharp20" +msgstr "x11-toolkits/gnome-sharp20" + +#. (itstool) path: row/entry +#: book.translate.xml:8428 +msgid "GNOME 2 interfaces for the .NET runtime" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8432 +msgid "gnomespeech" +msgstr "gnomespeech" + +#. (itstool) path: row/entry +#: book.translate.xml:8433 +msgid "accessibility/gnome-speech" +msgstr "accessibility/gnome-speech" + +#. (itstool) path: row/entry +#: book.translate.xml:8434 +msgid "GNOME 2 text-to-speech API" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8438 +msgid "gnomevfs2" +msgstr "gnomevfs2" + +#. (itstool) path: row/entry +#: book.translate.xml:8439 +msgid "devel/gnome-vfs" +msgstr "devel/gnome-vfs" + +#. (itstool) path: row/entry +#: book.translate.xml:8440 +msgid "GNOME 2 Virtual File System" +msgstr "GNOME 2 虛擬檔案系統" + +#. (itstool) path: row/entry +#: book.translate.xml:8444 +msgid "gtk12" +msgstr "gtk12" + +#. (itstool) path: row/entry +#: book.translate.xml:8445 +msgid "x11-toolkits/gtk12" +msgstr "x11-toolkits/gtk12" + +#. (itstool) path: row/entry +#: book.translate.xml:8446 +msgid "Gtk+ 1.2 toolkit" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8450 +msgid "gtkhtml3" +msgstr "gtkhtml3" + +#. (itstool) path: row/entry +#: book.translate.xml:8451 +msgid "www/gtkhtml3" +msgstr "www/gtkhtml3" + +#. (itstool) path: row/entry +#: book.translate.xml:8452 book.translate.xml:8459 book.translate.xml:8551 +msgid "Lightweight HTML rendering/printing/editing engine" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8457 +msgid "gtkhtml4" +msgstr "gtkhtml4" + +#. (itstool) path: row/entry +#: book.translate.xml:8458 +msgid "www/gtkhtml4" +msgstr "www/gtkhtml4" + +#. (itstool) path: row/entry +#: book.translate.xml:8464 +msgid "gtksharp20" +msgstr "gtksharp20" + +#. (itstool) path: row/entry +#: book.translate.xml:8465 +msgid "x11-toolkits/gtk-sharp20" +msgstr "x11-toolkits/gtk-sharp20" + +#. (itstool) path: row/entry +#: book.translate.xml:8466 +msgid "GTK+ and GNOME 2 interfaces for the .NET runtime" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8471 +msgid "gtksourceview" +msgstr "gtksourceview" + +#. (itstool) path: row/entry +#: book.translate.xml:8472 +msgid "x11-toolkits/gtksourceview" +msgstr "x11-toolkits/gtksourceview" + +#. (itstool) path: row/entry +#: book.translate.xml:8478 +msgid "libartgpl2" +msgstr "libartgpl2" + +#. (itstool) path: row/entry +#: book.translate.xml:8479 +msgid "graphics/libart_lgpl" +msgstr "graphics/libart_lgpl" + +#. (itstool) path: row/entry +#: book.translate.xml:8480 +msgid "Library for high-performance 2D graphics" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8484 +msgid "libbonobo" +msgstr "libbonobo" + +#. (itstool) path: row/entry +#: book.translate.xml:8485 +msgid "devel/libbonobo" +msgstr "devel/libbonobo" + +#. (itstool) path: row/entry +#: book.translate.xml:8486 +msgid "Component and compound document system for GNOME 2" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8491 +msgid "libbonoboui" +msgstr "libbonoboui" + +#. (itstool) path: row/entry +#: book.translate.xml:8492 +msgid "x11-toolkits/libbonoboui" +msgstr "x11-toolkits/libbonoboui" + +#. (itstool) path: row/entry +#: book.translate.xml:8493 +msgid "GUI frontend to the libbonobo component of GNOME 2" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8498 +msgid "libgda4" +msgstr "libgda4" + +#. (itstool) path: row/entry +#: book.translate.xml:8499 +msgid "databases/libgda4" +msgstr "databases/libgda4" + +#. (itstool) path: row/entry +#: book.translate.xml:8505 +msgid "libglade2" +msgstr "libglade2" + +#. (itstool) path: row/entry +#: book.translate.xml:8506 +msgid "devel/libglade2" +msgstr "devel/libglade2" + +#. (itstool) path: row/entry +#: book.translate.xml:8507 +msgid "GNOME 2 glade library" +msgstr "GNOME 2 glade 函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8511 +msgid "libgnome" +msgstr "libgnome" + +#. (itstool) path: row/entry +#: book.translate.xml:8512 +msgid "x11/libgnome" +msgstr "x11/libgnome" + +#. (itstool) path: row/entry +#: book.translate.xml:8513 +msgid "Libraries for GNOME 2, a GNU desktop environment" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8518 +msgid "libgnomecanvas" +msgstr "libgnomecanvas" + +#. (itstool) path: row/entry +#: book.translate.xml:8519 +msgid "graphics/libgnomecanvas" +msgstr "graphics/libgnomecanvas" + +#. (itstool) path: row/entry +#: book.translate.xml:8520 +msgid "Graphics library for GNOME 2" +msgstr "GNOME 2 圖形函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8524 +msgid "libgnomekbd" +msgstr "libgnomekbd" + +#. (itstool) path: row/entry +#: book.translate.xml:8525 +msgid "x11/libgnomekbd" +msgstr "x11/libgnomekbd" + +#. (itstool) path: row/entry +#: book.translate.xml:8526 +msgid "GNOME 2 keyboard shared library" +msgstr "GNOME 2 鍵盤共用函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8530 +msgid "libgnomeprint" +msgstr "libgnomeprint" + +#. (itstool) path: row/entry +#: book.translate.xml:8531 +msgid "print/libgnomeprint" +msgstr "print/libgnomeprint" + +#. (itstool) path: row/entry +#: book.translate.xml:8532 book.translate.xml:8538 +msgid "Gnome 2 print support library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8536 +msgid "libgnomeprintui" +msgstr "libgnomeprintui" + +#. (itstool) path: row/entry +#: book.translate.xml:8537 +msgid "x11-toolkits/libgnomeprintui" +msgstr "x11-toolkits/libgnomeprintui" + +#. (itstool) path: row/entry +#: book.translate.xml:8542 +msgid "libgnomeui" +msgstr "libgnomeui" + +#. (itstool) path: row/entry +#: book.translate.xml:8543 +msgid "x11-toolkits/libgnomeui" +msgstr "x11-toolkits/libgnomeui" + +#. (itstool) path: row/entry +#: book.translate.xml:8544 +msgid "Libraries for the GNOME 2 GUI, a GNU desktop environment" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8549 +msgid "libgtkhtml" +msgstr "libgtkhtml" + +#. (itstool) path: row/entry +#: book.translate.xml:8550 +msgid "www/libgtkhtml" +msgstr "www/libgtkhtml" + +#. (itstool) path: row/entry +#: book.translate.xml:8556 +msgid "libgtksourceviewmm" +msgstr "libgtksourceviewmm" + +#. (itstool) path: row/entry +#: book.translate.xml:8557 +msgid "x11-toolkits/libgtksourceviewmm" +msgstr "x11-toolkits/libgtksourceviewmm" + +#. (itstool) path: row/entry +#: book.translate.xml:8558 +msgid "c++ binding of GtkSourceView" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8562 +msgid "libidl" +msgstr "libidl" + +#. (itstool) path: row/entry +#: book.translate.xml:8563 +msgid "devel/libIDL" +msgstr "devel/libIDL" + +#. (itstool) path: row/entry +#: book.translate.xml:8564 +msgid "Library for creating trees of CORBA IDL file" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8569 +msgid "libsigc++12" +msgstr "libsigc++12" + +#. (itstool) path: row/entry +#: book.translate.xml:8570 +msgid "devel/libsigc++12" +msgstr "devel/libsigc++12" + +#. (itstool) path: row/entry +#: book.translate.xml:8575 +msgid "libwnck" +msgstr "libwnck" + +#. (itstool) path: row/entry +#: book.translate.xml:8576 +msgid "x11-toolkits/libwnck" +msgstr "x11-toolkits/libwnck" + +#. (itstool) path: row/entry +#: book.translate.xml:8577 book.translate.xml:8584 +msgid "Library used for writing pagers and taskslists" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8582 +msgid "libwnck3" +msgstr "libwnck3" + +#. (itstool) path: row/entry +#: book.translate.xml:8583 +msgid "x11-toolkits/libwnck3" +msgstr "x11-toolkits/libwnck3" + +#. (itstool) path: row/entry +#: book.translate.xml:8589 +msgid "orbit2" +msgstr "orbit2" + +#. (itstool) path: row/entry +#: book.translate.xml:8590 +msgid "devel/ORBit2" +msgstr "devel/ORBit2" + +#. (itstool) path: row/entry +#: book.translate.xml:8591 +msgid "High-performance CORBA ORB with support for the C language" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8596 +msgid "pygnome2" +msgstr "pygnome2" + +#. (itstool) path: row/entry +#: book.translate.xml:8597 +msgid "x11-toolkits/py-gnome2" +msgstr "x11-toolkits/py-gnome2" + +#. (itstool) path: row/entry +#: book.translate.xml:8598 +msgid "Python bindings for GNOME 2" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8602 +msgid "pygobject" +msgstr "pygobject" + +#. (itstool) path: row/entry +#: book.translate.xml:8603 +msgid "devel/py-gobject" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8604 +msgid "Python 2, GObject 2.0 bindings" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8608 +msgid "pygtk2" +msgstr "pygtk2" + +#. (itstool) path: row/entry +#: book.translate.xml:8609 +msgid "x11-toolkits/py-gtk2" +msgstr "x11-toolkits/py-gtk2" + +#. (itstool) path: row/entry +#: book.translate.xml:8610 +msgid "Set of Python bindings for GTK+" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8614 +msgid "pygtksourceview" +msgstr "pygtksourceview" + +#. (itstool) path: row/entry +#: book.translate.xml:8615 +msgid "x11-toolkits/py-gtksourceview" +msgstr "x11-toolkits/py-gtksourceview" + +#. (itstool) path: row/entry +#: book.translate.xml:8616 +msgid "Python bindings for GtkSourceView 2" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8620 +msgid "vte" +msgstr "vte" + +#. (itstool) path: row/entry +#: book.translate.xml:8621 +msgid "x11-toolkits/vte" +msgstr "x11-toolkits/vte" + +#. (itstool) path: table/title +#: book.translate.xml:8630 +msgid "Deprecated Components: Do Not Use" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8642 +msgid "HAVE_GNOME" +msgstr "HAVE_GNOME" + +#. (itstool) path: row/entry +#: book.translate.xml:8643 +msgid "" +"Deprecated, do not use. Was used to check if a component was installed. This " +"was used for ports that did not have --enable/--" +"disable switches for their configure script. But the building of " +"parts of a port without a implicit request is discouraged." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8653 +msgid "WANT_GNOME" +msgstr "WANT_GNOME" + +#. (itstool) path: row/entry +#: book.translate.xml:8654 +msgid "" +"Deprecated, do not use. Was used by ports that needed USE_GNOME for optional dependencies, which where defined after bsd." +"port.pre.mk. Since USE_GNOME can be used after " +"the inclusion of bsd.port.options.mk, there is little " +"need for this macro any more." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8664 +msgid "pangox-compat" +msgstr "pangox-compat" + +#. (itstool) path: row/entry +#: book.translate.xml:8665 +msgid "" +"pangox-compat has been deprecated and split off " +"from the pango package." +msgstr "" +"pangox-compat has been deprecated and split off " +"from the pango package." + +#. (itstool) path: sect1/title +#: book.translate.xml:8676 +msgid "Using Qt" +msgstr "使用 Qt" + +#. (itstool) path: sect2/title +#: book.translate.xml:8679 +msgid "Ports That Require Qt" +msgstr "需要 Qt 的 Ports" + +#. (itstool) path: sect2/para +#: book.translate.xml:8681 +msgid "" +"The Ports Collection provides support for Qt 4 and Qt 5 frameworks with " +"USE_QTx, where x is 4 or 5. Set " +"USE_QTx to the list of " +"required Qt components (libraries, tools, plugins). The Qt 4 and Qt 5 " +"frameworks are quite similar. The main difference is the set of supported " +"components." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:8692 +msgid "" +"The Qt framework exports a number of variables which can be used by ports, " +"some of them listed below:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:8696 +msgid "Variables Provided to Ports That Use Qt" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8701 +msgid "QT_PREFIX" +msgstr "QT_PREFIX" + +#. (itstool) path: row/entry +#: book.translate.xml:8702 +msgid "" +"Set to the path where Qt was installed (${LOCALBASE})." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8707 +msgid "QMAKE" +msgstr "QMAKE" + +#. (itstool) path: row/entry +#: book.translate.xml:8708 +msgid "Full path to qmake binary." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8713 +msgid "LRELEASE" +msgstr "LRELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:8714 +msgid "Full path to lrelease utility." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8719 +msgid "MOC" +msgstr "MOC" + +#. (itstool) path: row/entry +#: book.translate.xml:8720 +msgid "Full path to moc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8724 +msgid "RCC" +msgstr "RCC" + +#. (itstool) path: row/entry +#: book.translate.xml:8725 +msgid "Full path to rcc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8729 +msgid "UIC" +msgstr "UIC" + +#. (itstool) path: row/entry +#: book.translate.xml:8730 +msgid "Full path to uic." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8734 +msgid "QT_INCDIR" +msgstr "QT_INCDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:8735 +msgid "Qt include directory." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8739 +msgid "QT_LIBDIR" +msgstr "QT_LIBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:8740 +msgid "Qt libraries path." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8744 +msgid "QT_PLUGINDIR" +msgstr "QT_PLUGINDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:8745 +msgid "Qt plugins path." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:8751 +msgid "When using the Qt framework, these settings are deployed:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:8754 +#, no-wrap +msgid "" +"CONFIGURE_ARGS+=\t--with-qt-includes=${QT_INCDIR} \\\n" +"\t\t\t--with-qt-libraries=${QT_LIBDIR} \\\n" +"\t\t\t--with-extra-libs=${LOCALBASE}/lib \\\n" +"\t\t\t--with-extra-includes=${LOCALBASE}/include\n" +"\n" +"CONFIGURE_ENV+=\tQTDIR=\"${QT_PREFIX}\" QMAKE=\"${QMAKE}\" \\\n" +"\t\tMOC=\"${MOC}\" RCC=\"${RCC}\" UIC=\"${UIC}\" \\\n" +"\t\tQMAKESPEC=\"${QMAKESPEC}\"\n" +"\n" +"PLIST_SUB+=\tQT_INCDIR=${QT_INCDIR_REL} \\\n" +"\t\tQT_LIBDIR=${QT_LIBDIR_REL} \\\n" +"\t\tQT_PLUGINDIR=${QT_PLUGINDIR_REL}" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:8767 +msgid "" +"Some configure scripts do not support the arguments above. To suppress " +"modification ofCONFIGURE_ENV and CONFIGURE_ARGS, set QT_NONSTANDARD." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:8774 book.translate.xml:10682 +msgid "Component Selection" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:8776 +msgid "" +"Individual Qt tool and library dependencies must be specified in " +"USE_QTx. Every component can " +"be suffixed with _build or _run, the " +"suffix indicating whether the dependency on the component is at buildtime or " +"runtime. If unsuffixed, the component will be depended on at both build- and " +"runtime. Usually, library components are specified unsuffixed, tool " +"components are mostly specified with the _build suffix " +"and plugin components are specified with the _run suffix. " +"The most commonly used components are listed below (all available components " +"are listed in _USE_QT_ALL, _USE_QT4_ONLY, and _USE_QT5_ONLY in /usr/ports/Mk/" +"bsd.qt.mk):" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:8795 +msgid "Available Qt Library Components" +msgstr "可用的 Qt 函式庫元件" + +#. (itstool) path: row/entry +#: book.translate.xml:8800 book.translate.xml:8874 book.translate.xml:8934 +#: book.translate.xml:9107 book.translate.xml:10661 book.translate.xml:10697 +#: book.translate.xml:10751 book.translate.xml:10958 book.translate.xml:11131 +msgid "Name" +msgstr "名字" + +#. (itstool) path: row/entry +#: book.translate.xml:8807 +msgid "core" +msgstr "core" + +#. (itstool) path: row/entry +#: book.translate.xml:8808 +msgid "core library (Qt 5 only)" +msgstr "核心函式庫 (Qt 5 only)" + +#. (itstool) path: row/entry +#: book.translate.xml:8812 +msgid "corelib" +msgstr "corelib" + +#. (itstool) path: row/entry +#: book.translate.xml:8813 +msgid "core library (Qt 4 only)" +msgstr "核心函式庫 (Qt 4 only)" + +#. (itstool) path: row/entry +#: book.translate.xml:8817 +msgid "dbus" +msgstr "dbus" + +#. (itstool) path: row/entry +#: book.translate.xml:8818 +msgid "Qt DBus library" +msgstr "Qt DBus 函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8822 +msgid "gui" +msgstr "gui" + +#. (itstool) path: row/entry +#: book.translate.xml:8823 +msgid "graphical user interface library" +msgstr "圖形使用者介面函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8827 +msgid "network" +msgstr "network" + +#. (itstool) path: row/entry +#: book.translate.xml:8828 +msgid "network library" +msgstr "網路函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8832 +msgid "opengl" +msgstr "opengl" + +#. (itstool) path: row/entry +#: book.translate.xml:8833 +msgid "Qt OpenGL library" +msgstr "Qt OpenGL 函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8837 +msgid "script" +msgstr "script" + +#. (itstool) path: row/entry +#: book.translate.xml:8838 +msgid "script library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8842 +msgid "sql" +msgstr "sql" + +#. (itstool) path: row/entry +#: book.translate.xml:8843 +msgid "SQL library" +msgstr "SQL 函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8847 +msgid "testlib" +msgstr "testlib" + +#. (itstool) path: row/entry +#: book.translate.xml:8848 +msgid "unit testing library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8852 +msgid "webkit" +msgstr "webkit" + +#. (itstool) path: row/entry +#: book.translate.xml:8853 +msgid "Qt WebKit library" +msgstr "Qt WebKit 函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:8857 +msgid "xml" +msgstr "xml" + +#. (itstool) path: row/entry +#: book.translate.xml:8858 +msgid "Qt XML library" +msgstr "Qt XML 函式庫" + +#. (itstool) path: sect2/para +#: book.translate.xml:8864 +msgid "" +"To determine the libraries an application depends on, run ldd on the main executable after a successful compilation." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:8869 +msgid "Available Qt Tool Components" +msgstr "" + +#. (itstool) path: row/entry +#. (itstool) path: sect1/title +#: book.translate.xml:8881 book.translate.xml:16850 +msgid "qmake" +msgstr "qmake" + +#. (itstool) path: row/entry +#: book.translate.xml:8882 +msgid "Makefile generator/build utility" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8886 +msgid "buildtools" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8887 +msgid "" +"build tools (moc, rcc), needed for " +"almost every Qt application (Qt 5 only)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8893 +msgid "linguisttools" +msgstr "linguisttools" + +#. (itstool) path: row/entry +#: book.translate.xml:8894 +msgid "" +"localization tools: lrelease, lupdate " +"(Qt 5 only)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8899 +msgid "linguist" +msgstr "linguist" + +#. (itstool) path: row/entry +#: book.translate.xml:8900 +msgid "" +"localization tools: lrelease, lupdate " +"(Qt 4 only)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8905 +msgid "moc" +msgstr "moc" + +#. (itstool) path: row/entry +#: book.translate.xml:8906 +msgid "" +"meta object compiler, needed for almost every Qt application at buildtime " +"(Qt 4 only)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8911 +msgid "rcc" +msgstr "rcc" + +#. (itstool) path: row/entry +#: book.translate.xml:8912 +msgid "" +"resource compiler, needed if the application comes with *.rc or *.qrc files (Qt 4 only)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8918 +msgid "uic" +msgstr "uic" + +#. (itstool) path: row/entry +#: book.translate.xml:8919 +msgid "" +"user interface compiler, needed if the application comes with *." +"ui files, in practice, every Qt application with a GUI (Qt 4 only)" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:8929 +msgid "Available Qt Plugin Components" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8941 +msgid "iconengines" +msgstr "iconengines" + +#. (itstool) path: row/entry +#: book.translate.xml:8942 +msgid "" +"SVG icon engine plugin, needed if the application ships SVG icons (Qt 4 only)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:8947 +msgid "imageformats" +msgstr "imageformats" + +#. (itstool) path: row/entry +#: book.translate.xml:8948 +msgid "plugins for TGA, TIFF, and MNG image formats" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:8956 +msgid "Selecting Qt 4 Components" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:8958 +msgid "" +"In this example, the ported application uses the Qt 4 graphical user " +"interface library, the Qt 4 core library, all of the Qt 4 code generation " +"tools and Qt 4's Makefile generator. Since the gui " +"library implies a dependency on the core library, corelib " +"does not need to be specified. The Qt 4 code generation tools moc, uic and rcc, as well as the " +"Makefile generator qmake are only needed at buildtime, " +"thus they are specified with the _build suffix:" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:8970 +#, no-wrap +msgid "USE_QT4=\tgui moc_build qmake_build rcc_build uic_build" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:8975 +msgid "Using qmake" +msgstr "使用 qmake" + +#. (itstool) path: sect2/para +#: book.translate.xml:8978 +msgid "" +"If the application provides a qmake project file " +"(*.pro), define USES= qmake along " +"with USE_QTx. Note that " +"USES= qmake already implies a build dependency on qmake, " +"therefore the qmake component can be omitted from " +"USE_QTx. Similar to CMake, " +"qmake supports out-of-source builds, which can be " +"enabled by specifying the outsource argument (see USES= qmake example)." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:8994 +msgid "Variables for Ports That Use qmake" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9007 +msgid "QMAKE_ARGS" +msgstr "QMAKE_ARGS" + +#. (itstool) path: row/entry +#: book.translate.xml:9008 +msgid "" +"Port specific qmake flags to be passed to the " +"qmake binary." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9014 +msgid "QMAKE_ENV" +msgstr "QMAKE_ENV" + +#. (itstool) path: row/entry +#: book.translate.xml:9015 +msgid "" +"Environment variables to be set for the qmake binary. The " +"default is ${CONFIGURE_ENV}." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9021 +msgid "QMAKE_SOURCE_PATH" +msgstr "QMAKE_SOURCE_PATH" + +#. (itstool) path: row/entry +#: book.translate.xml:9023 +msgid "" +"Path to qmake project files (.pro). The default is " +"${WRKSRC} if an out-of-source build is requested, empty " +"otherwise." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:9034 +msgid "USES= qmake Example" +msgstr "USES= qmake 範例" + +#. (itstool) path: example/para +#: book.translate.xml:9036 +msgid "" +"This snippet demonstrates the use of qmake for a " +"Qt 4 port:" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:9039 +#, no-wrap +msgid "" +"USES=\t\tqmake:outsource\n" +"USE_QT4=\tmoc_build" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:9042 +msgid "For a Qt 5 port:" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:9043 +#, no-wrap +msgid "" +"USES=\t\tqmake:outsource\n" +"USE_QT5=\tbuildtools_build" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9047 +msgid "" +"Qt applications are often written to be cross-platform and often X11/Unix is " +"not the platform they are developed on, which in turn leads to certain loose " +"ends, like:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:9054 +msgid "" +"Missing additional include paths. Many applications " +"come with system tray icon support, but neglect to look for includes and/or " +"libraries in the X11 directories. To add directories to qmake's include and library search paths via the command line, use:" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:9062 +#, no-wrap +msgid "" +"QMAKE_ARGS+=\tINCLUDEPATH+=${LOCALBASE}/include \\\n" +"\t\tLIBS+=-L${LOCALBASE}/lib" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:9067 +msgid "" +"Bogus installation paths. Sometimes data such as icons " +"or .desktop files are by default installed into directories which are not " +"scanned by XDG-compatible applications. editors/" +"texmaker is an example for this - look at patch-texmaker." +"pro in the files directory of that port for " +"a template on how to remedy this directly in the qmake " +"project file." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:9083 +msgid "Using KDE" +msgstr "使用 KDE" + +#. (itstool) path: sect2/title +#: book.translate.xml:9086 +msgid "KDE 4 Variable Definitions" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9088 +msgid "" +"If the application depends on KDE 4, set USE_KDE4 to the " +"list of required components. _build and _run suffixes can be used to force components dependency type (for " +"example, baseapps_run). If no suffix is set, a default " +"dependency type will be used. To force both types, add the component twice " +"with both suffixes (for example, automoc4_build automoc4_run). The most commonly used components are listed below (up-to-date " +"components are documented at the top of /usr/ports/Mk/bsd.kde4.mk):" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:9102 +msgid "Available KDE 4 Components" +msgstr "可用的 KDE 4 元件" + +#. (itstool) path: row/entry +#: book.translate.xml:9114 +msgid "kdehier" +msgstr "kdehier" + +#. (itstool) path: row/entry +#: book.translate.xml:9115 +msgid "Hierarchy of common KDE directories" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9119 +msgid "kdelibs" +msgstr "kdelibs" + +#. (itstool) path: row/entry +#: book.translate.xml:9120 +msgid "KDE core libraries" +msgstr "KDE 核心函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:9124 +msgid "kdeprefix" +msgstr "kdeprefix" + +#. (itstool) path: row/entry +#: book.translate.xml:9125 +msgid "If set, port will be installed into ${KDE4_PREFIX}" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9130 +msgid "automoc4" +msgstr "automoc4" + +#. (itstool) path: row/entry +#: book.translate.xml:9131 +msgid "Build tool to automatically generate moc files" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9136 +msgid "akonadi" +msgstr "akonadi" + +#. (itstool) path: row/entry +#: book.translate.xml:9137 +msgid "Storage server for KDE PIM data" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9141 +msgid "soprano" +msgstr "soprano" + +#. (itstool) path: row/entry +#: book.translate.xml:9142 +msgid "Library for Resource Description Framework (RDF)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9147 +msgid "strigi" +msgstr "strigi" + +#. (itstool) path: row/entry +#: book.translate.xml:9148 +msgid "Strigi desktop search library" +msgstr "Strigi 桌面搜尋函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:9152 +msgid "libkcddb" +msgstr "libkcddb" + +#. (itstool) path: row/entry +#: book.translate.xml:9153 +msgid "KDE CDDB (compact disc database) library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9157 +msgid "libkcompactdisc" +msgstr "libkcompactdisc" + +#. (itstool) path: row/entry +#: book.translate.xml:9158 +msgid "KDE library for interfacing with audio CDs" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9163 +msgid "libkdeedu" +msgstr "libkdeedu" + +#. (itstool) path: row/entry +#: book.translate.xml:9164 +msgid "Libraries used by educational applications" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9169 +msgid "libkdcraw" +msgstr "libkdcraw" + +#. (itstool) path: row/entry +#: book.translate.xml:9170 +msgid "KDE LibRaw library" +msgstr "KDE LibRaw 函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:9174 +msgid "libkexiv2" +msgstr "libkexiv2" + +#. (itstool) path: row/entry +#: book.translate.xml:9175 +msgid "KDE Exiv2 library" +msgstr "KDE Exiv2 函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:9179 +msgid "libkipi" +msgstr "libkipi" + +#. (itstool) path: row/entry +#: book.translate.xml:9180 +msgid "KDE Image Plugin Interface" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9184 +msgid "libkonq" +msgstr "libkonq" + +#. (itstool) path: row/entry +#: book.translate.xml:9185 +msgid "Konqueror core library" +msgstr "Konqueror 核心函式庫" + +#. (itstool) path: row/entry +#: book.translate.xml:9189 +msgid "libksane" +msgstr "libksane" + +#. (itstool) path: row/entry +#: book.translate.xml:9190 +msgid "KDE SANE (\"Scanner Access Now Easy\") library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9195 +msgid "pimlibs" +msgstr "pimlibs" + +#. (itstool) path: row/entry +#: book.translate.xml:9196 +msgid "Personal information management libraries" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9200 +msgid "kate" +msgstr "kate" + +#. (itstool) path: row/entry +#: book.translate.xml:9201 +msgid "Advanced text editor framework" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9205 +msgid "marble" +msgstr "marble" + +#. (itstool) path: row/entry +#: book.translate.xml:9206 +msgid "Virtual globe and world atlas" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9210 +msgid "okular" +msgstr "okular" + +#. (itstool) path: row/entry +#: book.translate.xml:9211 +msgid "Universal document viewer" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9215 +msgid "korundum" +msgstr "korundum" + +#. (itstool) path: row/entry +#: book.translate.xml:9216 +msgid "KDE Ruby bindings" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9220 +msgid "perlkde" +msgstr "perlkde" + +#. (itstool) path: row/entry +#: book.translate.xml:9221 +msgid "KDE Perl bindings" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9225 +msgid "pykde4" +msgstr "pykde4" + +#. (itstool) path: row/entry +#: book.translate.xml:9226 +msgid "KDE Python bindings" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9230 +msgid "pykdeuic4" +msgstr "pykdeuic4" + +#. (itstool) path: row/entry +#: book.translate.xml:9231 +msgid "PyKDE user interface compiler" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9235 +msgid "smokekde" +msgstr "smokekde" + +#. (itstool) path: row/entry +#: book.translate.xml:9236 +msgid "KDE SMOKE libraries" +msgstr "KDE SMOKE 函式庫" + +#. (itstool) path: sect2/para +#: book.translate.xml:9242 +msgid "" +"KDE 4 ports are installed into KDE4_PREFIX. This is " +"achieved by specifying the kdeprefix component, which " +"overrides the default PREFIX. The ports, however, respect " +"any PREFIX set via the MAKEFLAGS " +"environment variable and/or make arguments. Currently " +"KDE4_PREFIX is identical to the default PREFIX, ${LOCALBASE}." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:9254 +msgid "USE_KDE4 Example" +msgstr "USE_KDE4 範例" + +#. (itstool) path: example/para +#: book.translate.xml:9256 +msgid "" +"This is a simple example for a KDE 4 port. USES= cmake:outsource instructs the port to utilize CMake, a " +"configuration tool widely used by KDE 4 projects (see for detailed usage). USE_KDE4 brings dependency " +"on KDE libraries and makes port using automoc4 at build " +"stage. Required KDE components and other dependencies can be determined " +"through configure log. USE_KDE4 does not imply " +"USE_QT4. If a port requires some Qt 4 components, specify " +"them in USE_QT4." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:9271 +#, no-wrap +msgid "" +"USES=\t\tcmake:outsource\n" +"USE_KDE4=\tkdelibs kdeprefix automoc4\n" +"USE_QT4=\tmoc_build qmake_build rcc_build uic_build" +msgstr "" +"USES=\t\tcmake:outsource\n" +"USE_KDE4=\tkdelibs kdeprefix automoc4\n" +"USE_QT4=\tmoc_build qmake_build rcc_build uic_build" + +#. (itstool) path: sect1/title +#: book.translate.xml:9279 +msgid "Using Java" +msgstr "使用 Java" + +#. (itstool) path: sect2/title +#: book.translate.xml:9282 +msgid "Variable Definitions" +msgstr "變數定義" + +#. (itstool) path: sect2/para +#: book.translate.xml:9284 +msgid "" +"If the port needs a Java™ Development Kit (JDK™) to " +"either build, run or even extract the distfile, then define " +"USE_JAVA." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9289 +msgid "" +"There are several JDKs in the ports collection, from " +"various vendors, and in several versions. If the port must use one of these " +"versions, define which one. The most current version, and FreeBSD default is " +"java/openjdk6." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:9296 +msgid "Variables Which May be Set by Ports That Use Java" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9309 +msgid "USE_JAVA" +msgstr "USE_JAVA" + +#. (itstool) path: row/entry +#: book.translate.xml:9310 +msgid "Define for the remaining variables to have any effect." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9315 +msgid "JAVA_VERSION" +msgstr "JAVA_VERSION" + +#. (itstool) path: row/entry +#: book.translate.xml:9316 +msgid "" +"List of space-separated suitable Java versions for the port. An optional " +"\"+\" allows specifying a range of versions (allowed " +"values: 1.5[+] 1.6[+] 1.7[+])." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9324 +msgid "JAVA_OS" +msgstr "JAVA_OS" + +#. (itstool) path: row/entry +#: book.translate.xml:9325 +msgid "" +"List of space-separated suitable JDK port operating " +"systems for the port (allowed values: native linux)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9332 +msgid "JAVA_VENDOR" +msgstr "JAVA_VENDOR" + +#. (itstool) path: row/entry +#: book.translate.xml:9333 +msgid "" +"List of space-separated suitable JDK port vendors for the " +"port (allowed values: freebsd bsdjava sun openjdk)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9341 +msgid "JAVA_BUILD" +msgstr "JAVA_BUILD" + +#. (itstool) path: row/entry +#: book.translate.xml:9342 +msgid "" +"When set, add the selected JDK port to the build " +"dependencies." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9347 +msgid "JAVA_RUN" +msgstr "JAVA_RUN" + +#. (itstool) path: row/entry +#: book.translate.xml:9348 +msgid "" +"When set, add the selected JDK port to the run " +"dependencies." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9353 +msgid "JAVA_EXTRACT" +msgstr "JAVA_EXTRACT" + +#. (itstool) path: row/entry +#: book.translate.xml:9354 +msgid "" +"When set, add the selected JDK port to the extract " +"dependencies." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9361 +msgid "" +"Below is the list of all settings a port will receive after setting " +"USE_JAVA:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:9365 +msgid "Variables Provided to Ports That Use Java" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9371 book.translate.xml:9540 book.translate.xml:17263 +msgid "Value" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9377 +msgid "JAVA_PORT" +msgstr "JAVA_PORT" + +#. (itstool) path: row/entry +#: book.translate.xml:9378 +msgid "" +"The name of the JDK port (for example, java/" +"openjdk6)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9383 +msgid "JAVA_PORT_VERSION" +msgstr "JAVA_PORT_VERSION" + +#. (itstool) path: row/entry +#: book.translate.xml:9384 +msgid "" +"The full version of the JDK port (for example, " +"1.6.0). Only the first two digits of this version number " +"are needed, use ${JAVA_PORT_VERSION:C/^([0-9])\\.([0-9])(.*)$/\\1." +"\\2/}." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9392 +msgid "JAVA_PORT_OS" +msgstr "JAVA_PORT_OS" + +#. (itstool) path: row/entry +#: book.translate.xml:9393 +msgid "" +"The operating system used by the JDK port (for example, " +"'native')." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9399 +msgid "JAVA_PORT_VENDOR" +msgstr "JAVA_PORT_VENDOR" + +#. (itstool) path: row/entry +#: book.translate.xml:9400 +msgid "" +"The vendor of the JDK port (for example, " +"'openjdk')." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9405 +msgid "JAVA_PORT_OS_DESCRIPTION" +msgstr "JAVA_PORT_OS_DESCRIPTION" + +#. (itstool) path: row/entry +#: book.translate.xml:9406 +msgid "" +"Description of the operating system used by the JDK port " +"(for example, 'Native')." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9412 +msgid "JAVA_PORT_VENDOR_DESCRIPTION" +msgstr "JAVA_PORT_VENDOR_DESCRIPTION" + +#. (itstool) path: row/entry +#: book.translate.xml:9413 +msgid "" +"Description of the vendor of the JDK port (for example, " +"'OpenJDK BSD Porting Team')." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9420 +msgid "JAVA_HOME" +msgstr "JAVA_HOME" + +#. (itstool) path: row/entry +#: book.translate.xml:9421 +msgid "" +"Path to the installation directory of the JDK (for " +"example, '/usr/local/openjdk6')." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9427 +msgid "JAVAC" +msgstr "JAVAC" + +#. (itstool) path: row/entry +#: book.translate.xml:9428 +msgid "" +"Path to the Java compiler to use (for example, '/usr/local/" +"openjdk6/bin/javac')." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9433 +msgid "JAR" +msgstr "JAR" + +#. (itstool) path: row/entry +#: book.translate.xml:9434 +msgid "" +"Path to the jar tool to use (for example, '/usr/" +"local/openjdk6/bin/jar' or '/usr/local/bin/fastjar')." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9442 +msgid "APPLETVIEWER" +msgstr "APPLETVIEWER" + +#. (itstool) path: row/entry +#: book.translate.xml:9443 +msgid "" +"Path to the appletviewer utility (for example, " +"'/usr/local/openjdk6/bin/appletviewer')." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9449 +msgid "JAVA" +msgstr "JAVA" + +#. (itstool) path: row/entry +#: book.translate.xml:9450 +msgid "" +"Path to the java executable. Use this for executing Java " +"programs (for example, '/usr/local/openjdk6/bin/java')." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9456 +msgid "JAVADOC" +msgstr "JAVADOC" + +#. (itstool) path: row/entry +#: book.translate.xml:9457 +msgid "Path to the javadoc utility program." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9462 +msgid "JAVAH" +msgstr "JAVAH" + +#. (itstool) path: row/entry +#: book.translate.xml:9463 +msgid "Path to the javah program." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9468 +msgid "JAVAP" +msgstr "JAVAP" + +#. (itstool) path: row/entry +#: book.translate.xml:9469 +msgid "Path to the javap program." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9474 +msgid "JAVA_KEYTOOL" +msgstr "JAVA_KEYTOOL" + +#. (itstool) path: row/entry +#: book.translate.xml:9475 +msgid "Path to the keytool utility program." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9480 +msgid "JAVA_N2A" +msgstr "JAVA_N2A" + +#. (itstool) path: row/entry +#: book.translate.xml:9481 +msgid "Path to the native2ascii tool." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9486 +msgid "JAVA_POLICYTOOL" +msgstr "JAVA_POLICYTOOL" + +#. (itstool) path: row/entry +#: book.translate.xml:9487 +msgid "Path to the policytool program." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9492 +msgid "JAVA_SERIALVER" +msgstr "JAVA_SERIALVER" + +#. (itstool) path: row/entry +#: book.translate.xml:9493 +msgid "Path to the serialver utility program." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9498 +msgid "RMIC" +msgstr "RMIC" + +#. (itstool) path: row/entry +#: book.translate.xml:9499 +msgid "Path to the RMI stub/skeleton generator, rmic." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9504 +msgid "RMIREGISTRY" +msgstr "RMIREGISTRY" + +#. (itstool) path: row/entry +#: book.translate.xml:9505 +msgid "Path to the RMI registry program, rmiregistry." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9510 +msgid "RMID" +msgstr "RMID" + +#. (itstool) path: row/entry +#: book.translate.xml:9511 +msgid "Path to the RMI daemon program rmid." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9516 +msgid "JAVA_CLASSES" +msgstr "JAVA_CLASSES" + +#. (itstool) path: row/entry +#: book.translate.xml:9517 +msgid "" +"Path to the archive that contains the JDK class files, " +"${JAVA_HOME}/jre/lib/rt.jar." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:9525 +msgid "java-debug" +msgstr "java-debug" + +#. (itstool) path: sect2/para +#: book.translate.xml:9525 +msgid "" +"Use the <_:buildtarget-1/> make target to get information for debugging the " +"port. It will display the value of many of the previously listed variables." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9530 +msgid "" +"Additionally, these constants are defined so all Java ports may be installed " +"in a consistent way:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:9534 +msgid "Constants Defined for Ports That Use Java" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9539 +msgid "Constant" +msgstr "常數" + +#. (itstool) path: row/entry +#: book.translate.xml:9546 +msgid "JAVASHAREDIR" +msgstr "JAVASHAREDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:9547 +msgid "" +"The base directory for everything related to Java. Default: " +"${PREFIX}/share/java." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9553 +msgid "JAVAJARDIR" +msgstr "JAVAJARDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:9554 +msgid "" +"The directory where JAR files is installed. Default: " +"${JAVASHAREDIR}/classes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9560 +msgid "JAVALIBDIR" +msgstr "JAVALIBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:9561 +msgid "" +"The directory where JAR files installed by other ports are located. Default: " +"${LOCALBASE}/share/java/classes." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9569 +msgid "" +"The related entries are defined in both PLIST_SUB " +"(documented in ) and SUB_LIST." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:9576 +msgid "Building with Ant" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9578 +msgid "" +"When the port is to be built using Apache Ant, it has to define " +"USE_ANT. Ant is thus considered to be the sub-make " +"command. When no <_:buildtarget-1/> target is defined by the port, a default " +"one will be set that runs Ant according to MAKE_ENV, " +"MAKE_ARGS and ALL_TARGET. This is " +"similar to the USES= gmake mechanism, which is documented " +"in ." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:9590 +msgid "Best Practices" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9592 +msgid "" +"When porting a Java library, the port has to install the JAR file(s) in " +"${JAVAJARDIR}, and everything else under " +"${JAVASHAREDIR}/${PORTNAME} (except for the documentation, see " +"below). To reduce the packing file size, reference the JAR file(s) directly " +"in the Makefile. Use this statement (where " +"myport.jar is the name of " +"the JAR file installed as part of the port):" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:9603 +#, no-wrap +msgid "PLIST_FILES+=\t${JAVAJARDIR}/myport.jar" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9605 +msgid "" +"When porting a Java application, the port usually installs everything under " +"a single directory (including its JAR dependencies). The use of " +"${JAVASHAREDIR}/${PORTNAME} is strongly encouraged in this " +"regard. It is up the porter to decide whether the port installs the " +"additional JAR dependencies under this directory or uses the already " +"installed ones (from ${JAVAJARDIR})." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9615 +msgid "" +"When porting a Java application that requires an " +"application server such as www/tomcat7 to " +"run the service, it is quite common for a vendor to distribute a ." +"war. A .war is a Web application ARchive and " +"is extracted when called by the application. Avoid adding a .war to pkg-plist. It is not considered best " +"practice. An application server will expand war " +"archive, but not clean it up properly if the port is removed. A more " +"desirable way of working with this file is to extract the archive, then " +"install the files, and lastly add these files to pkg-plist." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:9631 +#, no-wrap +msgid "" +"TOMCATDIR=\t${LOCALBASE}/apache-tomcat-7.0\n" +"WEBAPPDIR=\tmyapplication\n" +"\n" +"post-extract:\n" +"\t@${MKDIR} ${WRKDIR}/${PORTDIRNAME}\n" +"\t@${TAR} xf ${WRKDIR}/myapplication.war -C ${WRKDIR}/${PORTDIRNAME}\n" +"\n" +"do-install:\n" +"\tcd ${WRKDIR} && \\\n" +"\t${INSTALL} -d -o ${WWWOWN} -g ${WWWGRP} " +"${TOMCATDIR}/webapps/${PORTDIRNAME}\n" +"\t@cd ${WRKDIR}/${PORTDIRNAME} && ${COPYTREE_SHARE} \\* " +"${WEBAPPDIR}/${PORTDIRNAME}" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9643 +msgid "" +"Regardless of the type of port (library or application), the additional " +"documentation is installed in the same location as for any other port. The JavaDoc tool is known to " +"produce a different set of files depending on the version of the " +"JDK that is used. For ports that do not enforce the use " +"of a particular JDK, it is therefore a complex task to " +"specify the packing list (pkg-plist). This is one " +"reason why porters are strongly encouraged to use PORTDOCS. Moreover, even if the set of files that will be generated by " +"javadoc can be predicted, the size of the resulting " +"pkg-plist advocates for the use of PORTDOCS." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9659 +msgid "" +"The default value for DATADIR is ${PREFIX}/" +"share/${PORTNAME}. It is a good idea to override " +"DATADIR to ${JAVASHAREDIR}/${PORTNAME} for Java ports. Indeed, DATADIR is " +"automatically added to PLIST_SUB (documented in ) so use %%DATADIR%% directly in " +"pkg-plist." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9669 +msgid "" +"As for the choice of building Java ports from source or directly installing " +"them from a binary distribution, there is no defined policy at the time of " +"writing. However, people from the FreeBSD Java Project encourage porters to have their ports " +"built from source whenever it is a trivial task." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9677 +msgid "" +"All the features that have been presented in this section are implemented in " +"bsd.java.mk. If the port needs more sophisticated Java " +"support, please first have a look at the bsd.java.mk " +"Subversion log as it usually takes some " +"time to document the latest features. Then, if the needed support that is " +"lacking would be beneficial to many other Java ports, feel free to discuss " +"it on the FreeBSD Java Language mailing list." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9687 +msgid "" +"Although there is a java category for PRs, it refers to " +"the JDK porting effort from the FreeBSD Java project. " +"Therefore, submit the Java port in the ports category as " +"for any other port, unless the issue is related to either a JDK implementation or bsd.java.mk." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9695 +msgid "" +"Similarly, there is a defined policy regarding the CATEGORIES of a Java port, which is detailed in ." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:9702 +msgid "Web Applications, Apache and PHP" +msgstr "網路應用程式, Apache 和 PHP" + +#. (itstool) path: sect2/title +#: book.translate.xml:9705 +msgid "Apache" +msgstr "Apache" + +#. (itstool) path: table/title +#: book.translate.xml:9708 +msgid "Variables for Ports That Use Apache" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9714 +msgid "USE_APACHE" +msgstr "USE_APACHE" + +#. (itstool) path: row/entry +#: book.translate.xml:9715 +msgid "" +"The port requires Apache. Possible values: yes (gets any " +"version), 22, 24, 22-24, 22+, etc. The default APACHE version is " +"22. More details are available in ports/Mk/bsd." +"apache.mk and at wiki.freebsd.org/Apache/." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9726 +msgid "APXS" +msgstr "APXS" + +#. (itstool) path: row/entry +#: book.translate.xml:9727 +msgid "" +"Full path to the apxs binary. Can be overridden in the " +"port." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9732 +msgid "HTTPD" +msgstr "HTTPD" + +#. (itstool) path: row/entry +#: book.translate.xml:9733 +msgid "" +"Full path to the httpd binary. Can be overridden in the " +"port." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9738 +msgid "APACHE_VERSION" +msgstr "APACHE_VERSION" + +#. (itstool) path: row/entry +#: book.translate.xml:9739 +msgid "" +"The version of present Apache installation (read-only variable). This " +"variable is only available after inclusion of bsd.port.pre.mk. Possible values: 22, 24." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9748 +msgid "APACHEMODDIR" +msgstr "APACHEMODDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:9749 +msgid "" +"Directory for Apache modules. This variable is automatically expanded in " +"pkg-plist." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9755 +msgid "APACHEINCLUDEDIR" +msgstr "APACHEINCLUDEDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:9756 +msgid "" +"Directory for Apache headers. This variable is automatically expanded in " +"pkg-plist." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9762 +msgid "APACHEETCDIR" +msgstr "APACHEETCDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:9763 +msgid "" +"Directory for Apache configuration files. This variable is automatically " +"expanded in pkg-plist." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:9772 +msgid "Useful Variables for Porting Apache Modules" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9778 +msgid "MODULENAME" +msgstr "MODULENAME" + +#. (itstool) path: row/entry +#: book.translate.xml:9779 +msgid "" +"Name of the module. Default value is PORTNAME. Example: " +"mod_hello" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9785 +msgid "SHORTMODNAME" +msgstr "SHORTMODNAME" + +#. (itstool) path: row/entry +#: book.translate.xml:9786 +msgid "" +"Short name of the module. Automatically derived from MODULENAME, but can be overridden. Example: hello" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9793 +msgid "AP_FAST_BUILD" +msgstr "AP_FAST_BUILD" + +#. (itstool) path: row/entry +#: book.translate.xml:9794 +msgid "Use apxs to compile and install the module." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9799 +msgid "AP_GENPLIST" +msgstr "AP_GENPLIST" + +#. (itstool) path: row/entry +#: book.translate.xml:9800 +msgid "Also automatically creates a pkg-plist." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9805 +msgid "AP_INC" +msgstr "AP_INC" + +#. (itstool) path: row/entry +#: book.translate.xml:9806 +msgid "Adds a directory to a header search path during compilation." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9811 +msgid "AP_LIB" +msgstr "AP_LIB" + +#. (itstool) path: row/entry +#: book.translate.xml:9812 +msgid "Adds a directory to a library search path during compilation." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9817 +msgid "AP_EXTRAS" +msgstr "AP_EXTRAS" + +#. (itstool) path: row/entry +#: book.translate.xml:9818 +msgid "Additional flags to pass to apxs." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:9827 +msgid "Web Applications" +msgstr "網路應用程式" + +#. (itstool) path: sect2/para +#: book.translate.xml:9829 +msgid "" +"Web applications must be installed into PREFIX/www/" +"appname. This path is available both " +"in Makefile and in pkg-plist as " +"WWWDIR, and the path relative to PREFIX is available in Makefile as " +"WWWDIR_REL." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9838 +msgid "" +"The user and group of web server process are available as WWWOWN and WWWGRP, in case the ownership of some files " +"needs to be changed. The default values of both are www. " +"Use WWWOWN?= myuser and WWWGRP?= mygroup if the port needs different values. This allows the user to " +"override them easily." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9846 +msgid "" +"Do not depend on Apache unless the web app explicitly needs Apache. Respect " +"that users may wish to run a web app on different web server than Apache." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:9852 +msgid "PHP" +msgstr "PHP" + +#. (itstool) path: table/title +#: book.translate.xml:9855 +msgid "Variables for Ports That Use PHP" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9860 +msgid "USE_PHP" +msgstr "USE_PHP" + +#. (itstool) path: row/entry +#: book.translate.xml:9861 +msgid "" +"The port requires PHP. The value yes adds a dependency on " +"PHP. The list of required PHP extensions can be specified instead. Example: " +"pcre xml gettext" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9869 +msgid "DEFAULT_PHP_VER" +msgstr "DEFAULT_PHP_VER" + +#. (itstool) path: row/entry +#: book.translate.xml:9870 +msgid "" +"Selects which major version of PHP will be installed as a dependency when no " +"PHP is installed yet. Default is 5. Possible values: " +"4, 5" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9878 +msgid "IGNORE_WITH_PHP" +msgstr "IGNORE_WITH_PHP" + +#. (itstool) path: row/entry +#: book.translate.xml:9879 +msgid "" +"The port does not work with PHP of the given version. Possible values: " +"4, 5" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9885 +msgid "USE_PHPIZE" +msgstr "USE_PHPIZE" + +#. (itstool) path: row/entry +#: book.translate.xml:9886 +msgid "The port will be built as a PHP extension." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9891 +msgid "USE_PHPEXT" +msgstr "USE_PHPEXT" + +#. (itstool) path: row/entry +#: book.translate.xml:9892 +msgid "" +"The port will be treated as a PHP extension, including installation and " +"registration in the extension registry." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9898 +msgid "USE_PHP_BUILD" +msgstr "USE_PHP_BUILD" + +#. (itstool) path: row/entry +#: book.translate.xml:9899 +msgid "Set PHP as a build dependency." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9903 +msgid "WANT_PHP_CLI" +msgstr "WANT_PHP_CLI" + +#. (itstool) path: row/entry +#: book.translate.xml:9904 +msgid "Want the CLI (command line) version of PHP." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9909 +msgid "WANT_PHP_CGI" +msgstr "WANT_PHP_CGI" + +#. (itstool) path: row/entry +#: book.translate.xml:9910 +msgid "Want the CGI version of PHP." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9914 +msgid "WANT_PHP_MOD" +msgstr "WANT_PHP_MOD" + +#. (itstool) path: row/entry +#: book.translate.xml:9915 +msgid "Want the Apache module version of PHP." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9919 +msgid "WANT_PHP_SCR" +msgstr "WANT_PHP_SCR" + +#. (itstool) path: row/entry +#: book.translate.xml:9920 +msgid "Want the CLI or the CGI version of PHP." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:9924 +msgid "WANT_PHP_WEB" +msgstr "WANT_PHP_WEB" + +#. (itstool) path: row/entry +#: book.translate.xml:9925 +msgid "Want the Apache module or the CGI version of PHP." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:9934 +msgid "PEAR Modules" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9936 +msgid "Porting PEAR modules is a very simple process." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:9938 +msgid "" +"Add USES=pear to the port's Makefile. The framework will install the relevant files in the right places " +"and automatically generate the plist at install time." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:9944 +msgid "Example Makefile for PEAR Class" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:9946 +#, no-wrap +msgid "" +"PORTNAME= Date\n" +"PORTVERSION=\t1.4.3\n" +"CATEGORIES=\tdevel www pear\n" +"\n" +"MAINTAINER=\texample@domain.com\n" +"COMMENT=\tPEAR Date and Time Zone Classes\n" +"\n" +"USES=\tpear\n" +"\n" +".include <bsd.port.mk>" +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:9959 +msgid "Horde Modules" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:9961 +msgid "" +"In the same way, porting Horde modules is a " +"simple process." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:9965 +msgid "" +"Add USES=horde to the port's Makefile. The framework will install the relevant files in the right places " +"and automatically generate the plist at install time." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:9970 +msgid "" +"The USE_HORDE_BUILD and USE_HORDE_RUN " +"variables can be used to add buildtime and runtime dependencies on other " +"Horde modules. See Mk/Uses/horde.mk for a complete list of available modules." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:9978 +msgid "Example Makefile for Horde Module" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:9981 +#, no-wrap +msgid "" +"PORTNAME=\tHorde_Core\n" +"PORTVERSION=\t2.14.0\n" +"CATEGORIES=\tdevel www pear\n" +"\n" +"MAINTAINER=\thorde@FreeBSD.org\n" +"COMMENT=\tHorde Core Framework libraries\n" +"\n" +"OPTIONS_DEFINE=\tKOLAB SOCKETS\n" +"KOLAB_DESC=\tEnable Kolab server support\n" +"SOCKETS_DESC=\tDepend on sockets PHP extension\n" +"\n" +"USES=\thorde\n" +"USE_PHP=\tsession\n" +"\n" +"USE_HORDE_BUILD=\tHorde_Role\n" +"USE_HORDE_RUN=\tHorde_Role Horde_History Horde_Pack \\\n" +"\t\tHorde_Text_Filter Horde_View\n" +"\n" +"KOLAB_USE=\tHORDE_RUN=Horde_Kolab_Server,Horde_Kolab_Session\n" +"SOCKETS_USE=\tPHP=sockets\n" +"\n" +".include <bsd.port.mk>" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:10009 +msgid "Using Python" +msgstr "使用 Python" + +#. (itstool) path: sect1/para +#: book.translate.xml:10011 +msgid "" +"The Ports Collection supports parallel installation of multiple Python " +"versions. Ports must use a correct python interpreter, " +"according to the user-settable PYTHON_VERSION. Most " +"prominently, this means replacing the path to python " +"executable in scripts with the value of PYTHON_CMD." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:10019 +msgid "" +"Ports that install files under PYTHON_SITELIBDIR must use " +"the pyXY- package name prefix, so their package name " +"embeds the version of Python they are installed into." +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:10025 +#, no-wrap +msgid "PKGNAMEPREFIX=\t${PYTHON_PKGNAMEPREFIX}" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10028 +msgid "Most Useful Variables for Ports That Use Python" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10033 +msgid "USES=python" +msgstr "USES=python" + +#. (itstool) path: row/entry +#: book.translate.xml:10034 +msgid "" +"The port needs Python. The minimal required version can be specified with " +"values such as 2.7+. Version ranges can also be specified " +"by separating two version numbers with a dash: USES=python:3.2-3.3" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10042 +msgid "USE_PYTHON=distutils" +msgstr "USE_PYTHON=distutils" + +#. (itstool) path: row/entry +#: book.translate.xml:10043 +msgid "" +"Use Python distutils for configuring, compiling, and installing. This is " +"required when the port comes with setup.py. This " +"overrides the <_:buildtarget-1/> and <_:buildtarget-2/> targets and may also " +"override <_:buildtarget-3/> if GNU_CONFIGURE is not " +"defined." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10054 +msgid "USE_PYTHON=autoplist" +msgstr "USE_PYTHON=autoplist" + +#. (itstool) path: row/entry +#: book.translate.xml:10055 +msgid "" +"Create the packaging list automatically. This also requires " +"USE_PYTHON=distutils to be set." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10061 +msgid "USE_PYTHON=concurrent" +msgstr "USE_PYTHON=concurrent" + +#. (itstool) path: row/entry +#: book.translate.xml:10062 +msgid "" +"The port will use an unique prefix, typically PYTHON_PKGNAMEPREFIX for certain directories, such as EXAMPLESDIR and " +"DOCSDIR and also will append a suffix, the python version " +"from PYTHON_VER, to binaries and scripts to be installed. " +"This allows ports to be installed for different Python versions at the same " +"time, which otherwise would install conflicting files." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10074 +msgid "PYTHON_PKGNAMEPREFIX" +msgstr "PYTHON_PKGNAMEPREFIX" + +#. (itstool) path: row/entry +#: book.translate.xml:10075 +msgid "" +"Used as a PKGNAMEPREFIX to distinguish packages for " +"different Python versions. Example: py27-" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10081 +msgid "PYTHON_SITELIBDIR" +msgstr "PYTHON_SITELIBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:10082 +msgid "" +"Location of the site-packages tree, that contains installation path of " +"Python (usually LOCALBASE). PYTHON_SITELIBDIR can be very useful when installing Python modules." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10090 +msgid "PYTHONPREFIX_SITELIBDIR" +msgstr "PYTHONPREFIX_SITELIBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:10091 +msgid "" +"The PREFIX-clean variant of PYTHON_SITELIBDIR. Always use %" +"%PYTHON_SITELIBDIR%% in pkg-plist when " +"possible. The default value of %%PYTHON_SITELIBDIR%% is " +"lib/python%%PYTHON_VERSION%%/site-packages" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10100 +msgid "PYTHON_CMD" +msgstr "PYTHON_CMD" + +#. (itstool) path: row/entry +#: book.translate.xml:10101 +msgid "Python interpreter command line, including version number." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10106 +msgid "PYNUMERIC" +msgstr "PYNUMERIC" + +#. (itstool) path: row/entry +#: book.translate.xml:10107 +msgid "Dependency line for numeric extension." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10111 +msgid "PYNUMPY" +msgstr "PYNUMPY" + +#. (itstool) path: row/entry +#: book.translate.xml:10112 +msgid "" +"Dependency line for the new numeric extension, numpy. (PYNUMERIC is " +"deprecated by upstream vendor)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10118 +msgid "PYXML" +msgstr "PYXML" + +#. (itstool) path: row/entry +#: book.translate.xml:10119 +msgid "" +"Dependency line for XML extension (not needed for Python 2.0 and higher as " +"it is also in base distribution)." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:10127 +msgid "" +"A complete list of available variables can be found in /usr/ports/" +"Mk/Uses/python.mk." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:10131 +msgid "Makefile for a Simple Python Module" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:10134 +#, no-wrap +msgid "" +"PORTNAME=\tsample\n" +"PORTVERSION=\t1.2.3\n" +"CATEGORIES=\tdevel\n" +"\n" +"MAINTAINER=\tjohn@doe.tld\n" +"COMMENT=\tPython sample module\n" +"\n" +"USES=\t\tpython\n" +"USE_PYTHON=\tautoplist distutils\n" +"\n" +".include <bsd.port.mk>" +msgstr "" +"PORTNAME=\tsample\n" +"PORTVERSION=\t1.2.3\n" +"CATEGORIES=\tdevel\n" +"\n" +"MAINTAINER=\tjohn@doe.tld\n" +"COMMENT=\tPython sample module\n" +"\n" +"USES=\t\tpython\n" +"USE_PYTHON=\tautoplist distutils\n" +"\n" +".include <bsd.port.mk>" + +#. (itstool) path: sect1/para +#: book.translate.xml:10147 +msgid "" +"Some Python applications claim to have DESTDIR support " +"(which would be required for staging) but it is broken (Mailman up to " +"2.1.16, for instance). This can be worked around by recompiling the scripts. " +"This can be done, for example, in the <_:buildtarget-1/> target. Assuming " +"the Python scripts are supposed to reside in " +"PYTHONPREFIX_SITELIBDIR after installation, this solution " +"can be applied:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:10157 +#, no-wrap +msgid "" +"(cd ${STAGEDIR}${PREFIX} \\\n" +" && ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \\\n" +" -d ${PREFIX} -f ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;})" +msgstr "" +"(cd ${STAGEDIR}${PREFIX} \\\n" +" && ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \\\n" +" -d ${PREFIX} -f ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;})" + +#. (itstool) path: sect1/para +#: book.translate.xml:10161 +msgid "" +"This recompiles the sources with a path relative to the stage directory, and " +"prepends the value of PREFIX to the file name recorded in " +"the byte-compiled output file by -d. -f is required to force recompilation, and the :S;${PREFIX}/;;" +" strips prefixes from the value of " +"PYTHONPREFIX_SITELIBDIR to make it relative to " +"PREFIX." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:10173 +msgid "Using Tcl/Tk" +msgstr "使用 Tcl/Tk" + +#. (itstool) path: sect1/para +#: book.translate.xml:10175 +msgid "" +"The Ports Collection supports parallel installation of multiple " +"Tcl/Tk versions. Ports should try to support at " +"least the default Tcl/Tk version and higher with " +"USES=tcl. It is possible to specify the desired version " +"of tcl by appending :xx, for example, USES=tcl:85." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10185 +msgid "" +"The Most Useful Read-Only Variables for Ports That Use Tcl/Tk" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10191 +msgid "TCL_VER" +msgstr "TCL_VER" + +#. (itstool) path: row/entry +#: book.translate.xml:10192 +msgid "chosen major.minor version of Tcl" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10197 +msgid "TCLSH" +msgstr "TCLSH" + +#. (itstool) path: row/entry +#: book.translate.xml:10198 +msgid "full path of the Tcl interpreter" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10203 +msgid "TCL_LIBDIR" +msgstr "TCL_LIBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:10204 +msgid "path of the Tcl libraries" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10209 +msgid "TCL_INCLUDEDIR" +msgstr "TCL_INCLUDEDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:10210 +msgid "path of the Tcl C header files" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10215 +msgid "TK_VER" +msgstr "TK_VER" + +#. (itstool) path: row/entry +#: book.translate.xml:10216 +msgid "chosen major.minor version of Tk" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10221 +msgid "WISH" +msgstr "WISH" + +#. (itstool) path: row/entry +#: book.translate.xml:10222 +msgid "full path of the Tk interpreter" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10227 +msgid "TK_LIBDIR" +msgstr "TK_LIBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:10228 +msgid "path of the Tk libraries" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10233 +msgid "TK_INCLUDEDIR" +msgstr "TK_INCLUDEDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:10234 +msgid "path of the Tk C header files" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:10241 +msgid "" +"See the USES=tcl and " +"USES=tk of for a full description of those variables. A complete list " +"of those variables is available in /usr/ports/Mk/Uses/tcl.mk." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:10249 +msgid "Using Emacs" +msgstr "使用 Emacs" + +#. (itstool) path: sect1/para +#: book.translate.xml:10251 +msgid "This section is yet to be written." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:10255 +msgid "Using Ruby" +msgstr "使用 Ruby" + +#. (itstool) path: table/title +#: book.translate.xml:10258 +msgid "Useful Variables for Ports That Use Ruby" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10269 +msgid "USE_RUBY" +msgstr "USE_RUBY" + +#. (itstool) path: row/entry +#: book.translate.xml:10270 +msgid "The port requires Ruby." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10274 +msgid "USE_RUBY_EXTCONF" +msgstr "USE_RUBY_EXTCONF" + +#. (itstool) path: row/entry +#: book.translate.xml:10275 +msgid "The port uses extconf.rb to configure." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10280 +msgid "USE_RUBY_SETUP" +msgstr "USE_RUBY_SETUP" + +#. (itstool) path: row/entry +#: book.translate.xml:10281 +msgid "The port uses setup.rb to configure." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10286 +msgid "RUBY_SETUP" +msgstr "RUBY_SETUP" + +#. (itstool) path: row/entry +#: book.translate.xml:10287 +msgid "" +"Set to the alternative name of setup.rb. Common value " +"is install.rb." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:10295 +msgid "" +"This table shows the selected variables available to port authors via the " +"ports infrastructure. These variables are used to install files into their " +"proper locations. Use them in pkg-plist as much as " +"possible. Do not redefine these variables in the port." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10302 +msgid "Selected Read-Only Variables for Ports That Use Ruby" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10310 +msgid "Example value" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10316 +msgid "RUBY_PKGNAMEPREFIX" +msgstr "RUBY_PKGNAMEPREFIX" + +#. (itstool) path: row/entry +#: book.translate.xml:10317 +msgid "" +"Used as a PKGNAMEPREFIX to distinguish packages for " +"different Ruby versions." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10320 +msgid "ruby19-" +msgstr "ruby19-" + +#. (itstool) path: row/entry +#: book.translate.xml:10324 +msgid "RUBY_VERSION" +msgstr "RUBY_VERSION" + +#. (itstool) path: row/entry +#: book.translate.xml:10325 +msgid "Full version of Ruby in the form of x.y.z[.p]." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10327 +msgid "1.9.3.484" +msgstr "1.9.3.484" + +#. (itstool) path: row/entry +#: book.translate.xml:10331 +msgid "RUBY_SITELIBDIR" +msgstr "RUBY_SITELIBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:10332 +msgid "Architecture independent libraries installation path." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10334 +msgid "/usr/local/lib/ruby/site_ruby/1.9" +msgstr "/usr/local/lib/ruby/site_ruby/1.9" + +#. (itstool) path: row/entry +#: book.translate.xml:10338 +msgid "RUBY_SITEARCHLIBDIR" +msgstr "RUBY_SITEARCHLIBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:10339 +msgid "Architecture dependent libraries installation path." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10341 +msgid "/usr/local/lib/ruby/site_ruby/1.9/amd64-freebsd10" +msgstr "/usr/local/lib/ruby/site_ruby/1.9/amd64-freebsd10" + +#. (itstool) path: row/entry +#: book.translate.xml:10345 +msgid "RUBY_MODDOCDIR" +msgstr "RUBY_MODDOCDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:10346 +msgid "Module documentation installation path." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10347 +msgid "/usr/local/share/doc/ruby19/patsy" +msgstr "/usr/local/share/doc/ruby19/patsy" + +#. (itstool) path: row/entry +#: book.translate.xml:10351 +msgid "RUBY_MODEXAMPLESDIR" +msgstr "RUBY_MODEXAMPLESDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:10352 +msgid "Module examples installation path." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10353 +msgid "/usr/local/share/examples/ruby19/patsy" +msgstr "/usr/local/share/examples/ruby19/patsy" + +#. (itstool) path: sect1/para +#: book.translate.xml:10359 +msgid "" +"A complete list of available variables can be found in /usr/ports/" +"Mk/bsd.ruby.mk." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:10364 +msgid "Using SDL" +msgstr "使用 SDL" + +#. (itstool) path: sect1/para +#: book.translate.xml:10366 +msgid "" +"USE_SDL is used to autoconfigure the dependencies for " +"ports which use an SDL based library like devel/" +"sdl12 and graphics/sdl_image." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:10371 +msgid "These SDL libraries for version 1.2 are recognized:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10375 +msgid "sdl: devel/sdl12" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10379 +msgid "console: devel/sdl_console" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10383 +msgid "gfx: graphics/sdl_gfx" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10387 +msgid "image: graphics/sdl_image" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10391 +msgid "mixer: audio/sdl_mixer" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10395 +msgid "mm: devel/sdlmm" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10399 +msgid "net: net/sdl_net" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10403 +msgid "pango: x11-toolkits/sdl_pango" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10407 +msgid "sound: audio/sdl_sound" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10411 +msgid "ttf: graphics/sdl_ttf" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:10415 +msgid "These SDL libraries for version 2.0 are recognized:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10419 +msgid "sdl: devel/sdl20" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10423 +msgid "gfx: graphics/sdl2_gfx" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10427 +msgid "image: graphics/sdl2_image" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10431 +msgid "mixer: audio/sdl2_mixer" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10435 +msgid "net: net/sdl2_net" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10439 +msgid "ttf: graphics/sdl2_ttf" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:10443 +msgid "" +"Therefore, if a port has a dependency on net/sdl_net and audio/sdl_mixer, the syntax " +"will be:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:10448 +#, no-wrap +msgid "USE_SDL=\tnet mixer" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:10450 +msgid "" +"The dependency devel/sdl12, which is " +"required by net/sdl_net and audio/sdl_mixer, is automatically added as well." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:10456 +msgid "" +"Using USE_SDL with entries for SDL 1.2, it will " +"automatically:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10461 +msgid "" +"Add a dependency on sdl12-config to " +"BUILD_DEPENDS" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10467 +msgid "" +"Add the variable SDL_CONFIG to CONFIGURE_ENV" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10472 book.translate.xml:10493 +msgid "" +"Add the dependencies of the selected libraries to LIB_DEPENDS" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:10477 +msgid "" +"Using USE_SDL with entries for SDL 2.0, it will " +"automatically:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10482 +msgid "" +"Add a dependency on sdl2-config to " +"BUILD_DEPENDS" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:10488 +msgid "" +"Add the variable SDL2_CONFIG to CONFIGURE_ENV" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:10500 +msgid "Using wxWidgets" +msgstr "使用 wxWidgets" + +#. (itstool) path: sect1/para +#: book.translate.xml:10502 +msgid "" +"This section describes the status of the wxWidgets libraries in the ports tree and its integration with the ports " +"system." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:10509 +msgid "" +"There are many versions of the wxWidgets " +"libraries which conflict between them (install files under the same name). " +"In the ports tree this problem has been solved by installing each version " +"under a different name using version number suffixes." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:10516 +msgid "" +"The obvious disadvantage of this is that each application has to be modified " +"to find the expected version. Fortunately, most of the applications call the " +"wx-config script to determine the necessary compiler and " +"linker flags. The script is named differently for every available version. " +"Majority of applications respect an environment variable, or accept a " +"configure argument, to specify which wx-config script to " +"call. Otherwise they have to be patched." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:10529 book.translate.xml:11107 +msgid "Version Selection" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:10531 +msgid "" +"To make the port use a specific version of wxWidgets there are two variables available for defining (if only one is " +"defined the other will be set to a default value):" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10537 +msgid "Variables to Select wxWidgets Versions" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10545 book.translate.xml:12983 +msgid "Default value" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10551 +msgid "USE_WX" +msgstr "USE_WX" + +#. (itstool) path: row/entry +#: book.translate.xml:10552 +msgid "List of versions the port can use" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10553 +msgid "All available versions" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10557 +msgid "USE_WX_NOT" +msgstr "USE_WX_NOT" + +#. (itstool) path: row/entry +#: book.translate.xml:10558 +msgid "List of versions the port cannot use" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10559 +msgid "None" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:10565 +msgid "" +"The available wxWidgets versions and the " +"corresponding ports in the tree are:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10570 +msgid "Available wxWidgets Versions" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10576 +msgid "Version" +msgstr "版本" + +#. (itstool) path: row/entry +#: book.translate.xml:10577 +msgid "Port" +msgstr "Port" + +#. (itstool) path: row/entry +#: book.translate.xml:10583 book.translate.xml:10628 book.translate.xml:10726 +msgid "2.4" +msgstr "2.4" + +#. (itstool) path: row/entry +#: book.translate.xml:10584 +msgid "x11-toolkits/wxgtk24" +msgstr "x11-toolkits/wxgtk24" + +#. (itstool) path: row/entry +#: book.translate.xml:10588 book.translate.xml:10732 +msgid "2.6" +msgstr "2.6" + +#. (itstool) path: row/entry +#: book.translate.xml:10589 +msgid "x11-toolkits/wxgtk26" +msgstr "x11-toolkits/wxgtk26" + +#. (itstool) path: row/entry +#: book.translate.xml:10593 +msgid "2.8" +msgstr "2.8" + +#. (itstool) path: row/entry +#: book.translate.xml:10594 +msgid "x11-toolkits/wxgtk28" +msgstr "x11-toolkits/wxgtk28" + +#. (itstool) path: note/para +#: book.translate.xml:10601 +msgid "" +"The versions starting from 2.5 also come in Unicode " +"version and are installed by a slave port named like the normal one plus a " +"-unicode suffix, but this can be handled with variables " +"(see )." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:10609 +msgid "" +"The variables in can be set to one or " +"more of these combinations separated by spaces:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10614 +msgid "wxWidgets Version Specifications" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10621 +msgid "Example" +msgstr "範例" + +#. (itstool) path: row/entry +#: book.translate.xml:10627 +msgid "Single version" +msgstr "單一版本" + +#. (itstool) path: row/entry +#: book.translate.xml:10632 +msgid "Ascending range" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10633 +msgid "2.4+" +msgstr "2.4+" + +#. (itstool) path: row/entry +#: book.translate.xml:10637 +msgid "Descending range" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10638 +msgid "2.6-" +msgstr "2.6-" + +#. (itstool) path: row/entry +#: book.translate.xml:10642 +msgid "Full range (must be ascending)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10643 book.translate.xml:10720 +msgid "2.4-2.6" +msgstr "2.4-2.6" + +#. (itstool) path: sect2/para +#: book.translate.xml:10649 +msgid "" +"There are also some variables to select the preferred versions from the " +"available ones. They can be set to a list of versions, the first ones will " +"have higher priority." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10655 +msgid "" +"Variables to Select Preferred wxWidgets Versions" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10662 book.translate.xml:10854 +msgid "Designed for" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10668 +msgid "WANT_WX_VER" +msgstr "WANT_WX_VER" + +#. (itstool) path: row/entry +#: book.translate.xml:10669 book.translate.xml:10863 book.translate.xml:10870 +msgid "the port" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10673 +msgid "WITH_WX_VER" +msgstr "WITH_WX_VER" + +#. (itstool) path: row/entry +#: book.translate.xml:10674 book.translate.xml:10876 book.translate.xml:10884 +msgid "the user" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:10684 +msgid "" +"There are other applications that, while not being wxWidgets libraries, are related to them. These applications can be " +"specified in WX_COMPS. These components are available:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10691 +msgid "Available wxWidgets Components" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10699 +msgid "Version restriction" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10705 book.translate.xml:10795 +msgid "wx" +msgstr "wx" + +#. (itstool) path: row/entry +#: book.translate.xml:10706 +msgid "main library" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10707 +msgid "none" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10711 book.translate.xml:10800 +msgid "contrib" +msgstr "contrib" + +#. (itstool) path: row/entry +#: book.translate.xml:10712 +msgid "contributed libraries" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10713 +msgid "none" +msgstr "none" + +#. (itstool) path: row/entry +#. (itstool) path: sect1/title +#: book.translate.xml:10717 book.translate.xml:10805 book.translate.xml:16817 +msgid "python" +msgstr "python" + +#. (itstool) path: row/entry +#: book.translate.xml:10718 +msgid "" +"wxPython (Python " +"bindings)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10724 book.translate.xml:10810 +msgid "mozilla" +msgstr "mozilla" + +#. (itstool) path: row/entry +#: book.translate.xml:10725 +msgid "wxMozilla" +msgstr "wxMozilla" + +#. (itstool) path: row/entry +#: book.translate.xml:10730 book.translate.xml:10815 +msgid "svg" +msgstr "svg" + +#. (itstool) path: row/entry +#: book.translate.xml:10731 +msgid "wxSVG" +msgstr "wxSVG" + +#. (itstool) path: sect2/para +#: book.translate.xml:10738 +msgid "" +"The dependency type can be selected for each component by adding a suffix " +"separated by a semicolon. If not present then a default type will be used " +"(see ). These types are available:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10745 +msgid "Available wxWidgets Dependency Types" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10758 +msgid "build" +msgstr "build" + +#. (itstool) path: row/entry +#: book.translate.xml:10759 +msgid "" +"Component is required for building, equivalent to BUILD_DEPENDS" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10764 book.translate.xml:10806 +msgid "run" +msgstr "run" + +#. (itstool) path: row/entry +#: book.translate.xml:10765 +msgid "" +"Component is required for running, equivalent to RUN_DEPENDS" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10770 book.translate.xml:10796 book.translate.xml:10801 +#: book.translate.xml:10811 book.translate.xml:10816 +msgid "lib" +msgstr "lib" + +#. (itstool) path: row/entry +#: book.translate.xml:10771 +msgid "" +"Component is required for building and running, equivalent to " +"LIB_DEPENDS" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:10778 +msgid "The default values for the components are detailed in this table:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10782 +msgid "Default wxWidgets Dependency Types" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10789 +msgid "Dependency type" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:10823 +msgid "Selecting wxWidgets Components" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:10826 +msgid "" +"This fragment corresponds to a port which uses wxWidgets version 2.4 and its contributed libraries." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:10831 +#, no-wrap +msgid "" +"USE_WX=\t\t2.4\n" +"WX_COMPS=\twx contrib" +msgstr "" +"USE_WX=\t\t2.4\n" +"WX_COMPS=\twx contrib" + +#. (itstool) path: sect2/title +#: book.translate.xml:10837 +msgid "Unicode" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:10839 +msgid "" +"The wxWidgets library supports Unicode since " +"version 2.5. In the ports tree both versions are " +"available and can be selected with these variables:" +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10845 +msgid "" +"Variables to Select Unicode in wxWidgets Versions" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10860 book.translate.xml:10988 +msgid "WX_UNICODE" +msgstr "WX_UNICODE" + +#. (itstool) path: row/entry +#: book.translate.xml:10861 +msgid "The port works only with the Unicode version" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10867 +msgid "WANT_UNICODE" +msgstr "WANT_UNICODE" + +#. (itstool) path: row/entry +#: book.translate.xml:10868 +msgid "The port works with both versions but prefers the Unicode one" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10874 +msgid "WITH_UNICODE" +msgstr "WITH_UNICODE" + +#. (itstool) path: row/entry +#: book.translate.xml:10875 +msgid "The port will use the Unicode version" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10880 +msgid "WITHOUT_UNICODE" +msgstr "WITHOUT_UNICODE" + +#. (itstool) path: row/entry +#: book.translate.xml:10881 +msgid "" +"The port will use the normal version if supported (when WX_UNICODE is not defined)" +msgstr "" + +#. (itstool) path: warning/para +#: book.translate.xml:10891 +msgid "" +"Do not use WX_UNICODE for ports that can use both Unicode " +"and normal versions. If the port needs to use Unicode by default, define " +"WANT_UNICODE instead." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:10899 +msgid "Detecting Installed Versions" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:10901 +msgid "" +"To detect an installed version, define WANT_WX. If it is " +"not set to a specific version then the components will have a version " +"suffix. HAVE_WX will be filled after detection." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:10908 +msgid "" +"Detecting Installed wxWidgets Versions and " +"Components" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:10912 +msgid "" +"This fragment can be used in a port that uses wxWidgets if it is installed, or an option is selected." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:10916 +#, no-wrap +msgid "" +"WANT_WX=\tyes\n" +"\n" +".include <bsd.port.pre.mk>\n" +"\n" +".if defined(WITH_WX) || !empty(PORT_OPTIONS:MWX) || !empty(HAVE_WX:Mwx-2.4)\n" +"USE_WX=\t\t\t2.4\n" +"CONFIGURE_ARGS+=\t--enable-wx\n" +".endif" +msgstr "" +"WANT_WX=\tyes\n" +"\n" +".include <bsd.port.pre.mk>\n" +"\n" +".if defined(WITH_WX) || !empty(PORT_OPTIONS:MWX) || !empty(HAVE_WX:Mwx-2.4)\n" +"USE_WX=\t\t\t2.4\n" +"CONFIGURE_ARGS+=\t--enable-wx\n" +".endif" + +#. (itstool) path: example/para +#: book.translate.xml:10925 +msgid "" +"This fragment can be used in a port that enables wxPython support if it is installed or if an option is selected, in " +"addition to wxWidgets, both version 2.6." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:10931 +#, no-wrap +msgid "" +"USE_WX=\t\t2.6\n" +"WX_COMPS=\twx\n" +"WANT_WX=\t2.6\n" +"\n" +".include <bsd.port.pre.mk>\n" +"\n" +".if defined(WITH_WXPYTHON) || !empty(PORT_OPTIONS:MWXPYTHON) || " +"!empty(HAVE_WX:Mpython)\n" +"WX_COMPS+=\t\tpython\n" +"CONFIGURE_ARGS+=\t--enable-wxpython\n" +".endif" +msgstr "" +"USE_WX=\t\t2.6\n" +"WX_COMPS=\twx\n" +"WANT_WX=\t2.6\n" +"\n" +".include <bsd.port.pre.mk>\n" +"\n" +".if defined(WITH_WXPYTHON) || !empty(PORT_OPTIONS:MWXPYTHON) || " +"!empty(HAVE_WX:Mpython)\n" +"WX_COMPS+=\t\tpython\n" +"CONFIGURE_ARGS+=\t--enable-wxpython\n" +".endif" + +#. (itstool) path: sect2/title +#: book.translate.xml:10945 book.translate.xml:11120 +msgid "Defined Variables" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:10947 +msgid "" +"These variables are available in the port (after defining one from )." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:10952 +msgid "" +"Variables Defined for Ports That Use wxWidgets" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10965 +msgid "WX_CONFIG" +msgstr "WX_CONFIG" + +#. (itstool) path: row/entry +#: book.translate.xml:10966 +msgid "" +"The path to the wxWidgets wx-config script (with different name)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10973 +msgid "WXRC_CMD" +msgstr "WXRC_CMD" + +#. (itstool) path: row/entry +#: book.translate.xml:10974 +msgid "" +"The path to the wxWidgets wxrc " +"program (with different name)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10981 +msgid "WX_VERSION" +msgstr "WX_VERSION" + +#. (itstool) path: row/entry +#: book.translate.xml:10982 +msgid "" +"The wxWidgets version that is going to be used " +"(for example, 2.6)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:10989 +msgid "If not defined but Unicode is going to be used then it will be defined" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:10998 +msgid "Processing in bsd.port.pre.mk" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:11001 +msgid "" +"Define WX_PREMK to be able to use the variables right " +"after including bsd.port.pre.mk." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:11006 +msgid "" +"When defining WX_PREMK, then the version, dependencies, " +"components and defined variables will not change if modifying the " +"wxWidgets port variables after including bsd.port.pre.mk." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:11015 +msgid "Using wxWidgets Variables in Commands" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:11018 +msgid "" +"This fragment illustrates the use of WX_PREMK by running " +"the wx-config script to obtain the full version string, " +"assign it to a variable and pass it to the program." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:11024 +#, no-wrap +msgid "" +"USE_WX=\t\t2.4\n" +"WX_PREMK=\tyes\n" +"\n" +".include <bsd.port.pre.mk>\n" +"\n" +".if exists(${WX_CONFIG})\n" +"VER_STR!=\t${WX_CONFIG} --release\n" +"\n" +"PLIST_SUB+=\tVERSION=\"${VER_STR}\"\n" +".endif" +msgstr "" +"USE_WX=\t\t2.4\n" +"WX_PREMK=\tyes\n" +"\n" +".include <bsd.port.pre.mk>\n" +"\n" +".if exists(${WX_CONFIG})\n" +"VER_STR!=\t${WX_CONFIG} --release\n" +"\n" +"PLIST_SUB+=\tVERSION=\"${VER_STR}\"\n" +".endif" + +#. (itstool) path: note/para +#: book.translate.xml:11037 +msgid "" +"The wxWidgets variables can be safely used in " +"commands when they are inside targets without the need of WX_PREMK." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:11044 +msgid "Additional configure Arguments" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:11047 +msgid "" +"Some GNU configure scripts cannot find " +"wxWidgets with just the WX_CONFIG environment variable set, requiring additional arguments. " +"WX_CONF_ARGS can be used for provide them." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:11055 +msgid "Legal Values for WX_CONF_ARGS" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11061 +msgid "Possible value" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11062 +msgid "Resulting argument" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11068 +msgid "absolute" +msgstr "absolute" + +#. (itstool) path: row/entry +#: book.translate.xml:11069 +msgid "--with-wx-config=${WX_CONFIG}" +msgstr "--with-wx-config=${WX_CONFIG}" + +#. (itstool) path: row/entry +#: book.translate.xml:11073 +msgid "relative" +msgstr "relative" + +#. (itstool) path: row/entry +#: book.translate.xml:11074 +msgid "" +"--with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T}" +msgstr "" +"--with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T}" + +#. (itstool) path: sect1/title +#: book.translate.xml:11084 +msgid "Using Lua" +msgstr "使用 Lua" + +#. (itstool) path: sect1/para +#: book.translate.xml:11086 +msgid "" +"This section describes the status of the Lua " +"libraries in the ports tree and its integration with the ports system." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:11093 +msgid "" +"There are many versions of the Lua libraries and " +"corresponding interpreters, which conflict between them (install files under " +"the same name). In the ports tree this problem has been solved by installing " +"each version under a different name using version number suffixes." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:11100 +msgid "" +"The obvious disadvantage of this is that each application has to be modified " +"to find the expected version. But it can be solved by adding some additional " +"flags to the compiler and linker." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:11109 +msgid "" +"A port using Lua only needs to have this line:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:11112 +#, no-wrap +msgid "USES=\tlua" +msgstr "USES=\tlua" + +#. (itstool) path: sect2/para +#: book.translate.xml:11114 +msgid "" +"If a specific version of Lua is needed, instructions on how to select it are " +"given in the USES=lua " +"part of ." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:11122 +msgid "These variables are available in the port." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:11125 +msgid "Variables Defined for Ports That Use Lua" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11138 +msgid "LUA_VER" +msgstr "LUA_VER" + +#. (itstool) path: row/entry +#: book.translate.xml:11139 +msgid "" +"The Lua version that is going to be used (for " +"example, 5.1)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11145 +msgid "LUA_VER_STR" +msgstr "LUA_VER_STR" + +#. (itstool) path: row/entry +#: book.translate.xml:11146 +msgid "" +"The Lua version without the dots (for example, " +"51)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11152 +msgid "LUA_PREFIX" +msgstr "LUA_PREFIX" + +#. (itstool) path: row/entry +#: book.translate.xml:11153 +msgid "" +"The prefix where Lua (and components) is installed" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11158 +msgid "LUA_SUBDIR" +msgstr "LUA_SUBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:11159 +msgid "" +"The directory under ${PREFIX}/bin, ${PREFIX}/" +"share and ${PREFIX}/lib where " +"Lua is installed" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11167 +msgid "LUA_INCDIR" +msgstr "LUA_INCDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:11168 +msgid "" +"The directory where Lua and tolua header files are installed" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11175 +msgid "LUA_LIBDIR" +msgstr "LUA_LIBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:11176 +msgid "" +"The directory where Lua and tolua libraries are installed" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11183 +msgid "LUA_MODLIBDIR" +msgstr "LUA_MODLIBDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:11184 +msgid "" +"The directory where Lua module libraries " +"(.so) are installed" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11190 +msgid "LUA_MODSHAREDIR" +msgstr "LUA_MODSHAREDIR" + +#. (itstool) path: row/entry +#: book.translate.xml:11191 +msgid "" +"The directory where Lua modules (.lua) are installed" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11197 +msgid "LUA_PKGNAMEPREFIX" +msgstr "LUA_PKGNAMEPREFIX" + +#. (itstool) path: row/entry +#: book.translate.xml:11198 +msgid "The package name prefix used by Lua modules" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11203 +msgid "LUA_CMD" +msgstr "LUA_CMD" + +#. (itstool) path: row/entry +#: book.translate.xml:11204 +msgid "The path to the Lua interpreter" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11209 +msgid "LUAC_CMD" +msgstr "LUAC_CMD" + +#. (itstool) path: row/entry +#: book.translate.xml:11210 +msgid "The path to the Lua compiler" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:11220 +msgid "Using iconv" +msgstr "使用 iconv" + +#. (itstool) path: sect1/para +#: book.translate.xml:11222 +msgid "" +"After 2013-10-08 (254273), FreeBSD  10-CURRENT and " +"newer versions have a native iconv in the operating " +"system. On earlier versions, converters/libiconv was used as a dependency." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11228 +msgid "" +"For software that needs iconv, define " +"USES=iconv. FreeBSD versions before 10-CURRENT on " +"2013-08-13 (254273) do not have a native " +"iconv. On these earlier versions, a dependency on " +"converters/libiconv will be added " +"automatically." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11236 +msgid "" +"When a port defines USES=iconv, these variables will be " +"available:" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11243 +msgid "Variable name" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11244 +msgid "Purpose" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11245 +msgid "" +"Value before FreeBSD 10-CURRENT 254273 (2013-08-13)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11247 +msgid "" +"Value after FreeBSD 10-CURRENT 254273 (2013-08-13)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11254 +msgid "ICONV_CMD" +msgstr "ICONV_CMD" + +#. (itstool) path: row/entry +#: book.translate.xml:11255 +msgid "Directory where the iconv binary resides" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11257 +msgid "${LOCALBASE}/bin/iconv" +msgstr "${LOCALBASE}/bin/iconv" + +#. (itstool) path: row/entry +#: book.translate.xml:11258 +msgid "/usr/bin/iconv" +msgstr "/usr/bin/iconv" + +#. (itstool) path: row/entry +#: book.translate.xml:11262 +msgid "ICONV_LIB" +msgstr "ICONV_LIB" + +#. (itstool) path: row/entry +#: book.translate.xml:11263 +msgid "" +"ld argument to link to libiconv (if " +"needed)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11265 +msgid "-liconv" +msgstr "-liconv" + +#. (itstool) path: row/entry +#: book.translate.xml:11270 +msgid "ICONV_PREFIX" +msgstr "ICONV_PREFIX" + +#. (itstool) path: row/entry +#: book.translate.xml:11271 +msgid "" +"Directory where the iconv implementation resides (useful " +"for configure scripts)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11274 +msgid "${LOCALBASE}" +msgstr "${LOCALBASE}" + +#. (itstool) path: row/entry +#: book.translate.xml:11275 +msgid "/usr" +msgstr "/usr" + +#. (itstool) path: row/entry +#: book.translate.xml:11279 +msgid "ICONV_CONFIGURE_ARG" +msgstr "ICONV_CONFIGURE_ARG" + +#. (itstool) path: row/entry +#: book.translate.xml:11280 book.translate.xml:11288 +msgid "Preconstructed configure argument for configure scripts" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11282 +msgid "--with-libiconv-prefix=${LOCALBASE}" +msgstr "--with-libiconv-prefix=${LOCALBASE}" + +#. (itstool) path: row/entry +#: book.translate.xml:11287 +msgid "ICONV_CONFIGURE_BASE" +msgstr "ICONV_CONFIGURE_BASE" + +#. (itstool) path: row/entry +#: book.translate.xml:11290 +msgid "--with-libiconv=${LOCALBASE}" +msgstr "--with-libiconv=${LOCALBASE}" + +#. (itstool) path: sect1/para +#: book.translate.xml:11297 +msgid "" +"These two examples automatically populate the variables with the correct " +"value for systems using converters/libiconv " +"or the native iconv respectively:" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:11303 +msgid "Simple iconv Usage" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:11305 +#, no-wrap +msgid "" +"USES=\t\ticonv\n" +"LDFLAGS+=\t-L${LOCALBASE}/lib ${ICONV_LIB}" +msgstr "" +"USES=\t\ticonv\n" +"LDFLAGS+=\t-L${LOCALBASE}/lib ${ICONV_LIB}" + +#. (itstool) path: example/title +#: book.translate.xml:11310 +msgid "iconv Usage with configure" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:11313 +#, no-wrap +msgid "" +"USES=\t\ticonv\n" +"CONFIGURE_ARGS+=${ICONV_CONFIGURE_ARG}" +msgstr "" +"USES=\t\ticonv\n" +"CONFIGURE_ARGS+=${ICONV_CONFIGURE_ARG}" + +#. (itstool) path: sect1/para +#: book.translate.xml:11317 +msgid "" +"As shown above, ICONV_LIB is empty when a native " +"iconv is present. This can be used to detect the native " +"iconv and respond appropriately." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11322 +msgid "" +"Sometimes a program has an ld argument or search path " +"hardcoded in a Makefile or configure script. This " +"approach can be used to solve that problem:" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:11328 +msgid "Fixing Hardcoded -liconv" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:11330 +#, no-wrap +msgid "" +"USES=\t\ticonv\n" +"\n" +"post-patch:\n" +"\t@${REINPLACE_CMD} -e 's/-liconv/${ICONV_LIB}/' ${WRKSRC}/Makefile" +msgstr "" +"USES=\t\ticonv\n" +"\n" +"post-patch:\n" +"\t@${REINPLACE_CMD} -e 's/-liconv/${ICONV_LIB}/' ${WRKSRC}/Makefile" + +#. (itstool) path: sect1/para +#: book.translate.xml:11336 +msgid "" +"In some cases it is necessary to set alternate values or perform operations " +"depending on whether there is a native iconv. " +"bsd.port.pre.mk must be included before testing the " +"value of ICONV_LIB:" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:11343 +msgid "Checking for Native iconv Availability" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:11346 +#, no-wrap +msgid "" +"USES=\t\ticonv\n" +"\n" +".include <bsd.port.pre.mk>\n" +"\n" +"post-patch:\n" +".if empty(ICONV_LIB)\n" +"\t# native iconv detected\n" +"\t@${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.sh\n" +".endif\n" +"\n" +".include <bsd.port.post.mk>" +msgstr "" +"USES=\t\ticonv\n" +"\n" +".include <bsd.port.pre.mk>\n" +"\n" +"post-patch:\n" +".if empty(ICONV_LIB)\n" +"\t# native iconv detected\n" +"\t@${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.sh\n" +".endif\n" +"\n" +".include <bsd.port.post.mk>" + +#. (itstool) path: sect1/title +#: book.translate.xml:11361 +msgid "Using Xfce" +msgstr "使用 Xfce" + +#. (itstool) path: sect1/para +#: book.translate.xml:11363 +msgid "" +"Ports that need Xfce libraries or applications " +"set USES=xfce." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11366 +msgid "" +"Specific Xfce library and application " +"dependencies are set with values assigned to USE_XFCE. " +"They are defined in /usr/ports/Mk/Uses/xfce.mk. The " +"possible values are:" +msgstr "" + +#. (itstool) path: variablelist/title +#: book.translate.xml:11373 +msgid "Values of USE_XFCE" +msgstr "USE_XFCE 的值" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:11376 +msgid "garcon" +msgstr "garcon" + +#. (itstool) path: listitem/para +#: book.translate.xml:11379 +msgid "sysutils/garcon" +msgstr "sysutils/garcon" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:11384 +msgid "libexo" +msgstr "libexo" + +#. (itstool) path: listitem/para +#: book.translate.xml:11387 +msgid "x11/libexo" +msgstr "x11/libexo" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:11393 +msgid "libgui" +msgstr "libgui" + +#. (itstool) path: listitem/para +#: book.translate.xml:11396 +msgid "x11-toolkits/libxfce4gui" +msgstr "x11-toolkits/libxfce4gui" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:11401 +msgid "libmenu" +msgstr "libmenu" + +#. (itstool) path: listitem/para +#: book.translate.xml:11404 +msgid "x11/libxfce4menu" +msgstr "x11/libxfce4menu" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:11409 +msgid "libutil" +msgstr "libutil" + +#. (itstool) path: listitem/para +#: book.translate.xml:11412 +msgid "x11/libxfce4util" +msgstr "x11/libxfce4util" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:11417 +msgid "panel" +msgstr "panel" + +#. (itstool) path: listitem/para +#: book.translate.xml:11420 +msgid "x11-wm/xfce4-panel" +msgstr "x11-wm/xfce4-panel" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:11425 +msgid "thunar" +msgstr "thunar" + +#. (itstool) path: listitem/para +#: book.translate.xml:11428 +msgid "x11-fm/thunar" +msgstr "x11-fm/thunar" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:11433 +msgid "xfconf" +msgstr "xfconf" + +#. (itstool) path: listitem/para +#: book.translate.xml:11436 +msgid "x11/xfce4-conf" +msgstr "x11/xfce4-conf" + +#. (itstool) path: example/title +#: book.translate.xml:11442 +msgid "USES=xfce Example" +msgstr "USES=xfce 範例" + +#. (itstool) path: example/programlisting +#: book.translate.xml:11444 +#, no-wrap +msgid "" +"USES=\t\txfce\n" +"USE_XFCE=\tlibmenu" +msgstr "" +"USES=\t\txfce\n" +"USE_XFCE=\tlibmenu" + +#. (itstool) path: example/title +#: book.translate.xml:11449 +msgid "Using Xfce's Own GTK3 Widgets" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:11451 +msgid "" +"In this example, the ported application uses the GTK3-specific widgets x11/libxfce4menu and x11/xfce4-conf." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:11454 +#, no-wrap +msgid "" +"USES=\t\txfce:gtk3\n" +"USE_XFCE=\tlibmenu xfconf" +msgstr "" +"USES=\t\txfce:gtk3\n" +"USE_XFCE=\tlibmenu xfconf" + +#. (itstool) path: tip/para +#: book.translate.xml:11459 +msgid "" +"Xfce components included this way will " +"automatically include any dependencies they need. It is no longer necessary " +"to specify the entire list. If the port only needs x11-wm/xfce4-panel, use:" +msgstr "" + +#. (itstool) path: tip/programlisting +#: book.translate.xml:11464 +#, no-wrap +msgid "" +"USES=\t\txfce\n" +"USE_XFCE=\tpanel" +msgstr "" +"USES=\t\txfce\n" +"USE_XFCE=\tpanel" + +#. (itstool) path: tip/para +#: book.translate.xml:11467 +msgid "" +"There is no need to list the components x11-wm/xfce4-" +"panel needs itself like this:" +msgstr "" + +#. (itstool) path: tip/programlisting +#: book.translate.xml:11470 +#, no-wrap +msgid "" +"USES=\t\txfce\n" +"USE_XFCE=\tlibexo libmenu libutil panel" +msgstr "" +"USES=\t\txfce\n" +"USE_XFCE=\tlibexo libmenu libutil panel" + +#. (itstool) path: tip/para +#: book.translate.xml:11473 +msgid "" +"However, Xfce components and non-" +"Xfce dependencies of the port must be included " +"explicitly. Do not count on an Xfce component to " +"provide a sub-dependency other than itself for the main port." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:11482 +msgid "Using Mozilla" +msgstr "使用 Mozilla" + +#. (itstool) path: table/title +#: book.translate.xml:11485 +msgid "Variables for Ports That Use Mozilla" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11491 +msgid "USE_GECKO" +msgstr "USE_GECKO" + +#. (itstool) path: row/entry +#: book.translate.xml:11492 +msgid "" +"Gecko backend the port can handle. Possible values: libxul (libxul.so), seamonkey " +"(libgtkembedmoz.so, deprecated, must not be used any " +"more)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11501 +msgid "USE_FIREFOX" +msgstr "USE_FIREFOX" + +#. (itstool) path: row/entry +#: book.translate.xml:11502 +msgid "" +"The port requires Firefox as a runtime dependency. Possible values: " +"yes (get default version), 40, " +"36, 35. Default dependency is on " +"version 40." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11511 +msgid "USE_FIREFOX_BUILD" +msgstr "USE_FIREFOX_BUILD" + +#. (itstool) path: row/entry +#: book.translate.xml:11512 +msgid "" +"The port requires Firefox as a buildtime dependency. Possible values: see " +"USE_FIREFOX. This automatically sets USE_FIREFOX and assigns the same value." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11519 +msgid "USE_SEAMONKEY" +msgstr "USE_SEAMONKEY" + +#. (itstool) path: row/entry +#: book.translate.xml:11520 +msgid "" +"The port requires SeaMonkey as a runtime dependency. Possible values: " +"yes (get default version), 20, " +"11 (deprecated, must not be used any more). Default " +"dependency is on version 20." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11529 +msgid "USE_SEAMONKEY_BUILD" +msgstr "USE_SEAMONKEY_BUILD" + +#. (itstool) path: row/entry +#: book.translate.xml:11530 +msgid "" +"The port requires SeaMonkey as a buildtime dependency. Possible values: see " +"USE_SEAMONKEY. This automatically sets USE_SEAMONKEY and assigns the same " +"value." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11537 +msgid "USE_THUNDERBIRD" +msgstr "USE_THUNDERBIRD" + +#. (itstool) path: row/entry +#: book.translate.xml:11538 +msgid "" +"The port requires Thunderbird as a runtime dependency. Possible values: " +"yes (get default version), 31, " +"30 (deprecated, must not be used any more). Default " +"dependency is on version 31." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11547 +msgid "USE_THUNDERBIRD_BUILD" +msgstr "USE_THUNDERBIRD_BUILD" + +#. (itstool) path: row/entry +#: book.translate.xml:11548 +msgid "" +"The port requires Thunderbird as a buildtime dependency. Possible values: " +"see USE_THUNDERBIRD. This automatically sets USE_THUNDERBIRD and assigns the " +"same value." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11557 +msgid "" +"A complete list of available variables can be found in /usr/ports/" +"Mk/bsd.gecko.mk." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:11562 +msgid "Using Databases" +msgstr "使用 Databases" + +#. (itstool) path: table/title +#: book.translate.xml:11565 +msgid "Variables for Ports Using Databases" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11577 +msgid "USE_BDB" +msgstr "USE_BDB" + +#. (itstool) path: row/entry +#: book.translate.xml:11578 +msgid "" +"If variable is set to yes, add dependency on databases/db5 port. The variable may also be set to " +"values: 48, 5 or 6. It is possible to declare a range of acceptable values, " +"USE_BDB=48+ will find the highest installed version, and " +"fall back to 4.8 if nothing else is installed. WANT_BDB_VER will always build this port with a specific version of the Berkely " +"DB. INVALID_BDB_VER can be used to specify a version that " +"cannot be used." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11593 +msgid "USE_MYSQL" +msgstr "USE_MYSQL" + +#. (itstool) path: row/entry +#: book.translate.xml:11594 +msgid "" +"If the variable is set to yes, add a dependency on the " +"databases/mysql56-client port. An " +"associated variable, WANT_MYSQL_VER, may be set to values " +"such as 51, 55, or 60. Additionally to specify use of Percona, use 56p, or " +"for MariaDB, use 53m, 55m or 100m." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11604 +msgid "USE_PGSQL" +msgstr "USE_PGSQL" + +#. (itstool) path: row/entry +#: book.translate.xml:11605 +msgid "" +"Retired in favor of USES=pgsql." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11609 +msgid "USE_SQLITE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:11610 +msgid "" +"If set to yes, add dependency on databases/sqlite3 port. The variable may also be set to 3 or 2, " +"to add a dependency on 3.x or 2.x, respectively." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11620 +msgid "" +"More details are available in bsd.database.mk." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:11624 +msgid "Starting and Stopping Services (rc Scripts)" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11627 +msgid "" +"rc.d scripts are used to start services on system " +"startup, and to give administrators a standard way of stopping, starting and " +"restarting the service. Ports integrate into the system rc.d framework. Details on its usage can be found in the rc.d Handbook chapter. Detailed explanation of the available " +"commands is provided in rc8 and " +"rc.subr8. Finally, there is an article on practical aspects of rc.d scripting." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11639 +msgid "" +"With a mythical port called doorman, which needs " +"to start a doormand daemon. Add the following to " +"the Makefile:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:11644 +#, no-wrap +msgid "USE_RC_SUBR=\tdoormand" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11646 +msgid "" +"Multiple scripts may be listed and will be installed. Scripts must be placed " +"in the files subdirectory and a .in " +"suffix must be added to their filename. Standard SUB_LIST " +"expansions will be ran against this file. Use of the %%PREFIX%% and %%LOCALBASE%% expansions is strongly " +"encouraged as well. More on SUB_LIST in the relevant section." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11657 +msgid "" +"As of FreeBSD 6.1-RELEASE, local rc.d scripts " +"(including those installed by ports) are included in the overall " +"rcorder8 of the base system." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11662 +msgid "" +"An example simple rc.d script to start the doormand " +"daemon:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:11665 +#, no-wrap +msgid "" +"#!/bin/sh\n" +"\n" +"# $FreeBSD$\n" +"#\n" +"# PROVIDE: doormand\n" +"# REQUIRE: LOGIN\n" +"# KEYWORD: shutdown\n" +"#\n" +"# Add these lines to /etc/rc.conf.local or /etc/rc.conf\n" +"# to enable this service:\n" +"#\n" +"# doormand_enable (bool):\tSet to NO by default.\n" +"#\t\t\t\tSet it to YES to enable doormand.\n" +"# doormand_config (path):\tSet to %%PREFIX%%/etc/<" +"replaceable>doormand/doormand.cf\n" +"#\t\t\t\tby default.\n" +"\n" +". /etc/rc.subr\n" +"\n" +"name=doormand\n" +"rcvar=doormand_enable\n" +"\n" +"load_rc_config $name\n" +"\n" +": ${doormand_enable:=\"NO\"}\n" +": ${doormand_config=\"%%PREFIX%%/etc/" +"doormand/doormand.cf\"}\n" +"\n" +"command=%%PREFIX%%/sbin/${name}\n" +"pidfile=/var/run/${name}.pid\n" +"\n" +"command_args=\"-p $pidfile -f $doormand_config\"\n" +"\n" +"run_rc_command \"$1\"" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11698 +msgid "" +"Unless there is a very good reason to start the service earlier, or it runs " +"as a particular user (other than root), all ports scripts must use:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:11702 +#, no-wrap +msgid "REQUIRE: LOGIN" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11704 +msgid "" +"If the startup script launches a daemon that must be shutdown, the following " +"will trigger a stop of the service on system shutdown:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:11708 +#, no-wrap +msgid "KEYWORD: shutdown" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11710 +msgid "" +"If the script is not starting a persistent service this is not necessary." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11713 +msgid "" +"For optional configuration elements the \"=\" style of default variable " +"assignment is preferable to the \":=\" style here, since the former sets a " +"default value only if the variable is unset, and the latter sets one if the " +"variable is unset or null. A user might very well " +"include something like:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:11720 +#, no-wrap +msgid "doormand_flags=\"\"" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11722 +msgid "" +"in their rc.conf.local, and a variable substitution " +"using \":=\" would inappropriately override the user's intention. The " +"_enable variable is not optional, and must use the \":\" " +"for the default." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:11729 +msgid "Pre-Commit Checklist" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:11731 +msgid "" +"Before contributing a port with an rc.d script, and " +"more importantly, before committing one, please consult this checklist to be " +"sure that it is ready." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:11736 +msgid "" +"The devel/rclint port can check for most of " +"these, but it is not a substitute for proper review." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11742 +msgid "" +"If this is a new file, does it have a .sh extension? If " +"so, that must be changed to just file." +"in since rc.d files may not end with that " +"extension." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11751 +msgid "Does the file have a $FreeBSD$ tag?" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11756 +msgid "" +"Do the name of the file (minus .in), the " +"PROVIDE line, and $name all match? The file name matching PROVIDE " +"makes debugging easier, especially for rcorder8 issues. Matching the " +"file name and $name makes it " +"easier to figure out which variables are relevant in rc.conf[." +"local]. It is also a policy for all new scripts, including those " +"in the base system." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11773 +msgid "" +"Is the REQUIRE line set to LOGIN? This " +"is mandatory for scripts that run as a non-root user. If it runs as root, is " +"there a good reason for it to run prior to LOGIN? If not, " +"it must run after so that local scrips can be loosely grouped to a point in " +"rcorder8 after most everything in the base is already " +"running." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11784 +msgid "" +"Does the script start a persistent service? If so, it must have " +"KEYWORD: shutdown." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11790 +msgid "" +"Make sure there is no KEYWORD: FreeBSD present. This has " +"not been necessary nor desirable for years. It is also an indication that " +"the new script was copy/pasted from an old script, so extra caution must be " +"given to the review." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11799 +msgid "" +"If the script uses an interpreted language like perl, " +"python, or ruby, make certain that " +"command_interpreter is set appropriately, for example, " +"for Perl, by adding PERL=${PERL} to SUB_LIST and using %%PERL%%. Otherwise," +msgstr "" + +#. (itstool) path: step/screen +#: book.translate.xml:11809 +#, no-wrap +msgid "" +"# service name stop<" +"/userinput>" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11811 +msgid "" +"will probably not work properly. See service8 for more information." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11816 +msgid "" +"Have all occurrences of /usr/local been replaced with " +"%%PREFIX%%?" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11822 +msgid "" +"Do the default variable assignments come after load_rc_config?" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11827 +msgid "" +"Are there default assignments to empty strings? They should be removed, but " +"double-check that the option is documented in the comments at the top of the " +"file." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11834 +msgid "Are things that are set in variables actually used in the script?" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11839 +msgid "" +"Are options listed in the default name_flags things that are actually mandatory? If " +"so, they must be in command_args. The " +"option is a red flag (pardon the pun) here, since it is usually the option " +"to “daemonize” the process, and therefore is actually mandatory." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11850 +msgid "" +"name_flags must never be " +"included in command_args (and vice versa, although that " +"error is less common)." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11857 +msgid "" +"Does the script execute any code unconditionally? This is frowned on. " +"Usually these things must be dealt with through a start_precmd." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11864 +msgid "" +"All boolean tests must use the checkyesno function. No " +"hand-rolled tests for [Yy][Ee][Ss], etc." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11871 +msgid "" +"If there is a loop (for example, waiting for something to start) does it " +"have a counter to terminate the loop? We do not want the boot to be stuck " +"forever if there is an error." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:11878 +msgid "" +"Does the script create files or directories that need specific permissions, " +"for example, a pid that needs to be owned by the user " +"that runs the process? Rather than the traditional " +"touch1/chown8/" +"chmod1 routine, consider using install1 with the proper " +"command line arguments to do the whole procedure with one step." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:11892 +msgid "Adding Users and Groups" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11894 +msgid "" +"Some ports require a particular user account to be present, usually for " +"daemons that run as that user. For these ports, choose a unique UID from 50 to 999 and register it in ports/UIDs (for users) and ports/GIDs (for groups). The " +"unique identification should be the same for users and groups." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11901 +msgid "" +"Please include a patch against these two files when requiring a new user or " +"group to be created for the port." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11905 +msgid "" +"Then use USERS and GROUPS in " +"Makefile, and the user will be automatically created " +"when installing the port." +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:11910 +#, no-wrap +msgid "" +"USERS=\tpulse\n" +"GROUPS=\tpulse pulse-access pulse-rt" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11913 +msgid "" +"The current list of reserved UIDs and GIDs can be found in ports/" +"UIDs and ports/GIDs." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:11919 +msgid "Ports That Rely on Kernel Sources" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11921 +msgid "" +"Some ports (such as kernel loadable modules) need the kernel source files so " +"that the port can compile. Here is the correct way to determine if the user " +"has them installed:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:11926 +#, no-wrap +msgid "USES=\tkmod" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11928 +msgid "" +"Apart from this check, the kmod feature takes care of " +"most items that these ports need to take into account." +msgstr "" + +#. (itstool) path: chapter/title +#: book.translate.xml:11943 +msgid "Advanced pkg-plist Practices" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:11946 +msgid "Changing pkg-plist Based on Make Variables" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11949 +msgid "" +"Some ports, particularly the p5- ports, need to change " +"their pkg-plist depending on what options they are " +"configured with (or version of perl, in the case of " +"p5- ports). To make this easy, any instances in " +"pkg-plist of %%OSREL%%, %" +"%PERL_VER%%, and %%PERL_VERSION%% will be " +"substituted appropriately. The value of %%OSREL%% is the " +"numeric revision of the operating system (for example, 4.9). %%PERL_VERSION%% and %%PERL_VER%% is the full version number of perl (for example, " +"5.8.9). Several other %%VARS%% related to port's documentation files are described " +"in the relevant section." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11967 +msgid "" +"To make other substitutions, set PLIST_SUB with a list of " +"VAR=VALUE pairs and instances of %%VAR%% will be substituted with VALUE in " +"pkg-plist." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11975 +msgid "" +"For instance, if a port installs many files in a version-specific " +"subdirectory, use a placeholder for the version so that pkg-plist does not have to be regenerated every time the port is updated. " +"For example:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:11981 +#, no-wrap +msgid "" +"OCTAVE_VERSION=\t${PORTREVISION}\n" +"PLIST_SUB=\tOCTAVE_VERSION=${OCTAVE_VERSION}" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11984 +msgid "" +"in the Makefile and use %%OCTAVE_VERSION%% wherever the version shows up in pkg-plist. " +"When the port is upgraded, it will not be necessary to edit dozens (or in " +"some cases, hundreds) of lines in pkg-plist." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11991 +msgid "" +"If files are installed conditionally on the options set in the port, the " +"usual way of handling it is prefixing pkg-plist lines " +"with a %%OPT%% for lines needed when the option is " +"enabled, or %%NO_OPT%% when the option is disabled, and " +"adding OPTIONS_SUB=yes to the Makefile. See for more information." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:11999 +msgid "" +"For instance, if there are files that are only installed when the " +"X11 option is enabled, and Makefile " +"has:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:12003 +#, no-wrap +msgid "" +"OPTIONS_DEFINE=\tX11\n" +"OPTIONS_SUB=\tyes" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12006 +msgid "" +"In pkg-plist, put %%X11%% in front " +"of the lines only being installed when the option is enabled, like this :" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:12010 +#, no-wrap +msgid "%%X11%%bin/foo-gui" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12012 +msgid "" +"This substitution will be done between the <_:buildtarget-1/> and <_:" +"buildtarget-2/> targets, by reading from PLIST and " +"writing to TMPPLIST (default: WRKDIR/.PLIST." +"mktmp). So if the port builds PLIST on the " +"fly, do so in or before <_:buildtarget-3/>. Also, if the port needs to edit " +"the resulting file, do so in <_:buildtarget-4/> to a file named " +"TMPPLIST." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12024 +msgid "" +"Another way of modifying a port's packing list is based on setting the " +"variables PLIST_FILES and PLIST_DIRS. " +"The value of each variable is regarded as a list of pathnames to write to " +"TMPPLIST along with PLIST " +"contents. While names listed in PLIST_FILES and " +"PLIST_DIRS are subject to %%VAR%% substitution as described above, it is better to " +"use the ${VAR} directly. " +"Except for that, names from PLIST_FILES will appear in " +"the final packing list unchanged, while @dir will be " +"prepended to names from PLIST_DIRS. To take effect, " +"PLIST_FILES and PLIST_DIRS must be set " +"before TMPPLIST is written, that is, in <_:" +"buildtarget-1/> or earlier." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12045 +msgid "" +"From time to time, using OPTIONS_SUB is not enough. In " +"those cases, adding a specific TAG to PLIST_SUB inside the Makefile with a special value of @comment, makes package " +"tools to ignore the line. For instance, if some files are only installed " +"when the X11 option is on and the architecture is " +"i386:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:12055 +#, no-wrap +msgid "" +".include <bsd.port.pre.mk>\n" +"\n" +".if ${PORT_OPTIONS:MX11} && ${ARCH} == \"i386\"\n" +"PLIST_SUB+=\tX11I386=\"\"\n" +".else\n" +"PLIST_SUB+=\tX11I386=\"@comment \"\n" +".endif" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:12066 +msgid "Empty Directories" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12069 +msgid "Cleaning Up Empty Directories" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12071 +msgid "" +"When being de-installed, a port has to remove empty directories it created. " +"Most of these directories are removed automatically by " +"pkg8, but for directories created outside of ${PREFIX}, or empty directories, some more work needs to be done. This is " +"usually accomplished by adding @dir lines for those " +"directories. Subdirectories must be deleted before deleting parent " +"directories." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:12080 +#, no-wrap +msgid "" +"[...]\n" +"@dir /var/games/oneko/saved-games\n" +"@dir /var/games/oneko" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12086 +msgid "Creating Empty Directories" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12088 +msgid "" +"Empty directories created during port installation need special attention. " +"They must be present when the package is created. If they are not created by " +"the port code, create them in the Makefile:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:12093 +#, no-wrap +msgid "" +"post-stage:\n" +"\t@${MKDIR} ${STAGEDIR}${PREFIX}/some/directory" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12096 +msgid "" +"Add the directory to pkg-plist like any other. For " +"example:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:12099 +#, no-wrap +msgid "@dir some/directory" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:12104 +msgid "Configuration Files" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12106 +msgid "" +"If the port installs configuration files to PREFIX/etc " +"(or elsewhere) do not list them in pkg-plist. That will cause pkg delete to remove files " +"that have been carefully edited by the user, and a re-installation will wipe " +"them out." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12114 +msgid "" +"Instead, install sample files with a filename.sample extension. The @sample " +"macro automates this, see for what " +"it does exactly. For each sample file, add a line to pkg-plist:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:12121 +#, no-wrap +msgid "@sample etc/orbit.conf.sample" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12123 +msgid "" +"If there is a very good reason not to install a working configuration file " +"by default, only list the sample filename in pkg-plist, " +"without the @sample followed by a space part, and add a " +"message pointing out that the user " +"must copy and edit the file before the software will work." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:12132 +msgid "" +"When a port installs its configuration in a subdirectory of " +"${PREFIX}/etc, use ETCDIR, which defaults to " +"${PREFIX}/etc/${PORTNAME}, it can be overridden in the " +"ports Makefile if there is a convention for the port to " +"use some other directory. The %%ETCDIR%% macro will be " +"used in its stead in pkg-plist." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:12143 +msgid "" +"The sample configuration files should always have the .sample suffix. If for some historical reason using the standard suffix is " +"not possible, or if the sample files come from some other directory, use " +"this construct:" +msgstr "" + +#. (itstool) path: note/programlisting +#: book.translate.xml:12149 +#, no-wrap +msgid "@sample etc/orbit.conf-dist etc/orbit.conf" +msgstr "" + +#. (itstool) path: note/para +#. (itstool) path: sect2/para +#: book.translate.xml:12151 book.translate.xml:13347 +msgid "or" +msgstr "" + +#. (itstool) path: note/programlisting +#: book.translate.xml:12153 +#, no-wrap +msgid "@sample %%EXAMPLESDIR%%/orbit.conf etc/orbit.conf" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:12155 +msgid "" +"The format is @sample sample-file " +"actual-config-file." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:12162 +msgid "Dynamic Versus Static Package List" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12164 +msgid "" +"A static package list is a package list which is " +"available in the Ports Collection either as pkg-plist " +"(with or without variable substitution), or embedded into the " +"Makefile via PLIST_FILES and " +"PLIST_DIRS. Even if the contents are auto-generated by a " +"tool or a target in the Makefile before the inclusion " +"into the Ports Collection by a committer (for example, using make " +"makeplist>), this is still considered a static list, since it " +"is possible to examine it without having to download or compile the distfile." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12178 +msgid "" +"A dynamic package list is a package list which is " +"generated at the time the port is compiled based upon the files and " +"directories which are installed. It is not possible to examine it before the " +"source code of the ported application is downloaded and compiled, or after " +"running a make clean." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12185 +msgid "" +"While the use of dynamic package lists is not forbidden, maintainers should " +"use static package lists wherever possible, as it enables users to " +"grep1 through available ports to discover, for example, which port " +"installs a certain file. Dynamic lists should be primarily used for complex " +"ports where the package list changes drastically based upon optional " +"features of the port (and thus maintaining a static package list is " +"infeasible), or ports which change the package list based upon the version " +"of dependent software used. For example, ports which generate docs with " +"Javadoc." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:12199 +msgid "Automated Package List Creation" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:12205 +msgid "makeplist" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12201 +msgid "" +"First, make sure the port is almost complete, with only pkg-plist missing. Running make makeplist will show an " +"example for pkg-plist. The output of <_:buildtarget-1/> " +"must be double checked for correctness as it tries to automatically guess a " +"few things, and can get it wrong." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12209 +msgid "" +"User configuration files should be installed as " +"filename.sample, as it is " +"described in . info/dir " +"must not be listed and appropriate install-info lines " +"must be added as noted in the info files section. Any libraries installed by the port must be listed as " +"specified in the shared libraries " +"section." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:12221 +msgid "Expanding Package List with Keywords" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12223 +msgid "" +"All keywords can also take optional arguments in parentheses. The arguments " +"are owner, group, and mode. This argument is used on the file or directory " +"referenced. To change the owner, group, and mode of a configuration file, " +"use:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:12229 +#, no-wrap +msgid "@sample(games,games,640) etc/config.sample" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12231 +msgid "" +"The arguments are optional. If only the group and mode need to be changed, " +"use:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:12234 +#, no-wrap +msgid "@sample(,games,660) etc/config.sample" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12242 +msgid "@desktop-file-utils" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12244 +msgid "" +"Will run update-desktop-database -q after installation " +"and deinstallation." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12249 +msgid "@fc directory" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12252 +msgid "" +"Add a @dir entry for the directory passed as an argument, " +"and run fc-cache -fs on that directory after installation " +"and deinstallation." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12259 +msgid "@fcfontsdir directory" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12262 +msgid "" +"Add a @dir entry for the directory passed as an argument, " +"and run fc-cache -fs, mkfontscale and " +"mkfontdir on that directory after installation and " +"deinstallation. Additionally, on deinstallation, it removes the " +"fonts.scale and fonts.dir cache " +"files if they are empty. This keyword is equivalent to adding both @fc directory and @fontsdir directory." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12276 +msgid "@fontsdir directory" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12279 +msgid "" +"Add a @dir entry for the directory passed as an argument, " +"and run mkfontscale and mkfontdir on " +"that directory after installation and deinstallation. Additionally, on " +"deinstallation, it removes the fonts.scale and " +"fonts.dir cache files if they are empty." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12291 +msgid "@glib-schemas" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12293 +msgid "" +"Runs glib-compile-schemas on installation and " +"deinstallation." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12298 +msgid "@info file" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12301 +msgid "" +"Add the file passed as argument to the plist, and updates the info document " +"index on installation and deinstallation. Additionally, it removes the index " +"if empty on deinstallation. This should never be used manually, but always " +"through INFO. See for " +"more information." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12309 +msgid "@kld directory" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12312 +msgid "" +"Runs kldxref on the directory on installation and " +"deinstallation. Additionally, on deinstallation, it will remove the " +"directory if empty." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12318 +msgid "@rmtry file" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12321 +msgid "" +"Will remove the file on deinstallation, and not give an error if the file is " +"not there." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12326 +msgid "" +"@sample file " +"[file]" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12330 +msgid "" +"This is used to handle installation of configuration files, through example " +"files bundled with the package. The actual, non-sample, file " +"is either the second filename, if present, or the first filename without the " +".sample extension." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12336 +msgid "" +"This does three things. First, add the first file passed as argument, the " +"sample file, to the plist. Then, on installation, if the actual file is not " +"found, copy the sample file to the actual file. And finally, on " +"deinstallation, remove the actual file if it has not been modified. See " +" for more information." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12344 +msgid "" +"@shared-mime-info directory" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12347 +msgid "" +"Runs update-mime-database on the directory on " +"installation and deinstallation." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12352 +msgid "@shell file" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12355 +msgid "Add the file passed as argument to the plist." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12357 +msgid "" +"On installation, add the full path to file to " +"/etc/shells, while making sure it is not added twice. " +"On deinstallation, remove it from /etc/shells." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12365 +msgid "@terminfo" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12367 +msgid "" +"Do not use by itself. If the port installs *.terminfo files, add USES=terminfo to its Makefile." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12372 +msgid "" +"On installation and deinstallation, if tic is present, " +"refresh ${PREFIX}/share/misc/terminfo.db from the " +"*.terminfo files in " +"${PREFIX}/share/misc." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12380 +msgid "Base Keywords" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12382 +msgid "" +"There are a few keywords that are hardcoded, and documented in " +"pkg-create8. For the sake of completeness, they are also " +"documented here." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12387 +msgid "@ [file]" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12390 +msgid "" +"The empty keyword is a placeholder to use when the file's owner, group, or " +"mode need to be changed. For example, to set the group of the file to " +"games and add the setgid bit, add:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:12395 +#, no-wrap +msgid "@(,games,2755) sbin/daemon" +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12399 +msgid "" +"@preexec command, " +"@postexec command, " +"@preunexec command, " +"@postunexec command" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12408 +msgid "" +"Execute command as part of the package " +"installation or deinstallation process." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12413 +msgid "@preexec command" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12417 +msgid "" +"Execute command as part of the pre-" +"install scripts." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12424 +msgid "@postexec command" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12428 +msgid "" +"Execute command as part of the post-" +"install scripts." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12435 +msgid "@preunexec command" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12439 +msgid "" +"Execute command as part of the pre-" +"deinstall scripts." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12446 +msgid "@postunexec command" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12450 +msgid "" +"Execute command as part of the post-" +"deinstall scripts." +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12457 +msgid "" +"If command contains any of these sequences " +"somewhere in it, they are expanded inline. For these examples, assume that " +"@cwd is set to /usr/local and the " +"last extracted file was bin/emacs." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12467 +msgid "%F" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12470 +msgid "" +"Expand to the last filename extracted (as specified). In the example case " +"bin/emacs." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12477 +msgid "%D" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12479 +msgid "" +"Expand to the current directory prefix, as set with @cwd. " +"In the example case /usr/local." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12486 +msgid "%B" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12489 +msgid "" +"Expand to the basename of the fully qualified filename, that is, the current " +"directory prefix plus the last filespec, minus the trailing filename. In the " +"example case, that would be /usr/local/bin." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12498 +msgid "%f" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12501 +msgid "" +"Expand to the filename part of the fully qualified name, or the converse of " +"%B. In the example case, emacs." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12511 +msgid "@mode mode" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12514 +msgid "" +"Set default permission for all subsequently extracted files to " +"mode. Format is the same as that used by " +"chmod1. Use without an arg to set back to default permissions (mode " +"of the file while being packed)." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:12521 +msgid "" +"This must be a numeric mode, like 644, 4755, or 600. It cannnot be a relative mode like " +"u+s." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12529 +msgid "@owner user" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12532 +msgid "" +"Set default ownership for all subsequent files to user. Use without an argument to set back to default ownership " +"(root)." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12538 +msgid "@group group" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12541 +msgid "" +"Set default group ownership for all subsequent files to group. Use without an arg to set back to default group ownership " +"(wheel)." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12547 +msgid "@comment string" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12550 +msgid "This line is ignored when packing." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12554 +msgid "@dir directory" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12557 +msgid "" +"Declare directory name. By default, directories created under " +"PREFIX by a package installation are automatically " +"removed. Use this when an empty directory under PREFIX " +"needs to be created, or when the directory needs to have non default owner, " +"group, or mode. Directories outside of PREFIX need to be " +"registered. For example, /var/db/${PORTNAME} needs to " +"have a @dir entry whereas ${PREFIX}/share/" +"${PORTNAME} does not if it contains files or uses the default " +"owner, group, and mode." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12572 +msgid "" +"@exec command, " +"@unexec command (Deprecated)" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12577 +msgid "" +"Execute command as part of the installation or " +"deinstallation process. Please use instead." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12583 +msgid "" +"@dirrm directory (Deprecated)" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12586 +msgid "" +"Declare directory name to be deleted at deinstall time. By default, " +"directories created under PREFIX by a package " +"installation are deleted when the package is deinstalled." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12593 +msgid "" +"@dirrmtry directory " +"(Deprecated)" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12596 +msgid "" +"Declare directory name to be removed, as for @dirrm, but " +"does not issue a warning if the directory cannot be removed." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:12603 +msgid "Creating New Keywords" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:12605 +msgid "" +"Package list files can be extended by keywords that are defined in the " +"${PORTSDIR}/Keywords directory. The settings for each " +"keyword are stored in a UCL file named " +"keyword.ucl. The file must " +"contain at least one of these sections:" +msgstr "" + +#. (itstool) path: listitem/para +#. (itstool) path: sect3/title +#: book.translate.xml:12614 book.translate.xml:12647 +msgid "attributes" +msgstr "" + +#. (itstool) path: listitem/para +#. (itstool) path: sect3/title +#: book.translate.xml:12618 book.translate.xml:12660 +msgid "action" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12622 +msgid "pre-install" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12626 +msgid "post-install" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12630 +msgid "pre-deinstall" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12634 +msgid "post-deinstall" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12638 +msgid "pre-upgrade" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12642 +msgid "post-upgrade" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12649 +msgid "" +"Changes the owner, group, or mode used by the keyword. Contains an " +"associative array where the possible keys are owner, " +"group, and mode. The values are, " +"respectively, a user name, a group name, and a file mode. For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:12656 +#, no-wrap +msgid "attributes: { owner: \"games\", group: \"games\", mode: 0555 }" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12662 +msgid "" +"Defines what happens to the keyword's parameter. Contains an array where the " +"possible values are:" +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12667 +msgid "setprefix" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12670 +msgid "Set the prefix for the next plist entries." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12675 +msgid "dir" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12678 +msgid "Register a directory to be created on install and removed on deinstall." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12684 +msgid "dirrm" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12687 +msgid "Register a directory to be deleted on deinstall. Deprecated." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12693 +msgid "dirrmtry" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12696 +msgid "Register a directory to try and deleted on deinstall. Deprecated." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12702 +msgid "file" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12705 +msgid "Register a file." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12710 +msgid "setmode" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12713 +msgid "Set the mode for the next plist entries." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12718 +msgid "setowner" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12721 +msgid "Set the owner for the next plist entries." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12726 +msgid "setgroup" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12729 +msgid "Set the group for the next plist entries." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12734 +msgid "comment" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12737 +msgid "" +"Does not do anything, equivalent to not entering an action section." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:12743 +msgid "ignore_next" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:12746 +msgid "Ignore the next entry in the plist." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12753 +msgid "arguments" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12755 +msgid "" +"If set to true, adds argument handling, splitting the " +"whole line, %@, into numbered arguments, %1, %2, and so on. For example, for this line:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:12761 +#, no-wrap +msgid "@foo some.content other.content" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12763 +msgid "%1 and %2 will contain:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:12766 +#, no-wrap +msgid "" +"some.content\n" +"other.content" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12769 +msgid "" +"It also affects how the action entry works. When there is more than one " +"argument, the argument number must be specified. For example:" +msgstr "" + +#. (itstool) path: sect3/programlisting +#: book.translate.xml:12773 +#, no-wrap +msgid "actions: [file(1)]" +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12777 +msgid "" +"pre-install, post-install, " +"pre-deinstall, post-deinstall, " +"pre-upgrade, post-upgrade" +msgstr "" + +#. (itstool) path: sect3/para +#: book.translate.xml:12784 +msgid "" +"These keywords contains a sh1 script to be executed " +"before or after installation, deinstallation, or upgrade of the package. In " +"addition to the usual @exec %foo placeholders described in , there is a new one, %@, which " +"represents the argument of the keyword." +msgstr "" + +#. (itstool) path: sect3/title +#: book.translate.xml:12795 +msgid "Custom Keyword Examples" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:12798 +msgid "Example of a @dirrmtryecho Keyword" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:12801 +msgid "" +"This keyword does two things, it adds a @dirrmtry " +"directory line to the packing list, and " +"echoes the fact that the directory is removed when deinstalling the package." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:12807 +#, no-wrap +msgid "" +"actions: [dirrmtry]\n" +"post-deinstall: <<EOD\n" +" echo \"Directory %D/%@ removed.\"\n" +"EOD" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:12814 +msgid "Real Life Example, How @sample is Implemented" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:12817 +msgid "" +"This keyword does three things. It adds the first filename passed as an argument to @sample to the " +"packing list, it adds to the post-install script " +"instructions to copy the sample to the actual configuration file if it does " +"not already exist, and it adds to the post-deinstall " +"instructions to remove the configuration file if it has not been modified." +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:12826 +#, no-wrap +msgid "" +"actions: [file(1)]\n" +"arguments: true\n" +"post-install: <<EOD\n" +" case \"%1\" in\n" +" /*) sample_file=\"%1\" ;;\n" +" *) sample_file=\"%D/%1\" ;;\n" +" esac\n" +" target_file=\"${sample_file%.sample}\"\n" +" set -- %@\n" +" if [ $# -eq 2 ]; then\n" +" target_file=${2}\n" +" fi\n" +" case \"${target_file}\" in\n" +" /*) target_file=\"${target_file}\" ;;\n" +" *) target_file=\"%D/${target_file}\" ;;\n" +" esac\n" +" if ! [ -f \"${target_file}\" ]; then\n" +" /bin/cp -p \"${sample_file}\" \"${target_file}\" && \\\n" +" /bin/chmod u+w \"${target_file}\"\n" +" fi\n" +"EOD\n" +"pre-deinstall: <<EOD\n" +" case \"%1\" in\n" +" /*) sample_file=\"%1\" ;;\n" +" *) sample_file=\"%D/%1\" ;;\n" +" esac\n" +" target_file=\"${sample_file%.sample}\"\n" +" set -- %@\n" +" if [ $# -eq 2 ]; then\n" +" set -- %@\n" +" target_file=${2}\n" +" fi\n" +" case \"${target_file}\" in\n" +" /*) target_file=\"${target_file}\" ;;\n" +" *) target_file=\"%D/${target_file}\" ;;\n" +" esac\n" +" if cmp -s \"${target_file}\" \"${sample_file}\"; then\n" +" rm -f \"${target_file}\"\n" +" else\n" +" echo \"You may need to manually remove ${target_file} if it is no longer " +"needed.\"\n" +" fi\n" +"EOD" +msgstr "" + +#. (itstool) path: chapter/title +#: book.translate.xml:12883 +msgid "pkg-*" +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:12885 +msgid "" +"There are some tricks we have not mentioned yet about the pkg-" +"* files that come in handy sometimes." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:12890 +msgid "pkg-message" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12892 +msgid "" +"To display a message when the package is installed, place the message in " +"pkg-message. This capability is often useful to display " +"additional installation steps to be taken after a pkg install or to display licensing information." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12898 +msgid "" +"When some lines about the build-time knobs or warnings have to be displayed, " +"use ECHO_MSG. pkg-message is only " +"for post-installation steps. Likewise, the distinction between " +"ECHO_MSG is for printing informational text to the screen " +"and ECHO_CMD is for command pipelining:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:12907 +#, no-wrap +msgid "" +"update-etc-shells:\n" +"\t@${ECHO_MSG} \"updating /etc/shells\"\n" +"\t@${CP} /etc/shells /etc/shells.bak\n" +"\t@( ${GREP} -v ${PREFIX}/bin/bash /etc/shells.bak; \\\n" +"\t\t${ECHO_CMD} ${PREFIX}/bin/bash) >/etc/shells\n" +"\t@${RM} /etc/shells.bak" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:12915 +msgid "" +"Do not add an entry for pkg-message in pkg-" +"plist." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:12921 +msgid "pkg-install" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12923 +msgid "" +"If the port needs to execute commands when the binary package is installed " +"with pkg add or pkg install, use " +"pkg-install. This script will automatically be added to " +"the package. It will be run twice by pkg, the first time " +"as ${SH} pkg-install ${PKGNAME} PRE-INSTALL before the " +"package is installed, and the second time as ${SH} pkg-install " +"${PKGNAME} POST-INSTALL after it has been installed. $2 can be tested to determine which mode the script is being run in. " +"The PKG_PREFIX environmental variable will be set to the " +"package installation directory." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:12940 +msgid "pkg-deinstall" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12942 +msgid "This script executes when a package is removed." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12944 +msgid "" +"This script will be run twice by pkg delete The first " +"time as ${SH} pkg-deinstall ${PKGNAME} DEINSTALL before " +"the port is de-installed and the second time as ${SH} pkg-deinstall " +"${PKGNAME} POST-DEINSTALL after the port has been de-installed. " +"$2 can be tested to determine which mode the script is " +"being run in. The PKG_PREFIX environmental variable will be " +"set to the package installation directory" +msgstr "" + +#. (itstool) path: sect1/title +#. (itstool) id: book.translate.xml#porting-pkgfiles +#: book.translate.xml:12957 +msgid "" +"Changing the Names of pkg-*" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12960 +msgid "" +"All the names of pkg-* are " +"defined using variables that can be changed in the Makefile if needed. This is especially useful when sharing the same " +"pkg-* files among several " +"ports or when it is necessary to write to one of these files. See writing to places other than WRKDIR for why it is a bad idea to write directly into the " +"directory containing the pkg-* files." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:12974 +msgid "" +"Here is a list of variable names and their default values. (PKGDIR defaults to ${MASTERDIR}.)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:12989 +msgid "DESCR" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:12990 +msgid "${PKGDIR}/pkg-descr" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:12994 +msgid "PLIST" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:12995 +msgid "${PKGDIR}/pkg-plist" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:12999 +msgid "PKGINSTALL" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:13000 +msgid "${PKGDIR}/pkg-install" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:13004 +msgid "PKGDEINSTALL" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:13005 +msgid "${PKGDIR}/pkg-deinstall" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:13009 +msgid "PKGMESSAGE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:13010 +msgid "${PKGDIR}/pkg-message" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:13018 +msgid "" +"Making Use of SUB_FILES and SUB_LIST" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13021 +msgid "" +"SUB_FILES and SUB_LIST are useful for " +"dynamic values in port files, such as the installation PREFIX in pkg-message." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13027 +msgid "" +"SUB_FILES specifies a list of files to be automatically " +"modified. Each file in the " +"SUB_FILES list must have a corresponding " +"file.in present in " +"FILESDIR. A modified version will be created as " +"${WRKDIR}/file. Files defined as a " +"value of USE_RC_SUBR (or the deprecated " +"USE_RCORDER) are automatically added to " +"SUB_FILES. For the files pkg-message, pkg-install, and pkg-deinstall, the corresponding Makefile variable is automatically set to point " +"to the processed version." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13044 +msgid "" +"SUB_LIST is a list of VAR=VALUE pairs. " +"For each pair, %%VAR%% will be replaced with " +"VALUE in each file listed in SUB_FILES. Several common pairs are automatically defined: PREFIX, LOCALBASE, DATADIR, " +"DOCSDIR, EXAMPLESDIR, WWWDIR, and ETCDIR. Any line beginning with " +"@comment followed by a space, will be deleted from " +"resulting files after a variable substitution." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13057 +msgid "" +"This example replaces %%ARCH%% with the system " +"architecture in a pkg-message:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:13061 +#, no-wrap +msgid "" +"SUB_FILES=\tpkg-message\n" +"SUB_LIST=\tARCH=${ARCH}" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13064 +msgid "" +"Note that for this example, pkg-message.in must exist " +"in FILESDIR." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13068 +msgid "Example of a good pkg-message.in:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:13071 +#, no-wrap +msgid "" +"Now it is time to configure this package.\n" +"Copy %%PREFIX%%/share/examples/putsy/%%ARCH%%.conf into your home directory\n" +"as .putsy.conf and edit it." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:13088 +msgid "Running make describe" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13090 +msgid "" +"Several of the FreeBSD port maintenance tools, such as portupgrade1, rely on a database called /usr/ports/" +"INDEX which keeps track of such items as port dependencies. " +"INDEX is created by the top-level ports/" +"Makefile via make index, which descends into " +"each port subdirectory and executes make describe there. " +"Thus, if make describe fails in any port, no one can " +"generate INDEX, and many people will quickly become " +"unhappy." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:13102 +msgid "" +"It is important to be able to generate this file no matter what options are " +"present in make.conf, so please avoid doing things such " +"as using .error statements when (for instance) a " +"dependency is not satisfied. (See .)" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13110 +msgid "" +"If make describe produces a string rather than an error " +"message, everything is probably safe. See bsd.port.mk " +"for the meaning of the string produced." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13115 +msgid "" +"Also note that running a recent version of portlint (as " +"specified in the next section) will cause make describe " +"to be run automatically." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:13122 +msgid "Portlint" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13124 +msgid "" +"Do check the port with portlint before submitting or committing it. portlint warns about many common errors, both functional and stylistic. For " +"a new (or repocopied) port, portlint -A is the most " +"thorough; for an existing port, portlint -C is sufficient." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13132 +msgid "" +"Since portlint uses heuristics to try to figure out " +"errors, it can produce false positive warnings. In addition, occasionally " +"something that is flagged as a problem really cannot be done in any other " +"way due to limitations in the ports framework. When in doubt, the best thing " +"to do is ask on FreeBSD ports mailing list." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:13141 +msgid "Port Tools" +msgstr "Port 工具" + +#. (itstool) path: sect1/para +#: book.translate.xml:13143 +msgid "" +"The ports-mgmt/porttools program is part of " +"the Ports Collection." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13146 +msgid "" +"port is the front-end script, which can help simplify the " +"testing job. Whenever a new port or an update to an existing one needs " +"testing, use port test to test the port, including the " +"portlint " +"checking. This command also detects and lists any files that are not listed " +"in pkg-plist. For example:" +msgstr "" + +#. (itstool) path: sect1/screen +#: book.translate.xml:13155 +#, no-wrap +msgid "# port test /usr/ports/net/csup" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:13159 +msgid "PREFIX and DESTDIR" +msgstr "PREFIX 以及 DESTDIR" + +#. (itstool) path: sect1/para +#: book.translate.xml:13162 +msgid "" +"PREFIX determines where the port will be installed. It " +"defaults to /usr/local, but can be set by the user to a " +"custom path like /opt. The port must respect the value " +"of this variable." +msgstr "" +"PREFIX 變數會決定該 port 所會安裝的位置。預設是 /usr/local<" +"/filename> , 但是使用者可以設定程自訂的路徑,像是 /opt 。 必須遵循此變數的值。" + +#. (itstool) path: sect1/para +#: book.translate.xml:13168 +msgid "" +"DESTDIR, if set by the user, determines the complete " +"alternative environment, usually a jail or an installed system mounted " +"somewhere other than /. A port will actually install " +"into DESTDIR/PREFIX, and register with the package " +"database in DESTDIR/var/db/pkg. As DESTDIR is handled automatically by the ports infrastructure with " +"chroot8. There is no need for modifications or any extra care to write " +"DESTDIR-compliant ports." +msgstr "" +"若使用者有設定 DESTDIR 變數, 那麼它會採用所設定的環境,通常可能是 jail 環境或者是並非掛載於 <" +"filename>/ 上的系統。 通常 port 會裝在 DESTDIR/PREFIX " +"底下, 並且會紀錄在 DESTDIR/var/db/pkg 內的套件資料庫。 由於事實上 " +"DESTDIR 會由 ports 架構透過 chroot<" +"manvolnum>8 來自動處理,所以您不需去作相關修改或刻意維護 DESTDIR 相容的 ports。" + +#. (itstool) path: sect1/para +#: book.translate.xml:13179 +msgid "" +"The value of PREFIX will be set to LOCALBASE (defaulting to /usr/local). If " +"USE_LINUX_PREFIX is set, PREFIX will " +"be LINUXBASE (defaulting to /compat/linux)." +msgstr "" +"PREFIX 會設為 LOCALBASE (預設為 " +"/usr/local)。 若有設定 USE_LINUX_PREFIX, 那麼 " +"PREFIX 則為 LINUXBASE ( 預設為 " +"/compat/linux)。" + +#. (itstool) path: sect1/para +#: book.translate.xml:13186 +msgid "" +"Avoiding hard-coded /usr/local paths in the source " +"makes the port much more flexible and able to cater to the needs of other " +"sites. Often, this can be accomplished by replacing occurrences of " +"/usr/local in the port's various Makefiles with ${PREFIX}. This variable is automatically " +"passed down to every stage of the build and install processes." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13195 +msgid "" +"Make sure the application is not installing things in /usr/local instead of PREFIX. A quick test for such hard-" +"coded paths is:" +msgstr "" + +#. (itstool) path: sect1/screen +#: book.translate.xml:13200 +#, no-wrap +msgid "" +"% make clean; make package PREFIX=/var/tmp/`make " +"-V PORTNAME`" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13202 +msgid "" +"If anything is installed outside of PREFIX, the package " +"creation process will complain that it cannot find the files." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13206 +msgid "" +"In addition, it is worth checking the same with the stage directory support " +"(see ):" +msgstr "" + +#. (itstool) path: sect1/screen +#: book.translate.xml:13209 +#, no-wrap +msgid "" +"% make stage && make check-plist " +"&& make stage-qa && make package" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:13213 +msgid "check-plist" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13213 +msgid "" +"<_:buildtarget-1/> checks for files missing from the plist, and files in the " +"plist that are not installed by the port." +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:13219 +msgid "stage-qa" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13219 +msgid "" +"<_:buildtarget-1/> checks for common problems like bad shebang, symlinks " +"pointing outside the stage directory, setuid files, and non-stripped " +"libraries..." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13226 +msgid "" +"These tests will not find hard-coded paths inside the port's files, nor will " +"it verify that LOCALBASE is being used to correctly refer " +"to files from other ports. The temporarily-installed port in /var/" +"tmp/`make -V PORTNAME` must be tested for proper operation to " +"make sure there are no problems with paths." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13234 +msgid "" +"PREFIX must not be set explicitly in a port's " +"Makefile. Users installing the port may have set " +"PREFIX to a custom location, and the port must respect " +"that setting." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13239 +msgid "" +"Refer to programs and files from other ports with the variables mentioned " +"above, not explicit pathnames. For instance, if the port requires a macro " +"PAGER to have the full pathname of less, do not use a literal path of /usr/local/bin/less. Instead, use ${LOCALBASE}:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:13246 +#, no-wrap +msgid "-DPAGER=\\\"${LOCALBASE}/bin/less\\\"" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13248 +msgid "" +"The path with LOCALBASE is more likely to still work if " +"the system administrator has moved the whole /usr/local " +"tree somewhere else." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:13253 +msgid "" +"All these tests are done automatically when running poudriere " +"testport or poudriere bulk -t. It is highly " +"recommended that every ports contributor install it, and tests all his ports " +"with it. See for more information." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:13263 +msgid "Poudriere" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13265 +msgid "" +"For a ports contributor, Poudriere is one of the " +"most important and helpful testing and build tools. Its main features " +"include:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13272 +msgid "" +"Bulk building of the entire ports tree, specific subsets of the ports tree, " +"or a single port including its dependencies" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13278 +msgid "Automatic packaging of build results" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13282 +msgid "Generation of build log files per port" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13286 +msgid "" +"Providing a signed pkg8 repository" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13290 +msgid "" +"Testing of port builds before submitting a patch to the FreeBSD bug tracker " +"or committing to the ports tree" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13295 +msgid "Testing for successful ports builds using different options" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13300 +msgid "" +"Because Poudriere performs its building in a " +"clean jail8 environment and uses " +"zfs8 features, it has several advantages over traditional testing " +"on the host system:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13307 +msgid "" +"No pollution of the host environment: No leftover files, no accidental " +"removals, no changes of existing configuration files." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13313 +msgid "" +"Verify pkg-plist for missing or superfluous entries" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13318 +msgid "" +"Ports committers sometimes ask for a Poudriere " +"log alongside a patch submission to assess whether the patch is ready for " +"integration into the ports tree" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13325 +msgid "" +"It is also quite straightforward to set up and use, has no dependencies, and " +"will run on any supported FreeBSD release. This section shows how to " +"install, configure, and run Poudriere as part of " +"the normal workflow of a ports contributor." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13331 +msgid "" +"The examples in this section show a default file layout, as standard in " +"FreeBSD. Substitute any local changes accordingly. The ports tree, " +"represented by ${PORTSDIR}, is located in /usr/" +"ports. Both ${LOCALBASE} and ${PREFIX}" +" are /usr/local by default." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13339 +msgid "Installing Poudriere" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13341 +msgid "" +"Poudriere is available in the ports tree in " +"ports-mgmt/poudriere. It can be installed " +"using pkg8 or from ports:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13345 +#, no-wrap +msgid "# pkg install poudriere" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13349 +#, no-wrap +msgid "" +"# make -C /usr/ports/ports-mgmt/poudriere install " +"clean" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13351 +msgid "" +"There is also a work-in-progress version of Poudriere which will eventually become the next release. It is available " +"in ports-mgmt/poudriere-devel. This " +"development version is used for the official FreeBSD package builds, so it " +"is well tested. It often has newer interesting features. A ports committer " +"will want to use the development version because it is what is used in " +"production, and has all the new features that will make sure everything is " +"exactly right. A contributor will not necessarily need those as the most " +"important fixes are backported to released version. The main reason for the " +"use of the development version to build the official package is because it " +"is faster, in a way that will shorten a full build from 18 hours to 17 hours " +"when using a high end 32 CPU server with 128GB of " +"RAM. Those optimizations will not matter a lot when " +"building ports on a desktop machine." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13371 +msgid "Setting Up Poudriere" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13373 +msgid "" +"The port installs a default configuration file, /usr/local/etc/" +"poudriere.conf. Each parameter is documented in the configuration " +"file and in poudriere8. Here is a minimal " +"example config file:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:13379 +#, no-wrap +msgid "" +"ZPOOL=tank\n" +"ZROOTFS=/poudriere\n" +"BASEFS=/poudriere\n" +"DISTFILES_CACHE=/usr/ports/distfiles\n" +"RESOLV_CONF=/etc/resolv.conf\n" +"FREEBSD_HOST=ftp://ftp.freebsd.org\n" +"SVN_HOST=svn.FreeBSD.org" +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:13389 +msgid "ZPOOL" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13392 +msgid "" +"The name of the ZFS storage pool which " +"Poudriere shall use. Must be listed in the output " +"of zpool status." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:13400 +msgid "ZROOTFS" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13403 +msgid "" +"The root of Poudriere-managed file systems. This " +"entry will cause Poudriere to create " +"zfs8 file systems under tank/poudriere." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:13413 +msgid "BASEFS" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13416 +msgid "" +"The root mount point for Poudriere file systems. " +"This entry will cause Poudriere to mount " +"tank/poudriere to /poudriere." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:13425 +msgid "DISTFILES_CACHE" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13428 +msgid "" +"Defines where distfiles are stored. In this example, Poudriere and the host share the distfiles storage directory. This avoids " +"downloading tarballs which are already present on the system." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:13437 +msgid "RESOLV_CONF" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13440 +msgid "" +"Use the host /etc/resolv.conf inside jails for " +"DNS. This is needed so jails can resolve the " +"URLs of distfiles when downloading. It is not needed when " +"using a proxy. Refer to the default configuration file for proxy " +"configuration." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:13450 +msgid "FREEBSD_HOST" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13453 +msgid "" +"The FTP/HTTP server to use when the " +"jails are installed from FreeBSD releases and updated with " +"freebsd-update8. Choose a server location which is close, for " +"example if the machine is located in Australia, use ftp.au.freebsd." +"org." +msgstr "" + +#. (itstool) path: varlistentry/term +#: book.translate.xml:13463 +msgid "SVN_HOST" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13466 +msgid "" +"The server from where jails are installed and updated when using " +"Subversion. Also used for ports tree when not " +"using portsnap8. Again, choose a nearby location. A list of " +"official Subversion mirrors can be found in the " +"FreeBSD Handbook Subversion " +"section." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13482 +msgid "Creating Poudriere Jails" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13485 +msgid "" +"Create the base jails which Poudriere will use " +"for building:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13489 +#, no-wrap +msgid "" +"# poudriere jail -c -j 93Ramd64 -v 9.3-RELEASE -a " +"amd64" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13491 +msgid "" +"Fetch a 9.3-RELEASE for amd64 from the " +"FTP server given by FREEBSD_HOST in " +"poudriere.conf, create the zfs file system " +"tank/poudriere/jails/93Ramd64, mount it on /" +"poudriere/jails/93Ramd64 and extract the 9.3-RELEASE tarballs into this file system." +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13500 +#, no-wrap +msgid "" +"# poudriere jail -c -j 10i386 -v stable/10 -a " +"i386 -m svn+https" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:13509 +msgid "buildworld" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13502 +msgid "" +"Create tank/poudriere/jails/10i386, mount it on " +"/poudriere/jails/10i386, then check out the tip of the " +"Subversion branch of FreeBSD-10-STABLE from SVN_HOST in poudriere.conf into /poudriere/jails/10i386/usr/src, then " +"complete a <_:buildtarget-1/> and install it into /poudriere/" +"jails/10i386." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:13513 +msgid "" +"If a specific Subversion revision is needed, " +"append it to the version string. For example:" +msgstr "" + +#. (itstool) path: tip/screen +#: book.translate.xml:13517 +#, no-wrap +msgid "" +"# poudriere jail -c -j 10i386 -v stable/10@123456 " +"-a i386 -m svn+https" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:13521 +msgid "" +"While it is possible to build a newer version of FreeBSD on an older " +"version, most of the time it will not run. For example, if a " +"stable/10 jail is needed, the host will have to run " +"stable/10 too. Running 10.0-RELEASE is " +"not enough." +msgstr "" + +#. (itstool) path: caution/para +#: book.translate.xml:13530 +msgid "" +"The default svn protocol works but is not very secure. " +"Using svn+https along with verifying the remote server's " +"SSL fingerprint is advised. It will ensure that the files " +"used for building the jail are from a trusted source." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13537 +msgid "" +"A list of jails currently known to Poudriere can " +"be shown with poudriere jail -l:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13541 +#, no-wrap +msgid "" +"# poudriere jail -l\n" +"JAILNAME VERSION ARCH METHOD\n" +"93Ramd64 9.3-RELEASE amd64 ftp\n" +"10i386 10.0-STABLE i386 svn+https" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13549 +msgid "Keeping Poudriere Jails Updated" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13552 +msgid "Managing updates is very straightforward. The command:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13555 +#, no-wrap +msgid "" +"# poudriere jail -u -j JAILNAME<" +"/replaceable>" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13557 +msgid "" +"updates the specified jail to the latest version available. For FreeBSD " +"releases, update to the latest patchlevel with " +"freebsd-update8. For FreeBSD versions built from source, update to " +"the latest Subversion revision in the branch." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:13565 +msgid "" +"For jails employing a svn+* " +"method, it is helpful to add -J " +"NumberOfParallelBuildJobs to speed up " +"the build by increasing the number of parallel compile jobs used. For " +"example, if the building machine has 6 CPUs, use:" +msgstr "" + +#. (itstool) path: tip/screen +#: book.translate.xml:13573 +#, no-wrap +msgid "" +"# poudriere jail -u -J 6 -j " +"JAILNAME" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13578 +msgid "" +"Setting Up Ports Trees for Use with Poudriere" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13581 +msgid "" +"There are multiple ways to use ports trees in Poudriere. The most straightforward way is to have " +"Poudriere create a default ports tree for itself:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13587 +#, no-wrap +msgid "# poudriere ports -c" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13589 +msgid "" +"This command creates tank/poudriere/ports/default, mount " +"it on /poudriere/ports/default, and populate it using " +"portsnap8. Afterward it is included in the list of known " +"ports trees:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13595 +#, no-wrap +msgid "" +"# poudriere ports -l\n" +"PORTSTREE METHOD PATH\n" +"default portsnap /poudriere/ports/default" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:13600 +msgid "" +"Note that the default ports tree is special. Each of the " +"build commands explained later will implicitly use this ports tree unless " +"specifically specified otherwise. To use another tree, add -p " +"treename to the commands." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13608 +msgid "" +"While useful for regular bulk builds, having this default ports tree with " +"the portsnap8 method may not be the best way to deal with local " +"modifications for a ports contributor. As with the creation of jails, it is " +"possible to use a different method for creating the ports tree. To add an " +"additional ports tree for testing local modifications and ports development, " +"checking out the tree via Subversion is possible:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13617 +#, no-wrap +msgid "" +"# poudriere ports -c -m svn+https -p subversive<" +"/userinput>" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13619 +msgid "" +"Creates tank/poudriere/ports/subversive and mounts it on " +"/poudriere/ports/subversive. It is then populated using " +"Subversion. Finally, it is added to the list of " +"known ports trees:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13625 +#, no-wrap +msgid "" +"# poudriere ports -l\n" +"PORTSTREE METHOD PATH\n" +"default portsnap /poudriere/ports/default\n" +"subversive svn+https /poudriere/ports/subversive" +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:13631 +msgid "" +"The svn method allows extra qualifiers to tell " +"Subversion exactly how to fetch data. This is " +"explained in poudriere8. For instance, " +"poudriere ports -c -m svn+ssh -p subversive uses " +"SSH for the checkout." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13642 +msgid "Using Manually Managed Ports Trees with Poudriere" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13644 +msgid "" +"Depending on the workflow, it can be extremely helpful to use ports trees " +"which are maintained manually. For instance, if there is a local copy of the " +"ports tree in /work/ports, point " +"Poudriere to the location:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13650 +#, no-wrap +msgid "" +"# poudriere ports -c -F -f none -M /work/ports -p " +"development" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13652 +msgid "This will be listed in the table of known trees:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13654 +#, no-wrap +msgid "" +"# poudriere ports -l\n" +"PORTSTREE METHOD PATH\n" +"development - /work/ports" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:13659 +msgid "" +"The dash in the METHOD column means that " +"Poudriere will not update or change this ports " +"tree, ever. It is completely up to the user to maintain this tree, including " +"all local modifications that may be used for testing new ports and " +"submitting patches." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13670 +msgid "Keeping Poudriere Ports Trees Updated" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13672 +msgid "As straightforward as with jails described earlier:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13674 +#, no-wrap +msgid "" +"# poudriere ports -u -p PORTSTREE<" +"/replaceable>" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13676 +msgid "" +"Will update the given PORTSTREE, one tree given " +"by the output of poudriere -l, to the latest revision " +"available on the official servers." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:13682 +msgid "" +"Ports trees without a method, see , cannot be updated like this. They must be updated manually " +"by the porter." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13690 +msgid "Testing Ports" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13692 +msgid "" +"After jails and ports trees have been set up, the result of a contributor's " +"modifications to the ports tree can be tested." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13696 +msgid "" +"For example, local modifications to the www/firefox port located in /work/ports/www/firefox can be " +"tested in the previously created 9.3-RELEASE jail:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13700 +#, no-wrap +msgid "" +"# poudriere testport -j 93Ramd64 -p development " +"-o www/firefox" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13702 +msgid "" +"This will build all dependencies of Firefox. If a " +"dependency has been built previously and is still up-to-date, the pre-built " +"package is installed. If a dependency has no up-to-date package, one will be " +"built with default options in a jail. Then Firefox itself is built." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13710 +msgid "" +"The complete build of every port is logged to /poudriere/data/logs/" +"bulk/93Ri386-development/build-time/logs." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13713 +msgid "" +"The directory name 93Ri386-development is derived from " +"the arguments to -j and -p, " +"respectively. For convenience, a symbolic link /poudriere/data/" +"logs/bulk/93Ri386-development/latest is also maintained. The link " +"points to the latest build-time directory. Also " +"in this directory is an index.html for observing the " +"build process with a web browser." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13723 +msgid "" +"By default, Poudriere cleans up the jails and " +"leaves log files in the directories mentioned above. To ease investigation, " +"jails can be kept running after the build by adding to " +"testport:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13729 +#, no-wrap +msgid "" +"# poudriere testport -j 93Ramd64 -p development " +"-i -o www/firefox" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13731 +msgid "" +"After the build completes, and regardless of whether it was successful, a " +"shell is provided within the jail. The shell is used to investigate further. " +"Poudriere can be told to leave the jail running " +"after the build finishes with . Poudriere will show the command to run when the jail is no longer needed. " +"It is then possible to jexec8 into it:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13740 +#, no-wrap +msgid "" +"# poudriere testport -j 93Ramd64 -p development " +"-I -o www/firefox\n" +"[...]\n" +"====>> Installing local Pkg repository to /usr/local/etc/pkg/repos\n" +"====>> Leaving jail 93Ramd64-development-n running, mounted at " +"/poudriere/data/.m/93Ramd64-development/ref for interactive run testing\n" +"====>> To enter jail: jexec 93Ramd64-development-n env -i TERM=$TERM " +"/usr/bin/login -fp root\n" +"====>> To stop jail: poudriere jail -k -j 93Ramd64 -p development\n" +"# jexec 93Ramd64-development-n env -i TERM=$TERM " +"/usr/bin/login -fp root\n" +"# [do some stuff in the jail]<" +"/replaceable>\n" +"# exit\n" +"# poudriere jail -k -j 93Ramd64 -p development<" +"/userinput>\n" +"====>> Umounting file systems" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13752 +msgid "" +"An integral part of the FreeBSD ports build infrastructure is the ability to " +"tweak ports to personal preferences with options. These can be tested with " +"Poudriere as well. Adding the :" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13758 +#, no-wrap +msgid "" +"# poudriere testport -c -o www/firefox" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13760 +msgid "" +"Presents the port configuration dialog before the port is built. The ports " +"given after in the format " +"category/portname will use the specified options, all dependencies will " +"use the default options. Testing dependent ports with non-default options " +"can be accomplished using sets, see ." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:13769 +msgid "" +"When testing ports where pkg-plist is altered during " +"build depending on the selected options, it is recommended to perform a test " +"run with all options selected and one with all options " +"deselected." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13778 +msgid "Using Sets" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13780 +msgid "" +"For all actions involving builds, a so-called set can " +"be specified using -z setname. " +"A set refers to a fully independent build. This allows, for instance, usage " +"of testport with non-standard options for the dependent " +"ports." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13787 +msgid "" +"To use sets, Poudriere expects an existing " +"directory structure similar to PORT_DBDIR, defaults to " +"/var/db/ports in its configuration directory. This " +"directory is then nullfs-mounted into the jails where the ports and their " +"dependencies are built. Usually a suitable starting point can be obtained by " +"recursively copying the existing PORT_DBDIR to /" +"usr/local/etc/poudriere.d/jailname-" +"portname-setname-" +"options. This is described in detail in poudriere8. For instance, testing www/firefox in a specific set named devset, add the " +"-z devset parameter to the testport command:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13803 book.translate.xml:13876 +#, no-wrap +msgid "" +"# poudriere testport -j 93Ramd64 -p development " +"-z devset -o www/firefox" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13805 +msgid "This will look for the existence of these directories in this order:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13810 +msgid "" +"/usr/local/etc/poudriere.d/93Ramd64-development-devset-options" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13814 +msgid "/usr/local/etc/poudriere.d/93Ramd64-devset-options" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13818 +msgid "" +"/usr/local/etc/poudriere.d/93Ramd64-development-options" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13822 +msgid "/usr/local/etc/poudriere.d/devset-options" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13826 +msgid "/usr/local/etc/poudriere.d/development-options" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13830 +msgid "/usr/local/etc/poudriere.d/93Ramd64-options" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13834 +msgid "/usr/local/etc/poudriere.d/options" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13838 +msgid "" +"From this list, Poudriere nullfs-mounts the " +"first existing directory tree into the /var/" +"db/ports directory of the build jails. Hence, all custom options " +"are used for all the ports during this run of testport." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13845 +msgid "" +"After the directory structure for a set is provided, the options for a " +"particular port can be altered. For example:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13849 +#, no-wrap +msgid "" +"# poudriere options -c www/firefox -z devset<" +"/userinput>" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13851 +msgid "" +"The configuration dialog for www/firefox is " +"shown, and options can be edited. The selected options are saved to the " +"devset set." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:13856 +msgid "" +"Poudriere is very flexible in the option " +"configuration. They can be set for particular jails, ports trees, and for " +"multiple ports by one command. Refer to poudriere8 for details." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13865 +msgid "Providing a Custom make.conf File" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13868 +msgid "" +"Similar to using sets, Poudriere will also use a " +"custom make.conf if it is provided. No special command " +"line argument is necessary. Instead, Poudriere " +"looks for existing files matching a name scheme derived from the command " +"line. For instance:" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13878 +msgid "" +"causes Poudriere to check for the existence of " +"these files in this order:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13883 +msgid "/usr/local/etc/poudriere.d/make.conf" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13887 +msgid "/usr/local/etc/poudriere.d/devset-make.conf" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13891 +msgid "/usr/local/etc/poudriere.d/development-make.conf" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13895 +msgid "/usr/local/etc/poudriere.d/93Ramd64-make.conf" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13899 +msgid "" +"/usr/local/etc/poudriere.d/93Ramd64-development-make.conf" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13903 +msgid "" +"/usr/local/etc/poudriere.d/93Ramd64-devset-make.conf" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:13907 +msgid "" +"/usr/local/etc/poudriere.d/93Ramd64-development-devset-make.conf" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13911 +msgid "" +"Unlike with sets, all of the found files will be appended, in that " +"order, into one make.conf inside the build " +"jails. It is hence possible to have general make variables, intended to " +"affect all builds in /usr/local/etc/poudriere.d/make.conf. Special variables, intended to affect only certain jails or sets " +"can be set in specialised make.conf files, such as " +"/usr/local/etc/poudriere.d/93Ramd64-development-devset-make.conf." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:13923 +msgid "" +"Using make.conf to Change Default Perl" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:13926 +msgid "" +"To build a set with a non default Perl version, " +"for example, 5.20, using a set named perl5-20, create a perl5-20-make.conf with this line:" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:13933 +#, no-wrap +msgid "DEFAULT_VERSIONS+= perl=5.20" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:13936 +msgid "" +"Note the use of += so that if the variable is already set " +"in the default make.conf its content will not be " +"overwritten." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:13946 +msgid "Pruning no Longer Needed Distfiles" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13948 +msgid "" +"Poudriere comes with a built-in mechanism to " +"remove outdated distfiles that are no longer used by any port of a given " +"tree. The command" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13952 +#, no-wrap +msgid "" +"# poudriere distclean -p portstree<" +"/replaceable>" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:13954 +msgid "" +"will scan the distfiles folder, DISTFILES_CACHE in " +"poudriere.conf, versus the ports tree given by the " +"-p portstree argument and " +"prompt for removal of those distfiles. To skip the prompt and remove all " +"unused files unconditionally, the -y argument can be " +"added:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:13963 +#, no-wrap +msgid "" +"# poudriere distclean -p portstree<" +"/replaceable> -y" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:13978 +msgid "Tinderbox" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13980 +msgid "" +"As an avid ports contributor, take a look at Tinderbox. It is a powerful system for building and testing ports. " +"Install Tinderbox using ports-mgmt/tinderbox port. Be sure to read supplied " +"documentation since the configuration is not trivial." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:13988 +msgid "" +"Visit the Tinderbox " +"website for more details." +msgstr "" + +#. (itstool) path: chapter/title +#: book.translate.xml:14003 +msgid "Upgrading a Port" +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14005 +msgid "" +"When a port is not the most recent version available from the authors, " +"update the local working copy of /usr/ports. The port " +"might have already been updated to the new version." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14010 +msgid "" +"When working with more than a few ports, it will probably be easier to use " +"Subversion to keep the whole ports collection up-" +"to-date, as described in the Handbook. This will have " +"the added benefit of tracking all the port's dependencies." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14016 +msgid "" +"The next step is to see if there is an update already pending. To do this, " +"there are two options. There is a searchable interface to the FreeBSD Problem Report (PR) or bug " +"database. Select Ports Tree in the " +"Product dropdown, and enter the name of the port in the " +"Summary field." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14024 +msgid "" +"However, sometimes people forget to put the name of the port into the " +"Summary field in an unambiguous fashion. In that case, try searching in the " +"Comment field in the Detailled Bug Information section, or try the FreeBSD Ports " +"Monitoring System (also known as portsmon). This " +"system attempts to classify port PRs by portname. To search for PRs about a " +"particular port, use the Overview of One Port." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14035 +msgid "" +"If there is no pending PR, the next step is to send an email to the port's " +"maintainer, as shown by make maintainer. That person may " +"already be working on an upgrade, or have a reason to not upgrade the port " +"right now (because of, for example, stability problems of the new version), " +"and there is no need to duplicate their work. Note that unmaintained ports " +"are listed with a maintainer of ports@FreeBSD.org, which " +"is just the general ports mailing list, so sending mail there probably will " +"not help in this case." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14046 +msgid "" +"If the maintainer asks you to do the upgrade or there is no maintainer, then " +"help out FreeBSD by preparing the update! Please do this by using the " +"diff1 command in the base system." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14051 +msgid "" +"To create a suitable diff for a single patch, copy the " +"file that needs patching to something." +"orig, save the changes to something and then create the patch:" +msgstr "" + +#. (itstool) path: informalexample/screen +#: book.translate.xml:14059 +#, no-wrap +msgid "" +"% diff -u something" +".orig something > something.diff" +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14062 +msgid "" +"Otherwise, either use the svn diff method () or copy the contents of the port to an entire different " +"directory and use the result of the recursive " +"diff1 output of the new and old ports directories (for example, if " +"the modified port directory is called superedit and the " +"original is in our tree as superedit.bak, then save the " +"result of diff -ruN superedit.bak superedit). Either " +"unified or context diff is fine, but port committers generally prefer " +"unified diffs. Note the use of the -N option—this is the " +"accepted way to force diff to properly deal with the case of new files being " +"added or old files being deleted. Before sending us the diff, please examine " +"the output to make sure all the changes make sense. (In particular, make " +"sure to first clean out the work directories with make clean)." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:14081 +msgid "" +"If some files have been added, copied, moved, or removed, add this " +"information to the problem report so that the committer picking up the patch " +"will know what svn1 commands to run." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14087 +msgid "" +"To simplify common operations with patch files, use make makepatch as described in . Other tools exists, " +"like /usr/ports/Tools/scripts/patchtool.py. Before " +"using it, please read /usr/ports/Tools/scripts/README.patchtool." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14094 +msgid "" +"If the port is unmaintained, and you are actively using it, please consider " +"volunteering to become its maintainer. FreeBSD has over 4000 ports without " +"maintainers, and this is an area where more volunteers are always needed. " +"(For a detailed description of the responsibilities of maintainers, refer to " +"the section in the Developer's " +"Handbook.)" +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14102 +msgid "" +"To submit the diff, use the bug submit form (product Ports & Packages, component Individual Port(s)). If the submitter " +"is also maintaining the port, be sure to put [MAINTAINER] " +"at the beginning of the Summary line. Always include the " +"category with the port name, followed by colon, and brief descripton of the " +"issue. For example: category/portname: " +"add FOO option, or if maintaining the " +"port, [MAINTAINER] category/portname: " +"Update to X.Y. Please mention any added " +"or deleted files in the message, as they have to be explicitly specified to " +"svn1 when doing a commit. Do not compress or encode the diff." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14121 +msgid "" +"Before submitting the bug, review the Writing the " +"problem report section in the Problem Reports article. It contains " +"far more information about how to write useful problem reports." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:14127 +msgid "" +"If the upgrade is motivated by security concerns or a serious fault in the " +"currently committed port, please notify the Ports Management Team " +"portmgr@FreeBSD.org to request immediate rebuilding and " +"redistribution of the port's package. Unsuspecting users of pkg will otherwise continue to install the old version via pkg " +"install for several weeks." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:14137 +msgid "" +"Once again, please use diff1 and not " +"shar1 to send updates to existing ports! This helps ports committers " +"understand exactly what is being changed." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:14142 +msgid "" +"Now that all of that is done, read about how to keep up-to-date in ." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:14146 +msgid "Using Subversion to Make Patches" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14149 +msgid "" +"When possible, please submit a svn1 diff. They are easier " +"to handle than diffs between new and old directories. It is " +"easier to see what has changed, and to update the diff if something was " +"modified in the Ports Collection since the work on it began, or if the " +"committer asks for something to be fixed. Also, a patch generated with " +"svn diff can be easily applied with svn patch and will save some time to the committer." +msgstr "" + +#. (itstool) path: sect1/screen +#: book.translate.xml:14160 +#, no-wrap +msgid "" +"% cd ~/my_wrkdir \n" +"% svn co https://svn.FreeBSD.org<" +"/replaceable>/ports/head/dns/pdnsd \n" +"% cd ~/my_wrkdir/pdnsd" +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14167 +msgid "" +"This can be anywhere, of course. Building ports is not limited to within " +"/usr/ports/." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14173 +msgid "" +"svn.FreeBSD.org is the " +"FreeBSD public Subversion server. See Subversion mirror sites for more information." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14180 +msgid "" +"While in the port directory, make any changes that are needed. If adding, " +"copying, moving, or removing a file, use svn to track " +"these changes:" +msgstr "" + +#. (itstool) path: sect1/screen +#: book.translate.xml:14184 +#, no-wrap +msgid "" +"% svn add new_file<" +"/userinput>\n" +"% svn copy some_file <" +"replaceable>file_copy\n" +"% svn move old_name <" +"replaceable>new_name\n" +"% svn remove deleted_file<" +"/replaceable>" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14189 +msgid "" +"Make sure to check the port using the checklist in and ." +msgstr "" + +#. (itstool) path: sect1/screen +#: book.translate.xml:14193 +#, no-wrap +msgid "" +"% svn status\n" +"% svn update " +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14198 +msgid "" +"This will attempt to merge the differences between the patch and current " +"repository version. Watch the output carefully. The letter in front of each " +"file name indicates what was done with it. See for a complete list." +msgstr "" + +#. (itstool) path: table/title +#: book.translate.xml:14207 +msgid "Subversion Update File Prefixes" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14213 +msgid "U" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14214 +msgid "The file was updated without problems." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14218 +msgid "G" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14219 +msgid "" +"The file was updated without problems (only when working against a remote " +"repository)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14225 +msgid "M" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14226 +msgid "The file had been modified, and was merged without conflicts." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14231 +msgid "C" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14232 +msgid "The file had been modified, and was merged with conflicts." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14239 +msgid "" +"If C is displayed as a result of svn update, it means something changed in the Subversion repository and svn1 was not able to merge " +"the local changes with those from the repository. It is always a good idea " +"to inspect the changes anyway, since svn1 does not know anything " +"about the structure of a port, so it might (and probably will) merge things " +"that do not make sense." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14248 +msgid "" +"The last step is to make a unified diff1 of the changes:" +msgstr "" + +#. (itstool) path: sect1/screen +#: book.translate.xml:14251 +#, no-wrap +msgid "" +"% svn diff > ../`make -VPKGNAME`.diff<" +"/userinput>" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:14254 +msgid "" +"If files have been added, copied, moved, or removed, include the " +"svn1 add, copy, " +"move, and remove commands that were " +"used. svn move or svn copy must be run " +"before the patch can be applied. svn add or svn " +"remove must be run after the patch is applied." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14264 +msgid "" +"Send the patch following the problem report " +"submission guidelines." +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:14268 +msgid "" +"The patch can be automatically generated and the PR pre-filled with the " +"contact information by using port submit. See for more details." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:14275 +msgid "UPDATING and MOVED" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:14279 +msgid "/usr/ports/UPDATING" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14281 +msgid "" +"If upgrading the port requires special steps like changing configuration " +"files or running a specific program, it must be documented in this file. The " +"format of an entry in this file is:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:14286 +#, no-wrap +msgid "" +"YYYYMMDD:\n" +" AFFECTS: users of portcategory/portname\n" +" AUTHOR: Your name <Your email address>\n" +"\n" +" Special instructions" +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:14293 +msgid "" +"When including exact portmaster, " +"portupgrade, and/or pkg instructions, please make sure to get the shell escaping right. " +"For example, do not use:" +msgstr "" + +#. (itstool) path: tip/screen +#: book.translate.xml:14301 +#, no-wrap +msgid "" +"# pkg delete -g -f docbook-xml* docbook-sk* " +"docbook[2345]??-* docbook-4*" +msgstr "" + +#. (itstool) path: tip/para +#: book.translate.xml:14303 +msgid "" +"As shown, the command will only work with bourne shells. Instead, use the form shown below, which will work with both " +"bourne shell and c-shell:" +msgstr "" + +#. (itstool) path: tip/screen +#: book.translate.xml:14309 +#, no-wrap +msgid "" +"# pkg delete -g -f docbook-xml\\* docbook-sk\\* " +"docbook\\[2345\\]\\?\\?-\\* docbook-4\\*" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:14313 +msgid "" +"It is recommended that the AFFECTS line contains a glob matching all the " +"ports affected by the entry so that automated tools can parse it as easily " +"as possible. If an update concerns all the existing BIND 9 versions the AFFECTS content must be " +"users of dns/bind9*, it must not be " +"users of BIND 9" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:14326 +msgid "/usr/ports/MOVED" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14328 +msgid "" +"This file is used to list moved or removed ports. Each line in the file is " +"made up of the name of the port, where the port was moved, when, and why. If " +"the port was removed, the section detailing where it was moved can be left " +"blank. Each section must be separated by the | (pipe) " +"character, like so:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:14336 +#, no-wrap +msgid "old name|new name (blank for deleted)|date of move|reason" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14338 +msgid "" +"The date must be entered in the form YYYY-MM-DD. New " +"entries are added to the top of the file to keep it in reverse chronological " +"order, with the last entry first." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14343 +msgid "" +"If a port was removed but has since been restored, delete the line in this " +"file that states that it was removed." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14347 +msgid "" +"If a port was renamed and then renamed back to its original name, add a new " +"one with the intermediate name to the old name, and remove the old entry as " +"to not create a loop." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:14353 +msgid "" +"Any changes must be validated with Tools/scripts/MOVEDlint.awk." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:14356 +msgid "" +"If using a ports directory other than /usr/ports, use:" +msgstr "" + +#. (itstool) path: informalexample/screen +#: book.translate.xml:14360 +#, no-wrap +msgid "" +"% cd /home/user/ports<" +"/userinput>\n" +" % env PORTSDIR=$PWD " +"Tools/scripts/MOVEDlint.awk" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:14380 +msgid "Why Security is So Important" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14382 +msgid "" +"Bugs are occasionally introduced to the software. Arguably, the most " +"dangerous of them are those opening security vulnerabilities. From the " +"technical viewpoint, such vulnerabilities are to be closed by exterminating " +"the bugs that caused them. However, the policies for handling mere bugs and " +"security vulnerabilities are very different." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14389 +msgid "" +"A typical small bug affects only those users who have enabled some " +"combination of options triggering the bug. The developer will eventually " +"release a patch followed by a new version of the software, free of the bug, " +"but the majority of users will not take the trouble of upgrading immediately " +"because the bug has never vexed them. A critical bug that may cause data " +"loss represents a graver issue. Nevertheless, prudent users know that a lot " +"of possible accidents, besides software bugs, are likely to lead to data " +"loss, and so they make backups of important data; in addition, a critical " +"bug will be discovered really soon." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14401 +msgid "" +"A security vulnerability is all different. First, it may remain unnoticed " +"for years because often it does not cause software malfunction. Second, a " +"malicious party can use it to gain unauthorized access to a vulnerable " +"system, to destroy or alter sensitive data; and in the worst case the user " +"will not even notice the harm caused. Third, exposing a vulnerable system " +"often assists attackers to break into other systems that could not be " +"compromised otherwise. Therefore closing a vulnerability alone is not " +"enough: notify the audience of it in the most clear and comprehensive " +"manner, which will allow them to evaluate the danger and take appropriate " +"action." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:14416 +msgid "Fixing Security Vulnerabilities" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14418 +msgid "" +"While on the subject of ports and packages, a security vulnerability may " +"initially appear in the original distribution or in the port files. In the " +"former case, the original software developer is likely to release a patch or " +"a new version instantly. Update the port promptly with respect to the " +"author's fix. If the fix is delayed for some reason, either mark the port as FORBIDDEN or " +"introduce a patch file to the port. In the case of a vulnerable port, just " +"fix the port as soon as possible. In either case, follow the standard procedure for submitting changes " +"unless having rights to commit it directly to the ports tree." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:14434 +msgid "" +"Being a ports committer is not enough to commit to an arbitrary port. " +"Remember that ports usually have maintainers, must be respected." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14439 +msgid "" +"Please make sure that the port's revision is bumped as soon as the " +"vulnerability has been closed. That is how the users who upgrade installed " +"packages on a regular basis will see they need to run an update. Besides, a " +"new package will be built and distributed over FTP and WWW mirrors, " +"replacing the vulnerable one. Bump PORTREVISION unless " +"PORTVERSION has changed in the course of correcting the " +"vulnerability. That is, bump PORTREVISION if adding a " +"patch file to the port, but do not bump it if updating the port to the " +"latest software version and thus already touched PORTVERSION. Please refer to the corresponding section for more information." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:14456 +msgid "Keeping the Community Informed" +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:14459 +msgid "The VuXML Database" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14461 +msgid "" +"A very important and urgent step to take as early after a security " +"vulnerability is discovered as possible is to notify the community of port " +"users about the jeopardy. Such notification serves two purposes. First, if " +"the danger is really severe it will be wise to apply an instant workaround. " +"For example, stop the affected network service or even deinstall the port " +"completely until the vulnerability is closed. Second, a lot of users tend to " +"upgrade installed packages only occasionally. They will know from the " +"notification that they must update the package without " +"delay as soon as a corrected version is available." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14474 +msgid "" +"Given the huge number of ports in the tree, a security advisory cannot be " +"issued on each incident without creating a flood and losing the attention of " +"the audience when it comes to really serious matters. Therefore security " +"vulnerabilities found in ports are recorded in the FreeBSD VuXML database. The Security Officer " +"Team members also monitor it for issues requiring their intervention." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14484 +msgid "" +"Committers can update the VuXML database themselves, " +"assisting the Security Officer Team and delivering crucial information to " +"the community more quickly. Those who are not committers or have discovered " +"an exceptionally severe vulnerability should not hesitate to contact the " +"Security Officer Team directly, as described on the FreeBSD Security Information " +"page." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14493 +msgid "" +"The VuXML database is an XML document. Its source file " +"vuln.xml is kept right inside the port security/vuxml. Therefore the file's full pathname will " +"be PORTSDIR/security/vuxml/vuln.xml. Each time a " +"security vulnerability is discovered in a port, please add an entry for it " +"to that file. Until familiar with VuXML, the best thing to do is to find an " +"existing entry fitting the case at hand, then copy it and use it as a " +"template." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:14506 +msgid "A Short Introduction to VuXML" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14508 +msgid "" +"The full-blown XML format is complex, and far beyond the " +"scope of this book. However, to gain basic insight on the structure of a " +"VuXML entry only the notion of tags is needed. XML tag names are enclosed in " +"angle brackets. Each opening <tag> must have a matching closing </" +"tag>. Tags may be nested. If nesting, the inner tags must be closed " +"before the outer ones. There is a hierarchy of tags, that is, more complex " +"rules of nesting them. This is similar to HTML. The major difference is that " +"XML is eXtensible, that is, based on defining custom " +"tags. Due to its intrinsic structure XML puts otherwise amorphous data into " +"shape. VuXML is particularly tailored to mark up descriptions of security " +"vulnerabilities." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14523 +msgid "Now consider a realistic VuXML entry:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:14525 +#, no-wrap +msgid "" +"<vuln vid=\"f4bc80f4-da62-11d8-90ea-0004ac98a7b9\"> \n" +" <topic>Several vulnerabilities found in Foo</topic> \n" +" <affects>\n" +" <package>\n" +" <name>foo</name> \n" +" <name>foo-devel</name>\n" +" <name>ja-foo</name>\n" +" <range><ge>1.6</ge><lt>1.9</lt></range&" +"gt; \n" +" <range><ge>2.*</ge><lt>2.4_1</lt></rang" +"e>\n" +" <range><eq>3.0b1</eq></range>\n" +" </package>\n" +" <package>\n" +" <name>openfoo</name> \n" +" <range><lt>1.10_7</lt></range> \n" +" <range><ge>1.2,1</ge><lt>1.3_1,1</lt></" +"range>\n" +" </package>\n" +" </affects>\n" +" <description>\n" +" <body xmlns=\"http://www.w3.org/1999/xhtml\">\n" +" <p>J. Random Hacker reports:</p> " +"\n" +" <blockquote\n" +" cite=\"http://j.r.hacker.com/advisories/1\">\n" +" <p>Several issues in the Foo software may be exploited\n" +" via carefully crafted QUUX requests. These requests will\n" +" permit the injection of Bar code, mumble theft, and the\n" +" readability of the Foo administrator account.</p>\n" +" </blockquote>\n" +" </body>\n" +" </description>\n" +" <references> \n" +" <freebsdsa>SA-10:75.foo</freebsdsa> " +"\n" +" <freebsdpr>ports/987654</freebsdpr> " +"\n" +" <cvename>CAN-2010-0201</cvename> \n" +" <cvename>CAN-2010-0466</cvename>\n" +" <bid>96298</bid> \n" +" <certsa>CA-2010-99</certsa> \n" +" <certvu>740169</certvu> \n" +" <uscertsa>SA10-99A</uscertsa> \n" +" <uscertta>SA10-99A</uscertta> \n" +" <mlist msgid=\"201075606@hacker.com\">http://marc.theaimsgroup.com/?" +"l=bugtraq&amp;m=203886607825605</mlist> \n" +" <url>http://j.r.hacker.com/advisories/1</url> \n" +" </references>\n" +" <dates>\n" +" <discovery>2010-05-25</discovery> \n" +" <entry>2010-07-13</entry> \n" +" <modified>2010-09-17</modified> \n" +" </dates>\n" +"</vuln>" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14574 +msgid "" +"The tag names are supposed to be self-explanatory so we shall take a closer " +"look only at fields which needs to be filled in:" +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14580 +msgid "" +"This is the top-level tag of a VuXML entry. It has a mandatory attribute, " +"vid, specifying a universally unique identifier (UUID) " +"for this entry (in quotes). Generate a UUID for each new VuXML entry (and do " +"not forget to substitute it for the template UUID unless writing the entry " +"from scratch). use uuidgen1 to generate a VuXML " +"UUID." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14590 +msgid "This is a one-line description of the issue found." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14595 +msgid "" +"The names of packages affected are listed there. Multiple names can be given " +"since several packages may be based on a single master port or software " +"product. This may include stable and development branches, localized " +"versions, and slave ports featuring different choices of important build-" +"time configuration options." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:14603 +msgid "" +"It is the submitter's responsibility to find all such related packages when " +"writing a VuXML entry. Keep in mind that make search name=foo is helpful. The primary points to look for are:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:14610 +msgid "" +"the foo-devel variant for a foo " +"port;" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:14615 +msgid "" +"other variants with a suffix like -a4 (for print-related " +"packages), -without-gui (for packages with X support " +"disabled), or similar;" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:14622 +msgid "" +"jp-, ru-, zh-, and " +"other possible localized variants in the corresponding national categories " +"of the ports collection." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14632 +msgid "" +"Affected versions of the package(s) are specified there as one or more " +"ranges using a combination of <lt>, <" +"le>, <eq>, <ge>, and <gt> elements. Check that the version " +"ranges given do not overlap." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14641 +msgid "" +"In a range specification, * (asterisk) denotes the " +"smallest version number. In particular, 2.* is less than " +"2.a. Therefore an asterisk may be used for a range to " +"match all possible alpha, beta, and " +"RC versions. For instance, <ge>2.*</" +"ge><lt>3.*</lt> will selectively match every " +"2.x version while <ge>2.0</ge><" +"lt>3.0</lt> will not since the latter misses 2." +"r3 and matches 3.b." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14655 +msgid "" +"The above example specifies that affected are versions from 1.6 to 1.9 inclusive, versions 2.x before 2.4_1, and version 3.0b1." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14663 +msgid "" +"Several related package groups (essentially, ports) can be listed in the " +"<affected> section. This can be used if several " +"software products (say FooBar, FreeBar and OpenBar) grow from the same code " +"base and still share its bugs and vulnerabilities. Note the difference from " +"listing multiple names within a single <package> section." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14673 +msgid "" +"The version ranges have to allow for PORTEPOCH and " +"PORTREVISION if applicable. Please remember that " +"according to the collation rules, a version with a non-zero " +"PORTEPOCH is greater than any version without " +"PORTEPOCH, for example, 3.0,1 is " +"greater than 3.1 or even than 8.9." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14685 +msgid "" +"This is a summary of the issue. XHTML is used in this field. At least " +"enclosing <p> and </p> has " +"to appear. More complex mark-up may be used, but only for the sake of " +"accuracy and clarity: No eye candy please." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14693 +msgid "" +"This section contains references to relevant documents. As many references " +"as apply are encouraged." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14699 +msgid "" +"This is a FreeBSD " +"security advisory." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14704 +msgid "" +"This is a FreeBSD " +"problem report." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14709 +msgid "" +"This is a MITRE CVE " +"identifier." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14715 +msgid "" +"This is a SecurityFocus Bug ID." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14720 +msgid "" +"This is a US-CERT security " +"advisory." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14726 +msgid "" +"This is a US-CERT " +"vulnerability note." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14732 +msgid "" +"This is a US-CERT Cyber " +"Security Alert." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14738 +msgid "" +"This is a US-CERT Technical " +"Cyber Security Alert." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14744 +msgid "" +"This is a URL to an archived posting in a mailing list. The attribute " +"msgid is optional and may specify the message ID of the " +"posting." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14750 +msgid "" +"This is a generic URL. Only it if none of the other reference categories " +"apply." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14755 +msgid "" +"This is the date when the issue was disclosed (YYYY-MM-DD)." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14760 +msgid "" +"This is the date when the entry was added (YYYY-MM-DD)." +msgstr "" + +#. (itstool) path: callout/para +#: book.translate.xml:14765 +msgid "" +"This is the date when any information in the entry was last modified " +"(YYYY-MM-DD). New entries must not include this " +"field. Add it when editing an existing entry." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:14774 +msgid "Testing Changes to the VuXML Database" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14776 +msgid "" +"This example describes a new entry for a vulnerability in the package " +"dropbear that has been fixed in version " +"dropbear-2013.59." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14780 +msgid "" +"As a prerequisite, install a fresh version of security/vuxml port." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14783 +msgid "" +"First, check whether there already is an entry for this vulnerability. If " +"there were such an entry, it would match the previous version of the " +"package, 2013.58:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:14788 +#, no-wrap +msgid "% pkg audit dropbear-2013.58" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14790 +msgid "If there is none found, add a new entry for this vulnerability." +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:14793 +#, no-wrap +msgid "" +"% cd ${PORTSDIR}/security/vuxml\n" +"% make newentry" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14796 +msgid "Verify its syntax and formatting:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:14798 +#, no-wrap +msgid "% make validate" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:14801 +msgid "" +"At least one of these packages needs to be installed: textproc/libxml2, textproc/jade." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14806 +msgid "" +"Verify that the <affected> section of the entry " +"will match the correct packages:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:14809 +#, no-wrap +msgid "" +"% pkg audit -f " +"${PORTSDIR}/security/vuxml/vuln.xml dropbear-2013.58" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14811 +msgid "Make sure that the entry produces no spurious matches in the output." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14814 +msgid "Now check whether the right package versions are matched by the entry:" +msgstr "" + +#. (itstool) path: sect2/screen +#: book.translate.xml:14817 +#, no-wrap +msgid "" +"% pkg audit -f " +"${PORTSDIR}/security/vuxml/vuln.xml dropbear-2013.58 dropbear-2013.59<" +"/userinput>\n" +"dropbear-2012.58 is vulnerable:\n" +"dropbear -- exposure of sensitive information, DoS\n" +"CVE: CVE-2013-4434\n" +"CVE: CVE-2013-4421\n" +"WWW: http://portaudit.FreeBSD.org/8c9b48d1-3715-11e3-a624-00262d8b701d.html\n" +"\n" +"1 problem(s) in the installed packages found." +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:14826 +msgid "The former version matches while the latter one does not." +msgstr "" + +#. (itstool) path: chapter/title +#: book.translate.xml:14841 +msgid "Dos and Don'ts" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14846 +msgid "" +"Here is a list of common dos and don'ts that are encountered during the " +"porting process. Check the port against this list, but also check ports in " +"the PR database " +"that others have submitted. Submit any comments on ports as described in " +"Bug Reports and General " +"Commentary. Checking ports in the PR database will both make it " +"faster for us to commit them, and prove that you know what you are doing." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:14857 +msgid "WRKDIR" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14859 +msgid "" +"Do not write anything to files outside WRKDIR. " +"WRKDIR is the only place that is guaranteed to be " +"writable during the port build (see installing ports " +"from a CDROM for an example of building ports from a read-only tree). " +"The pkg-* files can be " +"modified by redefining a variable rather " +"than overwriting the file." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:14871 +msgid "WRKDIRPREFIX" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14873 +msgid "" +"Make sure the port honors WRKDIRPREFIX. Most ports do not " +"have to worry about this. In particular, when referring to a " +"WRKDIR of another port, note that the correct location is " +"WRKDIRPREFIXPORTSDIR/subdir/" +"name/work not PORTSDIR/" +"subdir/name/work or .CURDIR/../../subdir/" +"name/work or some such." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14884 +msgid "" +"Also, if defining WRKDIR, make sure to prepend " +"${WRKDIRPREFIX}${.CURDIR} in the front." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:14891 +msgid "Differentiating Operating Systems and OS Versions" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14893 +msgid "" +"Some code needs modifications or conditional compilation based upon what " +"version of FreeBSD Unix it is running under. The preferred way to tell " +"FreeBSD versions apart are the __FreeBSD_version and " +"__FreeBSD__ macros defined in sys/param.h. If this file is not included add the code," +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:14900 +#, no-wrap +msgid "#include <sys/param.h>" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14902 +msgid "to the proper place in the .c file." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14905 +msgid "" +"__FreeBSD__ is defined in all versions of FreeBSD as " +"their major version number. For example, in FreeBSD 9.x, " +"__FreeBSD__ is defined to be 9." +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:14910 +#, no-wrap +msgid "" +"#if __FreeBSD__ >= 9\n" +"# if __FreeBSD_version >= 901000\n" +"\t /* 9.1+ release specific code here */\n" +"# endif\n" +"#endif" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14916 +msgid "" +"A complete list of __FreeBSD_version values is available " +"in ." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:14921 +msgid "Writing Something After bsd.port.mk" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14924 +msgid "" +"Do not write anything after the .include <bsd.port.mk> line. It usually can be avoided by including bsd.port.pre." +"mk somewhere in the middle of the Makefile " +"and bsd.port.post.mk at the end." +msgstr "" + +#. (itstool) path: important/para +#: book.translate.xml:14932 +msgid "" +"Include either the bsd.port.pre.mk/bsd.port." +"post.mk pair or bsd.port.mk only; do not mix " +"these two usages." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14938 +msgid "" +"bsd.port.pre.mk only defines a few variables, which can " +"be used in tests in the Makefile, bsd.port." +"post.mk defines the rest." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:14943 +msgid "" +"Here are some important variables defined in bsd.port.pre.mk (this is not the complete list, please read bsd.port.mk for the complete list)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14959 +msgid "ARCH" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14960 +msgid "" +"The architecture as returned by uname -m (for example, " +"i386)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14966 +msgid "OPSYS" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14967 +msgid "" +"The operating system type, as returned by uname -s (for " +"example, FreeBSD)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14973 +msgid "OSREL" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14974 +msgid "" +"The release version of the operating system (for example, 2.1.5 or 2.2.7)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14980 +msgid "OSVERSION" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14981 +msgid "" +"The numeric version of the operating system; the same as __FreeBSD_version." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14986 +msgid "LOCALBASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14987 +msgid "" +"The base of the local tree (for example, /usr/local)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14992 +msgid "PREFIX" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:14994 +msgid "" +"Where the port installs itself (see more on " +"PREFIX)." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:15003 +msgid "" +"When MASTERDIR is needed, always define it before " +"including bsd.port.pre.mk." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15008 +msgid "" +"Here are some examples of things that can be added after bsd.port." +"pre.mk:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:15011 +#, no-wrap +msgid "" +"# no need to compile lang/perl5 if perl5 is already in system\n" +".if ${OSVERSION} > 300003\n" +"BROKEN=\tperl is in system\n" +".endif" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15016 +msgid "Always use tab instead of spaces after BROKEN=." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15021 +msgid "Use the exec Statement in Wrapper Scripts" +msgstr "在 Wrapper Scripts 中使用 exec 敘述句" + +#. (itstool) path: sect1/para +#: book.translate.xml:15024 +msgid "" +"If the port installs a shell script whose purpose is to launch another " +"program, and if launching that program is the last action performed by the " +"script, make sure to launch the program using the exec " +"statement, for instance:" +msgstr "" +"若某 port 為了執行其他程式而安裝了一個 shell script, 而該程式同時也是該 script 最後一個動作,那麼需要確定該 script " +"是用 exec 敘述句(statement),例如:" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:15030 +#, no-wrap +msgid "" +"#!/bin/sh\n" +"exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar \"$@\"" +msgstr "" +"#!/bin/sh\n" +"exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar \"$@\"" + +#. (itstool) path: sect1/para +#: book.translate.xml:15033 +msgid "" +"The exec statement replaces the shell process with the " +"specified program. If exec is omitted, the shell " +"process remains in memory while the program is executing, and needlessly " +"consumes system resources." +msgstr "" +"exec 敘述句以所指定的程式取代了該 shell 的程序。 若省略 exec<" +"/function> ,那麼該 shell 程序 將會在程式執行中一直存在於記憶體,這無疑地浪費了系統資源。" + +#. (itstool) path: sect1/title +#: book.translate.xml:15041 +msgid "Do Things Rationally" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15043 +msgid "" +"The Makefile should do things in a simple and " +"reasonable manner. Making it a couple of lines shorter or more readable is " +"always better. Examples include using a make .if " +"construct instead of a shell if construct, not redefining " +"<_:buildtarget-1/> if redefining EXTRACT* is enough, and " +"using GNU_CONFIGURE instead of CONFIGURE_ARGS += " +"--prefix=${PREFIX}." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15054 +msgid "" +"If a lot of new code is needed to do something, there may already be an " +"implementation of it in bsd.port.mk. While hard to " +"read, there are a great many seemingly-hard problems for which bsd." +"port.mk already provides a shorthand solution." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15063 +msgid "Respect Both CC and CXX" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15066 +msgid "" +"The port must respect both CC and CXX. " +"What we mean by this is that the port must not set the values of these " +"variables absolutely, overriding existing values; instead, it may append " +"whatever values it needs to the existing values. This is so that build " +"options that affect all ports can be set globally." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15073 +msgid "" +"If the port does not respect these variables, please add " +"NO_PACKAGE=ignores either cc or cxx to the " +"Makefile." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15078 +msgid "" +"Here is an example of a Makefile respecting both " +"CC and CXX. Note the ?=:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:15082 +#, no-wrap +msgid "CC?= gcc" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:15084 +#, no-wrap +msgid "CXX?= g++" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15086 +msgid "" +"Here is an example which respects neither CC nor " +"CXX:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:15089 +#, no-wrap +msgid "CC= gcc" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:15091 +#, no-wrap +msgid "CXX= g++" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15093 +msgid "" +"Both CC and CXX can be defined on " +"FreeBSD systems in /etc/make.conf. The first example " +"defines a value if it was not previously set in /etc/make.conf, preserving any system-wide definitions. The second example " +"clobbers anything previously defined." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15103 +msgid "Respect CFLAGS" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15105 +msgid "" +"The port must respect CFLAGS. What we mean by this is " +"that the port must not set the value of this variable absolutely, overriding " +"the existing value. Instead, it may append whatever values it needs to the " +"existing value. This is so that build options that affect all ports can be " +"set globally." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15112 +msgid "" +"If it does not, please add NO_PACKAGE=ignores cflags to " +"the Makefile." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15116 +msgid "" +"Here is an example of a Makefile respecting " +"CFLAGS. Note the +=:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:15120 +#, no-wrap +msgid "CFLAGS+= -Wall -Werror" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15122 +msgid "Here is an example which does not respect CFLAGS:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:15125 +#, no-wrap +msgid "CFLAGS= -Wall -Werror" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15127 +msgid "" +"CFLAGS is defined on FreeBSD systems in /etc/" +"make.conf. The first example appends additional flags to " +"CFLAGS, preserving any system-wide definitions. The " +"second example clobbers anything previously defined." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15134 +msgid "" +"Remove optimization flags from the third party Makefiles. The system CFLAGS contains system-wide " +"optimization flags. An example from an unmodified Makefile:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:15140 +#, no-wrap +msgid "CFLAGS= -O3 -funroll-loops -DHAVE_SOUND" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15142 +msgid "" +"Using system optimization flags, the Makefile would " +"look similar to this example:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:15146 +#, no-wrap +msgid "CFLAGS+= -DHAVE_SOUND" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15150 +msgid "Feedback" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15152 +msgid "" +"Do send applicable changes and patches to the upstream maintainer for " +"inclusion in the next release of the code. This makes updating to the next " +"release that much easier." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15158 +msgid "README.html" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15160 +msgid "" +"README.html is not part of the port, but generated by " +"make readme. Do not include this file in patches or " +"commits." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:15165 +msgid "" +"If make readme fails, make sure that the default value of " +"ECHO_MSG has not been modified by the port." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15172 +msgid "Marking a Port as Architecture Neutral" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15174 +msgid "" +"Ports that do not have any architecture-dependent files or requirements are " +"identified by setting NO_ARCH=yes." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15180 +msgid "" +"Marking a Port Not Installable with BROKEN, " +"FORBIDDEN, or IGNORE" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15184 +msgid "" +"In certain cases, users must be prevented from installing a port. There are " +"several variables that can be used in a port's Makefile " +"to tell the user that the port cannot be installed. The value of these make " +"variables will be the reason that is shown to users for why the port refuses " +"to install itself. Please use the correct make variable. Each variable " +"conveys radically different meanings, both to users and to automated systems " +"that depend on Makefiles, such as the ports build cluster, FreshPorts, and portsmon." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15203 +msgid "" +"BROKEN is reserved for ports that currently do not " +"compile, install, deinstall, or run correctly. Use it for ports where the " +"problem is believed to be temporary." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15208 +msgid "" +"If instructed, the build cluster will still attempt to try to build them to " +"see if the underlying problem has been resolved. (However, in general, the " +"cluster is run without this.)" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15213 +msgid "For instance, use BROKEN when a port:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15218 +msgid "does not compile" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15222 +msgid "fails its configuration or installation process" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15227 +msgid "installs files outside of ${PREFIX}" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15232 +msgid "" +"does not remove all its files cleanly upon deinstall (however, it may be " +"acceptable, and desirable, for the port to leave user-modified files behind)" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15239 +msgid "has runtime issues on systems where it is supposed to run fine." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15246 +msgid "" +"FORBIDDEN is used for ports that contain a security " +"vulnerability or induce grave concern regarding the security of a FreeBSD " +"system with a given port installed (for example, a reputably insecure " +"program or a program that provides easily exploitable services). Mark ports " +"as FORBIDDEN as soon as a particular piece of software " +"has a vulnerability and there is no released upgrade. Ideally upgrade ports " +"as soon as possible when a security vulnerability is discovered so as to " +"reduce the number of vulnerable FreeBSD hosts (we like being known for being " +"secure), however sometimes there is a noticeable time gap between disclosure " +"of a vulnerability and an updated release of the vulnerable software. Do not " +"mark a port FORBIDDEN for any reason other than security." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15264 +msgid "" +"IGNORE is reserved for ports that must not be built for " +"some other reason. Use it for ports where the problem is believed to be " +"structural. The build cluster will not, under any circumstances, build ports " +"marked as IGNORE. For instance, use IGNORE when a port:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15274 +msgid "does not work on the installed version of FreeBSD" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15279 +msgid "" +"has a distfile which may not be automatically fetched due to licensing " +"restrictions" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15284 +msgid "" +"does not work with some other currently installed port (for instance, the " +"port depends on www/apache20 but www/apache22 is installed)" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:15293 +msgid "" +"If a port would conflict with a currently installed port (for example, if " +"they install a file in the same place that performs a different function), " +"use CONFLICTS instead. " +"CONFLICTS will set IGNORE by itself." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15304 +msgid "" +"To mark a port as IGNOREd only on certain architectures, " +"there are two other convenience variables that will automatically set " +"IGNORE: ONLY_FOR_ARCHS and " +"NOT_FOR_ARCHS. Examples:" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:15311 +#, no-wrap +msgid "ONLY_FOR_ARCHS=\ti386 amd64" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: book.translate.xml:15313 +#, no-wrap +msgid "NOT_FOR_ARCHS=\tia64 sparc64" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15315 +msgid "" +"A custom IGNORE message can be set using " +"ONLY_FOR_ARCHS_REASON and NOT_FOR_ARCHS_REASON. Per architecture entries are possible with " +"ONLY_FOR_ARCHS_REASON_ARCH and " +"NOT_FOR_ARCHS_REASON_ARCH." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15325 +msgid "" +"If a port fetches i386 binaries and installs them, set " +"IA32_BINARY_PORT. If this variable is set, /usr/" +"lib32 must be present for IA32 versions of libraries and the " +"kernel must support IA32 compatibility. If one of these two dependencies is " +"not satisfied, IGNORE will be set automatically." +msgstr "" + +#. (itstool) path: sect2/title +#: book.translate.xml:15337 +msgid "Implementation Notes" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:15339 +msgid "" +"Do not quote the values of BROKEN, IGNORE, and related variables. Due to the way the information is shown to " +"the user, the wording of messages for each variable differ:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:15344 +#, no-wrap +msgid "BROKEN=\tfails to link with base -lcrypto" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:15346 +#, no-wrap +msgid "IGNORE=\tunsupported on recent versions" +msgstr "" + +#. (itstool) path: sect2/para +#: book.translate.xml:15348 +msgid "resulting in this output from make describe:" +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:15351 +#, no-wrap +msgid "" +"===> foobar-0.1 is marked as broken: fails to link with base -lcrypto." +msgstr "" + +#. (itstool) path: sect2/programlisting +#: book.translate.xml:15353 +#, no-wrap +msgid "===> foobar-0.1 is unsupported on recent versions." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15358 +msgid "" +"Marking a Port for Removal with DEPRECATED or " +"EXPIRATION_DATE" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15362 +msgid "" +"Do remember that BROKEN and FORBIDDEN " +"are to be used as a temporary resort if a port is not working. Permanently " +"broken ports will be removed from the tree entirely." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15367 +msgid "" +"When it makes sense to do so, users can be warned about a pending port " +"removal with DEPRECATED and EXPIRATION_DATE. The former is a string stating why the port is scheduled for " +"removal; the latter is a string in ISO 8601 format (YYYY-MM-DD). Both will " +"be shown to the user." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15374 +msgid "" +"It is possible to set DEPRECATED without an " +"EXPIRATION_DATE (for instance, recommending a newer " +"version of the port), but the converse does not make any sense." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15379 +msgid "" +"There is no set policy on how much notice to give. Current practice seems to " +"be one month for security-related issues and two months for build issues. " +"This also gives any interested committers a little time to fix the problems." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15386 +msgid "Avoid Use of the .error Construct" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15389 +msgid "" +"The correct way for a Makefile to signal that the port " +"cannot be installed due to some external factor (for instance, the user has " +"specified an illegal combination of build options) is to set a non-blank " +"value to IGNORE. This value will be formatted and shown " +"to the user by make install." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15396 +msgid "" +"It is a common mistake to use .error for this purpose. " +"The problem with this is that many automated tools that work with the ports " +"tree will fail in this situation. The most common occurrence of this is seen " +"when trying to build /usr/ports/INDEX (see ). However, even more trivial commands such as " +"make maintainer also fail in this scenario. This is not " +"acceptable." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:15406 +msgid "How to Avoid Using .error" +msgstr "" + +#. (itstool) path: example/para +#: book.translate.xml:15408 +msgid "" +"The first of the next two Makefile snippets will cause " +"make index to fail, while the second one will not:" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:15413 +#, no-wrap +msgid ".error \"option is not supported\"" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:15415 +#, no-wrap +msgid "IGNORE=option is not supported" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15420 +msgid "Usage of sysctl" +msgstr "sysctl 的使用" + +#. (itstool) path: sect1/para +#: book.translate.xml:15422 +msgid "" +"The usage of sysctl is discouraged except in targets. " +"This is because the evaluation of any makevars, such as " +"used during make index, then has to run the command, " +"further slowing down that process." +msgstr "" +"sysctl 除了在 targets 之外,都不鼓勵使用。 這是因為任何 makevar<" +"/literal> 的評估都有可能會使得程序執行速度變慢,例如在 make index 的過程中,就會需要用到 <" +"filename>sysctl。" + +#. (itstool) path: sect1/para +#: book.translate.xml:15428 +msgid "" +"Only use sysctl8 through SYSCTL, as it contains " +"the fully qualified path and can be overridden, if one has such a special " +"need." +msgstr "" +"若要使用 sysctl8<" +"/manvolnum> 則必須透過 SYSCTL " +"此一變數才可,因為這樣才會包含完整路徑, 同時也可以隨時因應使用者需求而替換為其他路徑。" + +#. (itstool) path: sect1/title +#: book.translate.xml:15435 +msgid "Rerolling Distfiles" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15437 +msgid "" +"Sometimes the authors of software change the content of released distfiles " +"without changing the file's name. Verify that the changes are official and " +"have been performed by the author. It has happened in the past that the " +"distfile was silently altered on the download servers with the intent to " +"cause harm or compromise end user security." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15444 +msgid "" +"Put the old distfile aside, download the new one, unpack them and compare " +"the content with diff1. If there is nothing " +"suspicious, update distinfo. Be sure to summarize the " +"differences in the PR or commit log, so that other people know that nothing " +"bad has happened." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15452 +msgid "Contact the authors of the software and confirm the changes with them." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15457 +msgid "Avoiding Linuxisms" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15459 +msgid "" +"Do not use /proc if there are any other ways of getting " +"the information. For example, setprogname(argv[0]) in " +"main() and then " +"getprogname3 to know the executable name>." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15465 +msgid "" +"Do not rely on behavior that is undocumented by POSIX." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15468 +msgid "" +"Do not record timestamps in the critical path of the application if it also " +"works without. Getting timestamps may be slow, depending on the accuracy of " +"timestamps in the OS. If timestamps are really needed, " +"determine how precise they have to be and use an API " +"which is documented to just deliver the needed precision." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15476 +msgid "" +"A number of simple syscalls (for example " +"gettimeofday2, getpid2) are much faster on " +"Linux than on any other " +"operating system due to caching and the vsyscall performance optimizations. " +"Do not rely on them being cheap in performance-critical applications. In " +"general, try hard to avoid syscalls if possible." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15483 +msgid "" +"Do not rely on Linux-specific " +"socket behaviour. In particular, default socket buffer sizes are different " +"(call setsockopt2 with SO_SNDBUF and " +"SO_RCVBUF, and while Linux's send2 blocks when the socket " +"buffer is full, FreeBSD's will fail and set ENOBUFS in " +"errno." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15490 +msgid "" +"If relying on non-standard behaviour is required, encapsulate it properly " +"into a generic API, do a check for the behaviour in the " +"configure stage, and stop if it is missing." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15495 +msgid "" +"Check the man pages to see if the function used is a POSIX interface " +"(in the STANDARDS section of the man page)." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15501 +msgid "" +"Do not assume that /bin/sh is bash. Ensure that a command line passed to " +"system3 will work with a POSIX compliant shell." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15506 +msgid "" +"A list of common bashisms is available here." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15509 +msgid "" +"Check that headers are included in the POSIX or man page " +"recommended way. For example, sys/types.h is often " +"forgotten, which is not as much of a problem for Linux as it is for FreeBSD." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15517 +msgid "Miscellanea" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15519 +msgid "" +"Always double-check pkg-descr and pkg-plist. If reviewing a port and a better wording can be achieved, do so." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15524 +msgid "" +"Do not copy more copies of the GNU General Public License into our system, " +"please." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15527 +msgid "" +"Please be careful to note any legal issues! Do not let us illegally " +"distribute software!" +msgstr "" + +#. (itstool) path: chapter/title +#: book.translate.xml:15541 +msgid "A Sample Makefile" +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:15543 +msgid "" +"Here is a sample Makefile that can be used to create a " +"new port. Make sure to remove all the extra comments (ones between brackets)." +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:15547 +msgid "" +"The format shown is the recommended one for ordering variables, empty lines " +"between sections, and so on. This format is designed so that the most " +"important information is easy to locate. We recommend using portlint to check the Makefile." +msgstr "" + +#. (itstool) path: chapter/programlisting +#: book.translate.xml:15554 +#, no-wrap +msgid "" +"[the header...just to make it easier for us to identify the ports.]\n" +"# Created by: Satoshi Asami <asami@FreeBSD.org>\n" +"[The optional Created by: line names the person who " +"originally\n" +"created the port. Note that the : is followed by a space\n" +"and not a tab character.\n" +"If this line is present, future maintainers must\n" +"not change or remove it except at the original author's request.]\n" +"\n" +"# $FreeBSD$\n" +"[ ^^^^^^^^^ This will be automatically replaced with RCS ID string by SVN\n" +"when it is committed to our repository. If upgrading a port, do not alter\n" +"this line back to \"$FreeBSD$\". SVN deals with it automatically.]\n" +"\n" +"[section to describe the port itself and the master site - PORTNAME\n" +" and PORTVERSION are always first, followed by CATEGORIES,\n" +" and then MASTER_SITES, which can be followed by MASTER_SITE_SUBDIR.\n" +" PKGNAMEPREFIX and PKGNAMESUFFIX, if needed, will be after that.\n" +" Then comes DISTNAME, EXTRACT_SUFX and/or DISTFILES, and then\n" +" EXTRACT_ONLY, as necessary.]\n" +"PORTNAME=\txdvi\n" +"PORTVERSION=\t18.2\n" +"CATEGORIES=\tprint\n" +"[do not forget the trailing slash (\"/\")!\n" +" if not using MASTER_SITE_* macros]\n" +"MASTER_SITES=\t${MASTER_SITE_XCONTRIB}\n" +"MASTER_SITE_SUBDIR=\tapplications\n" +"PKGNAMEPREFIX=\tja-\n" +"DISTNAME=\txdvi-pl18\n" +"[set this if the source is not in the standard \".tar.gz\" form]\n" +"EXTRACT_SUFX=\t.tar.Z\n" +"\n" +"[section for distributed patches -- can be empty]\n" +"PATCH_SITES=\tftp://ftp.sra.co.jp/pub/X11/japanese/\n" +"PATCHFILES=\txdvi-18.patch1.gz xdvi-18.patch2.gz\n" +"\n" +"[maintainer; *mandatory*! This is the person who is volunteering to\n" +" handle port updates, build breakages, and to whom a users can direct\n" +" questions and bug reports. To keep the quality of the Ports Collection\n" +" as high as possible, we no longer accept new ports that are assigned to\n" +" \"ports@FreeBSD.org\".]\n" +"MAINTAINER=\tasami@FreeBSD.org\n" +"COMMENT=\tDVI Previewer for the X Window System\n" +"\n" +"[dependencies -- can be empty]\n" +"RUN_DEPENDS=\tgs:${PORTSDIR}/print/ghostscript\n" +"\n" +"[this section is for other standard bsd.port.mk variables that do not\n" +" belong to any of the above]\n" +"[If it asks questions during configure, build, install...]\n" +"IS_INTERACTIVE=\tyes\n" +"[If it extracts to a directory other than ${DISTNAME}...]\n" +"WRKSRC=\t\t${WRKDIR}/xdvi-new\n" +"[If the distributed patches were not made relative to ${WRKSRC},\n" +" this may need to be tweaked]\n" +"PATCH_DIST_STRIP=\t-p1\n" +"[If it requires a \"configure\" script generated by GNU autoconf to be run]\n" +"GNU_CONFIGURE=\tyes\n" +"[If it requires GNU make, not /usr/bin/make, to build...]\n" +"USES= gmake\n" +"[If it is an X application and requires \"xmkmf -a\" to be run...]\n" +"USES= imake\n" +"[et cetera.]\n" +"\n" +"[non-standard variables to be used in the rules below]\n" +"MY_FAVORITE_RESPONSE=\t\"yeah, right\"\n" +"\n" +"[then the special rules, in the order they are called]\n" +"pre-fetch:\n" +"\ti go fetch something, yeah\n" +"\n" +"post-patch:\n" +"\ti need to do something after patch, great\n" +"\n" +"pre-install:\n" +"\tand then some more stuff before installing, wow\n" +"\n" +"[and then the epilogue]\n" +"\n" +".include <bsd.port.mk>" +msgstr "" + +#. (itstool) path: chapter/title +#: book.translate.xml:15644 +msgid "Keeping Up" +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:15646 +msgid "" +"The FreeBSD Ports Collection is constantly changing. Here is some " +"information on how to keep up." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15650 +msgid "FreshPorts" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15652 +msgid "" +"One of the easiest ways to learn about updates that have already been " +"committed is by subscribing to FreshPorts. Multiple ports can be monitored. Maintainers are " +"strongly encouraged to subscribe, because they will receive notification of " +"not only their own changes, but also any changes that any other FreeBSD " +"committer has made. (These are often necessary to keep up with changes in " +"the underlying ports framework—although it would be most polite to receive " +"an advance heads-up from those committing such changes, sometimes this is " +"overlooked or impractical. Also, in some cases, the changes are very minor " +"in nature. We expect everyone to use their best judgement in these cases.)" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15665 +msgid "" +"To use FreshPorts, an account is required. Those with registered email " +"addresses at @FreeBSD.org will see the opt-in link on the " +"right-hand side of the web pages. Those who already have a FreshPorts " +"account but are not using a @FreeBSD.org email address " +"can change the email to @FreeBSD.org, subscribe, then " +"change it back again." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15673 +msgid "" +"FreshPorts also has a sanity test feature which automatically tests each " +"commit to the FreeBSD ports tree. If subscribed to this service, a committer " +"will receive notifications of any errors which FreshPorts detects during " +"sanity testing of their commits." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15681 +msgid "The Web Interface to the Source Repository" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15683 +msgid "" +"It is possible to browse the files in the source repository by using a web " +"interface. Changes that affect the entire port system are now documented in " +"the CHANGES file. Changes that affect individual ports are now " +"documented in the UPDATING file. However, the definitive answer to any " +"question is undoubtedly to read the source code of bsd.port.mk, and " +"associated files." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15694 +msgid "The FreeBSD Ports Mailing List" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15696 +msgid "" +"As a ports maintainer, consider subscribing to FreeBSD ports mailing " +"list. Important changes to the way ports work will be announced " +"there, and then committed to CHANGES." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15701 +msgid "" +"If the volume of messages on this mailing list is too high, consider " +"following FreeBSD ports announce mailing list which " +"contains only announcements." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15707 +msgid "The FreeBSD Port Building Cluster" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15709 +msgid "" +"One of the least-publicized strengths of FreeBSD is that an entire cluster " +"of machines is dedicated to continually building the Ports Collection, for " +"each of the major OS releases and for each Tier-1 architecture." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15714 +msgid "" +"Individual ports are built unless they are specifically marked with " +"IGNORE. Ports that are marked with BROKEN will still be attempted, to see if the underlying problem has been " +"resolved. (This is done by passing TRYBROKEN to the " +"port's Makefile.)" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15723 +msgid "Portscout: the FreeBSD Ports Distfile Scanner" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15725 +msgid "" +"The build cluster is dedicated to building the latest release of each port " +"with distfiles that have already been fetched. However, as the Internet " +"continually changes, distfiles can quickly go missing. Portscout, the FreeBSD Ports " +"distfile scanner, attempts to query every download site for every port to " +"find out if each distfile is still available. Portscout can generate HTML reports and send emails " +"about newly available ports to those who request them. Unless not otherwise " +"subscribed, maintainers are asked to check periodically for changes, either " +"by hand or using the RSS feed." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15738 +msgid "" +"Portscout's first page gives the email address of " +"the port maintainer, the number of ports the maintainer is responsible for, " +"the number of those ports with new distfiles, and the percentage of those " +"ports that are out-of-date. The search function allows for searching by " +"email address for a specific maintainer, and for selecting whether only out-" +"of-date ports are shown." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15746 +msgid "" +"Upon clicking on a maintainer's email address, a list of all of their ports " +"is displayed, along with port category, current version number, whether or " +"not there is a new version, when the port was last updated, and finally when " +"it was last checked. A search function on this page allows the user to " +"search for a specific port." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15753 +msgid "" +"Clicking on a port name in the list displays the FreshPorts port information." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15758 +msgid "The FreeBSD Ports Monitoring System" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15760 +msgid "" +"Another handy resource is the FreeBSD Ports Monitoring System (also known as portsmon). This system comprises a database that processes information from " +"several sources and allows it to be browsed via a web interface. Currently, " +"the ports Problem Reports (PRs), the error logs from the build cluster, and " +"individual files from the ports collection are used. In the future, this " +"will be expanded to include the distfile survey, as well as other sources." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15770 +msgid "" +"To get started, use the Overview of One Port search page to find all the " +"information about a port." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15774 +msgid "" +"This is the only resource available that maps PR entries to portnames. PR " +"submitters do not always include the portname in their Synopsis, although we " +"would prefer that they did. So, portsmon is a good place " +"to find out whether an existing port has any PRs filed against it, any build " +"errors, or if a new port the porter is considering creating has already been " +"submitted." +msgstr "" + +#. (itstool) path: chapter/title +#. (itstool) id: book.translate.xml#uses-values +#: book.translate.xml:15812 +msgid "Using USES Macros" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15816 +msgid "An Introduction to USES" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15818 +msgid "" +"USES macros make it easy to declare requirements and " +"settings for a port. They can add dependencies, change building behavior, " +"add metadata to packages, and so on, all by selecting simple, preset values.." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15824 +msgid "" +"Each section in this chapter describes a possible value for USES, along with its possible arguments. Arguments are appeneded to the " +"value after a colon (:). Multiple arguments are separated " +"by commas (,)." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:15831 +msgid "Using Multiple Values" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:15833 +#, no-wrap +msgid "USES=\tbison perl" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:15837 +msgid "Adding an Argument" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:15839 +#, no-wrap +msgid "USES=\tgmake:lite" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:15843 +msgid "Adding Multiple Arguments" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:15845 +#, no-wrap +msgid "USES=\tdrupal:7,theme" +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:15849 +msgid "Mixing it All Together" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:15851 +#, no-wrap +msgid "USES=\tpgsql:9.3+ cpe python:2.7,build" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15856 +msgid "ada" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15858 +msgid "" +"Possible arguments: (none), 47, 49, " +"5" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15861 +msgid "" +"Depends on an Ada-capable compiler, and sets " +"CC accordingly. Defaults to a gcc 4.9 based compiler, use :47 to use the older " +"gcc 4.7 based one and :5 to " +"use the newer gcc 5 based one." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15871 +msgid "autoreconf" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15873 +msgid "Possible arguments: (none), build" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15875 +msgid "" +"Runs autoreconf. It encapsulates the aclocal, autoconf, autoheader, " +"automake, autopoint, and " +"libtoolize commands. Each command applies to " +"${CONFIGURE_WRKSRC}/configure.ac or its old name, " +"${CONFIGURE_WRKSRC}/configure.in. If configure.ac defines subdirectories with their own configure.ac using AC_CONFIG_SUBDIRS, autoreconf will recursively update those as well. The :build argument only adds build time dependencies on those tools but does " +"not run autoreconf." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15892 +msgid "blaslapack" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15894 +msgid "" +"Possible arguments: (none), atlas, netlib (default), gotoblas, openblas" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15898 +msgid "Adds dependencies on Blas / Lapack libraries." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15902 +msgid "bison" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15904 +msgid "" +"Possible arguments: (none), build, run, both" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15907 +msgid "" +"Uses devel/bison By default, with no " +"arguments or with the build argument, it implies " +"bison is a build-time dependency, run " +"implies a run-time dependency, and both implies both run-" +"time and build-time dependencies." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15916 +msgid "charsetfix" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15918 book.translate.xml:16003 book.translate.xml:16092 +#: book.translate.xml:16105 book.translate.xml:16133 book.translate.xml:16178 +#: book.translate.xml:16188 book.translate.xml:16209 book.translate.xml:16247 +#: book.translate.xml:16277 book.translate.xml:16344 book.translate.xml:16438 +#: book.translate.xml:16489 book.translate.xml:16532 book.translate.xml:16541 +#: book.translate.xml:16551 book.translate.xml:16577 book.translate.xml:16606 +#: book.translate.xml:16615 book.translate.xml:16624 book.translate.xml:16636 +#: book.translate.xml:16646 book.translate.xml:16668 book.translate.xml:16678 +#: book.translate.xml:16702 book.translate.xml:16715 book.translate.xml:16725 +#: book.translate.xml:16874 book.translate.xml:16882 book.translate.xml:16895 +#: book.translate.xml:17045 book.translate.xml:17095 book.translate.xml:17231 +msgid "Possible arguments: (none)" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15920 +msgid "" +"Prevents the port from installing charset.alias. This " +"must be installed only by converters/libiconv. CHARSETFIX_MAKEFILEIN can be set to a path " +"relative to WRKSRC if charset.alias " +"is not installed by ${WRKSRC}/Makefile.in." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15930 +msgid "cmake" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15932 +msgid "" +"Possible arguments: (none), outsource, run" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15935 +msgid "" +"Uses CMake for configuring and building. With the " +"outsource argument, an out-of-source build will be " +"performed. With the run argument, a run-time dependency " +"is registered. For more information see ." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:15943 +msgid "compiler" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15945 +msgid "" +"Possible arguments: (none), c++14-lang, c++11-" +"lang, gcc-c++11-lib, c++11-lib, c++0x, c11, openmp, nestedfct, features" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:15951 +msgid "" +"Determines which compiler to use based on any given wishes. Use c+" +"+14-lang if the port needs a C++14-capable compiler, gcc-c" +"++11-lib if the port needs the g++ compiler " +"with a C++11 library, or c++11-lib if the port needs a C+" +"+11-ready standard library. If the port needs a compiler understanding C+" +"+11, C++0X, C11, OpenMP, or nested functions, the corresponding parameters " +"can be used. Use features to request a list of features " +"supported by the default compiler. After including bsd.port.pre." +"mk the port can inspect the results using these variables:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15966 +msgid "" +"COMPILER_TYPE: the default compiler on the system, either " +"gcc or clang" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15971 +msgid "" +"ALT_COMPILER_TYPE: the alternative compiler on the " +"system, either gcc or clang. Only set if two compilers are present in the " +"base system." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15977 +msgid "" +"COMPILER_VERSION: the first two digits of the version of " +"the default compiler." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15982 +msgid "" +"ALT_COMPILER_VERSION: the first two digits of the version " +"of the alternative compiler, if present." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15988 +msgid "" +"CHOSEN_COMPILER_TYPE: the chosen compiler, either gcc or " +"clang" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:15993 +msgid "" +"COMPILER_FEATURES: the features supported by the default " +"compiler. It currently lists the C++ library." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16001 +msgid "cpe" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16005 +msgid "" +"Include Common Platform Enumeration (CPE) information in " +"package manifest as a CPE 2.3 formatted string. See the " +"CPE specification for details. To add CPE " +"information to a port, follow these steps:" +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:16014 +msgid "" +"Search for the official CPE para for the software product either by using " +"the NVD's CPE search engine or in the official CPE dictionary " +"(warning, very large XML file). Do not ever " +"make up CPE data." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:16023 +msgid "" +"Add cpe to USES and compare the result " +"of make -V CPE_STR to the CPE " +"dictionary para. Continue one step at a time until make -V CPE_STR is correct." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:16031 +msgid "" +"If the product name (second field, defaults to PORTNAME) " +"is incorrect, define CPE_PRODUCT." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:16037 +msgid "" +"If the vendor name (first field, defaults to CPE_PRODUCT) " +"is incorrect, define CPE_VENDOR." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:16043 +msgid "" +"If the version field (third field, defaults to PORTVERSION) is incorrect, define CPE_VERSION." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:16049 +msgid "" +"If the update field (fourth field, defaults to empty) is incorrect, define " +"CPE_UPDATE." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:16054 +msgid "" +"If it is still not correct, check Mk/Uses/cpe.mk for " +"additional details, or contact the Ports Security Team ports-" +"secteam@FreeBSD.org." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:16060 +msgid "" +"Derive as much as possible of the CPE name from existing " +"variables such as PORTNAME and PORTVERSION. Use variable modifiers to extract the relevant portions from these " +"variables rather than hardcoding the name." +msgstr "" + +#. (itstool) path: step/para +#: book.translate.xml:16069 +msgid "" +"Always run make -V CPE_STR and check " +"the output before committing anything that changes PORTNAME or PORTVERSION or any other variable which is " +"used to derive CPE_STR." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16079 +msgid "cran" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16081 +msgid "Possible arguments: (none), auto-plist" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16084 +msgid "" +"Uses the Comprehensive R Archive Network. Specify auto-plist to automatically generate pkg-plist." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16090 +msgid "desktop-file-utils" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16094 +msgid "" +"Uses update-desktop-database from devel/desktop-file-utils. An extra post-install step will " +"be run without interfering with any post-install steps already in the port " +"Makefile. A line with @desktop-file-utils will be " +"added to the plist." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16103 +msgid "desthack" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16107 +msgid "" +"Changes the behavior of GNU configure to properly support DESTDIR in case the original software does not." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16113 +msgid "display" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16115 +msgid "Possible arguments: (none), ARGS" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16118 +msgid "" +"Set up a virtual display environment. If the environment variable " +"DISPLAY is not set, then Xvfb " +"is added as a build dependency, and CONFIGURE_ENV is " +"extended with the port number of the currently running instance of " +"Xvfb. The ARGS " +"parameter defaults to install and controls the phase " +"around which to start and stop the virtual display." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16131 +msgid "dos2unix" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16135 +msgid "" +"The port has files with line endings in DOS format which " +"need to be converted. Three variables can be set to control which files will " +"be converted. The default is to convert all files, " +"including binaries. See for examples." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16144 +msgid "" +"DOS2UNIX_REGEX: match file names based on a regular " +"expression." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16149 +msgid "DOS2UNIX_FILES: match literal file names." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16154 +msgid "" +"DOS2UNIX_GLOB: match file names based on a glob pattern." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16161 +msgid "drupal" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16163 +msgid "" +"Possible arguments: 6, 7, " +"module, theme" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16167 +msgid "" +"Automate installation of a port that is a Drupal " +"theme or module. Use with the version of Drupal that the port is expecting. " +"For example, USES=drupal:6,module says that this port " +"creates a Drupal 6 module. A Drupal 7 theme can be specified with " +"USES=drupal:7,theme." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16176 +msgid "execinfo" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16180 +msgid "" +"Add a library dependency on devel/libexecinfo if libexecinfo.so is not present in the base " +"system." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16186 +msgid "fakeroot" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16190 +msgid "" +"Changes some default behaviour of build systems to allow installing as a " +"user. See for more " +"information on fakeroot." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16196 +msgid "fam" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16198 +msgid "" +"Possible arguments: (none), fam, gamin" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16201 +msgid "" +"Uses a File Alteration Monitor as a library dependency, either devel/fam or devel/gamin. End users can set WITH_FAM_SYSTEM to specify their preference." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16207 +msgid "fmake" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16211 +msgid "" +"Uses devel/fmake as a build-time dependency." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16216 +msgid "fonts" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16218 +msgid "" +"Possible arguments: (none), fc, fcfontsdir (default), fontsdir, none" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16222 +msgid "" +"Adds a runtime dependency on tools needed to register fonts. Depending on " +"the argument, add a @fc " +"${FONTSDIR} line, @fcfontsdir ${FONTSDIR} line, @fontsdir ${FONTSDIR} " +"line, or no line if the argument is none, to the plist. " +"FONTSDIR defaults to ${PREFIX}/share/fonts/" +"${FONTNAME} and FONTNAME to " +"${PORTNAME}. Add FONTSDIR to " +"PLIST_SUB and SUB_LIST" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16236 +msgid "fortran" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16238 +msgid "" +"Possible arguments: gcc (default), ifort" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16241 +msgid "Uses the Fortran compiler from either GNU or Intel." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16245 +msgid "fuse" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16249 +msgid "" +"The port will depend on the FUSE library and handle the dependency on the " +"kernel module depending on the version of FreeBSD." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16255 +msgid "gecko" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16257 +msgid "" +"Possible arguments: libxul (default), firefox, seamonkey, thunderbird, " +"build, XY, " +"XY+" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16263 +msgid "" +"Add a dependency on different gecko based " +"applications. If libxul is used, it is the only argument " +"allowed. When the argument is not libxul, the " +"firefox, seamonkey, or " +"thunderbird arguments can be used, along with optional " +"build and XY/XY+ version arguments." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16275 +msgid "gettext" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16279 +msgid "" +"Deprecated. Will include both gettext-runtime and gettext-tools." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16284 +msgid "gettext-runtime" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16286 +msgid "" +"Possible arguments: (none), lib (default), " +"build, run" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16290 +msgid "" +"Uses devel/gettext-runtime. By default, " +"with no arguments or with the lib argument, implies a " +"library dependency on libintl.so. build and run implies, respectively a build-time and a " +"run-time dependency on gettext." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16299 +msgid "gettext-tools" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16301 +msgid "" +"Possible arguments: (none), build (default), " +"run" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16304 +msgid "" +"Uses devel/gettext-tools. By default, with " +"no argument, or with the build argument, a build time " +"dependency on msgfmt is registered. With the " +"run argument, a run-time dependency is registered." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16312 +msgid "ghostscript" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16314 +msgid "" +"Possible arguments: X, build, " +"run, nox11" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16318 +msgid "" +"A specific version X can be used. Possible " +"versions are 7, 8, 9 (default), and agpl. nox11 " +"indicates that the -nox11 version of the port is " +"required. build and run add build- and " +"run-time dependencies on Ghostscript. The default " +"is both build- and run-time dependencies." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16330 +msgid "gmake" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16332 +msgid "Possible arguments: (none), lite" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16334 +msgid "" +"Uses devel/gmake, or devel/gmake-lite if the lite argument is " +"used, as a build-time dependency and sets up the environment to use " +"gmake as the default make for the " +"build." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16342 +msgid "gperf" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16346 +msgid "" +"Add a buildtime dependency on devel/gperf " +"if gperf is not present in the base system." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16351 +msgid "gssapi" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16353 +msgid "" +"Possible arguments: (none), base (default), " +"heimdal, mit, flags, bootstrap" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16357 +msgid "" +"Handle dependencies needed by consumers of the GSS-API. " +"Only libraries that provide the Kerberos " +"mechanism are available. By default, or set to base, the " +"GSS-API library from the base system is used. Can also be " +"set to heimdal to use security/" +"heimdal, or mit to use security/krb5." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16365 +msgid "" +"When the local Kerberos installation is not in " +"LOCALBASE, set HEIMDAL_HOME (for " +"heimdal) or KRB5_HOME (for " +"krb5) to the location of the Kerberos installation." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16372 +msgid "These variables are exported for the ports to use:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16376 +msgid "GSSAPIBASEDIR" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16380 +msgid "GSSAPICPPFLAGS" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16384 +msgid "GSSAPIINCDIR" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16388 +msgid "GSSAPILDFLAGS" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16392 +msgid "GSSAPILIBDIR" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16396 +msgid "GSSAPILIBS" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16400 +msgid "GSSAPI_CONFIGURE_ARGS" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16404 +msgid "" +"The flags option can be given alongside base, heimdal, or mit to " +"automatically add GSSAPICPPFLAGS, GSSAPILDFLAGS, and GSSAPILIBS to CFLAGS, " +"LDFLAGS, and LDADD, respectively. For " +"example, use base,flags." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16414 +msgid "" +"The bootstrap option is a special prefix only for use by " +"security/krb5 and security/heimdal. For example, use bootstrap,mit." +msgstr "" + +#. (itstool) path: example/title +#: book.translate.xml:16420 +msgid "Typical Use" +msgstr "" + +#. (itstool) path: example/programlisting +#: book.translate.xml:16422 +#, no-wrap +msgid "" +"OPTIONS_SINGLE=\tGSSAPI\n" +"OPTIONS_SINGLE_GSSAPI=\tGSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE\n" +"\n" +"GSSAPI_BASE_USES=\tgssapi\n" +"GSSAPI_BASE_CONFIGURE_ON=\t--with-gssapi=${GSSAPIBASEDIR} " +"${GSSAPI_CONFIGURE_ARGS}\n" +"GSSAPI_HEIMDAL_USES=\tgssapi:heimdal\n" +"GSSAPI_HEIMDAL_CONFIGURE_ON=\t--with-gssapi=${GSSAPIBASEDIR} " +"${GSSAPI_CONFIGURE_ARGS}\n" +"GSSAPI_MIT_USES=\tgssapi:mit\n" +"GSSAPI_MIT_CONFIGURE_ON=\t--with-gssapi=${GSSAPIBASEDIR} " +"${GSSAPI_CONFIGURE_ARGS}\n" +"GSSAPI_NONE_CONFIGURE_ON=\t--without-gssapi" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16436 +msgid "horde" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16440 +msgid "" +"Add buildtime and runtime dependencies on devel/pear-" +"channel-horde. Other Horde dependencies " +"can be added with USE_HORDE_BUILD and " +"USE_HORDE_RUN. See for more " +"information." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16447 +msgid "iconv" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16449 +msgid "" +"Possible arguments: (none), lib, build, patch, translit, " +"wchar_t" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16454 +msgid "" +"Uses iconv functions, either from the port converters/libiconv as a build-time and run-time " +"dependency, or from the base system on 10-CURRENT after a native " +"iconv was committed in 254273. By " +"default, with no arguments or with the lib argument, " +"implies iconv with build-time and run-time dependencies. " +"build implies a build-time dependency, and " +"patch implies a patch-time dependency. If the port uses " +"the WCHAR_T or //TRANSLIT iconv " +"extensions, add the relevant arguments so that the correct iconv is used. " +"For more information see ." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16470 +msgid "imake" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16472 +msgid "" +"Possible arguments: (none), env, notall, noman" +msgstr "" + +#. (itstool) path: para/buildtarget +#: book.translate.xml:16482 +msgid "install.man" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16475 +msgid "" +"Add devel/imake as a build-time dependency " +"and run xmkmf -a during the <_:buildtarget-1/> stage. If " +"the env argument is given, the <_:buildtarget-2/> target " +"is not set. If the flag is a problem for the port, add " +"the notall argument. If xmkmf does not " +"generate a <_:buildtarget-3/> target, add the noman " +"argument." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16487 +msgid "kmod" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16491 +msgid "Fills in the boilerplate for kernel module ports, currently:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16496 +msgid "Add kld to CATEGORIES." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16501 +msgid "Set SSP_UNSAFE." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16505 +msgid "" +"Set IGNORE if the kernel sources are not found in " +"SRC_BASE." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16510 +msgid "" +"Define KMODDIR to /boot/modules by " +"default, add it to PLIST_SUB and MAKE_ENV, and create it upon installation. If KMODDIR is " +"set to /boot/kernel, it will be rewritten to /" +"boot/modules. This prevents breaking packages when upgrading the " +"kernel due to /boot/kernel being renamed to /" +"boot/kernel.old in the process." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16523 +msgid "" +"Handle cross-referencing kernel modules upon installation and " +"deinstallation, using @kld." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16530 +msgid "lha" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16534 +msgid "Set EXTRACT_SUFX to .lzh" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16539 +msgid "libarchive" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16543 +msgid "" +"Registers a dependency on archivers/libarchive. Any ports depending on libarchive must " +"include USES=libarchive." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16549 +msgid "libedit" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16553 +msgid "" +"Registers a dependency on devel/libedit. " +"Any ports depending on libedit must include " +"USES=libedit." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16559 +msgid "libtool" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16561 +msgid "" +"Possible arguments: (none), keepla, build" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16564 +msgid "" +"Patches libtool scripts. This must be added to all ports " +"that use libtool. The keepla argument " +"can be used to keep .la files. Some ports do not ship " +"with their own copy of libtool and need a build time dependency on devel/libtool, use the :build " +"argument to add such dependency." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16575 +msgid "localbase" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16579 +msgid "" +"Ensures that libraries from dependencies in LOCALBASE are " +"used instead of the ones from the base system. Ports that depend on " +"libraries that are also present in the base system should use this. It is " +"also used internally by a few other USES." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16587 +msgid "lua" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16589 +msgid "" +"Possible arguments: (none), XY+, XY, build, run" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16594 +msgid "" +"Adds a dependency on Lua. By default this is a " +"library dependency, unless overridden by the build or " +"run option. The default version is 5.2, unless set by the " +"XY parameter (for example, " +"51 or 52+)." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16604 +msgid "makeinfo" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16608 +msgid "" +"Add a build-time dependency on makeinfo if it is not " +"present in the base system." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16613 +msgid "makeself" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16617 +msgid "" +"Indicates that the distribution files are makeself archives and sets the " +"appropriate dependencies." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16622 +msgid "metaport" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16626 +msgid "" +"Sets the following variables to make it easier to create a metaport: " +"MASTER_SITES, DISTFILES, " +"EXTRACT_ONLY, NO_BUILD, " +"NO_INSTALL, NO_MTREE, " +"NO_ARCH." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16634 +msgid "mono" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16638 +msgid "" +"Adds a dependency on the Mono (currently only C#) " +"framework by setting the appropriate dependencies." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16644 +msgid "motif" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16648 +msgid "" +"Uses x11-toolkits/open-motif as a library " +"dependency. End users can set WANT_LESSTIF for the " +"dependency to be on x11-toolkits/lesstif " +"instead of x11-toolkits/open-motif." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16656 +msgid "ncurses" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16658 +msgid "" +"Possible arguments: (none), base, port" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16661 +msgid "" +"Uses ncurses, and causes some useful variables to " +"be set." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16666 +msgid "ninja" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16670 +msgid "" +"Uses ninja to build the port. End users can set " +"NINJA_VERBOSE for verbose output." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16676 +msgid "objc" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16680 +msgid "" +"Add objective C dependencies (compiler, runtime library) if the base system " +"does not support it." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16685 +msgid "openal" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16687 +msgid "" +"Possible arguments: al, soft " +"(default), si, alut" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16691 +msgid "" +"Uses OpenAL. The backend can be specified, with " +"the software implementation as the default. The user can specify a preferred " +"backend with WANT_OPENAL. Valid values for this knob are " +"soft (default) and si." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16700 +msgid "pathfix" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16704 +msgid "" +"Look for Makefile.in and configure " +"in the port's associated sources and fix common paths to make sure they " +"respect the FreeBSD hierarchy. If the port uses automake, " +"set PATHFIX_MAKEFILEIN to Makefile.am if needed." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16713 +msgid "pear" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16717 +msgid "" +"Adds a dependency on devel/pear. It will " +"setup default behavior for software using the PHP " +"Extension and Application Repository. See for " +"more information." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16723 +msgid "perl5" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16727 +msgid "Depends on Perl. These variables can be set:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16732 +msgid "" +"PERL_VERSION: Full version of Perl to use, or the default if not set" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16738 +msgid "" +"PERL_ARCH: Directory name of architecture dependent " +"libraries, defaults to mach" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16744 +msgid "" +"PERL_PORT: Name of the Perl " +"port to be installed, the default is derived from PERL_VERSION" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16751 +msgid "" +"SITE_PERL: Directory name for site specific " +"Perl packages" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:16756 +msgid "" +"USE_PERL5: Phases in which to use Perl, can be extract, patch, " +"build, install, or run. It can also be configure, modbuild, or modbuildtiny when Makefile.PL, Build.PL, or the Module::Build::Tiny flavor " +"of Build.PL is required. It defaults to build " +"run." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16772 +msgid "pgsql" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16774 +msgid "" +"Possible arguments: (none), X.Y, X.Y+, " +"X.Y-" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16779 +msgid "" +"Provide support for PostgreSQL. Maintainer can set version required. Minimum " +"and maximum versions can be specified; for example, 9.0-, 8.4+." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16783 +msgid "" +"Add PostgreSQL component dependency, using WANT_PGSQL=component[:" +"target]. for example, WANT_PGSQL=server:configure pltcl " +"plperl For the full list use make -V _USE_PGSQL_DEP." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16791 +msgid "pkgconfig" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16793 +msgid "" +"Possible arguments: (none), build (default), " +"run, both" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16797 +msgid "" +"Uses devel/pkgconf. With no arguments or " +"with the build argument, it implies pkg-config as a build-time dependency. run implies a run-" +"time dependency and both implies both run-time and build-" +"time dependencies." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16806 +msgid "pure" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16808 +msgid "Possible arguments: (none), ffi" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16810 +msgid "" +"Uses lang/pure. Largely used for building " +"related pure ports. With the ffi argument, it implies devel/pure-ffi as a run-time dependency." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16819 +msgid "" +"Possible arguments: (none), X.Y, X.Y+, " +"-X.Y, X." +"Y-Z.A, build, run" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16826 +msgid "" +"Uses Python. A supported version or version range " +"can be specified. If Python is only needed at build or run time, it can be " +"set as a build or run dependency with build or " +"run. See for more " +"information." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16834 +msgid "qmail" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16836 +msgid "" +"Possible arguments: (none), build, run, both, vars" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16840 +msgid "" +"Uses mail/qmail. With the build argument, it implies qmail as a build-time " +"dependency. run implies a run-time dependency. Using no " +"argument or the both argument implies both run-time and " +"build-time dependencies. vars will only set QMAIL " +"variables for the port to use." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16852 +msgid "" +"Possible arguments: (none), norecursive, " +"outsource" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16855 +msgid "" +"Uses QMake for configuring. For more information " +"see ." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16860 +msgid "readline" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16862 +msgid "Possible arguments: (none), port" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16864 +msgid "" +"Uses readline as a library dependency, and sets " +"CPPFLAGS and LDFLAGS as necessary. If " +"the port argument is used or if readline is not present " +"in the base system, add a dependency on devel/" +"readline" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16872 +msgid "scons" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16876 +msgid "" +"Provide support for the use of devel/scons" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16880 +msgid "shared-mime-info" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16884 +msgid "" +"Uses update-mime-database from misc/shared-mime-info. This uses will automatically add a " +"post-install step in such a way that the port itself still can specify there " +"own post-install step if needed. It also add an @shared-mime-info para " +"to the plist." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16893 +msgid "shebangfix" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16897 +msgid "" +"A lot of software uses incorrect locations for script interpreters, most " +"notably /usr/bin/perl and /bin/bash. The shebagngfix macro fixes shebang lines in scripts listed in " +"SHEBANG_FILES. The shebangfix macro is run from " +"${WRKSRC}, so it can contain paths that are relative to " +"${WRKSRC}. It can also deal with absolute paths if files outside " +"of ${WRKSRC} require patching. For example:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:16908 +#, no-wrap +msgid "" +"USES=\tshebangfix\n" +"SHEBANG_FILES=\tscripts/foobar.pl scripts/*.sh" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16911 +msgid "" +"Currently Bash, Java, " +"Ksh, Lua, " +"Perl, PHP, " +"Python, Ruby, " +"Tcl, and Tk are " +"supported by default. To support another interpreter, set " +"SHEBANG_LANG, interp_OLD_CMD and interp_CMD. For example:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:16925 +#, no-wrap +msgid "" +"SHEBANG_LANG=\tlua\n" +"lua_OLD_CMD=\t/usr/bin/lua\n" +"lua_CMD=\t${LOCALBASE}/bin/lua" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16929 +msgid "" +"interp_OLD_CMD will contain " +"multiple values. Any entry with spaces must be quoted. For example, if it " +"was not already defined, the Ksh entry could be " +"defined as:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:16934 +#, no-wrap +msgid "" +"SHEBANG_LANG=\tksh\n" +"ksh_OLD_CMD=\t\"/usr/bin/env ksh\" /bin/ksh /usr/bin/ksh\n" +"ksh_CMD=\t${LOCALBASE}/bin/ksh" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16938 +msgid "" +"Some software uses strange locations for an interpreter. For example, an " +"application might expect Python to be located in " +"/opt/bin/python2.7. The strange path to be replaced can " +"be declared in the port Makefile:" +msgstr "" + +#. (itstool) path: sect1/programlisting +#: book.translate.xml:16945 +#, no-wrap +msgid "python_OLD_CMD=\t/opt/bin/python2.7" +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:16948 +msgid "" +"The fixing of shebangs is done during the <_:buildtarget-1/> phase. If " +"scripts are created with incorrect shebangs during the <_:buildtarget-2/> " +"phase, the build process (for examples, the configure " +"script, or the Makefiles) must be patched to generate " +"the right shebangs. Correct paths for supported interpreters are available " +"in interp_CMD." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16961 +msgid "tar" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16963 +msgid "" +"Possible arguments: (none), Z, bz2, " +"bzip2, lzma, tbz, " +"tbz2, tgz, txz, " +"xz" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16970 +msgid "" +"Set EXTRACT_SUFX to .tar, ." +"tar.Z, .tar.bz2, .tar.bz2, " +".tar.lzma, .tbz, .tbz2, .tgz, .txz or .tar." +"xz respectively." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:16980 +msgid "tcl" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16982 +msgid "Possible arguments: PORT" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:16984 +msgid "" +"Add a dependency on Tcl. The PORT parameter can be either tcl or tk. Either a version or wrapper dependency can be appended using " +"PORT:version or PORT:wrapper. The " +"version can be empty, one or more exact version numbers (currently " +"84, 85, or 86), or " +"a minimal version number (currently 84+, 85+ or 86+). A build- or run-time only dependency " +"can be specified using PORT,build or PORT,run. After including bsd.port.pre.mk the port can " +"inspect the results using these variables:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17001 +msgid "" +"TCL_VER: chosen major.minor version of Tcl" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17006 +msgid "" +"TCLSH: full path of the Tcl " +"interpreter" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17011 +msgid "" +"TCL_LIBDIR: path of the Tcl " +"libraries" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17016 +msgid "" +"TCL_INCLUDEDIR: path of the Tcl C header files" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17021 +msgid "" +"TK_VER: chosen major.minor version of Tk" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17026 +msgid "" +"WISH: full path of the Tk " +"interpreter" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17031 +msgid "" +"TK_LIBDIR: path of the Tk " +"libraries" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17036 +msgid "" +"TK_INCLUDEDIR: path of the Tk " +"C header files" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:17043 +msgid "terminfo" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17047 +msgid "" +"Adds @terminfo to the plist. Use when the port installs " +"*.terminfo files in " +"${PREFIX}/share/misc." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:17054 +msgid "tk" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17056 +msgid "Same as arguments for tcl" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17058 +msgid "" +"Small wrapper when using both Tcl and " +"Tk. The same variables are returned as when using " +"Tcl." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:17064 +msgid "twisted" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17066 book.translate.xml:17145 +msgid "Possible arguments: (none), ARGS" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17068 +msgid "" +"Add a dependency on twistedCore. The list of " +"required components can be specified as a value of this variable. " +"ARGS can be one of:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17074 +msgid "" +"build: add twistedCore or any " +"specified component as build dependency." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17080 +msgid "" +"run: add twistedCore or any " +"specified component as run dependency." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17086 +msgid "" +"Besides build and run, one or more " +"other supported twisted components can be " +"specified. Supported values are listed in Uses/twisted.mk." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:17093 +msgid "uidfix" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17097 +msgid "" +"Changes some default behavior (mostly variables) of the build system to " +"allow installing this port as a normal user. Try this in the port before " +"adding NEED_ROOT=yes" +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:17104 +msgid "uniquefiles" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17106 +msgid "Possible arguments: (none), dirs" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17108 +msgid "" +"Make files or directories 'unique', by adding a prefix or suffix. If the " +"dirs argument is used, the port needs a prefix (a only a " +"prefix) based on UNIQUE_PREFIX for standard directories " +"DOCSDIR, EXAMPLESDIR, " +"DATADIR, WWWDIR, ETCDIR. These variables are available for ports:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17119 +msgid "" +"UNIQUE_PREFIX: The prefix to be used for directories and " +"files. Default: ${PKGNAMEPREFIX}." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17125 +msgid "" +"UNIQUE_PREFIX_FILES: A list of files that need to be " +"prefixed. Default: empty." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17130 +msgid "" +"UNIQUE_SUFFIX: The suffix to be used for files. Default: " +"${PKGNAMESUFFIX}." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17136 +msgid "" +"UNIQUE_SUFFIX_FILES: A list of files that need to be " +"suffixed. Default: empty." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:17143 +msgid "webplugin" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17147 +msgid "" +"Automatically create and remove symbolic links for each application that " +"supports the webplugin framework. ARGS can be one of:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17153 +msgid "gecko: support plug-ins based on Gecko" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17158 +msgid "" +"native: support plug-ins for Gecko, Opera, and WebKit-GTK" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17163 +msgid "linux: support Linux plug-ins" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17167 +msgid "all (default, implicit): support all plug-in types" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17172 +msgid "(individual entries): support only the browsers listed" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17177 +msgid "These variables can be adjusted:" +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17181 +msgid "" +"WEBPLUGIN_FILES: No default, must be set manually. The " +"plug-in files to install." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17186 +msgid "" +"WEBPLUGIN_DIR: The directory to install the plug-in files " +"to, default PREFIX/lib/browser_plugins/" +"WEBPLUGIN_NAME. Set this if the port " +"installs plug-in files outside of the default directory to prevent broken " +"symbolic links." +msgstr "" + +#. (itstool) path: listitem/para +#: book.translate.xml:17194 +msgid "" +"WEBPLUGIN_NAME: The final directory to install the plug-" +"in files into, default PKGBASE." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:17202 +msgid "xfce" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17204 +msgid "Possible arguments: (none), gtk3" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17206 +msgid "" +"Provide support for Xfce related ports. See for details." +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17209 +msgid "" +"The gtk3 argument specifies that the port requires " +"GTK3 support. It adds additional features " +"provided by some core components, for example, x11/" +"libxfce4menu and x11-wm/xfce4-panel." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:17217 +msgid "zip" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17219 +msgid "Possible arguments: (none), infozip" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17222 +msgid "" +"Indicates that the distribution files use the ZIP compression algorithm. For " +"files using the InfoZip algorithm the infozip argument " +"must be passed to set the appropriate dependencies." +msgstr "" + +#. (itstool) path: sect1/title +#: book.translate.xml:17229 +msgid "zope" +msgstr "" + +#. (itstool) path: sect1/para +#: book.translate.xml:17233 +msgid "" +"Uses www/zope. Mostly used for building " +"zope related ports. ZOPE_VERSION can be used by a port to indicate that a specific version of " +"zope shall be used." +msgstr "" + +#. (itstool) path: chapter/title +#. (itstool) path: table/title +#: book.translate.xml:17250 book.translate.xml:17258 +msgid "__FreeBSD_version Values" +msgstr "" + +#. (itstool) path: chapter/para +#: book.translate.xml:17253 +msgid "" +"Here is a convenient list of __FreeBSD_version values as " +"defined in sys/param.h:" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17265 +msgid "Date" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17267 +msgid "Release" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17273 +msgid "119411" +msgstr "119411" + +#. (itstool) path: row/entry +#: book.translate.xml:17275 +msgid "2.0-RELEASE" +msgstr "2.0-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17279 +msgid "199501, 199503" +msgstr "199501, 199503" + +#. (itstool) path: row/entry +#: book.translate.xml:17280 +msgid "March 19, 1995" +msgstr "March 19, 1995" + +#. (itstool) path: row/entry +#: book.translate.xml:17281 +msgid "2.1-CURRENT" +msgstr "2.1-CURRENT" + +#. (itstool) path: row/entry +#: book.translate.xml:17285 +msgid "199504" +msgstr "199504" + +#. (itstool) path: row/entry +#: book.translate.xml:17286 +msgid "April 9, 1995" +msgstr "April 9, 1995" + +#. (itstool) path: row/entry +#: book.translate.xml:17287 +msgid "2.0.5-RELEASE" +msgstr "2.0.5-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17291 +msgid "199508" +msgstr "199508" + +#. (itstool) path: row/entry +#: book.translate.xml:17292 +msgid "August 26, 1995" +msgstr "August 26, 1995" + +#. (itstool) path: row/entry +#: book.translate.xml:17293 +msgid "2.2-CURRENT before 2.1" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17297 +msgid "199511" +msgstr "199511" + +#. (itstool) path: row/entry +#: book.translate.xml:17298 book.translate.xml:17304 +msgid "November 10, 1995" +msgstr "November 10, 1995" + +#. (itstool) path: row/entry +#: book.translate.xml:17299 +msgid "2.1.0-RELEASE" +msgstr "2.1.0-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17303 +msgid "199512" +msgstr "199512" + +#. (itstool) path: row/entry +#: book.translate.xml:17305 +msgid "2.2-CURRENT before 2.1.5" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17309 +msgid "199607" +msgstr "199607" + +#. (itstool) path: row/entry +#: book.translate.xml:17310 +msgid "July 10, 1996" +msgstr "July 10, 1996" + +#. (itstool) path: row/entry +#: book.translate.xml:17311 +msgid "2.1.5-RELEASE" +msgstr "2.1.5-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17315 +msgid "199608" +msgstr "199608" + +#. (itstool) path: row/entry +#: book.translate.xml:17316 +msgid "July 12, 1996" +msgstr "July 12, 1996" + +#. (itstool) path: row/entry +#: book.translate.xml:17317 +msgid "2.2-CURRENT before 2.1.6" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17321 book.translate.xml:17327 +msgid "199612" +msgstr "199612" + +#. (itstool) path: row/entry +#: book.translate.xml:17322 +msgid "November 15, 1996" +msgstr "November 15, 1996" + +#. (itstool) path: row/entry +#: book.translate.xml:17323 +msgid "2.1.6-RELEASE" +msgstr "2.1.6-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17329 +msgid "2.1.7-RELEASE" +msgstr "2.1.7-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17333 +msgid "220000" +msgstr "220000" + +#. (itstool) path: row/entry +#: book.translate.xml:17334 +msgid "February 19, 1997" +msgstr "February 19, 1997" + +#. (itstool) path: row/entry +#: book.translate.xml:17335 +msgid "2.2-RELEASE" +msgstr "2.2-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17339 book.translate.xml:17345 book.translate.xml:18205 +#: book.translate.xml:19751 book.translate.xml:21897 +msgid "(not changed)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17341 +msgid "2.2.1-RELEASE" +msgstr "2.2.1-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17347 +msgid "2.2-STABLE after 2.2.1-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17351 +msgid "221001" +msgstr "221001" + +#. (itstool) path: row/entry +#: book.translate.xml:17352 +msgid "April 15, 1997" +msgstr "April 15, 1997" + +#. (itstool) path: row/entry +#: book.translate.xml:17353 +msgid "2.2-STABLE after texinfo-3.9" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17357 +msgid "221002" +msgstr "221002" + +#. (itstool) path: row/entry +#: book.translate.xml:17358 +msgid "April 30, 1997" +msgstr "April 30, 1997" + +#. (itstool) path: row/entry +#: book.translate.xml:17359 +msgid "2.2-STABLE after top" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17363 +msgid "222000" +msgstr "222000" + +#. (itstool) path: row/entry +#: book.translate.xml:17364 +msgid "May 16, 1997" +msgstr "May 16, 1997" + +#. (itstool) path: row/entry +#: book.translate.xml:17365 +msgid "2.2.2-RELEASE" +msgstr "2.2.2-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17369 +msgid "222001" +msgstr "222001" + +#. (itstool) path: row/entry +#: book.translate.xml:17370 +msgid "May 19, 1997" +msgstr "May 19, 1997" + +#. (itstool) path: row/entry +#: book.translate.xml:17371 +msgid "2.2-STABLE after 2.2.2-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17375 +msgid "225000" +msgstr "225000" + +#. (itstool) path: row/entry +#: book.translate.xml:17376 +msgid "October 2, 1997" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17377 +msgid "2.2.5-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17381 +msgid "225001" +msgstr "225001" + +#. (itstool) path: row/entry +#: book.translate.xml:17382 +msgid "November 20, 1997" +msgstr "November 20, 1997" + +#. (itstool) path: row/entry +#: book.translate.xml:17383 +msgid "2.2-STABLE after 2.2.5-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17387 +msgid "225002" +msgstr "225002" + +#. (itstool) path: row/entry +#: book.translate.xml:17388 +msgid "December 27, 1997" +msgstr "December 27, 1997" + +#. (itstool) path: row/entry +#: book.translate.xml:17389 +msgid "2.2-STABLE after ldconfig -R merge" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17393 +msgid "226000" +msgstr "226000" + +#. (itstool) path: row/entry +#: book.translate.xml:17394 +msgid "March 24, 1998" +msgstr "March 24, 1998" + +#. (itstool) path: row/entry +#: book.translate.xml:17395 +msgid "2.2.6-RELEASE" +msgstr "2.2.6-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17399 +msgid "227000" +msgstr "227000" + +#. (itstool) path: row/entry +#: book.translate.xml:17400 book.translate.xml:17406 +msgid "July 21, 1998" +msgstr "July 21, 1998" + +#. (itstool) path: row/entry +#: book.translate.xml:17401 +msgid "2.2.7-RELEASE" +msgstr "2.2.7-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17405 +msgid "227001" +msgstr "227001" + +#. (itstool) path: row/entry +#: book.translate.xml:17407 +msgid "2.2-STABLE after 2.2.7-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17411 +msgid "227002" +msgstr "227002" + +#. (itstool) path: row/entry +#: book.translate.xml:17412 +msgid "September 19, 1998" +msgstr "September 19, 1998" + +#. (itstool) path: row/entry +#: book.translate.xml:17413 +msgid "" +"2.2-STABLE after semctl2 change" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17417 +msgid "228000" +msgstr "228000" + +#. (itstool) path: row/entry +#: book.translate.xml:17418 book.translate.xml:17424 +msgid "November 29, 1998" +msgstr "November 29, 1998" + +#. (itstool) path: row/entry +#: book.translate.xml:17419 +msgid "2.2.8-RELEASE" +msgstr "2.2.8-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17423 +msgid "228001" +msgstr "228001" + +#. (itstool) path: row/entry +#: book.translate.xml:17425 +msgid "2.2-STABLE after 2.2.8-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17429 +msgid "300000" +msgstr "300000" + +#. (itstool) path: row/entry +#: book.translate.xml:17430 +msgid "February 19, 1996" +msgstr "February 19, 1996" + +#. (itstool) path: row/entry +#: book.translate.xml:17431 +msgid "" +"3.0-CURRENT before mount2 change" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17435 +msgid "300001" +msgstr "300001" + +#. (itstool) path: row/entry +#: book.translate.xml:17436 +msgid "September 24, 1997" +msgstr "September 24, 1997" + +#. (itstool) path: row/entry +#: book.translate.xml:17437 +msgid "" +"3.0-CURRENT after mount2 change" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17441 +msgid "300002" +msgstr "300002" + +#. (itstool) path: row/entry +#: book.translate.xml:17442 +msgid "June 2, 1998" +msgstr "June 2, 1998" + +#. (itstool) path: row/entry +#: book.translate.xml:17443 +msgid "" +"3.0-CURRENT after semctl2 change" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17447 +msgid "300003" +msgstr "300003" + +#. (itstool) path: row/entry +#: book.translate.xml:17448 +msgid "June 7, 1998" +msgstr "June 7, 1998" + +#. (itstool) path: row/entry +#: book.translate.xml:17449 +msgid "3.0-CURRENT after ioctl arg changes" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17453 +msgid "300004" +msgstr "300004" + +#. (itstool) path: row/entry +#: book.translate.xml:17454 +msgid "September 3, 1998" +msgstr "September 3, 1998" + +#. (itstool) path: row/entry +#: book.translate.xml:17455 +msgid "3.0-CURRENT after ELF conversion" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17459 +msgid "300005" +msgstr "300005" + +#. (itstool) path: row/entry +#: book.translate.xml:17460 book.translate.xml:17466 +msgid "October 16, 1998" +msgstr "October 16, 1998" + +#. (itstool) path: row/entry +#: book.translate.xml:17461 +msgid "3.0-RELEASE" +msgstr "3.0-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17465 +msgid "300006" +msgstr "300006" + +#. (itstool) path: row/entry +#: book.translate.xml:17467 +msgid "3.0-CURRENT after 3.0-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17471 +msgid "300007" +msgstr "300007" + +#. (itstool) path: row/entry +#: book.translate.xml:17472 book.translate.xml:17559 +msgid "January 22, 1999" +msgstr "January 22, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17473 +msgid "3.0-STABLE after 3/4 branch" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17477 +msgid "310000" +msgstr "310000" + +#. (itstool) path: row/entry +#: book.translate.xml:17478 +msgid "February 9, 1999" +msgstr "February 9, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17479 +msgid "3.1-RELEASE" +msgstr "3.1-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17483 +msgid "310001" +msgstr "310001" + +#. (itstool) path: row/entry +#: book.translate.xml:17484 book.translate.xml:17579 +msgid "March 27, 1999" +msgstr "March 27, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17485 +msgid "3.1-STABLE after 3.1-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17489 +msgid "310002" +msgstr "310002" + +#. (itstool) path: row/entry +#: book.translate.xml:17490 +msgid "April 14, 1999" +msgstr "April 14, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17491 +msgid "3.1-STABLE after C++ constructor/destructor order change" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17496 +msgid "320000" +msgstr "320000" + +#. (itstool) path: row/entry +#: book.translate.xml:17498 +msgid "3.2-RELEASE" +msgstr "3.2-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17502 +msgid "320001" +msgstr "320001" + +#. (itstool) path: row/entry +#: book.translate.xml:17503 +msgid "May 8, 1999" +msgstr "May 8, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17504 +msgid "3.2-STABLE" +msgstr "3.2-STABLE" + +#. (itstool) path: row/entry +#: book.translate.xml:17508 +msgid "320002" +msgstr "320002" + +#. (itstool) path: row/entry +#: book.translate.xml:17509 +msgid "August 29, 1999" +msgstr "August 29, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17510 +msgid "3.2-STABLE after binary-incompatible IPFW and socket changes" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17515 +msgid "330000" +msgstr "330000" + +#. (itstool) path: row/entry +#: book.translate.xml:17516 +msgid "September 2, 1999" +msgstr "September 2, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17517 +msgid "3.3-RELEASE" +msgstr "3.3-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17521 +msgid "330001" +msgstr "330001" + +#. (itstool) path: row/entry +#: book.translate.xml:17522 +msgid "September 16, 1999" +msgstr "September 16, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17523 +msgid "3.3-STABLE" +msgstr "3.3-STABLE" + +#. (itstool) path: row/entry +#: book.translate.xml:17527 +msgid "330002" +msgstr "330002" + +#. (itstool) path: row/entry +#: book.translate.xml:17528 +msgid "November 24, 1999" +msgstr "November 24, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17529 +msgid "" +"3.3-STABLE after adding mkstemp3 to libc" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17534 +msgid "340000" +msgstr "340000" + +#. (itstool) path: row/entry +#: book.translate.xml:17535 +msgid "December 5, 1999" +msgstr "December 5, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17536 +msgid "3.4-RELEASE" +msgstr "3.4-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17540 +msgid "340001" +msgstr "340001" + +#. (itstool) path: row/entry +#: book.translate.xml:17541 +msgid "December 17, 1999" +msgstr "December 17, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17542 +msgid "3.4-STABLE" +msgstr "3.4-STABLE" + +#. (itstool) path: row/entry +#: book.translate.xml:17546 +msgid "350000" +msgstr "350000" + +#. (itstool) path: row/entry +#: book.translate.xml:17547 +msgid "June 20, 2000" +msgstr "June 20, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17548 +msgid "3.5-RELEASE" +msgstr "3.5-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17552 +msgid "350001" +msgstr "350001" + +#. (itstool) path: row/entry +#: book.translate.xml:17553 +msgid "July 12, 2000" +msgstr "July 12, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17554 +msgid "3.5-STABLE" +msgstr "3.5-STABLE" + +#. (itstool) path: row/entry +#: book.translate.xml:17558 +msgid "400000" +msgstr "400000" + +#. (itstool) path: row/entry +#: book.translate.xml:17560 +msgid "4.0-CURRENT after 3.4 branch" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17564 +msgid "400001" +msgstr "400001" + +#. (itstool) path: row/entry +#: book.translate.xml:17565 +msgid "February 20, 1999" +msgstr "February 20, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17566 +msgid "4.0-CURRENT after change in dynamic linker handling" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17571 +msgid "400002" +msgstr "400002" + +#. (itstool) path: row/entry +#: book.translate.xml:17572 +msgid "March 13, 1999" +msgstr "March 13, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17573 +msgid "4.0-CURRENT after C++ constructor/destructor order change" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17578 +msgid "400003" +msgstr "400003" + +#. (itstool) path: row/entry +#: book.translate.xml:17580 +msgid "" +"4.0-CURRENT after functioning dladdr3" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17585 +msgid "400004" +msgstr "400004" + +#. (itstool) path: row/entry +#: book.translate.xml:17586 +msgid "April 5, 1999" +msgstr "April 5, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17587 +msgid "" +"4.0-CURRENT after __deregister_frame_info dynamic linker bug fix (also 4.0-" +"CURRENT after EGCS 1.1.2 integration)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17593 +msgid "400005" +msgstr "400005" + +#. (itstool) path: row/entry +#: book.translate.xml:17594 +msgid "April 27, 1999" +msgstr "April 27, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17595 +msgid "" +"4.0-CURRENT after suser9 API change (also 4.0-" +"CURRENT after newbus)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17600 +msgid "400006" +msgstr "400006" + +#. (itstool) path: row/entry +#: book.translate.xml:17601 +msgid "May 31, 1999" +msgstr "May 31, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17602 +msgid "4.0-CURRENT after cdevsw registration change" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17607 +msgid "400007" +msgstr "400007" + +#. (itstool) path: row/entry +#: book.translate.xml:17608 +msgid "June 17, 1999" +msgstr "June 17, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17609 +msgid "4.0-CURRENT after the addition of so_cred for socket level credentials" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17614 +msgid "400008" +msgstr "400008" + +#. (itstool) path: row/entry +#: book.translate.xml:17615 +msgid "June 20, 1999" +msgstr "June 20, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17616 +msgid "4.0-CURRENT after the addition of a poll syscall wrapper to libc_r" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17621 +msgid "400009" +msgstr "400009" + +#. (itstool) path: row/entry +#: book.translate.xml:17622 +msgid "July 20, 1999" +msgstr "July 20, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17623 +msgid "" +"4.0-CURRENT after the change of the kernel's dev_t type " +"to struct specinfo pointer" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17629 +msgid "400010" +msgstr "400010" + +#. (itstool) path: row/entry +#: book.translate.xml:17630 +msgid "September 25, 1999" +msgstr "September 25, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17631 +msgid "" +"4.0-CURRENT after fixing a hole in jail2" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17636 +msgid "400011" +msgstr "400011" + +#. (itstool) path: row/entry +#: book.translate.xml:17637 +msgid "September 29, 1999" +msgstr "September 29, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17638 +msgid "4.0-CURRENT after the sigset_t datatype change" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17643 +msgid "400012" +msgstr "400012" + +#. (itstool) path: row/entry +#: book.translate.xml:17644 +msgid "November 15, 1999" +msgstr "November 15, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17645 +msgid "4.0-CURRENT after the cutover to the GCC 2.95.2 compiler" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17650 +msgid "400013" +msgstr "400013" + +#. (itstool) path: row/entry +#: book.translate.xml:17651 +msgid "December 4, 1999" +msgstr "December 4, 1999" + +#. (itstool) path: row/entry +#: book.translate.xml:17652 +msgid "4.0-CURRENT after adding pluggable linux-mode ioctl handlers" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17657 +msgid "400014" +msgstr "400014" + +#. (itstool) path: row/entry +#: book.translate.xml:17658 +msgid "January 18, 2000" +msgstr "January 18, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17659 +msgid "4.0-CURRENT after importing OpenSSL" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17663 +msgid "400015" +msgstr "400015" + +#. (itstool) path: row/entry +#: book.translate.xml:17664 +msgid "January 27, 2000" +msgstr "January 27, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17665 +msgid "" +"4.0-CURRENT after the C++ ABI change in GCC 2.95.2 from -fvtable-thunks to -" +"fno-vtable-thunks by default" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17671 +msgid "400016" +msgstr "400016" + +#. (itstool) path: row/entry +#: book.translate.xml:17672 +msgid "February 27, 2000" +msgstr "February 27, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17673 +msgid "4.0-CURRENT after importing OpenSSH" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17677 +msgid "400017" +msgstr "400017" + +#. (itstool) path: row/entry +#: book.translate.xml:17678 book.translate.xml:18006 +msgid "March 13, 2000" +msgstr "March 13, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17679 +msgid "4.0-RELEASE" +msgstr "4.0-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17683 +msgid "400018" +msgstr "400018" + +#. (itstool) path: row/entry +#: book.translate.xml:17684 +msgid "March 17, 2000" +msgstr "March 17, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17685 +msgid "4.0-STABLE after 4.0-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17689 +msgid "400019" +msgstr "400019" + +#. (itstool) path: row/entry +#: book.translate.xml:17690 +msgid "May 5, 2000" +msgstr "May 5, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17691 +msgid "4.0-STABLE after the introduction of delayed checksums." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17696 +msgid "400020" +msgstr "400020" + +#. (itstool) path: row/entry +#: book.translate.xml:17697 +msgid "June 4, 2000" +msgstr "June 4, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17698 +msgid "4.0-STABLE after merging libxpg4 code into libc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17703 +msgid "400021" +msgstr "400021" + +#. (itstool) path: row/entry +#: book.translate.xml:17704 +msgid "July 8, 2000" +msgstr "July 8, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17705 +msgid "" +"4.0-STABLE after upgrading Binutils to 2.10.0, ELF branding changes, and " +"tcsh in the base system." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17711 +msgid "410000" +msgstr "410000" + +#. (itstool) path: row/entry +#: book.translate.xml:17712 book.translate.xml:18065 +msgid "July 14, 2000" +msgstr "July 14, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17713 +msgid "4.1-RELEASE" +msgstr "4.1-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17717 +msgid "410001" +msgstr "410001" + +#. (itstool) path: row/entry +#: book.translate.xml:17718 +msgid "July 29, 2000" +msgstr "July 29, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17719 +msgid "4.1-STABLE after 4.1-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17723 +msgid "410002" +msgstr "410002" + +#. (itstool) path: row/entry +#: book.translate.xml:17724 +msgid "September 16, 2000" +msgstr "September 16, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17725 +msgid "" +"4.1-STABLE after setproctitle3 moved from libutil to " +"libc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17730 +msgid "411000" +msgstr "411000" + +#. (itstool) path: row/entry +#: book.translate.xml:17731 +msgid "September 25, 2000" +msgstr "September 25, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17732 +msgid "4.1.1-RELEASE" +msgstr "4.1.1-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17736 +msgid "411001" +msgstr "411001" + +#. (itstool) path: row/entry +#: book.translate.xml:17738 +msgid "4.1.1-STABLE after 4.1.1-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17742 +msgid "420000" +msgstr "420000" + +#. (itstool) path: row/entry +#: book.translate.xml:17743 +msgid "October 31, 2000" +msgstr "October 31, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:17744 +msgid "4.2-RELEASE" +msgstr "4.2-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17748 +msgid "420001" +msgstr "420001" + +#. (itstool) path: row/entry +#: book.translate.xml:17749 book.translate.xml:18106 +msgid "January 10, 2001" +msgstr "January 10, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:17750 +msgid "" +"4.2-STABLE after combining libgcc.a and libgcc_r.a, and associated GCC " +"linkage changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17756 +msgid "430000" +msgstr "430000" + +#. (itstool) path: row/entry +#: book.translate.xml:17757 +msgid "March 6, 2001" +msgstr "March 6, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:17758 +msgid "4.3-RELEASE" +msgstr "4.3-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17762 +msgid "430001" +msgstr "430001" + +#. (itstool) path: row/entry +#: book.translate.xml:17763 +msgid "May 18, 2001" +msgstr "May 18, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:17764 +msgid "4.3-STABLE after wint_t introduction." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17768 +msgid "430002" +msgstr "430002" + +#. (itstool) path: row/entry +#: book.translate.xml:17769 +msgid "July 22, 2001" +msgstr "July 22, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:17770 +msgid "4.3-STABLE after PCI powerstate API merge." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17775 +msgid "440000" +msgstr "440000" + +#. (itstool) path: row/entry +#: book.translate.xml:17776 +msgid "August 1, 2001" +msgstr "August 1, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:17777 +msgid "4.4-RELEASE" +msgstr "4.4-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17781 +msgid "440001" +msgstr "440001" + +#. (itstool) path: row/entry +#: book.translate.xml:17782 +msgid "October 23, 2001" +msgstr "October 23, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:17783 +msgid "4.4-STABLE after d_thread_t introduction." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17787 +msgid "440002" +msgstr "440002" + +#. (itstool) path: row/entry +#: book.translate.xml:17788 +msgid "November 4, 2001" +msgstr "November 4, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:17789 +msgid "4.4-STABLE after mount structure changes (affects filesystem klds)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17794 +msgid "440003" +msgstr "440003" + +#. (itstool) path: row/entry +#: book.translate.xml:17795 +msgid "December 18, 2001" +msgstr "December 18, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:17796 +msgid "4.4-STABLE after the userland components of smbfs were imported." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17801 +msgid "450000" +msgstr "450000" + +#. (itstool) path: row/entry +#: book.translate.xml:17802 +msgid "December 20, 2001" +msgstr "December 20, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:17803 +msgid "4.5-RELEASE" +msgstr "4.5-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17807 +msgid "450001" +msgstr "450001" + +#. (itstool) path: row/entry +#: book.translate.xml:17808 book.translate.xml:18228 +msgid "February 24, 2002" +msgstr "February 24, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17809 +msgid "4.5-STABLE after the usb structure element rename." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17814 +msgid "450004" +msgstr "450004" + +#. (itstool) path: row/entry +#: book.translate.xml:17815 +msgid "April 16, 2002" +msgstr "April 16, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17816 +msgid "" +"4.5-STABLE after the sendmail_enable " +"rc.conf5 variable was made to take the value NONE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17823 +msgid "450005" +msgstr "450005" + +#. (itstool) path: row/entry +#: book.translate.xml:17824 +msgid "April 27, 2002" +msgstr "April 27, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17825 +msgid "4.5-STABLE after moving to XFree86 4 by default for package builds." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17830 +msgid "450006" +msgstr "450006" + +#. (itstool) path: row/entry +#: book.translate.xml:17831 +msgid "May 1, 2002" +msgstr "May 1, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17832 +msgid "" +"4.5-STABLE after accept filtering was fixed so that is no longer susceptible " +"to an easy DoS." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17837 +msgid "460000" +msgstr "460000" + +#. (itstool) path: row/entry +#: book.translate.xml:17838 book.translate.xml:17844 +msgid "June 21, 2002" +msgstr "June 21, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17839 +msgid "4.6-RELEASE" +msgstr "4.6-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17843 +msgid "460001" +msgstr "460001" + +#. (itstool) path: row/entry +#: book.translate.xml:17845 +msgid "" +"4.6-STABLE sendfile2 fixed to comply with " +"documentation, not to count any headers sent against the amount of data to " +"be sent from the file." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17851 +msgid "460002" +msgstr "460002" + +#. (itstool) path: row/entry +#: book.translate.xml:17852 +msgid "July 19, 2002" +msgstr "July 19, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17853 +msgid "4.6.2-RELEASE" +msgstr "4.6.2-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17857 +msgid "460100" +msgstr "460100" + +#. (itstool) path: row/entry +#: book.translate.xml:17858 book.translate.xml:17864 +msgid "June 26, 2002" +msgstr "June 26, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17859 +msgid "4.6-STABLE" +msgstr "4.6-STABLE" + +#. (itstool) path: row/entry +#: book.translate.xml:17863 +msgid "460101" +msgstr "460101" + +#. (itstool) path: row/entry +#: book.translate.xml:17865 +msgid "4.6-STABLE after MFC of `sed -i'." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17869 +msgid "460102" +msgstr "460102" + +#. (itstool) path: row/entry +#: book.translate.xml:17870 book.translate.xml:18285 +msgid "September 1, 2002" +msgstr "September 1, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17871 +msgid "4.6-STABLE after MFC of many new pkg_install features from the HEAD." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17876 +msgid "470000" +msgstr "470000" + +#. (itstool) path: row/entry +#: book.translate.xml:17877 +msgid "October 8, 2002" +msgstr "October 8, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17878 +msgid "4.7-RELEASE" +msgstr "4.7-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17882 +msgid "470100" +msgstr "470100" + +#. (itstool) path: row/entry +#: book.translate.xml:17883 +msgid "October 9, 2002" +msgstr "October 9, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17884 +msgid "4.7-STABLE" +msgstr "4.7-STABLE" + +#. (itstool) path: row/entry +#: book.translate.xml:17888 +msgid "470101" +msgstr "470101" + +#. (itstool) path: row/entry +#: book.translate.xml:17889 +msgid "November 10, 2002" +msgstr "November 10, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:17890 +msgid "" +"Start generated __std{in,out,err}p references rather than __sF. This changes " +"std{in,out,err} from a compile time expression to a runtime one." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17896 +msgid "470102" +msgstr "470102" + +#. (itstool) path: row/entry +#: book.translate.xml:17897 +msgid "January 23, 2003" +msgstr "January 23, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:17898 +msgid "4.7-STABLE after MFC of mbuf changes to replace m_aux mbufs by m_tag's" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17903 +msgid "470103" +msgstr "470103" + +#. (itstool) path: row/entry +#: book.translate.xml:17904 +msgid "February 14, 2003" +msgstr "February 14, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:17905 +msgid "4.7-STABLE gets OpenSSL 0.9.7" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17909 +msgid "480000" +msgstr "480000" + +#. (itstool) path: row/entry +#: book.translate.xml:17910 +msgid "March 30, 2003" +msgstr "March 30, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:17911 +msgid "4.8-RELEASE" +msgstr " " + +#. (itstool) path: row/entry +#: book.translate.xml:17915 +msgid "480100" +msgstr "480100" + +#. (itstool) path: row/entry +#: book.translate.xml:17916 +msgid "April 5, 2003" +msgstr "April 5, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:17917 +msgid "4.8-STABLE" +msgstr "4.8-STABLE" + +#. (itstool) path: row/entry +#: book.translate.xml:17921 +msgid "480101" +msgstr "480101" + +#. (itstool) path: row/entry +#: book.translate.xml:17922 +msgid "May 22, 2003" +msgstr "May 22, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:17923 +msgid "" +"4.8-STABLE after realpath3 has been made thread-" +"safe" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17928 +msgid "480102" +msgstr "480102" + +#. (itstool) path: row/entry +#: book.translate.xml:17929 +msgid "August 10, 2003" +msgstr "August 10, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:17930 +msgid "4.8-STABLE 3ware API changes to twe." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17934 +msgid "490000" +msgstr "490000" + +#. (itstool) path: row/entry +#: book.translate.xml:17935 book.translate.xml:17941 +msgid "October 27, 2003" +msgstr "October 27, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:17936 +msgid "4.9-RELEASE" +msgstr "4.9-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17940 +msgid "490100" +msgstr "490100" + +#. (itstool) path: row/entry +#: book.translate.xml:17942 +msgid "4.9-STABLE" +msgstr "4.9-STABLE" + +#. (itstool) path: row/entry +#: book.translate.xml:17946 +msgid "490101" +msgstr "490101" + +#. (itstool) path: row/entry +#: book.translate.xml:17947 +msgid "January 8, 2004" +msgstr "January 8, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:17948 +msgid "4.9-STABLE after e_sid was added to struct kinfo_eproc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17953 +msgid "490102" +msgstr "490102" + +#. (itstool) path: row/entry +#: book.translate.xml:17954 +msgid "February 4, 2004" +msgstr "February 4, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:17955 +msgid "4.9-STABLE after MFC of libmap functionality for rtld." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17960 +msgid "491000" +msgstr "491000" + +#. (itstool) path: row/entry +#: book.translate.xml:17961 +msgid "May 25, 2004" +msgstr "May 25, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:17962 +msgid "4.10-RELEASE" +msgstr "4.10-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17966 +msgid "491100" +msgstr "491100" + +#. (itstool) path: row/entry +#: book.translate.xml:17967 +msgid "June 1, 2004" +msgstr "June 1, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:17968 +msgid "4.10-STABLE" +msgstr "4.10-STABLE" + +#. (itstool) path: row/entry +#: book.translate.xml:17972 +msgid "491101" +msgstr "491101" + +#. (itstool) path: row/entry +#: book.translate.xml:17973 +msgid "August 11, 2004" +msgstr "August 11, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:17974 +msgid "4.10-STABLE after MFC of revision 20040629 of the package tools" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17979 +msgid "491102" +msgstr "491102" + +#. (itstool) path: row/entry +#: book.translate.xml:17980 +msgid "November 16, 2004" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17981 +msgid "4.10-STABLE after VM fix dealing with unwiring of fictitious pages" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:17986 +msgid "492000" +msgstr "492000" + +#. (itstool) path: row/entry +#: book.translate.xml:17987 book.translate.xml:17993 +msgid "December 17, 2004" +msgstr "December 17, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:17988 +msgid "4.11-RELEASE" +msgstr "4.11-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:17992 +msgid "492100" +msgstr "492100" + +#. (itstool) path: row/entry +#: book.translate.xml:17994 +msgid "4.11-STABLE" +msgstr "4.11-STABLE" + +#. (itstool) path: row/entry +#: book.translate.xml:17998 +msgid "492101" +msgstr "492101" + +#. (itstool) path: row/entry +#: book.translate.xml:17999 +msgid "April 18, 2006" +msgstr "April 18, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:18000 +msgid "4.11-STABLE after adding libdata/ldconfig directories to mtree files." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18005 +msgid "500000" +msgstr "500000" + +#. (itstool) path: row/entry +#: book.translate.xml:18007 +msgid "5.0-CURRENT" +msgstr "5.0-CURRENT" + +#. (itstool) path: row/entry +#: book.translate.xml:18011 +msgid "500001" +msgstr "500001" + +#. (itstool) path: row/entry +#: book.translate.xml:18012 +msgid "April 18, 2000" +msgstr "April 18, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18013 +msgid "" +"5.0-CURRENT after adding addition ELF header fields, and changing our ELF " +"binary branding method." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18019 +msgid "500002" +msgstr "500002" + +#. (itstool) path: row/entry +#: book.translate.xml:18020 +msgid "May 2, 2000" +msgstr "May 2, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18021 +msgid "5.0-CURRENT after kld metadata changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18025 +msgid "500003" +msgstr "500003" + +#. (itstool) path: row/entry +#: book.translate.xml:18026 +msgid "May 18, 2000" +msgstr "May 18, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18027 +msgid "5.0-CURRENT after buf/bio changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18031 +msgid "500004" +msgstr "500004" + +#. (itstool) path: row/entry +#: book.translate.xml:18032 +msgid "May 26, 2000" +msgstr "May 26, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18033 +msgid "5.0-CURRENT after binutils upgrade." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18037 +msgid "500005" +msgstr "500005" + +#. (itstool) path: row/entry +#: book.translate.xml:18038 +msgid "June 3, 2000" +msgstr "June 3, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18039 +msgid "" +"5.0-CURRENT after merging libxpg4 code into libc and after TASKQ interface " +"introduction." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18044 +msgid "500006" +msgstr "500006" + +#. (itstool) path: row/entry +#: book.translate.xml:18045 +msgid "June 10, 2000" +msgstr "June 10, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18046 +msgid "5.0-CURRENT after the addition of AGP interfaces." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18051 +msgid "500007" +msgstr "500007" + +#. (itstool) path: row/entry +#: book.translate.xml:18052 +msgid "June 29, 2000" +msgstr "June 29, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18053 +msgid "5.0-CURRENT after Perl upgrade to 5.6.0" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18057 +msgid "500008" +msgstr "500008" + +#. (itstool) path: row/entry +#: book.translate.xml:18058 +msgid "July 7, 2000" +msgstr "July 7, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18059 +msgid "5.0-CURRENT after the update of KAME code to 2000/07 sources." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18064 +msgid "500009" +msgstr "500009" + +#. (itstool) path: row/entry +#: book.translate.xml:18066 +msgid "5.0-CURRENT after ether_ifattach() and ether_ifdetach() changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18071 +msgid "500010" +msgstr "500010" + +#. (itstool) path: row/entry +#: book.translate.xml:18072 +msgid "July 16, 2000" +msgstr "July 16, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18073 +msgid "" +"5.0-CURRENT after changing mtree defaults back to original variant, adding -" +"L to follow symlinks." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18079 +msgid "500011" +msgstr "500011" + +#. (itstool) path: row/entry +#: book.translate.xml:18080 +msgid "July 18, 2000" +msgstr "July 18, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18081 +msgid "5.0-CURRENT after kqueue API changed." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18085 +msgid "500012" +msgstr "500012" + +#. (itstool) path: row/entry +#: book.translate.xml:18086 +msgid "September 2, 2000" +msgstr "September 2, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18087 +msgid "" +"5.0-CURRENT after setproctitle3 moved from libutil to " +"libc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18092 +msgid "500013" +msgstr "500013" + +#. (itstool) path: row/entry +#: book.translate.xml:18093 +msgid "September 10, 2000" +msgstr "September 10, 2000" + +#. (itstool) path: row/entry +#: book.translate.xml:18094 +msgid "5.0-CURRENT after the first SMPng commit." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18098 +msgid "500014" +msgstr "500014" + +#. (itstool) path: row/entry +#: book.translate.xml:18099 +msgid "January 4, 2001" +msgstr "January 4, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18100 +msgid "5.0-CURRENT after <sys/select.h> moved to <sys/selinfo.h>." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18105 +msgid "500015" +msgstr "500015" + +#. (itstool) path: row/entry +#: book.translate.xml:18107 +msgid "" +"5.0-CURRENT after combining libgcc.a and libgcc_r.a, and associated GCC " +"linkage changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18113 +msgid "500016" +msgstr "500016" + +#. (itstool) path: row/entry +#: book.translate.xml:18114 +msgid "January 24, 2001" +msgstr "January 24, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18115 +msgid "" +"5.0-CURRENT after change allowing libc and libc_r to be linked together, " +"deprecating -pthread option." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18121 +msgid "500017" +msgstr "500017" + +#. (itstool) path: row/entry +#: book.translate.xml:18122 +msgid "February 18, 2001" +msgstr "February 18, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18123 +msgid "" +"5.0-CURRENT after switch from struct ucred to struct xucred to stabilize " +"kernel-exported API for mountd et al." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18129 +msgid "500018" +msgstr "500018" + +#. (itstool) path: row/entry +#: book.translate.xml:18130 +msgid "February 24, 2001" +msgstr "February 24, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18131 +msgid "" +"5.0-CURRENT after addition of CPUTYPE make variable for controlling CPU-" +"specific optimizations." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18137 +msgid "500019" +msgstr "500019" + +#. (itstool) path: row/entry +#: book.translate.xml:18138 +msgid "June 9, 2001" +msgstr "June 9, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18139 +msgid "5.0-CURRENT after moving machine/ioctl_fd.h to sys/fdcio.h" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18144 +msgid "500020" +msgstr "500020" + +#. (itstool) path: row/entry +#: book.translate.xml:18145 +msgid "June 15, 2001" +msgstr "June 15, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18146 +msgid "5.0-CURRENT after locale names renaming." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18150 +msgid "500021" +msgstr "500021" + +#. (itstool) path: row/entry +#: book.translate.xml:18151 +msgid "June 22, 2001" +msgstr "June 22, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18152 +msgid "5.0-CURRENT after Bzip2 import. Also signifies removal of S/Key." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18157 +msgid "500022" +msgstr "500022" + +#. (itstool) path: row/entry +#: book.translate.xml:18158 +msgid "July 12, 2001" +msgstr "July 12, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18159 +msgid "5.0-CURRENT after SSE support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18163 +msgid "500023" +msgstr "500023" + +#. (itstool) path: row/entry +#: book.translate.xml:18164 +msgid "September 14, 2001" +msgstr "September 14, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18165 +msgid "5.0-CURRENT after KSE Milestone 2." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18169 +msgid "500024" +msgstr "500024" + +#. (itstool) path: row/entry +#: book.translate.xml:18170 +msgid "October 1, 2001" +msgstr "October 1, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18171 +msgid "5.0-CURRENT after d_thread_t, and moving UUCP to ports." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18176 +msgid "500025" +msgstr "500025" + +#. (itstool) path: row/entry +#: book.translate.xml:18177 +msgid "October 4, 2001" +msgstr "October 4, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18178 +msgid "" +"5.0-CURRENT after ABI change for descriptor and creds passing on 64 bit " +"platforms." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18183 +msgid "500026" +msgstr "500026" + +#. (itstool) path: row/entry +#: book.translate.xml:18184 +msgid "October 9, 2001" +msgstr "October 9, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18185 +msgid "" +"5.0-CURRENT after moving to XFree86 4 by default for package builds, and " +"after the new libc strnstr() function was added." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18191 +msgid "500027" +msgstr "500027" + +#. (itstool) path: row/entry +#: book.translate.xml:18192 +msgid "October 10, 2001" +msgstr "October 10, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18193 +msgid "5.0-CURRENT after the new libc strcasestr() function was added." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18198 +msgid "500028" +msgstr "500028" + +#. (itstool) path: row/entry +#: book.translate.xml:18199 +msgid "December 14, 2001" +msgstr "December 14, 2001" + +#. (itstool) path: row/entry +#: book.translate.xml:18200 +msgid "5.0-CURRENT after the userland components of smbfs were imported." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18207 +msgid "5.0-CURRENT after the new C99 specific-width integer types were added." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18212 +msgid "500029" +msgstr "500029" + +#. (itstool) path: row/entry +#: book.translate.xml:18213 +msgid "January 29, 2002" +msgstr "January 29, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18214 +msgid "" +"5.0-CURRENT after a change was made in the return value of " +"sendfile2." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18219 +msgid "500030" +msgstr "500030" + +#. (itstool) path: row/entry +#: book.translate.xml:18220 +msgid "February 15, 2002" +msgstr "February 15, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18221 +msgid "" +"5.0-CURRENT after the introduction of the type fflags_t, " +"which is the appropriate size for file flags." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18227 +msgid "500031" +msgstr "500031" + +#. (itstool) path: row/entry +#: book.translate.xml:18229 +msgid "5.0-CURRENT after the usb structure element rename." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18234 +msgid "500032" +msgstr "500032" + +#. (itstool) path: row/entry +#: book.translate.xml:18235 +msgid "March 16, 2002" +msgstr "March 16, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18236 +msgid "5.0-CURRENT after the introduction of Perl 5.6.1." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18241 +msgid "500033" +msgstr "500033" + +#. (itstool) path: row/entry +#: book.translate.xml:18242 +msgid "April 3, 2002" +msgstr "April 3, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18243 +msgid "" +"5.0-CURRENT after the sendmail_enable " +"rc.conf5 variable was made to take the value NONE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18250 +msgid "500034" +msgstr "500034" + +#. (itstool) path: row/entry +#: book.translate.xml:18251 +msgid "April 30, 2002" +msgstr "April 30, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18252 +msgid "5.0-CURRENT after mtx_init() grew a third argument." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18257 +msgid "500035" +msgstr "500035" + +#. (itstool) path: row/entry +#: book.translate.xml:18258 +msgid "May 13, 2002" +msgstr "May 13, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18259 +msgid "5.0-CURRENT with Gcc 3.1." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18263 +msgid "500036" +msgstr "500036" + +#. (itstool) path: row/entry +#: book.translate.xml:18264 +msgid "May 17, 2002" +msgstr "May 17, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18265 +msgid "5.0-CURRENT without Perl in /usr/src" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18269 +msgid "500037" +msgstr "500037" + +#. (itstool) path: row/entry +#: book.translate.xml:18270 +msgid "May 29, 2002" +msgstr "May 29, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18271 +msgid "" +"5.0-CURRENT after the addition of dlfunc3" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18276 +msgid "500038" +msgstr "500038" + +#. (itstool) path: row/entry +#: book.translate.xml:18277 +msgid "July 24, 2002" +msgstr "July 24, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18278 +msgid "" +"5.0-CURRENT after the types of some struct sockbuf members were changed and " +"the structure was reordered." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18284 +msgid "500039" +msgstr "500039" + +#. (itstool) path: row/entry +#: book.translate.xml:18286 +msgid "" +"5.0-CURRENT after GCC 3.2.1 import. Also after headers stopped using " +"_BSD_FOO_T_ and started using _FOO_T_DECLARED. This value can also be used " +"as a conservative estimate of the start of " +"bzip21 package support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18295 +msgid "500040" +msgstr "500040" + +#. (itstool) path: row/entry +#: book.translate.xml:18296 +msgid "September 20, 2002" +msgstr "September 20, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18297 +msgid "" +"5.0-CURRENT after various changes to disk functions were made in the name of " +"removing dependency on disklabel structure internals." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18303 +msgid "500041" +msgstr "500041" + +#. (itstool) path: row/entry +#: book.translate.xml:18304 +msgid "October 1, 2002" +msgstr "October 1, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18305 +msgid "" +"5.0-CURRENT after the addition of getopt_long3 to libc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18310 +msgid "500042" +msgstr "500042" + +#. (itstool) path: row/entry +#: book.translate.xml:18311 +msgid "October 15, 2002" +msgstr "October 15, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18312 +msgid "" +"5.0-CURRENT after Binutils 2.13 upgrade, which included new FreeBSD " +"emulation, vec, and output format." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18318 +msgid "500043" +msgstr "500043" + +#. (itstool) path: row/entry +#: book.translate.xml:18319 +msgid "November 1, 2002" +msgstr "November 1, 2002" + +#. (itstool) path: row/entry +#: book.translate.xml:18320 +msgid "" +"5.0-CURRENT after adding weak pthread_XXX stubs to libc, obsoleting " +"libXThrStub.so. 5.0-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18326 +msgid "500100" +msgstr "500100" + +#. (itstool) path: row/entry +#: book.translate.xml:18327 +msgid "January 17, 2003" +msgstr "January 17, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18328 +msgid "5.0-CURRENT after branching for RELENG_5_0" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18333 +msgid "500101" +msgstr "500101" + +#. (itstool) path: row/entry +#: book.translate.xml:18334 +msgid "February 19, 2003" +msgstr "February 19, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18335 +msgid "<sys/dkstat.h> is empty. Do not include it." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18340 +msgid "500102" +msgstr "500102" + +#. (itstool) path: row/entry +#: book.translate.xml:18341 +msgid "February 25, 2003" +msgstr "February 25, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18342 +msgid "5.0-CURRENT after the d_mmap_t interface change." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18347 +msgid "500103" +msgstr "500103" + +#. (itstool) path: row/entry +#: book.translate.xml:18348 +msgid "February 26, 2003" +msgstr "February 26, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18349 +msgid "" +"5.0-CURRENT after taskqueue_swi changed to run without Giant, and " +"taskqueue_swi_giant added to run with Giant." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18355 +msgid "500104" +msgstr "500104" + +#. (itstool) path: row/entry +#: book.translate.xml:18356 +msgid "February 27, 2003" +msgstr "February 27, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18357 +msgid "" +"cdevsw_add() and cdevsw_remove() no longer exists. Appearance of MAJOR_AUTO " +"allocation facility." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18363 +msgid "500105" +msgstr "500105" + +#. (itstool) path: row/entry +#: book.translate.xml:18364 +msgid "March 4, 2003" +msgstr "March 4, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18365 +msgid "5.0-CURRENT after new cdevsw initialization method." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18370 +msgid "500106" +msgstr "500106" + +#. (itstool) path: row/entry +#: book.translate.xml:18371 +msgid "March 8, 2003" +msgstr "March 8, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18372 +msgid "devstat_add_entry() has been replaced by devstat_new_entry()" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18377 +msgid "500107" +msgstr "500107" + +#. (itstool) path: row/entry +#: book.translate.xml:18378 book.translate.xml:18385 +msgid "March 15, 2003" +msgstr "March 15, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18379 +msgid "Devstat interface change; see sys/sys/param.h 1.149" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18384 +msgid "500108" +msgstr "500108" + +#. (itstool) path: row/entry +#: book.translate.xml:18386 +msgid "Token-Ring interface changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18390 +msgid "500109" +msgstr "500109" + +#. (itstool) path: row/entry +#: book.translate.xml:18391 +msgid "March 25, 2003" +msgstr "March 25, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18392 +msgid "Addition of vm_paddr_t." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18396 +msgid "500110" +msgstr "500110" + +#. (itstool) path: row/entry +#: book.translate.xml:18397 +msgid "March 28, 2003" +msgstr "March 28, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18398 +msgid "" +"5.0-CURRENT after realpath3 has been made thread-" +"safe" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18403 +msgid "500111" +msgstr "500111" + +#. (itstool) path: row/entry +#: book.translate.xml:18404 +msgid "April 9, 2003" +msgstr "April 9, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18405 +msgid "" +"5.0-CURRENT after usbhid3 has been synced with " +"NetBSD" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18410 +msgid "500112" +msgstr "500112" + +#. (itstool) path: row/entry +#: book.translate.xml:18411 +msgid "April 17, 2003" +msgstr "April 17, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18412 +msgid "" +"5.0-CURRENT after new NSS implementation and addition of POSIX.1 getpw*_r, " +"getgr*_r functions" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18418 +msgid "500113" +msgstr "500113" + +#. (itstool) path: row/entry +#: book.translate.xml:18419 +msgid "May 2, 2003" +msgstr "May 2, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18420 +msgid "5.0-CURRENT after removal of the old rc system." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18425 +msgid "501000" +msgstr "501000" + +#. (itstool) path: row/entry +#: book.translate.xml:18426 +msgid "June 4, 2003" +msgstr "June 4, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18427 +msgid "5.1-RELEASE." +msgstr "5.1-RELEASE." + +#. (itstool) path: row/entry +#: book.translate.xml:18431 +msgid "501100" +msgstr "501100" + +#. (itstool) path: row/entry +#: book.translate.xml:18432 +msgid "June 2, 2003" +msgstr "June 2, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18433 +msgid "5.1-CURRENT after branching for RELENG_5_1." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18438 +msgid "501101" +msgstr "501101" + +#. (itstool) path: row/entry +#: book.translate.xml:18439 +msgid "June 29, 2003" +msgstr "June 29, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18440 +msgid "" +"5.1-CURRENT after correcting the semantics of sigtimedwait(2) and " +"sigwaitinfo(2)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18445 +msgid "501102" +msgstr "501102" + +#. (itstool) path: row/entry +#: book.translate.xml:18446 +msgid "July 3, 2003" +msgstr "July 3, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18447 +msgid "" +"5.1-CURRENT after adding the lockfunc and lockfuncarg fields to " +"bus_dma_tag_create9." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18453 +msgid "501103" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18454 +msgid "July 31, 2003" +msgstr "July 31, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18455 +msgid "5.1-CURRENT after GCC 3.3.1-pre 20030711 snapshot integration." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18460 +msgid "501104" +msgstr "501104" + +#. (itstool) path: row/entry +#: book.translate.xml:18461 +msgid "August 5, 2003" +msgstr "August 5, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18462 +msgid "5.1-CURRENT 3ware API changes to twe." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18466 +msgid "501105" +msgstr "501105" + +#. (itstool) path: row/entry +#: book.translate.xml:18467 +msgid "August 17, 2003" +msgstr "August 17, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18468 +msgid "" +"5.1-CURRENT dynamically-linked /bin and /sbin support and movement of " +"libraries to /lib." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18473 +msgid "501106" +msgstr "501106" + +#. (itstool) path: row/entry +#: book.translate.xml:18474 +msgid "September 8, 2003" +msgstr "September 8, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18475 +msgid "5.1-CURRENT after adding kernel support for Coda 6.x." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18480 +msgid "501107" +msgstr "501107" + +#. (itstool) path: row/entry +#: book.translate.xml:18481 +msgid "September 17, 2003" +msgstr "September 17, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18482 +msgid "" +"5.1-CURRENT after 16550 UART constants moved from <dev/sio/" +"sioreg.h> to <dev/ic/ns16550.h>. " +"Also when libmap functionality was unconditionally supported by rtld." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18490 +msgid "501108" +msgstr "501108" + +#. (itstool) path: row/entry +#: book.translate.xml:18491 +msgid "September 23, 2003" +msgstr "September 23, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18492 +msgid "5.1-CURRENT after PFIL_HOOKS API update" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18496 +msgid "501109" +msgstr "501109" + +#. (itstool) path: row/entry +#: book.translate.xml:18497 +msgid "September 27, 2003" +msgstr "September 27, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18498 +msgid "5.1-CURRENT after adding kiconv(3)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18502 +msgid "501110" +msgstr "501110" + +#. (itstool) path: row/entry +#: book.translate.xml:18503 +msgid "September 28, 2003" +msgstr "September 28, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18504 +msgid "" +"5.1-CURRENT after changing default operations for open and close in cdevsw" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18509 +msgid "501111" +msgstr "501111" + +#. (itstool) path: row/entry +#: book.translate.xml:18510 book.translate.xml:18517 +msgid "October 16, 2003" +msgstr "October 16, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18511 +msgid "5.1-CURRENT after changed layout of cdevsw" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18516 +msgid "501112" +msgstr "501112" + +#. (itstool) path: row/entry +#: book.translate.xml:18518 +msgid "5.1-CURRENT after adding kobj multiple inheritance" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18523 +msgid "501113" +msgstr "501113" + +#. (itstool) path: row/entry +#: book.translate.xml:18524 +msgid "October 31, 2003" +msgstr "October 31, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18525 +msgid "5.1-CURRENT after the if_xname change in struct ifnet" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18530 +msgid "501114" +msgstr "501114" + +#. (itstool) path: row/entry +#: book.translate.xml:18531 +msgid "November 16, 2003" +msgstr "November 16, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18532 +msgid "5.1-CURRENT after changing /bin and /sbin to be dynamically linked" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18537 +msgid "502000" +msgstr "502000" + +#. (itstool) path: row/entry +#: book.translate.xml:18538 book.translate.xml:18550 +msgid "December 7, 2003" +msgstr "December 7, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18539 +msgid "5.2-RELEASE" +msgstr "5.2-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:18543 +msgid "502010" +msgstr "502010" + +#. (itstool) path: row/entry +#: book.translate.xml:18544 +msgid "February 23, 2004" +msgstr "February 23, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18545 +msgid "5.2.1-RELEASE" +msgstr "5.2.1-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:18549 +msgid "502100" +msgstr "502100" + +#. (itstool) path: row/entry +#: book.translate.xml:18551 +msgid "5.2-CURRENT after branching for RELENG_5_2" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18556 +msgid "502101" +msgstr "502101" + +#. (itstool) path: row/entry +#: book.translate.xml:18557 +msgid "December 19, 2003" +msgstr "December 19, 2003" + +#. (itstool) path: row/entry +#: book.translate.xml:18558 +msgid "" +"5.2-CURRENT after __cxa_atexit/__cxa_finalize functions were added to libc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18563 +msgid "502102" +msgstr "502102" + +#. (itstool) path: row/entry +#: book.translate.xml:18564 +msgid "January 30, 2004" +msgstr "January 30, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18565 +msgid "" +"5.2-CURRENT after change of default thread library from libc_r to libpthread." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18570 +msgid "502103" +msgstr "502103" + +#. (itstool) path: row/entry +#: book.translate.xml:18571 +msgid "February 21, 2004" +msgstr "February 21, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18572 +msgid "5.2-CURRENT after device driver API megapatch." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18577 +msgid "502104" +msgstr "502104" + +#. (itstool) path: row/entry +#: book.translate.xml:18578 +msgid "February 25, 2004" +msgstr "February 25, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18579 +msgid "5.2-CURRENT after getopt_long_only() addition." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18584 +msgid "502105" +msgstr "502105" + +#. (itstool) path: row/entry +#: book.translate.xml:18585 +msgid "March 5, 2004" +msgstr "March 5, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18586 +msgid "" +"5.2-CURRENT after NULL is made into ((void *)0) for C, creating more " +"warnings." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18591 +msgid "502106" +msgstr "502106" + +#. (itstool) path: row/entry +#: book.translate.xml:18592 +msgid "March 8, 2004" +msgstr "March 8, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18593 +msgid "5.2-CURRENT after pf is linked to the build and install." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18598 +msgid "502107" +msgstr "502107" + +#. (itstool) path: row/entry +#: book.translate.xml:18599 +msgid "March 10, 2004" +msgstr "March 10, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18600 +msgid "5.2-CURRENT after time_t is changed to a 64-bit value on sparc64." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18605 +msgid "502108" +msgstr "502108" + +#. (itstool) path: row/entry +#: book.translate.xml:18606 +msgid "March 12, 2004" +msgstr "March 12, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18607 +msgid "" +"5.2-CURRENT after Intel C/C++ compiler support in some headers and execve(2) " +"changes to be more strictly conforming to POSIX." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18613 +msgid "502109" +msgstr "502109" + +#. (itstool) path: row/entry +#: book.translate.xml:18614 +msgid "March 22, 2004" +msgstr "March 22, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18615 +msgid "5.2-CURRENT after the introduction of the bus_alloc_resource_any API" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18620 +msgid "502110" +msgstr "502110" + +#. (itstool) path: row/entry +#: book.translate.xml:18621 +msgid "March 27, 2004" +msgstr "March 27, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18622 +msgid "5.2-CURRENT after the addition of UTF-8 locales" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18627 +msgid "502111" +msgstr "502111" + +#. (itstool) path: row/entry +#: book.translate.xml:18628 +msgid "April 11, 2004" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18629 +msgid "5.2-CURRENT after the removal of the getvfsent(3) API" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18634 +msgid "502112" +msgstr "502112" + +#. (itstool) path: row/entry +#: book.translate.xml:18635 +msgid "April 13, 2004" +msgstr "April 13, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18636 +msgid "5.2-CURRENT after the addition of the .warning directive for make." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18641 +msgid "502113" +msgstr "502113" + +#. (itstool) path: row/entry +#: book.translate.xml:18642 +msgid "June 4, 2004" +msgstr "June 4, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18643 +msgid "5.2-CURRENT after ttyioctl() was made mandatory for serial drivers." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18648 +msgid "502114" +msgstr "502114" + +#. (itstool) path: row/entry +#: book.translate.xml:18649 +msgid "June 13, 2004" +msgstr "June 13, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18650 +msgid "5.2-CURRENT after import of the ALTQ framework." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18655 +msgid "502115" +msgstr "502115" + +#. (itstool) path: row/entry +#: book.translate.xml:18656 +msgid "June 14, 2004" +msgstr "June 14, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18657 +msgid "" +"5.2-CURRENT after changing sema_timedwait(9) to return 0 on success and a " +"non-zero error code on failure." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18663 +msgid "502116" +msgstr "502116" + +#. (itstool) path: row/entry +#: book.translate.xml:18664 +msgid "June 16, 2004" +msgstr "June 16, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18665 +msgid "5.2-CURRENT after changing kernel dev_t to be pointer to struct cdev *." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18670 +msgid "502117" +msgstr "502117" + +#. (itstool) path: row/entry +#: book.translate.xml:18671 book.translate.xml:18678 +msgid "June 17, 2004" +msgstr "June 17, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18672 +msgid "5.2-CURRENT after changing kernel udev_t to dev_t." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18677 +msgid "502118" +msgstr "502118" + +#. (itstool) path: row/entry +#: book.translate.xml:18679 +msgid "" +"5.2-CURRENT after adding support for CLOCK_VIRTUAL and CLOCK_PROF to " +"clock_gettime(2) and clock_getres(2)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18685 +msgid "502119" +msgstr "502119" + +#. (itstool) path: row/entry +#: book.translate.xml:18686 +msgid "June 22, 2004" +msgstr "June 22, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18687 +msgid "5.2-CURRENT after changing network interface cloning overhaul." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18692 +msgid "502120" +msgstr "502120" + +#. (itstool) path: row/entry +#: book.translate.xml:18693 +msgid "July 2, 2004" +msgstr "July 2, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18694 +msgid "5.2-CURRENT after the update of the package tools to revision 20040629." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18699 +msgid "502121" +msgstr "502121" + +#. (itstool) path: row/entry +#: book.translate.xml:18700 +msgid "July 9, 2004" +msgstr "July 9, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18701 +msgid "5.2-CURRENT after marking Bluetooth code as non-i386 specific." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18706 +msgid "502122" +msgstr "502122" + +#. (itstool) path: row/entry +#: book.translate.xml:18707 +msgid "July 11, 2004" +msgstr "July 11, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18708 +msgid "" +"5.2-CURRENT after the introduction of the KDB debugger framework, the " +"conversion of DDB into a backend and the introduction of the GDB backend." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18715 +msgid "502123" +msgstr "502123" + +#. (itstool) path: row/entry +#: book.translate.xml:18716 +msgid "July 12, 2004" +msgstr "July 12, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18717 +msgid "" +"5.2-CURRENT after change to make VFS_ROOT take a struct thread argument as " +"does vflush. Struct kinfo_proc now has a user data pointer. The switch of " +"the default X implementation to xorg was also made at " +"this time." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18726 +msgid "502124" +msgstr "502124" + +#. (itstool) path: row/entry +#: book.translate.xml:18727 +msgid "July 24, 2004" +msgstr "July 24, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18728 +msgid "" +"5.2-CURRENT after the change to separate the way ports rc.d and legacy " +"scripts are started." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18733 +msgid "502125" +msgstr "502125" + +#. (itstool) path: row/entry +#: book.translate.xml:18734 +msgid "July 28, 2004" +msgstr "July 28, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18735 +msgid "5.2-CURRENT after the backout of the previous change." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18740 +msgid "502126" +msgstr "502126" + +#. (itstool) path: row/entry +#: book.translate.xml:18741 +msgid "July 31, 2004" +msgstr "July 31, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18742 +msgid "" +"5.2-CURRENT after the removal of kmem_alloc_pageable() and the import of gcc " +"3.4.2." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18748 +msgid "502127" +msgstr "502127" + +#. (itstool) path: row/entry +#: book.translate.xml:18749 +msgid "August 2, 2004" +msgstr "August 2, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18750 +msgid "" +"5.2-CURRENT after changing the UMA kernel API to allow ctors/inits to fail." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18755 +msgid "502128" +msgstr "502128" + +#. (itstool) path: row/entry +#: book.translate.xml:18756 +msgid "August 8, 2004" +msgstr "August 8, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18757 +msgid "" +"5.2-CURRENT after the change of the vfs_mount signature as well as global " +"replacement of PRISON_ROOT with SUSER_ALLOWJAIL for the suser(9) API." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18764 +msgid "503000" +msgstr "503000" + +#. (itstool) path: row/entry +#: book.translate.xml:18765 +msgid "August 23, 2004" +msgstr "August 23, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18766 +msgid "5.3-BETA/RC before the pfil API change" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18770 +msgid "503001" +msgstr "503001" + +#. (itstool) path: row/entry +#: book.translate.xml:18771 +msgid "September 22, 2004" +msgstr "September 22, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18772 +msgid "5.3-RELEASE" +msgstr "5.3-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:18776 +msgid "503100" +msgstr "503100" + +#. (itstool) path: row/entry +#: book.translate.xml:18777 +msgid "October 16, 2004" +msgstr "October 16, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18778 +msgid "5.3-STABLE after branching for RELENG_5_3" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18782 +msgid "503101" +msgstr "503101" + +#. (itstool) path: row/entry +#: book.translate.xml:18783 +msgid "December 3, 2004" +msgstr "December 3, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18784 +msgid "" +"5.3-STABLE after addition of glibc style " +"strftime3 padding options." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18789 +msgid "503102" +msgstr "503102" + +#. (itstool) path: row/entry +#: book.translate.xml:18790 +msgid "February 13, 2005" +msgstr "February 13, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18791 +msgid "5.3-STABLE after OpenBSD's nc(1) import MFC." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18796 +msgid "503103" +msgstr "503103" + +#. (itstool) path: row/entry +#: book.translate.xml:18797 book.translate.xml:19002 book.translate.xml:19009 +msgid "February 27, 2005" +msgstr "February 27, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18798 +msgid "" +"5.4-PRERELEASE after the MFC of the fixes in <src/include/" +"stdbool.h> and <src/sys/i386/include/_types.h>" +" for using the GCC-compatibility of the Intel C/C++ compiler." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18806 +msgid "503104" +msgstr "503104" + +#. (itstool) path: row/entry +#: book.translate.xml:18807 book.translate.xml:19016 +msgid "February 28, 2005" +msgstr "February 28, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18808 +msgid "" +"5.4-PRERELEASE after the MFC of the change of ifi_epoch from wall clock time " +"to uptime." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18813 +msgid "503105" +msgstr "503105" + +#. (itstool) path: row/entry +#: book.translate.xml:18814 +msgid "March 2, 2005" +msgstr "March 2, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18815 +msgid "" +"5.4-PRERELEASE after the MFC of the fix of EOVERFLOW check in vswprintf(3)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18820 +msgid "504000" +msgstr "504000" + +#. (itstool) path: row/entry +#: book.translate.xml:18821 book.translate.xml:18827 +msgid "April 3, 2005" +msgstr "April 3, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18822 +msgid "5.4-RELEASE." +msgstr "5.4-RELEASE." + +#. (itstool) path: row/entry +#: book.translate.xml:18826 +msgid "504100" +msgstr "504100" + +#. (itstool) path: row/entry +#: book.translate.xml:18828 +msgid "5.4-STABLE after branching for RELENG_5_4" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18832 +msgid "504101" +msgstr "504101" + +#. (itstool) path: row/entry +#: book.translate.xml:18833 +msgid "May 11, 2005" +msgstr "May 11, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18834 +msgid "5.4-STABLE after increasing the default thread stacksizes" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18839 +msgid "504102" +msgstr "504102" + +#. (itstool) path: row/entry +#: book.translate.xml:18840 +msgid "June 24, 2005" +msgstr "June 24, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18841 +msgid "5.4-STABLE after the addition of sha256" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18845 +msgid "504103" +msgstr "504103" + +#. (itstool) path: row/entry +#: book.translate.xml:18846 +msgid "October 3, 2005" +msgstr "October 3, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18847 +msgid "5.4-STABLE after the MFC of if_bridge" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18851 +msgid "504104" +msgstr "504104" + +#. (itstool) path: row/entry +#: book.translate.xml:18852 +msgid "November 13, 2005" +msgstr "November 13, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18853 +msgid "5.4-STABLE after the MFC of bsdiff and portsnap" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18858 +msgid "504105" +msgstr "504105" + +#. (itstool) path: row/entry +#: book.translate.xml:18859 book.translate.xml:19151 +msgid "January 17, 2006" +msgstr "January 17, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:18860 +msgid "5.4-STABLE after MFC of ldconfig_local_dirs change." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18865 +msgid "505000" +msgstr "505000" + +#. (itstool) path: row/entry +#: book.translate.xml:18866 book.translate.xml:18872 +msgid "May 12, 2006" +msgstr "May 12, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:18867 +msgid "5.5-RELEASE." +msgstr "5.5-RELEASE." + +#. (itstool) path: row/entry +#: book.translate.xml:18871 +msgid "505100" +msgstr "505100" + +#. (itstool) path: row/entry +#: book.translate.xml:18873 +msgid "5.5-STABLE after branching for RELENG_5_5" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18877 +msgid "600000" +msgstr "600000" + +#. (itstool) path: row/entry +#: book.translate.xml:18878 +msgid "August 18, 2004" +msgstr "August 18, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18879 +msgid "6.0-CURRENT" +msgstr "6.0-CURRENT" + +#. (itstool) path: row/entry +#: book.translate.xml:18883 +msgid "600001" +msgstr "600001" + +#. (itstool) path: row/entry +#: book.translate.xml:18884 +msgid "August 27, 2004" +msgstr "August 27, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18885 +msgid "6.0-CURRENT after permanently enabling PFIL_HOOKS in the kernel." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18890 +msgid "600002" +msgstr "600002" + +#. (itstool) path: row/entry +#: book.translate.xml:18891 +msgid "August 30, 2004" +msgstr "August 30, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18892 +msgid "" +"6.0-CURRENT after initial addition of ifi_epoch to struct if_data. Backed " +"out after a few days. Do not use this value." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18898 +msgid "600003" +msgstr "600003" + +#. (itstool) path: row/entry +#: book.translate.xml:18899 +msgid "September 8, 2004" +msgstr "September 8, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18900 +msgid "" +"6.0-CURRENT after the re-addition of the ifi_epoch member of struct if_data." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18905 +msgid "600004" +msgstr "600004" + +#. (itstool) path: row/entry +#: book.translate.xml:18906 +msgid "September 29, 2004" +msgstr "September 29, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18907 +msgid "" +"6.0-CURRENT after addition of the struct inpcb argument to the pfil API." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18912 +msgid "600005" +msgstr "600005" + +#. (itstool) path: row/entry +#: book.translate.xml:18913 +msgid "October 5, 2004" +msgstr "October 5, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18914 +msgid "6.0-CURRENT after addition of the \"-d DESTDIR\" argument to newsyslog." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18919 +msgid "600006" +msgstr "600006" + +#. (itstool) path: row/entry +#: book.translate.xml:18920 +msgid "November 4, 2004" +msgstr "November 4, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18921 +msgid "" +"6.0-CURRENT after addition of glibc style " +"strftime3 padding options." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18926 +msgid "600007" +msgstr "600007" + +#. (itstool) path: row/entry +#: book.translate.xml:18927 +msgid "December 12, 2004" +msgstr "December 12, 2004" + +#. (itstool) path: row/entry +#: book.translate.xml:18928 +msgid "6.0-CURRENT after addition of 802.11 framework updates." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18933 +msgid "600008" +msgstr "600008" + +#. (itstool) path: row/entry +#: book.translate.xml:18934 +msgid "January 25, 2005" +msgstr "January 25, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18935 +msgid "" +"6.0-CURRENT after changes to VOP_*VOBJECT() functions and introduction of " +"MNTK_MPSAFE flag for Giantfree filesystems." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18941 +msgid "600009" +msgstr "600009" + +#. (itstool) path: row/entry +#: book.translate.xml:18942 +msgid "February 4, 2005" +msgstr "February 4, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18943 +msgid "6.0-CURRENT after addition of the cpufreq framework and drivers." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18948 +msgid "600010" +msgstr "600010" + +#. (itstool) path: row/entry +#: book.translate.xml:18949 +msgid "February 6, 2005" +msgstr "February 6, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18950 +msgid "6.0-CURRENT after importing OpenBSD's nc(1)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18955 +msgid "600011" +msgstr "600011" + +#. (itstool) path: row/entry +#: book.translate.xml:18956 +msgid "February 12, 2005" +msgstr "February 12, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18957 +msgid "" +"6.0-CURRENT after removing semblance of SVID2 matherr() " +"support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18962 +msgid "600012" +msgstr "600012" + +#. (itstool) path: row/entry +#: book.translate.xml:18963 +msgid "February 15, 2005" +msgstr "February 15, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18964 +msgid "6.0-CURRENT after increase of default thread stacks' size." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18969 +msgid "600013" +msgstr "600013" + +#. (itstool) path: row/entry +#: book.translate.xml:18970 +msgid "February 19, 2005" +msgstr "February 19, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18971 +msgid "" +"6.0-CURRENT after fixes in <src/include/stdbool.h> and <src/sys/i386/include/_types.h> for " +"using the GCC-compatibility of the Intel C/C++ compiler." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18979 +msgid "600014" +msgstr "600014" + +#. (itstool) path: row/entry +#: book.translate.xml:18980 +msgid "February 21, 2005" +msgstr "February 21, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18981 +msgid "6.0-CURRENT after EOVERFLOW checks in vswprintf(3) fixed." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18986 +msgid "600015" +msgstr "600015" + +#. (itstool) path: row/entry +#: book.translate.xml:18987 +msgid "February 25, 2005" +msgstr "February 25, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18988 +msgid "" +"6.0-CURRENT after changing the struct if_data member, ifi_epoch, from wall " +"clock time to uptime." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:18994 +msgid "600016" +msgstr "600016" + +#. (itstool) path: row/entry +#: book.translate.xml:18995 +msgid "February 26, 2005" +msgstr "February 26, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:18996 +msgid "6.0-CURRENT after LC_CTYPE disk format changed." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19001 +msgid "600017" +msgstr "600017" + +#. (itstool) path: row/entry +#: book.translate.xml:19003 +msgid "6.0-CURRENT after NLS catalogs disk format changed." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19008 +msgid "600018" +msgstr "600018" + +#. (itstool) path: row/entry +#: book.translate.xml:19010 +msgid "6.0-CURRENT after LC_COLLATE disk format changed." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19015 +msgid "600019" +msgstr "600019" + +#. (itstool) path: row/entry +#: book.translate.xml:19017 +msgid "Installation of acpica includes into /usr/include." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19022 +msgid "600020" +msgstr "600020" + +#. (itstool) path: row/entry +#: book.translate.xml:19023 +msgid "March 9, 2005" +msgstr "March 9, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19024 +msgid "Addition of MSG_NOSIGNAL flag to send(2) API." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19029 +msgid "600021" +msgstr "600021" + +#. (itstool) path: row/entry +#: book.translate.xml:19030 +msgid "March 17, 2005" +msgstr "March 17, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19031 +msgid "Addition of fields to cdevsw" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19035 +msgid "600022" +msgstr "600022" + +#. (itstool) path: row/entry +#: book.translate.xml:19036 +msgid "March 21, 2005" +msgstr "March 21, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19037 +msgid "Removed gtar from base system." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19041 +msgid "600023" +msgstr "600023" + +#. (itstool) path: row/entry +#: book.translate.xml:19042 +msgid "April 13, 2005" +msgstr "April 13, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19043 +msgid "LOCAL_CREDS, LOCAL_CONNWAIT socket options added to unix(4)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19048 +msgid "600024" +msgstr "600024" + +#. (itstool) path: row/entry +#: book.translate.xml:19049 +msgid "April 19, 2005" +msgstr "April 19, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19050 +msgid "" +"hwpmc4 and related tools added to 6.0-CURRENT." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19055 +msgid "600025" +msgstr "600025" + +#. (itstool) path: row/entry +#: book.translate.xml:19056 +msgid "April 26, 2005" +msgstr "April 26, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19057 +msgid "struct icmphdr added to 6.0-CURRENT." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19061 +msgid "600026" +msgstr "600026" + +#. (itstool) path: row/entry +#: book.translate.xml:19062 +msgid "May 3, 2005" +msgstr "May 3, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19063 +msgid "pf updated to 3.7." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19067 +msgid "600027" +msgstr "600027" + +#. (itstool) path: row/entry +#: book.translate.xml:19068 +msgid "May 6, 2005" +msgstr "May 6, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19069 +msgid "Kernel libalias and ng_nat introduced." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19073 +msgid "600028" +msgstr "600028" + +#. (itstool) path: row/entry +#: book.translate.xml:19074 +msgid "May 13, 2005" +msgstr "May 13, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19075 +msgid "POSIX ttyname_r(3) made available through unistd.h and libc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19080 +msgid "600029" +msgstr "600029" + +#. (itstool) path: row/entry +#: book.translate.xml:19081 +msgid "May 29, 2005" +msgstr "May 29, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19082 +msgid "6.0-CURRENT after libpcap updated to v0.9.1 alpha 096." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19087 +msgid "600030" +msgstr "600030" + +#. (itstool) path: row/entry +#: book.translate.xml:19088 +msgid "June 5, 2005" +msgstr "June 5, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19089 +msgid "6.0-CURRENT after importing NetBSD's if_bridge(4)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19094 +msgid "600031" +msgstr "600031" + +#. (itstool) path: row/entry +#: book.translate.xml:19095 +msgid "June 10, 2005" +msgstr "June 10, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19096 +msgid "6.0-CURRENT after struct ifnet was broken out of the driver softcs." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19101 +msgid "600032" +msgstr "600032" + +#. (itstool) path: row/entry +#: book.translate.xml:19102 book.translate.xml:19389 +msgid "July 11, 2005" +msgstr "July 11, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19103 +msgid "6.0-CURRENT after the import of libpcap v0.9.1." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19108 +msgid "600033" +msgstr "600033" + +#. (itstool) path: row/entry +#: book.translate.xml:19109 +msgid "July 25, 2005" +msgstr "July 25, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19110 +msgid "" +"6.0-STABLE after bump of all shared library versions that had not been " +"changed since RELENG_5." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19116 +msgid "600034" +msgstr "600034" + +#. (itstool) path: row/entry +#: book.translate.xml:19117 book.translate.xml:19403 +msgid "August 13, 2005" +msgstr "August 13, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19118 +msgid "" +"6.0-STABLE after credential argument is added to dev_clone event handler. " +"6.0-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19123 +msgid "600100" +msgstr "600100" + +#. (itstool) path: row/entry +#: book.translate.xml:19124 +msgid "November 1, 2005" +msgstr "November 1, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19125 +msgid "6.0-STABLE after 6.0-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19129 +msgid "600101" +msgstr "600101" + +#. (itstool) path: row/entry +#: book.translate.xml:19130 +msgid "December 21, 2005" +msgstr "December 21, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19131 +msgid "" +"6.0-STABLE after incorporating scripts from the local_startup directories " +"into the base rcorder8." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19137 +msgid "600102" +msgstr "600102" + +#. (itstool) path: row/entry +#: book.translate.xml:19138 +msgid "December 30, 2005" +msgstr "December 30, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19139 +msgid "6.0-STABLE after updating the ELF types and constants." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19144 +msgid "600103" +msgstr "600103" + +#. (itstool) path: row/entry +#: book.translate.xml:19145 +msgid "January 15, 2006" +msgstr "January 15, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19146 +msgid "6.0-STABLE after MFC of pidfile(3) API." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19150 +msgid "600104" +msgstr "600104" + +#. (itstool) path: row/entry +#: book.translate.xml:19152 +msgid "6.0-STABLE after MFC of ldconfig_local_dirs change." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19157 +msgid "600105" +msgstr "600105" + +#. (itstool) path: row/entry +#: book.translate.xml:19158 +msgid "February 26, 2006" +msgstr "February 26, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19159 +msgid "6.0-STABLE after NLS catalog support of csh(1)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19164 +msgid "601000" +msgstr "601000" + +#. (itstool) path: row/entry +#: book.translate.xml:19165 book.translate.xml:19171 +msgid "May 6, 2006" +msgstr "May 6, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19166 +msgid "6.1-RELEASE" +msgstr "6.1-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:19170 +msgid "601100" +msgstr "601100" + +#. (itstool) path: row/entry +#: book.translate.xml:19172 +msgid "6.1-STABLE after 6.1-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19176 +msgid "601101" +msgstr "601101" + +#. (itstool) path: row/entry +#: book.translate.xml:19177 +msgid "June 22, 2006" +msgstr "June 22, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19178 +msgid "6.1-STABLE after the import of csup." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19182 +msgid "601102" +msgstr "601102" + +#. (itstool) path: row/entry +#: book.translate.xml:19183 +msgid "July 11, 2006" +msgstr "July 11, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19184 +msgid "6.1-STABLE after the iwi(4) update." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19188 +msgid "601103" +msgstr "601103" + +#. (itstool) path: row/entry +#: book.translate.xml:19189 +msgid "July 17, 2006" +msgstr "July 17, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19190 +msgid "" +"6.1-STABLE after the resolver update to BIND9, and exposure of reentrant " +"version of netdb functions." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19196 +msgid "601104" +msgstr "601104" + +#. (itstool) path: row/entry +#: book.translate.xml:19197 +msgid "August 8, 2006" +msgstr "August 8, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19198 +msgid "" +"6.1-STABLE after DSO (dynamic shared objects) support has been enabled in " +"OpenSSL." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19204 +msgid "601105" +msgstr "601105" + +#. (itstool) path: row/entry +#: book.translate.xml:19205 +msgid "September 2, 2006" +msgstr "September 2, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19206 +msgid "" +"6.1-STABLE after 802.11 fixups changed the api for the " +"IEEE80211_IOC_STA_INFO ioctl." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19211 +msgid "602000" +msgstr "602000" + +#. (itstool) path: row/entry +#: book.translate.xml:19212 +msgid "November 15, 2006" +msgstr "November 15, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19213 +msgid "6.2-RELEASE" +msgstr "6.2-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:19217 +msgid "602100" +msgstr "602100" + +#. (itstool) path: row/entry +#: book.translate.xml:19218 +msgid "September 15, 2006" +msgstr "September 15, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19219 +msgid "6.2-STABLE after 6.2-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19223 +msgid "602101" +msgstr "602101" + +#. (itstool) path: row/entry +#: book.translate.xml:19224 +msgid "December 12, 2006" +msgstr "December 12, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19225 +msgid "6.2-STABLE after the addition of Wi-Spy quirk." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19230 +msgid "602102" +msgstr "602102" + +#. (itstool) path: row/entry +#: book.translate.xml:19231 +msgid "December 28, 2006" +msgstr "December 28, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19232 +msgid "6.2-STABLE after pci_find_extcap() addition." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19237 +msgid "602103" +msgstr "602103" + +#. (itstool) path: row/entry +#: book.translate.xml:19238 +msgid "January 16, 2007" +msgstr "January 16, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19239 +msgid "" +"6.2-STABLE after MFC of dlsym change to look for a requested symbol both in " +"specified dso and its implicit dependencies." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19245 +msgid "602104" +msgstr "602104" + +#. (itstool) path: row/entry +#: book.translate.xml:19246 +msgid "January 28, 2007" +msgstr "January 28, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19247 +msgid "" +"6.2-STABLE after MFC of ng_deflate(4) and ng_pred1(4) netgraph nodes and new " +"compression and encryption modes for ng_ppp(4) node." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19253 +msgid "602105" +msgstr "602105" + +#. (itstool) path: row/entry +#: book.translate.xml:19254 +msgid "February 20, 2007" +msgstr "February 20, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19255 +msgid "" +"6.2-STABLE after MFC of BSD licensed version of " +"gzip1 ported from NetBSD." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19260 +msgid "602106" +msgstr "602106" + +#. (itstool) path: row/entry +#: book.translate.xml:19261 +msgid "March 31, 2007" +msgstr "March 31, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19262 +msgid "6.2-STABLE after MFC of PCI MSI and MSI-X support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19267 +msgid "602107" +msgstr "602107" + +#. (itstool) path: row/entry +#: book.translate.xml:19268 book.translate.xml:19645 +msgid "April 6, 2007" +msgstr "April 6, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19269 +msgid "6.2-STABLE after MFC of ncurses 5.6 and wide character support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19274 +msgid "602108" +msgstr "602108" + +#. (itstool) path: row/entry +#: book.translate.xml:19275 +msgid "April 11, 2007" +msgstr "April 11, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19276 +msgid "" +"6.2-STABLE after MFC of CAM 'SG' peripheral device, which implements a " +"subset of Linux SCSI SG passthrough device API." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19282 +msgid "602109" +msgstr "602109" + +#. (itstool) path: row/entry +#: book.translate.xml:19283 +msgid "April 17, 2007" +msgstr "April 17, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19284 +msgid "6.2-STABLE after MFC of readline 5.2 patchset 002." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19289 +msgid "602110" +msgstr "602110" + +#. (itstool) path: row/entry +#: book.translate.xml:19290 +msgid "May 2, 2007" +msgstr "May 2, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19291 +msgid "" +"6.2-STABLE after MFC of pmap_invalidate_cache(), pmap_change_attr(), " +"pmap_mapbios(), pmap_mapdev_attr(), and pmap_unmapbios() for amd64 and i386." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19298 +msgid "602111" +msgstr "602111" + +#. (itstool) path: row/entry +#: book.translate.xml:19299 book.translate.xml:19720 book.translate.xml:19727 +msgid "June 11, 2007" +msgstr "June 11, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19300 +msgid "" +"6.2-STABLE after MFC of BOP_BDFLUSH and caused breakage of the filesystem " +"modules KBI." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19305 +msgid "602112" +msgstr "602112" + +#. (itstool) path: row/entry +#: book.translate.xml:19306 +msgid "September 21, 2007" +msgstr "September 21, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19307 +msgid "6.2-STABLE after libutil(3) MFC's." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19311 +msgid "602113" +msgstr "602113" + +#. (itstool) path: row/entry +#: book.translate.xml:19312 book.translate.xml:19788 +msgid "October 25, 2007" +msgstr "October 25, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19313 +msgid "" +"6.2-STABLE after MFC of wide and single byte ctype separation. Newly " +"compiled binary that references to ctype.h may require a new symbol, " +"__mb_sb_limit, which is not available on older systems." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19321 +msgid "602114" +msgstr "602114" + +#. (itstool) path: row/entry +#: book.translate.xml:19322 +msgid "October 30, 2007" +msgstr "October 30, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19323 +msgid "6.2-STABLE after ctype ABI forward compatibility restored." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19328 +msgid "602115" +msgstr "602115" + +#. (itstool) path: row/entry +#: book.translate.xml:19329 +msgid "November 21, 2007" +msgstr "November 21, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19330 +msgid "6.2-STABLE after back out of wide and single byte ctype separation." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19335 +msgid "603000" +msgstr "603000" + +#. (itstool) path: row/entry +#: book.translate.xml:19336 book.translate.xml:19342 +msgid "November 25, 2007" +msgstr "November 25, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19337 +msgid "6.3-RELEASE" +msgstr "6.3-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:19341 +msgid "603100" +msgstr "603100" + +#. (itstool) path: row/entry +#: book.translate.xml:19343 +msgid "6.3-STABLE after 6.3-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19347 +msgid "603101" +msgstr "603101" + +#. (itstool) path: row/entry +#: book.translate.xml:19348 book.translate.xml:20076 +msgid "December 7, 2007" +msgstr "December 7, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19349 +msgid "6.3-STABLE after fixing multibyte type support in bit macro." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19354 +msgid "603102" +msgstr "603102" + +#. (itstool) path: row/entry +#: book.translate.xml:19355 +msgid "April 24, 2008" +msgstr "April 24, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19356 +msgid "6.3-STABLE after adding l_sysid to struct flock." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19361 +msgid "603103" +msgstr "603103" + +#. (itstool) path: row/entry +#: book.translate.xml:19362 book.translate.xml:19867 +msgid "May 27, 2008" +msgstr "May 27, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19363 +msgid "6.3-STABLE after MFC of the memrchr function." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19368 +msgid "603104" +msgstr "603104" + +#. (itstool) path: row/entry +#: book.translate.xml:19369 +msgid "June 15, 2008" +msgstr "June 15, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19370 +msgid "" +"6.3-STABLE after MFC of support for :u variable modifier " +"in make(1)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19376 +msgid "604000" +msgstr "604000" + +#. (itstool) path: row/entry +#: book.translate.xml:19377 book.translate.xml:19383 +msgid "October 4, 2008" +msgstr "October 4, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19378 +msgid "6.4-RELEASE" +msgstr "6.4-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:19382 +msgid "604100" +msgstr "604100" + +#. (itstool) path: row/entry +#: book.translate.xml:19384 +msgid "6.4-STABLE after 6.4-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19388 +msgid "700000" +msgstr "700000" + +#. (itstool) path: row/entry +#: book.translate.xml:19390 +msgid "7.0-CURRENT." +msgstr "7.0-CURRENT." + +#. (itstool) path: row/entry +#: book.translate.xml:19394 +msgid "700001" +msgstr "700001" + +#. (itstool) path: row/entry +#: book.translate.xml:19395 +msgid "July 23, 2005" +msgstr "July 23, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19396 +msgid "" +"7.0-CURRENT after bump of all shared library versions that had not been " +"changed since RELENG_5." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19402 +msgid "700002" +msgstr "700002" + +#. (itstool) path: row/entry +#: book.translate.xml:19404 +msgid "" +"7.0-CURRENT after credential argument is added to dev_clone event handler." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19409 +msgid "700003" +msgstr "700003" + +#. (itstool) path: row/entry +#: book.translate.xml:19410 +msgid "August 25, 2005" +msgstr "August 25, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19411 +msgid "7.0-CURRENT after memmem(3) is added to libc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19416 +msgid "700004" +msgstr "700004" + +#. (itstool) path: row/entry +#: book.translate.xml:19417 +msgid "October 30, 2005" +msgstr "October 30, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19418 +msgid "" +"7.0-CURRENT after solisten(9) kernel arguments are modified to accept a " +"backlog parameter." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19423 +msgid "700005" +msgstr "700005" + +#. (itstool) path: row/entry +#: book.translate.xml:19424 book.translate.xml:19431 +msgid "November 11, 2005" +msgstr "November 11, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19425 +msgid "" +"7.0-CURRENT after IFP2ENADDR() was changed to return a pointer to " +"IF_LLADDR()." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19430 +msgid "700006" +msgstr "700006" + +#. (itstool) path: row/entry +#: book.translate.xml:19432 +msgid "" +"7.0-CURRENT after addition of if_addr member to " +"struct ifnet and IFP2ENADDR() removal." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19438 +msgid "700007" +msgstr "700007" + +#. (itstool) path: row/entry +#: book.translate.xml:19439 +msgid "December 2, 2005" +msgstr "December 2, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19440 +msgid "" +"7.0-CURRENT after incorporating scripts from the local_startup directories " +"into the base rcorder8." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19446 +msgid "700008" +msgstr "700008" + +#. (itstool) path: row/entry +#: book.translate.xml:19447 +msgid "December 5, 2005" +msgstr "December 5, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19448 +msgid "7.0-CURRENT after removal of MNT_NODEV mount option." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19453 +msgid "700009" +msgstr "700009" + +#. (itstool) path: row/entry +#: book.translate.xml:19454 +msgid "December 19, 2005" +msgstr "December 19, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19455 +msgid "7.0-CURRENT after ELF-64 type changes and symbol versioning." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19460 +msgid "700010" +msgstr "700010" + +#. (itstool) path: row/entry +#: book.translate.xml:19461 +msgid "December 20, 2005" +msgstr "December 20, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19462 +msgid "" +"7.0-CURRENT after addition of hostb and vgapci drivers, addition of " +"pci_find_extcap(), and changing the AGP drivers to no longer map the " +"aperture." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19468 +msgid "700011" +msgstr "700011" + +#. (itstool) path: row/entry +#: book.translate.xml:19469 +msgid "December 31, 2005" +msgstr "December 31, 2005" + +#. (itstool) path: row/entry +#: book.translate.xml:19470 +msgid "7.0-CURRENT after tv_sec was made time_t on all platforms but Alpha." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19475 +msgid "700012" +msgstr "700012" + +#. (itstool) path: row/entry +#: book.translate.xml:19476 +msgid "January 8, 2006" +msgstr "January 8, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19477 +msgid "7.0-CURRENT after ldconfig_local_dirs change." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19482 +msgid "700013" +msgstr "700013" + +#. (itstool) path: row/entry +#: book.translate.xml:19483 +msgid "January 12, 2006" +msgstr "January 12, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19484 +msgid "" +"7.0-CURRENT after changes to /etc/rc.d/abi to support " +"/compat/linux/etc/ld.so.cache being a symlink in a " +"readonly filesystem." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19491 +msgid "700014" +msgstr "700014" + +#. (itstool) path: row/entry +#: book.translate.xml:19492 +msgid "January 26, 2006" +msgstr "January 26, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19493 +msgid "7.0-CURRENT after pts import." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19497 +msgid "700015" +msgstr "700015" + +#. (itstool) path: row/entry +#: book.translate.xml:19498 +msgid "March 26, 2006" +msgstr "March 26, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19499 +msgid "" +"7.0-CURRENT after the introduction of version 2 of " +"hwpmc4's ABI." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19504 +msgid "700016" +msgstr "700016" + +#. (itstool) path: row/entry +#: book.translate.xml:19505 +msgid "April 22, 2006" +msgstr "April 22, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19506 +msgid "" +"7.0-CURRENT after addition of fcloseall3 to libc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19511 +msgid "700017" +msgstr "700017" + +#. (itstool) path: row/entry +#: book.translate.xml:19512 +msgid "May 13, 2006" +msgstr "May 13, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19513 +msgid "7.0-CURRENT after removal of ip6fw." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19517 +msgid "700018" +msgstr "700018" + +#. (itstool) path: row/entry +#: book.translate.xml:19518 +msgid "July 15, 2006" +msgstr "July 15, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19519 +msgid "7.0-CURRENT after import of snd_emu10kx." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19523 +msgid "700019" +msgstr "700019" + +#. (itstool) path: row/entry +#: book.translate.xml:19524 +msgid "July 29, 2006" +msgstr "July 29, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19525 +msgid "7.0-CURRENT after import of OpenSSL 0.9.8b." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19530 +msgid "700020" +msgstr "700020" + +#. (itstool) path: row/entry +#: book.translate.xml:19531 +msgid "September 3, 2006" +msgstr "September 3, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19532 +msgid "7.0-CURRENT after addition of bus_dma_get_tag function" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19537 +msgid "700021" +msgstr "700021" + +#. (itstool) path: row/entry +#: book.translate.xml:19538 +msgid "September 4, 2006" +msgstr "September 4, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19539 +msgid "7.0-CURRENT after libpcap 0.9.4 and tcpdump 3.9.4 import." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19544 +msgid "700022" +msgstr "700022" + +#. (itstool) path: row/entry +#: book.translate.xml:19545 +msgid "September 9, 2006" +msgstr "September 9, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19546 +msgid "" +"7.0-CURRENT after dlsym change to look for a requested symbol both in " +"specified dso and its implicit dependencies." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19552 +msgid "700023" +msgstr "700023" + +#. (itstool) path: row/entry +#: book.translate.xml:19553 +msgid "September 23, 2006" +msgstr "September 23, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19554 +msgid "7.0-CURRENT after adding new sound IOCTLs for the OSSv4 mixer API." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19559 +msgid "700024" +msgstr "700024" + +#. (itstool) path: row/entry +#: book.translate.xml:19560 +msgid "September 28, 2006" +msgstr "September 28, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19561 +msgid "7.0-CURRENT after import of OpenSSL 0.9.8d." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19566 +msgid "700025" +msgstr "700025" + +#. (itstool) path: row/entry +#: book.translate.xml:19567 +msgid "November 11, 2006" +msgstr "November 11, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19568 +msgid "7.0-CURRENT after the addition of libelf." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19572 +msgid "700026" +msgstr "700026" + +#. (itstool) path: row/entry +#: book.translate.xml:19573 +msgid "November 26, 2006" +msgstr "November 26, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19574 +msgid "7.0-CURRENT after major changes on sound sysctls." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19579 +msgid "700027" +msgstr "700027" + +#. (itstool) path: row/entry +#: book.translate.xml:19580 +msgid "November 30, 2006" +msgstr "November 30, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19581 +msgid "7.0-CURRENT after the addition of Wi-Spy quirk." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19586 +msgid "700028" +msgstr "700028" + +#. (itstool) path: row/entry +#: book.translate.xml:19587 +msgid "December 15, 2006" +msgstr "December 15, 2006" + +#. (itstool) path: row/entry +#: book.translate.xml:19588 +msgid "7.0-CURRENT after the addition of sctp calls to libc" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19593 +msgid "700029" +msgstr "700029" + +#. (itstool) path: row/entry +#: book.translate.xml:19594 +msgid "January 26, 2007" +msgstr "January 26, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19595 +msgid "" +"7.0-CURRENT after the GNU gzip1 implementation was " +"replaced with a BSD licensed version ported from NetBSD." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19601 +msgid "700030" +msgstr "700030" + +#. (itstool) path: row/entry +#: book.translate.xml:19602 +msgid "February 7, 2007" +msgstr "February 7, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19603 +msgid "" +"7.0-CURRENT after the removal of IPIP tunnel encapsulation (VIFF_TUNNEL) " +"from the IPv4 multicast forwarding code." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19609 +msgid "700031" +msgstr "700031" + +#. (itstool) path: row/entry +#: book.translate.xml:19610 +msgid "February 23, 2007" +msgstr "February 23, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19611 +msgid "7.0-CURRENT after the modification of bus_setup_intr() (newbus)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19616 +msgid "700032" +msgstr "700032" + +#. (itstool) path: row/entry +#: book.translate.xml:19617 +msgid "March 2, 2007" +msgstr "March 2, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19618 +msgid "7.0-CURRENT after the inclusion of ipw(4) and iwi(4) firmware." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19623 +msgid "700033" +msgstr "700033" + +#. (itstool) path: row/entry +#: book.translate.xml:19624 +msgid "March 9, 2007" +msgstr "March 9, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19625 +msgid "7.0-CURRENT after the inclusion of ncurses wide character support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19630 +msgid "700034" +msgstr "700034" + +#. (itstool) path: row/entry +#: book.translate.xml:19631 +msgid "March 19, 2007" +msgstr "March 19, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19632 +msgid "" +"7.0-CURRENT after changes to how insmntque(), getnewvnode(), and " +"vfs_hash_insert() work." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19637 +msgid "700035" +msgstr "700035" + +#. (itstool) path: row/entry +#: book.translate.xml:19638 +msgid "March 26, 2007" +msgstr "March 26, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19639 +msgid "" +"7.0-CURRENT after addition of a notify mechanism for CPU frequency changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19644 +msgid "700036" +msgstr "700036" + +#. (itstool) path: row/entry +#: book.translate.xml:19646 +msgid "7.0-CURRENT after import of the ZFS filesystem." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19651 +msgid "700037" +msgstr "700037" + +#. (itstool) path: row/entry +#: book.translate.xml:19652 +msgid "April 8, 2007" +msgstr "April 8, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19653 +msgid "" +"7.0-CURRENT after addition of CAM 'SG' peripheral device, which implements a " +"subset of Linux SCSI SG passthrough device API." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19659 +msgid "700038" +msgstr "700038" + +#. (itstool) path: row/entry +#: book.translate.xml:19660 +msgid "April 30, 2007" +msgstr "April 30, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19661 +msgid "" +"7.0-CURRENT after changing getenv3, " +"putenv3, setenv3 and " +"unsetenv3 to be POSIX conformant." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19667 +msgid "700039" +msgstr "700039" + +#. (itstool) path: row/entry +#: book.translate.xml:19668 +msgid "May 1, 2007" +msgstr "May 1, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19669 +msgid "7.0-CURRENT after the changes in 700038 were backed out." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19674 +msgid "700040" +msgstr "700040" + +#. (itstool) path: row/entry +#: book.translate.xml:19675 +msgid "May 10, 2007" +msgstr "May 10, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19676 +msgid "" +"7.0-CURRENT after the addition of flopen3 to libutil." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19681 +msgid "700041" +msgstr "700041" + +#. (itstool) path: row/entry +#: book.translate.xml:19682 +msgid "May 13, 2007" +msgstr "May 13, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19683 +msgid "" +"7.0-CURRENT after enabling symbol versioning, and changing the default " +"thread library to libthr." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19688 +msgid "700042" +msgstr "700042" + +#. (itstool) path: row/entry +#: book.translate.xml:19689 +msgid "May 19, 2007" +msgstr "May 19, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19690 +msgid "7.0-CURRENT after the import of gcc 4.2.0." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19695 +msgid "700043" +msgstr "700043" + +#. (itstool) path: row/entry +#: book.translate.xml:19696 +msgid "May 21, 2007" +msgstr "May 21, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19697 +msgid "" +"7.0-CURRENT after bump of all shared library versions that had not been " +"changed since RELENG_6." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19703 +msgid "700044" +msgstr "700044" + +#. (itstool) path: row/entry +#: book.translate.xml:19704 +msgid "June 7, 2007" +msgstr "June 7, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19705 +msgid "" +"7.0-CURRENT after changing the argument for vn_open()/VOP_OPEN() from file " +"descriptor index to the struct file *." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19711 +msgid "700045" +msgstr "700045" + +#. (itstool) path: row/entry +#: book.translate.xml:19712 +msgid "June 10, 2007" +msgstr "June 10, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19713 +msgid "" +"7.0-CURRENT after changing pam_nologin8 to provide an account " +"management function instead of an authentication function to the PAM " +"framework." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19719 +msgid "700046" +msgstr "700046" + +#. (itstool) path: row/entry +#: book.translate.xml:19721 +msgid "7.0-CURRENT after updated 802.11 wireless support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19726 +msgid "700047" +msgstr "700047" + +#. (itstool) path: row/entry +#: book.translate.xml:19728 +msgid "7.0-CURRENT after adding TCP LRO interface capabilities." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19733 +msgid "700048" +msgstr "700048" + +#. (itstool) path: row/entry +#: book.translate.xml:19734 +msgid "June 12, 2007" +msgstr "June 12, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19735 +msgid "" +"7.0-CURRENT after RFC 3678 API support added to the IPv4 stack. Legacy RFC " +"1724 behavior of the IP_MULTICAST_IF ioctl has now been removed; 0.0.0.0/8 " +"may no longer be used to specify an interface index. Use struct ipmreqn " +"instead." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19744 +msgid "700049" +msgstr "700049" + +#. (itstool) path: row/entry +#: book.translate.xml:19745 +msgid "July 3, 2007" +msgstr "July 3, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19746 +msgid "7.0-CURRENT after importing pf from OpenBSD 4.1" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19753 +msgid "" +"7.0-CURRENT after adding IPv6 support for FAST_IPSEC, deleting KAME IPSEC, " +"and renaming FAST_IPSEC to IPSEC." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19759 +msgid "700050" +msgstr "700050" + +#. (itstool) path: row/entry +#: book.translate.xml:19760 book.translate.xml:19767 +msgid "July 4, 2007" +msgstr "July 4, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19761 +msgid "" +"7.0-CURRENT after converting setenv/putenv/etc. calls from traditional BSD " +"to POSIX." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19766 +msgid "700051" +msgstr "700051" + +#. (itstool) path: row/entry +#: book.translate.xml:19768 +msgid "7.0-CURRENT after adding new mmap/lseek/etc syscalls." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19773 +msgid "700052" +msgstr "700052" + +#. (itstool) path: row/entry +#: book.translate.xml:19774 +msgid "July 6, 2007" +msgstr "July 6, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19775 +msgid "7.0-CURRENT after moving I4B headers to include/i4b." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19780 +msgid "700053" +msgstr "700053" + +#. (itstool) path: row/entry +#: book.translate.xml:19781 +msgid "September 30, 2007" +msgstr "September 30, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19782 +msgid "7.0-CURRENT after the addition of support for PCI domains" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19787 +msgid "700054" +msgstr "700054" + +#. (itstool) path: row/entry +#: book.translate.xml:19789 +msgid "7.0-CURRENT after MFC of wide and single byte ctype separation." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19794 +msgid "700055" +msgstr "700055" + +#. (itstool) path: row/entry +#: book.translate.xml:19795 +msgid "October 28, 2007" +msgstr "October 28, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19796 +msgid "" +"7.0-RELEASE, and 7.0-CURRENT after ABI backwards compatibility to the " +"FreeBSD 4/5/6 versions of the PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs " +"was MFCed, which required the ABI of the PCIOCGETCONF IOCTL to be broken " +"again" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19804 +msgid "700100" +msgstr "700100" + +#. (itstool) path: row/entry +#: book.translate.xml:19805 +msgid "December 22, 2007" +msgstr "December 22, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:19806 +msgid "7.0-STABLE after 7.0-RELEASE" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19810 +msgid "700101" +msgstr "700101" + +#. (itstool) path: row/entry +#: book.translate.xml:19811 book.translate.xml:20165 +msgid "February 8, 2008" +msgstr "February 8, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19812 +msgid "7.0-STABLE after the MFC of m_collapse()." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19816 +msgid "700102" +msgstr "700102" + +#. (itstool) path: row/entry +#: book.translate.xml:19817 +msgid "March 30, 2008" +msgstr "March 30, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19818 +msgid "7.0-STABLE after the MFC of kdb_enter_why()." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19823 +msgid "700103" +msgstr "700103" + +#. (itstool) path: row/entry +#: book.translate.xml:19824 book.translate.xml:20297 +msgid "April 10, 2008" +msgstr "April 10, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19825 +msgid "7.0-STABLE after adding l_sysid to struct flock." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19830 +msgid "700104" +msgstr "700104" + +#. (itstool) path: row/entry +#: book.translate.xml:19831 book.translate.xml:19837 +msgid "April 11, 2008" +msgstr "April 11, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19832 +msgid "7.0-STABLE after the MFC of procstat(1)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19836 +msgid "700105" +msgstr "700105" + +#. (itstool) path: row/entry +#: book.translate.xml:19838 +msgid "7.0-STABLE after the MFC of umtx features." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19843 +msgid "700106" +msgstr "700106" + +#. (itstool) path: row/entry +#: book.translate.xml:19844 +msgid "April 15, 2008" +msgstr "April 15, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19845 +msgid "" +"7.0-STABLE after the MFC of write2 support to " +"psm4." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19850 +msgid "700107" +msgstr "700107" + +#. (itstool) path: row/entry +#: book.translate.xml:19851 book.translate.xml:20311 +msgid "April 20, 2008" +msgstr "April 20, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19852 +msgid "" +"7.0-STABLE after the MFC of F_DUP2FD command to " +"fcntl2." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19857 +msgid "700108" +msgstr "700108" + +#. (itstool) path: row/entry +#: book.translate.xml:19858 +msgid "May 5, 2008" +msgstr "May 5, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19859 +msgid "" +"7.0-STABLE after some lockmgr9 changes, which makes " +"it necessary to include sys/lock.h to use " +"lockmgr9." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19866 +msgid "700109" +msgstr "700109" + +#. (itstool) path: row/entry +#: book.translate.xml:19868 +msgid "7.0-STABLE after MFC of the memrchr function." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19873 +msgid "700110" +msgstr "700110" + +#. (itstool) path: row/entry +#: book.translate.xml:19874 +msgid "August 5, 2008" +msgstr "August 5, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19875 +msgid "7.0-STABLE after MFC of kernel NFS lockd client." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19880 +msgid "700111" +msgstr "700111" + +#. (itstool) path: row/entry +#: book.translate.xml:19881 book.translate.xml:20374 +msgid "August 20, 2008" +msgstr "August 20, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19882 +msgid "7.0-STABLE after addition of physically contiguous jumbo frame support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19887 +msgid "700112" +msgstr "700112" + +#. (itstool) path: row/entry +#: book.translate.xml:19888 +msgid "August 27, 2008" +msgstr "August 27, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19889 +msgid "7.0-STABLE after MFC of kernel DTrace support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19894 +msgid "701000" +msgstr "701000" + +#. (itstool) path: row/entry +#: book.translate.xml:19895 book.translate.xml:19901 +msgid "November 25, 2008" +msgstr "November 25, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:19896 +msgid "7.1-RELEASE" +msgstr "7.1-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:19900 +msgid "701100" +msgstr "701100" + +#. (itstool) path: row/entry +#: book.translate.xml:19902 +msgid "7.1-STABLE after 7.1-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19906 +msgid "701101" +msgstr "701101" + +#. (itstool) path: row/entry +#: book.translate.xml:19907 +msgid "January 10, 2009" +msgstr "January 10, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19908 +msgid "7.1-STABLE after strndup merge." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19913 +msgid "701102" +msgstr "701102" + +#. (itstool) path: row/entry +#: book.translate.xml:19914 +msgid "January 17, 2009" +msgstr "January 17, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19915 +msgid "7.1-STABLE after cpuctl(4) support added." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19920 +msgid "701103" +msgstr "701103" + +#. (itstool) path: row/entry +#: book.translate.xml:19921 +msgid "February 7, 2009" +msgstr "February 7, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19922 +msgid "7.1-STABLE after the merge of multi-/no-IPv4/v6 jails." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19927 +msgid "701104" +msgstr "701104" + +#. (itstool) path: row/entry +#: book.translate.xml:19928 +msgid "February 14, 2009" +msgstr "February 14, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19929 +msgid "" +"7.1-STABLE after the store of the suspension owner in the struct mount, and " +"introduction of vfs_susp_clean method into the struct vfsops." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19935 +msgid "701105" +msgstr "701105" + +#. (itstool) path: row/entry +#: book.translate.xml:19936 +msgid "March 12, 2009" +msgstr "March 12, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19937 +msgid "" +"7.1-STABLE after the incompatible change to the kern.ipc.shmsegs sysctl to " +"allow allocating larger SysV shared memory segments on 64bit architectures." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19944 +msgid "701106" +msgstr "701106" + +#. (itstool) path: row/entry +#: book.translate.xml:19945 book.translate.xml:20568 +msgid "March 14, 2009" +msgstr "March 14, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19946 +msgid "" +"7.1-STABLE after the merge of a fix for POSIX semaphore wait operations." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19951 +msgid "702000" +msgstr "702000" + +#. (itstool) path: row/entry +#: book.translate.xml:19952 book.translate.xml:19958 book.translate.xml:20619 +#: book.translate.xml:20629 book.translate.xml:20636 +msgid "April 15, 2009" +msgstr "April 15, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19953 +msgid "7.2-RELEASE" +msgstr "7.2-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:19957 +msgid "702100" +msgstr "702100" + +#. (itstool) path: row/entry +#: book.translate.xml:19959 +msgid "7.2-STABLE after 7.2-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19963 +msgid "702101" +msgstr "702101" + +#. (itstool) path: row/entry +#: book.translate.xml:19964 +msgid "May 15, 2009" +msgstr "May 15, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19965 +msgid "" +"7.2-STABLE after ichsmb(4) was changed to use left-adjusted slave addressing " +"to match other SMBus controller drivers." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19971 +msgid "702102" +msgstr "702102" + +#. (itstool) path: row/entry +#: book.translate.xml:19972 +msgid "May 28, 2009" +msgstr "May 28, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19973 +msgid "7.2-STABLE after MFC of the fdopendir function." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19978 +msgid "702103" +msgstr "702103" + +#. (itstool) path: row/entry +#: book.translate.xml:19979 +msgid "June 06, 2009" +msgstr "June 06, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19980 +msgid "7.2-STABLE after MFC of PmcTools." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19984 +msgid "702104" +msgstr "702104" + +#. (itstool) path: row/entry +#: book.translate.xml:19985 book.translate.xml:20834 +msgid "July 14, 2009" +msgstr "July 14, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19986 +msgid "7.2-STABLE after MFC of the closefrom system call." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19991 +msgid "702105" +msgstr "702105" + +#. (itstool) path: row/entry +#: book.translate.xml:19992 +msgid "July 31, 2009" +msgstr "July 31, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:19993 +msgid "7.2-STABLE after MFC of the SYSVIPC ABI change." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:19998 +msgid "702106" +msgstr "702106" + +#. (itstool) path: row/entry +#: book.translate.xml:19999 +msgid "September 14, 2009" +msgstr "September 14, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20000 +msgid "" +"7.2-STABLE after MFC of the x86 PAT enhancements and addition of " +"d_mmap_single() and the scatter/gather list VM object type." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20006 +msgid "703000" +msgstr "703000" + +#. (itstool) path: row/entry +#: book.translate.xml:20007 book.translate.xml:20013 +msgid "February 9, 2010" +msgstr "February 9, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:20008 +msgid "7.3-RELEASE" +msgstr "7.3-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:20012 +msgid "703100" +msgstr "703100" + +#. (itstool) path: row/entry +#: book.translate.xml:20014 +msgid "7.3-STABLE after 7.3-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20018 +msgid "704000" +msgstr "704000" + +#. (itstool) path: row/entry +#: book.translate.xml:20019 book.translate.xml:20025 book.translate.xml:20940 +#: book.translate.xml:20946 +msgid "December 22, 2010" +msgstr "December 22, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:20020 +msgid "7.4-RELEASE" +msgstr "7.4-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:20024 +msgid "704100" +msgstr "704100" + +#. (itstool) path: row/entry +#: book.translate.xml:20026 +msgid "7.4-STABLE after 7.4-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20030 +msgid "800000" +msgstr "800000" + +#. (itstool) path: row/entry +#: book.translate.xml:20031 +msgid "October 11, 2007" +msgstr "October 11, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:20032 +msgid "8.0-CURRENT. Separating wide and single byte ctype." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20037 +msgid "800001" +msgstr "800001" + +#. (itstool) path: row/entry +#: book.translate.xml:20038 +msgid "October 16, 2007" +msgstr "October 16, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:20039 +msgid "8.0-CURRENT after libpcap 0.9.8 and tcpdump 3.9.8 import." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20044 +msgid "800002" +msgstr "800002" + +#. (itstool) path: row/entry +#: book.translate.xml:20045 +msgid "October 21, 2007" +msgstr "October 21, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:20046 +msgid "" +"8.0-CURRENT after renaming kthread_create() and friends to kproc_create() " +"etc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20051 +msgid "800003" +msgstr "800003" + +#. (itstool) path: row/entry +#: book.translate.xml:20052 +msgid "October 24, 2007" +msgstr "October 24, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:20053 +msgid "" +"8.0-CURRENT after ABI backwards compatibility to the FreeBSD 4/5/6 versions " +"of the PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs was added, which " +"required the ABI of the PCIOCGETCONF IOCTL to be broken again" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20061 +msgid "800004" +msgstr "800004" + +#. (itstool) path: row/entry +#: book.translate.xml:20062 +msgid "November 12, 2007" +msgstr "November 12, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:20063 +msgid "" +"8.0-CURRENT after agp(4) driver moved from src/sys/pci to src/sys/dev/agp" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20068 +msgid "800005" +msgstr "800005" + +#. (itstool) path: row/entry +#: book.translate.xml:20069 +msgid "December 4, 2007" +msgstr "December 4, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:20070 +msgid "" +"8.0-CURRENT after changes to the jumbo frame allocator (rev " +"174247)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20075 +msgid "800006" +msgstr "800006" + +#. (itstool) path: row/entry +#: book.translate.xml:20077 +msgid "" +"8.0-CURRENT after the addition of callgraph capture functionality to " +"hwpmc4." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20082 +msgid "800007" +msgstr "800007" + +#. (itstool) path: row/entry +#: book.translate.xml:20083 +msgid "December 25, 2007" +msgstr "December 25, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:20084 +msgid "8.0-CURRENT after kdb_enter() gains a \"why\" argument." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20089 +msgid "800008" +msgstr "800008" + +#. (itstool) path: row/entry +#: book.translate.xml:20090 +msgid "December 28, 2007" +msgstr "December 28, 2007" + +#. (itstool) path: row/entry +#: book.translate.xml:20091 +msgid "8.0-CURRENT after LK_EXCLUPGRADE option removal." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20096 +msgid "800009" +msgstr "800009" + +#. (itstool) path: row/entry +#: book.translate.xml:20097 +msgid "January 9, 2008" +msgstr "January 9, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20098 +msgid "" +"8.0-CURRENT after introduction of " +"lockmgr_disown9" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20103 +msgid "800010" +msgstr "800010" + +#. (itstool) path: row/entry +#: book.translate.xml:20104 +msgid "January 10, 2008" +msgstr "January 10, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20105 +msgid "" +"8.0-CURRENT after the vn_lock9 prototype change." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20110 +msgid "800011" +msgstr "800011" + +#. (itstool) path: row/entry +#: book.translate.xml:20111 +msgid "January 13, 2008" +msgstr "January 13, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20112 +msgid "" +"8.0-CURRENT after the VOP_LOCK9 and " +"VOP_UNLOCK9 prototype changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20117 +msgid "800012" +msgstr "800012" + +#. (itstool) path: row/entry +#: book.translate.xml:20118 +msgid "January 19, 2008" +msgstr "January 19, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20119 +msgid "" +"8.0-CURRENT after introduction of " +"lockmgr_recursed9, BUF_RECURSED9 and " +"BUF_ISLOCKED9 and the removal of BUF_REFCNT()." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20126 +msgid "800013" +msgstr "800013" + +#. (itstool) path: row/entry +#: book.translate.xml:20127 +msgid "January 23, 2008" +msgstr "January 23, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20128 +msgid "8.0-CURRENT after introduction of the ASCII encoding." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20133 +msgid "800014" +msgstr "800014" + +#. (itstool) path: row/entry +#: book.translate.xml:20134 +msgid "January 24, 2008" +msgstr "January 24, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20135 +msgid "" +"8.0-CURRENT after changing the prototype of " +"lockmgr9 and removal of lockcount() " +"and LOCKMGR_ASSERT()." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20142 +msgid "800015" +msgstr "800015" + +#. (itstool) path: row/entry +#: book.translate.xml:20143 +msgid "January 26, 2008" +msgstr "January 26, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20144 +msgid "" +"8.0-CURRENT after extending the types of the " +"fts3 structures." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20149 +msgid "800016" +msgstr "800016" + +#. (itstool) path: row/entry +#: book.translate.xml:20150 +msgid "February 1, 2008" +msgstr "February 1, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20151 +msgid "8.0-CURRENT after adding an argument to MEXTADD(9)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20156 +msgid "800017" +msgstr "800017" + +#. (itstool) path: row/entry +#: book.translate.xml:20157 +msgid "February 6, 2008" +msgstr "February 6, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20158 +msgid "" +"8.0-CURRENT after the introduction of LK_NODUP and LK_NOWITNESS options in " +"the lockmgr9 space." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20164 +msgid "800018" +msgstr "800018" + +#. (itstool) path: row/entry +#: book.translate.xml:20166 +msgid "8.0-CURRENT after the addition of m_collapse." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20171 +msgid "800019" +msgstr "800019" + +#. (itstool) path: row/entry +#: book.translate.xml:20172 +msgid "February 9, 2008" +msgstr "February 9, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20173 +msgid "" +"8.0-CURRENT after the addition of current working directory, root directory, " +"and jail directory support to the kern.proc.filedesc sysctl." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20180 +msgid "800020" +msgstr "800020" + +#. (itstool) path: row/entry +#: book.translate.xml:20181 +msgid "February 13, 2008" +msgstr "February 13, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20182 +msgid "" +"8.0-CURRENT after introduction of " +"lockmgr_assert9 and BUF_ASSERT functions." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20188 +msgid "800021" +msgstr "800021" + +#. (itstool) path: row/entry +#: book.translate.xml:20189 +msgid "February 15, 2008" +msgstr "February 15, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20190 +msgid "" +"8.0-CURRENT after introduction of lockmgr_args9 and LK_INTERNAL flag " +"removal." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20196 +msgid "800022" +msgstr "800022" + +#. (itstool) path: row/entry +#: book.translate.xml:20197 +msgid "(backed out)" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20198 +msgid "" +"8.0-CURRENT after changing the default system ar to BSD " +"ar1." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20203 +msgid "800023" +msgstr "800023" + +#. (itstool) path: row/entry +#: book.translate.xml:20204 +msgid "February 25, 2008" +msgstr "February 25, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20205 +msgid "" +"8.0-CURRENT after changing the prototypes of " +"lockstatus9 and VOP_ISLOCKED9, more specifically " +"retiring the struct thread argument." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20212 +msgid "800024" +msgstr "800024" + +#. (itstool) path: row/entry +#: book.translate.xml:20213 +msgid "March 1, 2008" +msgstr "March 1, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20214 +msgid "" +"8.0-CURRENT after axing out the lockwaiters and " +"BUF_LOCKWAITERS functions, changing the return value of " +"brelvp from void to int and introducing new flags for " +"lockinit9." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20223 +msgid "800025" +msgstr "800025" + +#. (itstool) path: row/entry +#: book.translate.xml:20224 +msgid "March 8, 2008" +msgstr "March 8, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20225 +msgid "" +"8.0-CURRENT after adding F_DUP2FD command to " +"fcntl2." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20230 +msgid "800026" +msgstr "800026" + +#. (itstool) path: row/entry +#: book.translate.xml:20231 +msgid "March 12, 2008" +msgstr "March 12, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20232 +msgid "" +"8.0-CURRENT after changing the priority parameter to cv_broadcastpri such " +"that 0 means no priority." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20238 +msgid "800027" +msgstr "800027" + +#. (itstool) path: row/entry +#: book.translate.xml:20239 +msgid "March 24, 2008" +msgstr "March 24, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20240 +msgid "" +"8.0-CURRENT after changing the bpf monitoring ABI when zerocopy bpf buffers " +"were added." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20245 +msgid "800028" +msgstr "800028" + +#. (itstool) path: row/entry +#: book.translate.xml:20246 +msgid "March 26, 2008" +msgstr "March 26, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20247 +msgid "8.0-CURRENT after adding l_sysid to struct flock." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20252 +msgid "800029" +msgstr "800029" + +#. (itstool) path: row/entry +#: book.translate.xml:20253 +msgid "March 28, 2008" +msgstr "March 28, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20254 +msgid "" +"8.0-CURRENT after reintegration of the BUF_LOCKWAITERS " +"function and the addition of lockmgr_waiters9." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20260 +msgid "800030" +msgstr "800030" + +#. (itstool) path: row/entry +#: book.translate.xml:20261 +msgid "April 1, 2008" +msgstr "April 1, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20262 +msgid "" +"8.0-CURRENT after the introduction of the " +"rw_try_rlock9 and rw_try_wlock9 functions." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20268 +msgid "800031" +msgstr "800031" + +#. (itstool) path: row/entry +#: book.translate.xml:20269 +msgid "April 6, 2008" +msgstr "April 6, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20270 +msgid "" +"8.0-CURRENT after the introduction of the lockmgr_rw " +"and lockmgr_args_rw functions." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20277 +msgid "800032" +msgstr "800032" + +#. (itstool) path: row/entry +#: book.translate.xml:20278 book.translate.xml:20287 +msgid "April 8, 2008" +msgstr "April 8, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20279 +msgid "" +"8.0-CURRENT after the implementation of the openat and related syscalls, " +"introduction of the O_EXEC flag for the open2, and providing the " +"corresponding linux compatibility syscalls." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20286 +msgid "800033" +msgstr "800033" + +#. (itstool) path: row/entry +#: book.translate.xml:20288 +msgid "" +"8.0-CURRENT after added write2 support for " +"psm4 in native operation level. Now arbitrary commands can be " +"written to /dev/psm%d and status can be read back from " +"it." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20296 +msgid "800034" +msgstr "800034" + +#. (itstool) path: row/entry +#: book.translate.xml:20298 +msgid "" +"8.0-CURRENT after introduction of the memrchr function." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20303 +msgid "800035" +msgstr "800035" + +#. (itstool) path: row/entry +#: book.translate.xml:20304 +msgid "April 16, 2008" +msgstr "April 16, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20305 +msgid "" +"8.0-CURRENT after introduction of the fdopendir " +"function." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20310 +msgid "800036" +msgstr "800036" + +#. (itstool) path: row/entry +#: book.translate.xml:20312 +msgid "" +"8.0-CURRENT after switchover of 802.11 wireless to multi-bss support (aka " +"vaps)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20317 +msgid "800037" +msgstr "800037" + +#. (itstool) path: row/entry +#: book.translate.xml:20318 +msgid "May 9, 2008" +msgstr "May 9, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20319 +msgid "" +"8.0-CURRENT after addition of multi routing table support (aka setfib(1), " +"setfib(2))." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20324 +msgid "800038" +msgstr "800038" + +#. (itstool) path: row/entry +#: book.translate.xml:20325 +msgid "May 26, 2008" +msgstr "May 26, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20326 +msgid "" +"8.0-CURRENT after removal of netatm and ISDN4BSD. Also, the addition of the " +"Compact C Type (CTF) tools." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20332 +msgid "800039" +msgstr "800039" + +#. (itstool) path: row/entry +#: book.translate.xml:20333 +msgid "June 14, 2008" +msgstr "June 14, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20334 +msgid "8.0-CURRENT after removal of sgtty." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20338 +msgid "800040" +msgstr "800040" + +#. (itstool) path: row/entry +#: book.translate.xml:20339 +msgid "June 26, 2008" +msgstr "June 26, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20340 +msgid "8.0-CURRENT with kernel NFS lockd client." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20344 +msgid "800041" +msgstr "800041" + +#. (itstool) path: row/entry +#: book.translate.xml:20345 +msgid "July 22, 2008" +msgstr "July 22, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20346 +msgid "" +"8.0-CURRENT after addition of arc4random_buf(3) and arc4random_uniform(3)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20351 +msgid "800042" +msgstr "800042" + +#. (itstool) path: row/entry +#: book.translate.xml:20352 +msgid "August 8, 2008" +msgstr "August 8, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20353 +msgid "8.0-CURRENT after addition of cpuctl(4)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20357 +msgid "800043" +msgstr "800043" + +#. (itstool) path: row/entry +#: book.translate.xml:20358 +msgid "August 13, 2008" +msgstr "August 13, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20359 +msgid "" +"8.0-CURRENT after changing bpf(4) to use a single device node, instead of " +"device cloning." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20364 +msgid "800044" +msgstr "800044" + +#. (itstool) path: row/entry +#: book.translate.xml:20365 +msgid "August 17, 2008" +msgstr "August 17, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20366 +msgid "" +"8.0-CURRENT after the commit of the first step of the vimage project " +"renaming global variables to be virtualized with a V_ prefix with macros to " +"map them back to their global names." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20373 +msgid "800045" +msgstr "800045" + +#. (itstool) path: row/entry +#: book.translate.xml:20375 +msgid "" +"8.0-CURRENT after the integration of the MPSAFE TTY layer, including changes " +"to various drivers and utilities that interact with it." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20381 +msgid "800046" +msgstr "800046" + +#. (itstool) path: row/entry +#: book.translate.xml:20382 +msgid "September 8, 2008" +msgstr "September 8, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20383 +msgid "" +"8.0-CURRENT after the separation of the GDT per CPU on amd64 architecture." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20388 +msgid "800047" +msgstr "800047" + +#. (itstool) path: row/entry +#: book.translate.xml:20389 +msgid "September 10, 2008" +msgstr "September 10, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20390 +msgid "8.0-CURRENT after removal of VSVTX, VSGID and VSUID." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20395 +msgid "800048" +msgstr "800048" + +#. (itstool) path: row/entry +#: book.translate.xml:20396 +msgid "September 16, 2008" +msgstr "September 16, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20397 +msgid "" +"8.0-CURRENT after converting the kernel NFS mount code to accept individual " +"mount options in the nmount() iovec, not just one big struct nfs_args." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20404 +msgid "800049" +msgstr "800049" + +#. (itstool) path: row/entry +#: book.translate.xml:20405 +msgid "September 17, 2008" +msgstr "September 17, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20406 +msgid "" +"8.0-CURRENT after the removal of suser9 and " +"suser_cred9." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20411 +msgid "800050" +msgstr "800050" + +#. (itstool) path: row/entry +#: book.translate.xml:20412 +msgid "October 20, 2008" +msgstr "October 20, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20413 +msgid "8.0-CURRENT after buffer cache API change." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20418 +msgid "800051" +msgstr "800051" + +#. (itstool) path: row/entry +#: book.translate.xml:20419 +msgid "October 23, 2008" +msgstr "October 23, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20420 +msgid "" +"8.0-CURRENT after the removal of the MALLOC9 and " +"FREE9 macros." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20425 +msgid "800052" +msgstr "800052" + +#. (itstool) path: row/entry +#: book.translate.xml:20426 +msgid "October 28, 2008" +msgstr "October 28, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20427 +msgid "" +"8.0-CURRENT after the introduction of accmode_t and renaming of VOP_ACCESS " +"'a_mode' argument to 'a_accmode'." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20433 +msgid "800053" +msgstr "800053" + +#. (itstool) path: row/entry +#: book.translate.xml:20434 +msgid "November 2, 2008" +msgstr "November 2, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20435 +msgid "" +"8.0-CURRENT after the prototype change of " +"vfs_busy9 and the introduction of its MBF_NOWAIT and " +"MBF_MNTLSTLOCK flags." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20441 +msgid "800054" +msgstr "800054" + +#. (itstool) path: row/entry +#: book.translate.xml:20442 +msgid "November 22, 2008" +msgstr "November 22, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20443 +msgid "" +"8.0-CURRENT after the addition of buf_ring, memory barriers and ifnet " +"functions to facilitate multiple hardware transmit queues for cards that " +"support them, and a lockless ring-buffer implementation to enable drivers to " +"more efficiently manage queuing of packets." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20452 +msgid "800055" +msgstr "800055" + +#. (itstool) path: row/entry +#: book.translate.xml:20453 +msgid "November 27, 2008" +msgstr "November 27, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20454 +msgid "" +"8.0-CURRENT after the addition of Intel™ Core, Core2, and Atom support to " +"hwpmc4." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20460 +msgid "800056" +msgstr "800056" + +#. (itstool) path: row/entry +#: book.translate.xml:20461 +msgid "November 29, 2008" +msgstr "November 29, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20462 +msgid "8.0-CURRENT after the introduction of multi-/no-IPv4/v6 jails." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20467 +msgid "800057" +msgstr "800057" + +#. (itstool) path: row/entry +#: book.translate.xml:20468 +msgid "December 1, 2008" +msgstr "December 1, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20469 +msgid "8.0-CURRENT after the switch to the ath hal source code." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20474 +msgid "800058" +msgstr "800058" + +#. (itstool) path: row/entry +#: book.translate.xml:20475 +msgid "December 12, 2008" +msgstr "December 12, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20476 +msgid "8.0-CURRENT after the introduction of the VOP_VPTOCNP operation." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20481 +msgid "800059" +msgstr "800059" + +#. (itstool) path: row/entry +#: book.translate.xml:20482 +msgid "December 15, 2008" +msgstr "December 15, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20483 +msgid "8.0-CURRENT incorporates the new arp-v2 rewrite." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20488 +msgid "800060" +msgstr "800060" + +#. (itstool) path: row/entry +#: book.translate.xml:20489 +msgid "December 19, 2008" +msgstr "December 19, 2008" + +#. (itstool) path: row/entry +#: book.translate.xml:20490 +msgid "8.0-CURRENT after the addition of makefs." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20494 +msgid "800061" +msgstr "800061" + +#. (itstool) path: row/entry +#: book.translate.xml:20495 +msgid "January 15, 2009" +msgstr "January 15, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20496 +msgid "8.0-CURRENT after TCP Appropriate Byte Counting." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20501 +msgid "800062" +msgstr "800062" + +#. (itstool) path: row/entry +#: book.translate.xml:20502 +msgid "January 28, 2009" +msgstr "January 28, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20503 +msgid "8.0-CURRENT after removal of minor(), minor2unit(), unit2minor(), etc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20508 +msgid "800063" +msgstr "800063" + +#. (itstool) path: row/entry +#: book.translate.xml:20509 +msgid "February 18, 2009" +msgstr "February 18, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20510 +msgid "" +"8.0-CURRENT after GENERIC config change to use the USB2 stack, but also the " +"addition of fdevname(3)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20516 +msgid "800064" +msgstr "800064" + +#. (itstool) path: row/entry +#: book.translate.xml:20517 +msgid "February 23, 2009" +msgstr "February 23, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20518 +msgid "8.0-CURRENT after the USB2 stack is moved to and replaces dev/usb." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20523 +msgid "800065" +msgstr "800065" + +#. (itstool) path: row/entry +#: book.translate.xml:20524 +msgid "February 26, 2009" +msgstr "February 26, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20525 +msgid "8.0-CURRENT after the renaming of all functions in libmp(3)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20530 +msgid "800066" +msgstr "800066" + +#. (itstool) path: row/entry +#: book.translate.xml:20531 +msgid "February 27, 2009" +msgstr "February 27, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20532 +msgid "8.0-CURRENT after changing USB devfs handling and layout." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20537 +msgid "800067" +msgstr "800067" + +#. (itstool) path: row/entry +#: book.translate.xml:20538 +msgid "February 28, 2009" +msgstr "February 28, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20539 +msgid "" +"8.0-CURRENT after adding getdelim(), getline(), stpncpy(), strnlen(), " +"wcsnlen(), wcscasecmp(), and wcsncasecmp()." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20545 +msgid "800068" +msgstr "800068" + +#. (itstool) path: row/entry +#: book.translate.xml:20546 +msgid "March 2, 2009" +msgstr "March 2, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20547 +msgid "8.0-CURRENT after renaming the ushub devclass to uhub." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20552 +msgid "800069" +msgstr "800069" + +#. (itstool) path: row/entry +#: book.translate.xml:20553 book.translate.xml:20560 +msgid "March 9, 2009" +msgstr "March 9, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20554 +msgid "8.0-CURRENT after libusb20.so.1 was renamed to libusb.so.1." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20559 +msgid "800070" +msgstr "800070" + +#. (itstool) path: row/entry +#: book.translate.xml:20561 +msgid "" +"8.0-CURRENT after merging IGMPv3 and Source-Specific Multicast (SSM) to the " +"IPv4 stack." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20567 +msgid "800071" +msgstr "800071" + +#. (itstool) path: row/entry +#: book.translate.xml:20569 +msgid "" +"8.0-CURRENT after gcc was patched to use C99 inline semantics in c99 and " +"gnu99 mode." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20574 +msgid "800072" +msgstr "800072" + +#. (itstool) path: row/entry +#: book.translate.xml:20575 +msgid "March 15, 2009" +msgstr "March 15, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20576 +msgid "" +"8.0-CURRENT after the IFF_NEEDSGIANT flag has been removed; non-MPSAFE " +"network device drivers are no longer supported." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20582 +msgid "800073" +msgstr "800073" + +#. (itstool) path: row/entry +#: book.translate.xml:20583 +msgid "March 18, 2009" +msgstr "March 18, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20584 +msgid "" +"8.0-CURRENT after the dynamic string token substitution has been implemented " +"for rpath and needed paths." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20590 +msgid "800074" +msgstr "800074" + +#. (itstool) path: row/entry +#: book.translate.xml:20591 +msgid "March 24, 2009" +msgstr "March 24, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20592 +msgid "8.0-CURRENT after tcpdump 4.0.0 and libpcap 1.0.0 import." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20597 +msgid "800075" +msgstr "800075" + +#. (itstool) path: row/entry +#: book.translate.xml:20598 +msgid "April 6, 2009" +msgstr "April 6, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20599 +msgid "" +"8.0-CURRENT after layout of structs vnet_net, vnet_inet and vnet_ipfw has " +"been changed." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20604 +msgid "800076" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20605 +msgid "April 9, 2009" +msgstr "April 9, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20606 +msgid "8.0-CURRENT after adding delay profiles in dummynet." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20611 +msgid "800077" +msgstr "800077" + +#. (itstool) path: row/entry +#: book.translate.xml:20612 +msgid "April 14, 2009" +msgstr "April 14, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20613 +msgid "8.0-CURRENT after removing VOP_LEASE() and vop_vector.vop_lease." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20618 +msgid "800078" +msgstr "800078" + +#. (itstool) path: row/entry +#: book.translate.xml:20620 +msgid "" +"8.0-CURRENT after struct rt_weight fields have been added to struct " +"rt_metrics and struct rt_metrics_lite, changing the layout of struct " +"rt_metrics_lite. A bump to RTM_VERSION was made, but backed out." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20628 +msgid "800079" +msgstr "800079" + +#. (itstool) path: row/entry +#: book.translate.xml:20630 +msgid "" +"8.0-CURRENT after struct llentry pointers are added to struct route and " +"struct route_in6." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20635 +msgid "800080" +msgstr "800080" + +#. (itstool) path: row/entry +#: book.translate.xml:20637 +msgid "8.0-CURRENT after layout of struct inpcb has been changed." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20642 +msgid "800081" +msgstr "800081" + +#. (itstool) path: row/entry +#: book.translate.xml:20643 +msgid "April 19, 2009" +msgstr "April 19, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20644 +msgid "8.0-CURRENT after the layout of struct malloc_type has been changed." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20649 +msgid "800082" +msgstr "800082" + +#. (itstool) path: row/entry +#: book.translate.xml:20650 +msgid "April 21, 2009" +msgstr "April 21, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20651 +msgid "" +"8.0-CURRENT after the layout of struct ifnet has changed, and with if_ref() " +"and if_rele() ifnet refcounting." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20657 +msgid "800083" +msgstr "800083" + +#. (itstool) path: row/entry +#: book.translate.xml:20658 +msgid "April 22, 2009" +msgstr "April 22, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20659 +msgid "8.0-CURRENT after the implementation of a low-level Bluetooth HCI API." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20664 +msgid "800084" +msgstr "800084" + +#. (itstool) path: row/entry +#: book.translate.xml:20665 +msgid "April 29, 2009" +msgstr "April 29, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20666 +msgid "8.0-CURRENT after IPv6 SSM and MLDv2 changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20671 +msgid "800085" +msgstr "800085" + +#. (itstool) path: row/entry +#: book.translate.xml:20672 +msgid "April 30, 2009" +msgstr "April 30, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20673 +msgid "" +"8.0-CURRENT after enabling support for VIMAGE kernel builds with one active " +"image." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20678 +msgid "800086" +msgstr "800086" + +#. (itstool) path: row/entry +#: book.translate.xml:20679 +msgid "May 8, 2009" +msgstr "May 8, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20680 +msgid "" +"8.0-CURRENT after adding support for input lines of arbitrarily length in " +"patch(1)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20685 +msgid "800087" +msgstr "800087" + +#. (itstool) path: row/entry +#: book.translate.xml:20686 +msgid "May 11, 2009" +msgstr "May 11, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20687 +msgid "" +"8.0-CURRENT after some VFS KPI changes. The thread argument has been removed " +"from the FSD parts of the VFS. VFS_* functions do not " +"need the context any more because it always refers to curthread. In some special cases, the old behavior is retained." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20696 +msgid "800088" +msgstr "800088" + +#. (itstool) path: row/entry +#: book.translate.xml:20697 +msgid "May 20, 2009" +msgstr "May 20, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20698 +msgid "8.0-CURRENT after net80211 monitor mode changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20703 +msgid "800089" +msgstr "800089" + +#. (itstool) path: row/entry +#: book.translate.xml:20704 book.translate.xml:20711 +msgid "May 23, 2009" +msgstr "May 23, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20705 +msgid "8.0-CURRENT after adding UDP control block support." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20710 +msgid "800090" +msgstr "800090" + +#. (itstool) path: row/entry +#: book.translate.xml:20712 +msgid "8.0-CURRENT after virtualizing interface cloning." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20717 +msgid "800091" +msgstr "800091" + +#. (itstool) path: row/entry +#: book.translate.xml:20718 +msgid "May 27, 2009" +msgstr "May 27, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20719 +msgid "" +"8.0-CURRENT after adding hierarchical jails and removing global securelevel." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20724 +msgid "800092" +msgstr "800092" + +#. (itstool) path: row/entry +#: book.translate.xml:20725 book.translate.xml:20736 +msgid "May 29, 2009" +msgstr "May 29, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20726 +msgid "" +"8.0-CURRENT after changing sx_init_flags() KPI. The " +"SX_ADAPTIVESPIN is retired and a new " +"SX_NOADAPTIVE flag is introduced to handle the reversed " +"logic." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20735 +msgid "800093" +msgstr "800093" + +#. (itstool) path: row/entry +#: book.translate.xml:20737 +msgid "8.0-CURRENT after adding mnt_xflag to struct mount." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20742 +msgid "800094" +msgstr "800094" + +#. (itstool) path: row/entry +#: book.translate.xml:20743 book.translate.xml:20750 +msgid "May 30, 2009" +msgstr "May 30, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20744 +msgid "" +"8.0-CURRENT after adding VOP_ACCESSX9." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20749 +msgid "800095" +msgstr "800095" + +#. (itstool) path: row/entry +#: book.translate.xml:20751 +msgid "" +"8.0-CURRENT after changing the polling KPI. The polling handlers now return " +"the number of packets processed. A new IFCAP_POLLING_NOCOUNT is also introduced to specify that the return value is not " +"significant and the counting should be skipped." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20761 +msgid "800096" +msgstr "800096" + +#. (itstool) path: row/entry +#: book.translate.xml:20762 +msgid "June 1, 2009" +msgstr "June 1, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20763 +msgid "" +"8.0-CURRENT after updating to the new netisr implementation and after " +"changing the way we store and access FIBs." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20773 book.translate.xml:20780 +msgid "800097" +msgstr "800097" + +#. (itstool) path: row/entry +#: book.translate.xml:20774 +msgid "June 8, 2009" +msgstr "June 8, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20775 +msgid "" +"8.0-CURRENT after the introduction of vnet destructor hooks and " +"infrastructure." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20781 +msgid "June 11, 2009" +msgstr "June 11, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20782 +msgid "" +"8.0-CURRENT after the introduction of netgraph outbound to inbound path call " +"detection and queuing, which also changed the layout of struct thread." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20789 +msgid "800098" +msgstr "800098" + +#. (itstool) path: row/entry +#: book.translate.xml:20790 +msgid "June 14, 2009" +msgstr "June 14, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20791 +msgid "8.0-CURRENT after OpenSSL 0.9.8k import." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20795 +msgid "800099" +msgstr "800099" + +#. (itstool) path: row/entry +#: book.translate.xml:20796 +msgid "June 22, 2009" +msgstr "June 22, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20797 +msgid "" +"8.0-CURRENT after NGROUPS update and moving route virtualization into its " +"own VImage module." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20803 +msgid "800100" +msgstr "800100" + +#. (itstool) path: row/entry +#: book.translate.xml:20804 +msgid "June 24, 2009" +msgstr "June 24, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20805 +msgid "8.0-CURRENT after SYSVIPC ABI change." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20809 +msgid "800101" +msgstr "800101" + +#. (itstool) path: row/entry +#: book.translate.xml:20810 +msgid "June 29, 2009" +msgstr "June 29, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20811 +msgid "" +"8.0-CURRENT after the removal of the /dev/net/* per-interface character " +"devices." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20817 +msgid "800102" +msgstr "800102" + +#. (itstool) path: row/entry +#: book.translate.xml:20818 +msgid "July 12, 2009" +msgstr "July 12, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20819 +msgid "" +"8.0-CURRENT after padding was added to struct sackhint, struct tcpcb, and " +"struct tcpstat." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20825 +msgid "800103" +msgstr "800103" + +#. (itstool) path: row/entry +#: book.translate.xml:20826 +msgid "July 13, 2009" +msgstr "July 13, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20827 +msgid "" +"8.0-CURRENT after replacing struct tcpopt with struct toeopt in the TOE " +"driver interface to the TCP syncache." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20833 +msgid "800104" +msgstr "800104" + +#. (itstool) path: row/entry +#: book.translate.xml:20835 +msgid "" +"8.0-CURRENT after the addition of the linker-set based per-vnet allocator." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20840 +msgid "800105" +msgstr "800105" + +#. (itstool) path: row/entry +#: book.translate.xml:20841 +msgid "July 19, 2009" +msgstr "July 19, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20842 +msgid "" +"8.0-CURRENT after version bump for all shared libraries that do not have " +"symbol versioning turned on." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20848 +msgid "800106" +msgstr "800106" + +#. (itstool) path: row/entry +#: book.translate.xml:20849 +msgid "July 24, 2009" +msgstr "July 24, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20850 +msgid "8.0-CURRENT after introduction of OBJT_SG VM object type." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20855 +msgid "800107" +msgstr "800107" + +#. (itstool) path: row/entry +#: book.translate.xml:20856 +msgid "August 2, 2009" +msgstr "August 2, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20857 +msgid "" +"8.0-CURRENT after making the newbus subsystem Giant free by adding the " +"newbus sxlock and 8.0-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20863 +msgid "800108" +msgstr "800108" + +#. (itstool) path: row/entry +#: book.translate.xml:20864 +msgid "November 21, 2009" +msgstr "November 21, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:20865 +msgid "8.0-STABLE after implementing EVFILT_USER kevent filter." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20870 +msgid "800500" +msgstr "800500" + +#. (itstool) path: row/entry +#: book.translate.xml:20871 +msgid "January 7, 2010" +msgstr "January 7, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:20872 +msgid "" +"8.0-STABLE after __FreeBSD_version bump to make " +"pkg_add -r use packages-8-stable." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20879 +msgid "800501" +msgstr "800501" + +#. (itstool) path: row/entry +#: book.translate.xml:20880 +msgid "January 24, 2010" +msgstr "January 24, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:20881 +msgid "" +"8.0-STABLE after change of the scandir(3) and " +"alphasort(3) prototypes to conform to SUSv4." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20888 +msgid "800502" +msgstr "800502" + +#. (itstool) path: row/entry +#: book.translate.xml:20889 +msgid "January 31, 2010" +msgstr "January 31, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:20890 +msgid "8.0-STABLE after addition of sigpause(3)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20895 +msgid "800503" +msgstr "800503" + +#. (itstool) path: row/entry +#: book.translate.xml:20896 +msgid "February 25, 2010" +msgstr "February 25, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:20897 +msgid "" +"8.0-STABLE after addition of SIOCGIFDESCR and SIOCSIFDESCR ioctls to network " +"interfaces. These ioctl can be used to manipulate interface description, as " +"inspired by OpenBSD." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20904 +msgid "800504" +msgstr "800504" + +#. (itstool) path: row/entry +#: book.translate.xml:20905 +msgid "March 1, 2010" +msgstr "March 1, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:20906 +msgid "" +"8.0-STABLE after MFC of importing x86emu, a software emulator for real mode " +"x86 CPU from OpenBSD." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20912 +msgid "800505" +msgstr "800505" + +#. (itstool) path: row/entry +#: book.translate.xml:20913 +msgid "May 18, 2010" +msgstr "May 18, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:20914 +msgid "8.0-STABLE after MFC of adding liblzma, xz, xzdec, and lzmainfo." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20919 +msgid "801000" +msgstr "801000" + +#. (itstool) path: row/entry +#: book.translate.xml:20920 book.translate.xml:20926 +msgid "June 14, 2010" +msgstr "June 14, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:20921 +msgid "8.1-RELEASE" +msgstr "8.1-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:20925 +msgid "801500" +msgstr "801500" + +#. (itstool) path: row/entry +#: book.translate.xml:20927 +msgid "8.1-STABLE after 8.1-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20931 +msgid "801501" +msgstr "801501" + +#. (itstool) path: row/entry +#: book.translate.xml:20932 +msgid "November 3, 2010" +msgstr "November 3, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:20933 +msgid "" +"8.1-STABLE after KBI change in struct sysentvec, and implementation of " +"PL_FLAG_SCE/SCX/EXEC/SI and pl_siginfo for ptrace(PT_LWPINFO) ." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20939 +msgid "802000" +msgstr "802000" + +#. (itstool) path: row/entry +#: book.translate.xml:20941 +msgid "8.2-RELEASE" +msgstr "8.2-RELEASE" + +#. (itstool) path: row/entry +#: book.translate.xml:20945 +msgid "802500" +msgstr "802500" + +#. (itstool) path: row/entry +#: book.translate.xml:20947 +msgid "8.2-STABLE after 8.2-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20951 +msgid "802501" +msgstr "802501" + +#. (itstool) path: row/entry +#: book.translate.xml:20952 +msgid "February 28, 2011" +msgstr "February 28, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:20953 +msgid "" +"8.2-STABLE after merging DTrace changes, including support for userland " +"tracing." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20958 +msgid "802502" +msgstr "802502" + +#. (itstool) path: row/entry +#: book.translate.xml:20959 +msgid "March 6, 2011" +msgstr "March 6, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:20960 +msgid "8.2-STABLE after merging log2 and log2f into libm." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20965 +msgid "802503" +msgstr "802503" + +#. (itstool) path: row/entry +#: book.translate.xml:20966 +msgid "May 1, 2011" +msgstr "May 1, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:20967 +msgid "" +"8.2-STABLE after upgrade of the gcc to the last GPLv2 version from the FSF " +"gcc-4_2-branch." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20972 +msgid "802504" +msgstr "802504" + +#. (itstool) path: row/entry +#: book.translate.xml:20973 book.translate.xml:20981 book.translate.xml:20988 +msgid "May 28, 2011" +msgstr "May 28, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:20974 +msgid "" +"8.2-STABLE after introduction of the KPI and supporting infrastructure for " +"modular congestion control." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20980 +msgid "802505" +msgstr "802505" + +#. (itstool) path: row/entry +#: book.translate.xml:20982 +msgid "8.2-STABLE after introduction of Hhook and Khelp KPIs." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20987 +msgid "802506" +msgstr "802506" + +#. (itstool) path: row/entry +#: book.translate.xml:20989 +msgid "8.2-STABLE after addition of OSD to struct tcpcb." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:20994 +msgid "802507" +msgstr "802507" + +#. (itstool) path: row/entry +#: book.translate.xml:20995 +msgid "June 6, 2011" +msgstr "June 6, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:20996 +msgid "8.2-STABLE after ZFS v28 import." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21000 +msgid "802508" +msgstr "802508" + +#. (itstool) path: row/entry +#: book.translate.xml:21001 +msgid "June 8, 2011" +msgstr "June 8, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21002 +msgid "" +"8.2-STABLE after removal of the schedtail event handler and addition of the " +"sv_schedtail method to struct sysvec." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21008 +msgid "802509" +msgstr "802509" + +#. (itstool) path: row/entry +#: book.translate.xml:21009 +msgid "July 14, 2011" +msgstr "July 14, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21010 +msgid "8.2-STABLE after merging the SSSE3 support into binutils." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21015 +msgid "802510" +msgstr "802510" + +#. (itstool) path: row/entry +#: book.translate.xml:21016 book.translate.xml:21434 +msgid "July 19, 2011" +msgstr "July 19, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21017 +msgid "" +"8.2-STABLE after addition of RFTSIGZMB flag for rfork(2)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21023 +msgid "802511" +msgstr "802511" + +#. (itstool) path: row/entry +#: book.translate.xml:21024 +msgid "September 9, 2011" +msgstr "September 9, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21025 +msgid "" +"8.2-STABLE after addition of automatic detection of USB mass storage devices " +"which do not support the no synchronize cache SCSI command." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21031 +msgid "802512" +msgstr "802512" + +#. (itstool) path: row/entry +#: book.translate.xml:21032 book.translate.xml:21464 +msgid "September 10, 2011" +msgstr "September 10, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21033 +msgid "8.2-STABLE after merging of re-factoring of auto-quirk." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21038 +msgid "802513" +msgstr "802513" + +#. (itstool) path: row/entry +#: book.translate.xml:21039 +msgid "October 25, 2011" +msgstr "October 25, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21040 +msgid "" +"8.2-STABLE after merging of the MAP_PREFAULT_READ flag to mmap(2)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21045 +msgid "802514" +msgstr "802514" + +#. (itstool) path: row/entry +#: book.translate.xml:21046 +msgid "November 16, 2011" +msgstr "November 16, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21047 +msgid "8.2-STABLE after merging of addition of posix_fallocate(2) syscall." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21052 +msgid "802515" +msgstr "802515" + +#. (itstool) path: row/entry +#: book.translate.xml:21053 book.translate.xml:21493 +msgid "January 6, 2012" +msgstr "January 6, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21054 +msgid "" +"8.2-STABLE after merging of addition of the posix_fadvise(2) system call." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21059 +msgid "802516" +msgstr "802516" + +#. (itstool) path: row/entry +#: book.translate.xml:21060 book.translate.xml:21500 book.translate.xml:21814 +msgid "January 16, 2012" +msgstr "January 16, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21061 +msgid "8.2-STABLE after merging gperf 3.0.3" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21065 +msgid "802517" +msgstr "802517" + +#. (itstool) path: row/entry +#: book.translate.xml:21066 book.translate.xml:21506 +msgid "February 15, 2012" +msgstr "February 15, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21067 +msgid "" +"8.2-STABLE after introduction of the new extensible sysctl(3) interface " +"NET_RT_IFLISTL to query address lists (rev 231769)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21074 +msgid "803000" +msgstr "803000" + +#. (itstool) path: row/entry +#: book.translate.xml:21075 book.translate.xml:21081 book.translate.xml:21515 +msgid "March 3, 2012" +msgstr "March 3, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21076 +msgid "8.3-RELEASE." +msgstr "8.3-RELEASE." + +#. (itstool) path: row/entry +#: book.translate.xml:21080 +msgid "803500" +msgstr "803500" + +#. (itstool) path: row/entry +#: book.translate.xml:21082 +msgid "8.3-STABLE after branching releng/8.3 (RELENG_8_3)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21087 +msgid "804000" +msgstr "804000" + +#. (itstool) path: row/entry +#: book.translate.xml:21088 book.translate.xml:21094 +msgid "March 28, 2013" +msgstr "March 28, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21089 +msgid "8.4-RELEASE." +msgstr "8.4-RELEASE." + +#. (itstool) path: row/entry +#: book.translate.xml:21093 +msgid "804500" +msgstr "804500" + +#. (itstool) path: row/entry +#: book.translate.xml:21095 +msgid "8.4-STABLE after 8.4-RELEASE." +msgstr "8.4-STABLE after 8.4-RELEASE." + +#. (itstool) path: row/entry +#: book.translate.xml:21099 +msgid "804504" +msgstr "804504" + +#. (itstool) path: row/entry +#: book.translate.xml:21100 book.translate.xml:21716 book.translate.xml:22433 +#: book.translate.xml:22830 book.translate.xml:22848 +msgid "September 9, 2014" +msgstr "September 9, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21101 +msgid "8.4-STABLE after FreeBSD-SA-14:18 (rev 271305)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21106 +msgid "804505" +msgstr "804505" + +#. (itstool) path: row/entry +#: book.translate.xml:21107 book.translate.xml:21723 book.translate.xml:22440 +#: book.translate.xml:22857 +msgid "September 16, 2014" +msgstr "September 16, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21108 +msgid "8.4-STABLE after FreeBSD-SA-14:19 (rev 271668)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21113 +msgid "804506" +msgstr "804506" + +#. (itstool) path: row/entry +#: book.translate.xml:21114 book.translate.xml:21730 book.translate.xml:22468 +#: book.translate.xml:22903 +msgid "October 21, 2014" +msgstr "October 21, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21115 +msgid "8.4-STABLE after FreeBSD-SA-14:21 (rev 273413)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21120 +msgid "804507" +msgstr "804507" + +#. (itstool) path: row/entry +#: book.translate.xml:21121 book.translate.xml:21738 book.translate.xml:22476 +#: book.translate.xml:22929 book.translate.xml:22936 book.translate.xml:22944 +msgid "November 4, 2014" +msgstr "November 4, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21122 +msgid "" +"8.4-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25 " +"(rev 274162)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21128 +msgid "804508" +msgstr "804508" + +#. (itstool) path: row/entry +#: book.translate.xml:21129 book.translate.xml:21754 book.translate.xml:22530 +msgid "February 25, 2015" +msgstr "February 25, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:21130 +msgid "" +"8-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-" +"EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind " +"(rev 279287)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21137 +msgid "900000" +msgstr "900000" + +#. (itstool) path: row/entry +#: book.translate.xml:21138 +msgid "August 22, 2009" +msgstr "August 22, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:21139 +msgid "9.0-CURRENT." +msgstr "9.0-CURRENT." + +#. (itstool) path: row/entry +#: book.translate.xml:21143 +msgid "900001" +msgstr "900001" + +#. (itstool) path: row/entry +#: book.translate.xml:21144 +msgid "September 8, 2009" +msgstr "September 8, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:21145 +msgid "" +"9.0-CURRENT after importing x86emu, a software emulator for real mode x86 " +"CPU from OpenBSD." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21150 +msgid "900002" +msgstr "900002" + +#. (itstool) path: row/entry +#: book.translate.xml:21151 +msgid "September 23, 2009" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21152 +msgid "" +"9.0-CURRENT after implementing the EVFILT_USER kevent filter functionality." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21157 +msgid "900003" +msgstr "900003" + +#. (itstool) path: row/entry +#: book.translate.xml:21158 +msgid "December 2, 2009" +msgstr "December 2, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:21159 +msgid "" +"9.0-CURRENT after addition of sigpause(3) and PIE " +"support in csu." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21165 +msgid "900004" +msgstr "900004" + +#. (itstool) path: row/entry +#: book.translate.xml:21166 +msgid "December 6, 2009" +msgstr "December 6, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:21167 +msgid "" +"9.0-CURRENT after addition of libulog and its libutempter compatibility " +"interface." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21172 +msgid "900005" +msgstr "900005" + +#. (itstool) path: row/entry +#: book.translate.xml:21173 +msgid "December 12, 2009" +msgstr "December 12, 2009" + +#. (itstool) path: row/entry +#: book.translate.xml:21174 +msgid "" +"9.0-CURRENT after addition of sleepq_sleepcnt(), which " +"can be used to query the number of waiters on a specific waiting queue." +msgstr "" +"9.0-CURRENT after addition of sleepq_sleepcnt(), which " +"can be used to query the number of waiters on a specific waiting queue." + +#. (itstool) path: row/entry +#: book.translate.xml:21181 +msgid "900006" +msgstr "900006" + +#. (itstool) path: row/entry +#: book.translate.xml:21182 +msgid "January 4, 2010" +msgstr "January 4, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21183 +msgid "" +"9.0-CURRENT after change of the scandir(3) and " +"alphasort(3) prototypes to conform to SUSv4." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21190 +msgid "900007" +msgstr "900007" + +#. (itstool) path: row/entry +#: book.translate.xml:21191 +msgid "January 13, 2010" +msgstr "January 13, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21192 +msgid "" +"9.0-CURRENT after the removal of utmp(5) and the addition of utmpx (see " +"getutxent(3)) for improved logging of user logins and " +"system events." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21199 +msgid "900008" +msgstr "900008" + +#. (itstool) path: row/entry +#: book.translate.xml:21200 +msgid "January 20, 2010" +msgstr "January 20, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21201 +msgid "" +"9.0-CURRENT after the import of BSDL bc/dc and the deprecation of GNU bc/dc." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21206 +msgid "900009" +msgstr "900009" + +#. (itstool) path: row/entry +#: book.translate.xml:21207 +msgid "January 26, 2010" +msgstr "January 26, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21208 +msgid "" +"9.0-CURRENT after the addition of SIOCGIFDESCR and SIOCSIFDESCR ioctls to " +"network interfaces. These ioctl can be used to manipulate interface " +"description, as inspired by OpenBSD." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21215 +msgid "900010" +msgstr "900010" + +#. (itstool) path: row/entry +#: book.translate.xml:21216 +msgid "March 22, 2010" +msgstr "March 22, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21217 +msgid "9.0-CURRENT after the import of zlib 1.2.4." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21222 +msgid "900011" +msgstr "900011" + +#. (itstool) path: row/entry +#: book.translate.xml:21223 +msgid "April 24, 2010" +msgstr "April 24, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21224 +msgid "9.0-CURRENT after adding soft-updates journalling." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21229 +msgid "900012" +msgstr "900012" + +#. (itstool) path: row/entry +#: book.translate.xml:21230 +msgid "May 10, 2010" +msgstr "May 10, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21231 +msgid "9.0-CURRENT after adding liblzma, xz, xzdec, and lzmainfo." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21236 +msgid "900013" +msgstr "900013" + +#. (itstool) path: row/entry +#: book.translate.xml:21237 +msgid "May 24, 2010" +msgstr "May 24, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21238 +msgid "9.0-CURRENT after bringing in USB fixes for linux(4)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21243 +msgid "900014" +msgstr "900014" + +#. (itstool) path: row/entry +#: book.translate.xml:21244 +msgid "June 10, 2010" +msgstr "June 10, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21245 +msgid "9.0-CURRENT after adding Clang." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21249 +msgid "900015" +msgstr "900015" + +#. (itstool) path: row/entry +#: book.translate.xml:21250 +msgid "July 22, 2010" +msgstr "July 22, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21251 +msgid "9.0-CURRENT after the import of BSD grep." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21255 +msgid "900016" +msgstr "900016" + +#. (itstool) path: row/entry +#: book.translate.xml:21256 +msgid "July 28, 2010" +msgstr "July 28, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21257 +msgid "9.0-CURRENT after adding mti_zone to struct malloc_type_internal." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21262 +msgid "900017" +msgstr "900017" + +#. (itstool) path: row/entry +#: book.translate.xml:21263 +msgid "August 23, 2010" +msgstr "August 23, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21264 +msgid "" +"9.0-CURRENT after changing back default grep to GNU grep and adding " +"WITH_BSD_GREP knob." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21269 +msgid "900018" +msgstr "900018" + +#. (itstool) path: row/entry +#: book.translate.xml:21270 +msgid "August 24, 2010" +msgstr "August 24, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21271 +msgid "" +"9.0-CURRENT after the pthread_kill(3) -generated signal " +"is identified as SI_LWP in si_code. Previously, si_code was SI_USER." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21278 +msgid "900019" +msgstr "900019" + +#. (itstool) path: row/entry +#: book.translate.xml:21279 +msgid "August 28, 2010" +msgstr "August 28, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21280 +msgid "" +"9.0-CURRENT after addition of the MAP_PREFAULT_READ flag to " +"mmap(2)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21286 +msgid "900020" +msgstr "900020" + +#. (itstool) path: row/entry +#: book.translate.xml:21287 +msgid "September 9, 2010" +msgstr "September 9, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21288 +msgid "" +"9.0-CURRENT after adding drain functionality to sbufs, which also changed " +"the layout of struct sbuf." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21294 +msgid "900021" +msgstr "900021" + +#. (itstool) path: row/entry +#: book.translate.xml:21295 +msgid "September 13, 2010" +msgstr "September 13, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21296 +msgid "9.0-CURRENT after DTrace has grown support for userland tracing." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21301 +msgid "900022" +msgstr "900022" + +#. (itstool) path: row/entry +#: book.translate.xml:21302 +msgid "October 2, 2010" +msgstr "October 2, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21303 +msgid "" +"9.0-CURRENT after addition of the BSDL man utilities and retirement of GNU/" +"GPL man utilities." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21309 +msgid "900023" +msgstr "900023" + +#. (itstool) path: row/entry +#: book.translate.xml:21310 +msgid "October 11, 2010" +msgstr "October 11, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21311 +msgid "9.0-CURRENT after updating xz to git 20101010 snapshot." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21316 +msgid "900024" +msgstr "900024" + +#. (itstool) path: row/entry +#: book.translate.xml:21317 +msgid "November 11, 2010" +msgstr "November 11, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21318 +msgid "9.0-CURRENT after libgcc.a was replaced by libcompiler_rt.a." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21323 +msgid "900025" +msgstr "900025" + +#. (itstool) path: row/entry +#: book.translate.xml:21324 +msgid "November 12, 2010" +msgstr "November 12, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21325 +msgid "" +"9.0-CURRENT after the introduction of the modularised congestion control." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21330 +msgid "900026" +msgstr "900026" + +#. (itstool) path: row/entry +#: book.translate.xml:21331 +msgid "November 30, 2010" +msgstr "November 30, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21332 +msgid "" +"9.0-CURRENT after the introduction of Serial Management Protocol (SMP) " +"passthrough and the XPT_SMP_IO and XPT_GDEV_ADVINFO CAM CCBs." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21338 +msgid "900027" +msgstr "900027" + +#. (itstool) path: row/entry +#: book.translate.xml:21339 +msgid "December 5, 2010" +msgstr "December 5, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21340 +msgid "9.0-CURRENT after the addition of log2 to libm." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21345 +msgid "900028" +msgstr "900028" + +#. (itstool) path: row/entry +#: book.translate.xml:21346 +msgid "December 21, 2010" +msgstr "December 21, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21347 +msgid "" +"9.0-CURRENT after the addition of the Hhook (Helper Hook), Khelp (Kernel " +"Helpers) and Object Specific Data (OSD) KPIs." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21353 +msgid "900029" +msgstr "900029" + +#. (itstool) path: row/entry +#: book.translate.xml:21354 +msgid "December 28, 2010" +msgstr "December 28, 2010" + +#. (itstool) path: row/entry +#: book.translate.xml:21355 +msgid "" +"9.0-CURRENT after the modification of the TCP stack to allow Khelp modules " +"to interact with it via helper hook points and store per-connection data in " +"the TCP control block." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21362 +msgid "900030" +msgstr "900030" + +#. (itstool) path: row/entry +#: book.translate.xml:21363 +msgid "January 12, 2011" +msgstr "January 12, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21364 +msgid "9.0-CURRENT after the update of libdialog to version 20100428." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21369 +msgid "900031" +msgstr "900031" + +#. (itstool) path: row/entry +#: book.translate.xml:21370 +msgid "February 7, 2011" +msgstr "February 7, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21371 +msgid "" +"9.0-CURRENT after the addition of pthread_getthreadid_np(3)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21376 +msgid "900032" +msgstr "900032" + +#. (itstool) path: row/entry +#: book.translate.xml:21377 +msgid "February 8, 2011" +msgstr "February 8, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21378 +msgid "9.0-CURRENT after the removal of the uio_yield prototype and symbol." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21383 +msgid "900033" +msgstr "900033" + +#. (itstool) path: row/entry +#: book.translate.xml:21384 +msgid "February 18, 2011" +msgstr "February 18, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21385 +msgid "9.0-CURRENT after the update of binutils to version 2.17.50." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21390 +msgid "900034" +msgstr "900034" + +#. (itstool) path: row/entry +#: book.translate.xml:21391 +msgid "March 8, 2011" +msgstr "March 8, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21392 +msgid "9.0-CURRENT after the struct sysvec (sv_schedtail) changes." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21397 +msgid "900035" +msgstr "900035" + +#. (itstool) path: row/entry +#: book.translate.xml:21398 +msgid "March 29, 2011" +msgstr "March 29, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21399 +msgid "" +"9.0-CURRENT after the update of base gcc and libstdc++ to the last GPLv2 " +"licensed revision." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21404 +msgid "900036" +msgstr "900036" + +#. (itstool) path: row/entry +#: book.translate.xml:21405 +msgid "April 18, 2011" +msgstr "April 18, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21406 +msgid "" +"9.0-CURRENT after the removal of libobjc and Objective-C support from the " +"base system." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21411 +msgid "900037" +msgstr "900037" + +#. (itstool) path: row/entry +#: book.translate.xml:21412 +msgid "May 13, 2011" +msgstr "May 13, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21413 +msgid "" +"9.0-CURRENT after importing the libprocstat(3) library and fuser(1) utility " +"to the base system." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21419 +msgid "900038" +msgstr "900038" + +#. (itstool) path: row/entry +#: book.translate.xml:21420 +msgid "May 22, 2011" +msgstr "May 22, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21421 +msgid "9.0-CURRENT after adding a lock flag argument to VFS_FHTOVP(9)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21426 +msgid "900039" +msgstr "900039" + +#. (itstool) path: row/entry +#: book.translate.xml:21427 +msgid "June 28, 2011" +msgstr "June 28, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21428 +msgid "9.0-CURRENT after importing pf from OpenBSD 4.5." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21433 +msgid "900040" +msgstr "900040" + +#. (itstool) path: row/entry +#: book.translate.xml:21435 +msgid "" +"Increase default MAXCPU for FreeBSD to 64 on amd64 and ia64 and to 128 for " +"XLP (mips)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21440 +msgid "900041" +msgstr "900041" + +#. (itstool) path: row/entry +#: book.translate.xml:21441 +msgid "August 13, 2011" +msgstr "August 13, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21442 +msgid "" +"9.0-CURRENT after the implementation of Capsicum capabilities; fget(9) gains " +"a rights argument." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21447 +msgid "900042" +msgstr "900042" + +#. (itstool) path: row/entry +#: book.translate.xml:21448 +msgid "August 28, 2011" +msgstr "August 28, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21449 +msgid "" +"Bump shared libraries' version numbers for libraries whose ABI has changed " +"in preparation for 9.0." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21455 +msgid "900043" +msgstr "900043" + +#. (itstool) path: row/entry +#: book.translate.xml:21456 +msgid "September 2, 2011" +msgstr "September 2, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21457 +msgid "" +"Add automatic detection of USB mass storage devices which do not support the " +"no synchronize cache SCSI command." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21463 +msgid "900044" +msgstr "900044" + +#. (itstool) path: row/entry +#: book.translate.xml:21465 +msgid "Re-factor auto-quirk. 9.0-RELEASE." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21479 +msgid "900045" +msgstr "900045" + +#. (itstool) path: row/entry +#: book.translate.xml:21480 book.translate.xml:21487 +msgid "January 2, 2012" +msgstr "January 2, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21481 +msgid "9-CURRENT after MFC of true/false from 1000002." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21486 +msgid "900500" +msgstr "900500" + +#. (itstool) path: row/entry +#: book.translate.xml:21488 +msgid "9.0-STABLE." +msgstr "9.0-STABLE." + +#. (itstool) path: row/entry +#: book.translate.xml:21492 +msgid "900501" +msgstr "900501" + +#. (itstool) path: row/entry +#: book.translate.xml:21494 +msgid "" +"9.0-STABLE after merging of addition of the posix_fadvise(2) system call." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21499 +msgid "900502" +msgstr "900502" + +#. (itstool) path: row/entry +#: book.translate.xml:21501 +msgid "9.0-STABLE after merging gperf 3.0.3" +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21505 +msgid "900503" +msgstr "900503" + +#. (itstool) path: row/entry +#: book.translate.xml:21507 +msgid "" +"9.0-STABLE after introduction of the new extensible sysctl(3) interface " +"NET_RT_IFLISTL to query address lists (rev 231768)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21514 +msgid "900504" +msgstr "900504" + +#. (itstool) path: row/entry +#: book.translate.xml:21516 +msgid "" +"9.0-STABLE after changes related to mounting of filesystem inside a jail " +"(rev 232728)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21522 +msgid "900505" +msgstr "900505" + +#. (itstool) path: row/entry +#: book.translate.xml:21523 +msgid "March 13, 2012" +msgstr "March 13, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21524 +msgid "" +"9.0-STABLE after introduction of new tcp(4) socket options: TCP_KEEPINIT, " +"TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT (rev 232945)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21531 +msgid "900506" +msgstr "900506" + +#. (itstool) path: row/entry +#: book.translate.xml:21532 book.translate.xml:21877 +msgid "May 22, 2012" +msgstr "May 22, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21533 +msgid "" +"9.0-STABLE after introduction of the quick_exit " +"function and related changes required for C++11 (rev 235786)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21540 +msgid "901000" +msgstr "901000" + +#. (itstool) path: row/entry +#: book.translate.xml:21541 +msgid "August 5, 2012" +msgstr "August 5, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21542 +msgid "9.1-RELEASE." +msgstr "9.1-RELEASE." + +#. (itstool) path: row/entry +#: book.translate.xml:21546 +msgid "901500" +msgstr "901500" + +#. (itstool) path: row/entry +#: book.translate.xml:21547 +msgid "August 6, 2012" +msgstr "August 6, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21548 +msgid "9.1-STABLE after branching releng/9.1 (RELENG_9_1)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21553 +msgid "901501" +msgstr "901501" + +#. (itstool) path: row/entry +#: book.translate.xml:21554 +msgid "November 11, 2012" +msgstr "November 11, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21555 +msgid "" +"9.1-STABLE after LIST_PREV() added to queue.h (rev 242893) and KBI change in USB serial devices (rev 240659)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21562 +msgid "901502" +msgstr "901502" + +#. (itstool) path: row/entry +#: book.translate.xml:21563 +msgid "November 28, 2012" +msgstr "November 28, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21564 +msgid "" +"9.1-STABLE after USB serial jitter buffer requires rebuild of USB serial " +"device modules." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21569 +msgid "901503" +msgstr "901503" + +#. (itstool) path: row/entry +#: book.translate.xml:21570 +msgid "February 21, 2013" +msgstr "February 21, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21571 +msgid "" +"9.1-STABLE after USB moved to the driver structure requiring a rebuild of " +"all USB modules. Also indicates the presence of nmtree." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21577 +msgid "901504" +msgstr "901504" + +#. (itstool) path: row/entry +#: book.translate.xml:21578 +msgid "March 15, 2013" +msgstr "March 15, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21579 +msgid "" +"9.1-STABLE after install gained -l, -M, -N and related flags and cat gained " +"the -l option." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21584 +msgid "901505" +msgstr "901505" + +#. (itstool) path: row/entry +#: book.translate.xml:21585 +msgid "June 13, 2013" +msgstr "June 13, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21586 +msgid "" +"9.1-STABLE after fixes in ctfmerge bootstrapping (rev 249243)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21591 +msgid "902001" +msgstr "902001" + +#. (itstool) path: row/entry +#: book.translate.xml:21592 +msgid "August 3, 2013" +msgstr "August 3, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21593 +msgid "" +"releng/9.2 branched from stable/9 (rev " +"253912)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21599 +msgid "902501" +msgstr "902501" + +#. (itstool) path: row/entry +#: book.translate.xml:21600 +msgid "August 2, 2013" +msgstr "August 2, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21601 +msgid "" +"9.2-STABLE after creation of releng/9.2 branch (rev " +"253913)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21607 +msgid "902502" +msgstr "902502" + +#. (itstool) path: row/entry +#: book.translate.xml:21608 +msgid "August 26, 2013" +msgstr "August 26, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21609 +msgid "" +"9.2-STABLE after inclusion of the PIM_RESCAN CAM path " +"inquiry flag (rev 254938)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21615 +msgid "902503" +msgstr "902503" + +#. (itstool) path: row/entry +#: book.translate.xml:21616 +msgid "August 27, 2013" +msgstr "August 27, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21617 +msgid "" +"9.2-STABLE after inclusion of the SI_UNMAPPED cdev flag " +"(rev 254979)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21623 +msgid "902504" +msgstr "902504" + +#. (itstool) path: row/entry +#: book.translate.xml:21624 book.translate.xml:22298 +msgid "October 22, 2013" +msgstr "October 22, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21625 +msgid "" +"9.2-STABLE after inclusion of support for first boot " +"rc8 scripts (rev 256917)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21631 +msgid "902505" +msgstr "902505" + +#. (itstool) path: row/entry +#: book.translate.xml:21632 +msgid "December 12, 2013" +msgstr "December 12, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21633 +msgid "" +"9.2-STABLE after Heimdal encoding fix (rev 259448)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21638 +msgid "902506" +msgstr "902506" + +#. (itstool) path: row/entry +#: book.translate.xml:21639 book.translate.xml:22335 +msgid "December 31, 2013" +msgstr "December 31, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21640 +msgid "9-STABLE after MAP_STACK fixes (rev 260082)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21645 +msgid "902507" +msgstr "902507" + +#. (itstool) path: row/entry +#: book.translate.xml:21646 book.translate.xml:22342 +msgid "March 5, 2014" +msgstr "March 5, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21647 +msgid "" +"9-STABLE after upgrade of libc++ to 3.4 release (rev 262801)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21652 +msgid "902508" +msgstr "902508" + +#. (itstool) path: row/entry +#: book.translate.xml:21653 book.translate.xml:22676 book.translate.xml:22683 +msgid "March 14, 2014" +msgstr "March 14, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21654 +msgid "" +"9-STABLE after merge of the Radeon KMS driver (rev 263170)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21659 +msgid "902509" +msgstr "902509" + +#. (itstool) path: row/entry +#: book.translate.xml:21660 book.translate.xml:22356 +msgid "March 21, 2014" +msgstr "March 21, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21661 +msgid "" +"9-STABLE after upgrade of llvm/clang to 3.4 release (rev 263509)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21666 +msgid "902510" +msgstr "902510" + +#. (itstool) path: row/entry +#: book.translate.xml:21667 book.translate.xml:21674 +msgid "March 27, 2014" +msgstr "March 27, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21668 +msgid "" +"9-STABLE after merge of the vt(4) driver (rev 263818)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21673 +msgid "902511" +msgstr "902511" + +#. (itstool) path: row/entry +#: book.translate.xml:21675 +msgid "" +"9-STABLE after FreeBSD-SA-14:06.openssl (rev 264289)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21680 +msgid "902512" +msgstr "902512" + +#. (itstool) path: row/entry +#: book.translate.xml:21681 book.translate.xml:22378 +msgid "April 30, 2014" +msgstr "April 30, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21682 +msgid "" +"9-STABLE after FreeBSD-SA-14:08.tcp (rev 265123)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21687 +msgid "903000" +msgstr "903000" + +#. (itstool) path: row/entry +#: book.translate.xml:21688 book.translate.xml:21695 +msgid "June 20, 2014" +msgstr "June 20, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21689 +msgid "" +"9-RC1 releng/9.3 branch (rev 267656)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21694 +msgid "903500" +msgstr "903500" + +#. (itstool) path: row/entry +#: book.translate.xml:21696 +msgid "" +"9.3-STABLE releng/9.3 branch (rev 267657)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21701 +msgid "903501" +msgstr "903501" + +#. (itstool) path: row/entry +#: book.translate.xml:21702 book.translate.xml:22404 book.translate.xml:22800 +msgid "July 8, 2014" +msgstr "July 8, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21703 +msgid "" +"9-STABLE after FreeBSD-SA-14:17.kmem (rev 268433)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21708 +msgid "903502" +msgstr "903502" + +#. (itstool) path: row/entry +#: book.translate.xml:21709 +msgid "August 19, 2014" +msgstr "August 19, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21710 +msgid "" +"9-STABLE after SOCK_DGRAM bug fix (rev 269789)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21715 +msgid "903503" +msgstr "903503" + +#. (itstool) path: row/entry +#: book.translate.xml:21717 +msgid "9-STABLE after FreeBSD-SA-14:18 (rev 269687)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21722 +msgid "903504" +msgstr "903504" + +#. (itstool) path: row/entry +#: book.translate.xml:21724 +msgid "9-STABLE after FreeBSD-SA-14:19 (rev 271668)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21729 +msgid "903505" +msgstr "903505" + +#. (itstool) path: row/entry +#: book.translate.xml:21731 +msgid "" +"9-STABLE after FreeBSD-SA-14:20, FreeBSD-SA-14:21, and FreeBSD-SA-14:22 (rev " +"273412)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21737 +msgid "903506" +msgstr "903506" + +#. (itstool) path: row/entry +#: book.translate.xml:21739 +msgid "" +"9-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25 (rev " +"274162)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21745 +msgid "903507" +msgstr "903507" + +#. (itstool) path: row/entry +#: book.translate.xml:21746 book.translate.xml:22492 +msgid "December 13, 2014" +msgstr "December 13, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:21747 +msgid "" +"9-STABLE after merging an important fix to the LLVM vectorizer, which could " +"lead to buffer overruns in some cases (rev 275742)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21753 +msgid "903508" +msgstr "903508" + +#. (itstool) path: row/entry +#: book.translate.xml:21755 +msgid "" +"9-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-" +"EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind " +"(rev 279287)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21762 +msgid "903509" +msgstr "903509" + +#. (itstool) path: row/entry +#: book.translate.xml:21763 +msgid "February 29, 2016" +msgstr "February 29, 2016" + +#. (itstool) path: row/entry +#: book.translate.xml:21764 +msgid "" +"9-STABLE after bumping the default value of compat.linux.osrelease to 2.6.18 to support the linux-c6-* ports out of " +"the box (rev 296219)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21771 +msgid "1000000" +msgstr "1000000" + +#. (itstool) path: row/entry +#: book.translate.xml:21772 +msgid "September 26, 2011" +msgstr "September 26, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21773 +msgid "10.0-CURRENT." +msgstr "10.0-CURRENT." + +#. (itstool) path: row/entry +#: book.translate.xml:21777 +msgid "1000001" +msgstr "1000001" + +#. (itstool) path: row/entry +#: book.translate.xml:21778 +msgid "November 4, 2011" +msgstr "November 4, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21779 +msgid "10-CURRENT after addition of the posix_fadvise(2) system call." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21784 +msgid "1000002" +msgstr "1000002" + +#. (itstool) path: row/entry +#: book.translate.xml:21785 +msgid "December 12, 2011" +msgstr "December 12, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21786 +msgid "" +"10-CURRENT after defining boolean true/false in sys/types.h, sizeof(bool) " +"may have changed (rev 228444). 10-CURRENT after " +"xlocale.h was introduced (rev 227753)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21794 +msgid "1000003" +msgstr "1000003" + +#. (itstool) path: row/entry +#: book.translate.xml:21795 +msgid "December 16, 2011" +msgstr "December 16, 2011" + +#. (itstool) path: row/entry +#: book.translate.xml:21796 +msgid "" +"10-CURRENT after major changes to carp(4), changing size of " +"struct in_aliasreq, struct in6_aliasreq (rev 228571) " +"and straitening arguments check of SIOCAIFADDR (rev 228574)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21805 +msgid "1000004" +msgstr "1000004" + +#. (itstool) path: row/entry +#: book.translate.xml:21806 +msgid "January 1, 2012" +msgstr "January 1, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21807 +msgid "" +"10-CURRENT after the removal of skpc(9) and the addition of memcchr(9) (rev " +"229200)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21813 +msgid "1000005" +msgstr "1000005" + +#. (itstool) path: row/entry +#: book.translate.xml:21815 +msgid "" +"10-CURRENT after the removal of support for SIOCSIFADDR, SIOCSIFNETMASK, " +"SIOCSIFBRDADDR, SIOCSIFDSTADDR ioctls (rev 230207)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21822 +msgid "1000006" +msgstr "1000006" + +#. (itstool) path: row/entry +#: book.translate.xml:21823 +msgid "January 26, 2012" +msgstr "January 26, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21824 +msgid "" +"10-CURRENT after introduction of read capacity data asynchronous " +"notification in the cam(4) layer (rev 230590)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21830 +msgid "1000007" +msgstr "1000007" + +#. (itstool) path: row/entry +#: book.translate.xml:21831 +msgid "February 5, 2012" +msgstr "February 5, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21832 +msgid "" +"10-CURRENT after introduction of new tcp(4) socket options: TCP_KEEPINIT, " +"TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT (rev 231025)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21839 +msgid "1000008" +msgstr "1000008" + +#. (itstool) path: row/entry +#: book.translate.xml:21840 +msgid "February 11, 2012" +msgstr "February 11, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21841 +msgid "" +"10-CURRENT after introduction of the new extensible sysctl(3) interface " +"NET_RT_IFLISTL to query address lists (rev 231505)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21848 +msgid "1000009" +msgstr "1000009" + +#. (itstool) path: row/entry +#: book.translate.xml:21849 +msgid "February 25, 2012" +msgstr "February 25, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21850 +msgid "" +"10-CURRENT after import of libarchive 3.0.3 (rev 232153)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21855 +msgid "1000010" +msgstr "1000010" + +#. (itstool) path: row/entry +#: book.translate.xml:21856 +msgid "March 31, 2012" +msgstr "March 31, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21857 +msgid "10-CURRENT after xlocale cleanup (rev 233757)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21862 +msgid "1000011" +msgstr "1000011" + +#. (itstool) path: row/entry +#: book.translate.xml:21863 +msgid "April 16, 2012" +msgstr "April 16, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21864 +msgid "" +"10-CURRENT import of LLVM/Clang 3.1 trunk r154661 (rev 234353)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21869 +msgid "1000012" +msgstr "1000012" + +#. (itstool) path: row/entry +#: book.translate.xml:21870 +msgid "May 2, 2012" +msgstr "May 2, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21871 +msgid "10-CURRENT jemalloc import (rev 234924)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21876 +msgid "1000013" +msgstr "1000013" + +#. (itstool) path: row/entry +#: book.translate.xml:21878 +msgid "10-CURRENT after byacc import (rev 235788)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21883 +msgid "1000014" +msgstr "1000014" + +#. (itstool) path: row/entry +#: book.translate.xml:21884 +msgid "June 27, 2012" +msgstr "June 27, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21885 +msgid "" +"10-CURRENT after BSD sort becoming the default sort (rev 237629)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21890 +msgid "1000015" +msgstr "1000015" + +#. (itstool) path: row/entry +#: book.translate.xml:21891 +msgid "July 12, 2012" +msgstr "July 12, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21892 +msgid "" +"10-CURRENT after import of OpenSSL 1.0.1c (rev 238405)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21898 +msgid "July 13, 2012" +msgstr "July 13, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21899 +msgid "" +"10-CURRENT after the fix for LLVM/Clang 3.1 regression (rev " +"238429)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21904 +msgid "1000016" +msgstr "1000016" + +#. (itstool) path: row/entry +#: book.translate.xml:21905 book.translate.xml:21912 +msgid "August 8, 2012" +msgstr "August 8, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21906 +msgid "" +"10-CURRENT after KBI change in ucom4 (rev " +"239179)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21911 +msgid "1000017" +msgstr "1000017" + +#. (itstool) path: row/entry +#: book.translate.xml:21913 +msgid "" +"10-CURRENT after adding streams feature to the USB stack (rev " +"239214)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21918 +msgid "1000018" +msgstr "1000018" + +#. (itstool) path: row/entry +#: book.translate.xml:21919 +msgid "September 8, 2012" +msgstr "September 8, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21920 +msgid "" +"10-CURRENT after major rewrite of pf4 (rev " +"240233)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21925 +msgid "1000019" +msgstr "1000019" + +#. (itstool) path: row/entry +#: book.translate.xml:21926 +msgid "October 6, 2012" +msgstr "October 6, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21927 +msgid "" +"10-CURRENT after pfil9 KBI/KPI changed to " +"supply packets in net byte order to AF_INET filter hooks (rev " +"241245)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21933 +msgid "1000020" +msgstr "1000020" + +#. (itstool) path: row/entry +#: book.translate.xml:21934 +msgid "October 16, 2012" +msgstr "October 16, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21935 +msgid "" +"10-CURRENT after the network interface cloning KPI changed and struct " +"if_clone becoming opaque (rev 241610)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21941 +msgid "1000021" +msgstr "1000021" + +#. (itstool) path: row/entry +#: book.translate.xml:21942 book.translate.xml:21952 +msgid "October 22, 2012" +msgstr "October 22, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21943 +msgid "" +"10-CURRENT after removal of support for non-MPSAFE filesystems and addition " +"of support for FUSEFS (rev 241519, 241897)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21951 +msgid "1000022" +msgstr "1000022" + +#. (itstool) path: row/entry +#: book.translate.xml:21953 +msgid "" +"10-CURRENT after the entire IPv4 stack switched to network byte order for IP " +"packet header storage (rev 241913)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21959 +msgid "1000023" +msgstr "1000023" + +#. (itstool) path: row/entry +#: book.translate.xml:21960 book.translate.xml:21970 +msgid "November 5, 2012" +msgstr "November 5, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21961 +msgid "" +"10-CURRENT after jitter buffer in the common USB serial driver code, to " +"temporarily store characters if the TTY buffer is full. Add flow stop and " +"start signals when this happens (rev 242619)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21969 +msgid "1000024" +msgstr "1000024" + +#. (itstool) path: row/entry +#: book.translate.xml:21971 +msgid "" +"10-CURRENT after clang was made the default compiler on i386 and amd64 (rev " +"242624)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21977 +msgid "1000025" +msgstr "1000025" + +#. (itstool) path: row/entry +#: book.translate.xml:21978 +msgid "November 17, 2012" +msgstr "November 17, 2012" + +#. (itstool) path: row/entry +#: book.translate.xml:21979 +msgid "" +"10-CURRENT after the sin6_scope_id member variable in struct sockaddr_in6 " +"was changed to being filled by the kernel before passing the structure to " +"the userland via sysctl or routing socket. This means the KAME-specific " +"embedded scope id in sin6_addr.s6_addr[2] is always cleared in userland " +"application (rev 243443)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21989 +msgid "1000026" +msgstr "1000026" + +#. (itstool) path: row/entry +#: book.translate.xml:21990 +msgid "January 11, 2013" +msgstr "January 11, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21991 +msgid "" +"10-CURRENT after install gained the -N flag (rev 245313). May also be used to indicate the presence of nmtree." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:21997 +msgid "1000027" +msgstr "1000027" + +#. (itstool) path: row/entry +#: book.translate.xml:21998 +msgid "January 29, 2013" +msgstr "January 29, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:21999 +msgid "" +"10-CURRENT after cat gained the -l flag (rev 246083)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22004 +msgid "1000028" +msgstr "1000028" + +#. (itstool) path: row/entry +#: book.translate.xml:22005 +msgid "February 13, 2013" +msgstr "February 13, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22006 +msgid "" +"10-CURRENT after USB moved to the driver structure requiring a rebuild of " +"all USB modules (rev 246759)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22012 +msgid "1000029" +msgstr "1000029" + +#. (itstool) path: row/entry +#: book.translate.xml:22013 +msgid "March 4, 2013" +msgstr "March 4, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22014 +msgid "" +"10-CURRENT after the introduction of tickless callout facility which also " +"changed the layout of struct callout (rev 247777)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22020 +msgid "1000030" +msgstr "1000030" + +#. (itstool) path: row/entry +#: book.translate.xml:22021 +msgid "March 12, 2013" +msgstr "March 12, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22022 +msgid "" +"10-CURRENT after KPI breakage introduced in the VM subsystem to support read/" +"write locking (rev 248084)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22028 +msgid "1000031" +msgstr "1000031" + +#. (itstool) path: row/entry +#: book.translate.xml:22029 +msgid "April 26, 2013" +msgstr "April 26, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22030 +msgid "" +"10-CURRENT after the dst parameter of the ifnet if_output method was changed to take const qualifier (rev 249925)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22037 +msgid "1000032" +msgstr "1000032" + +#. (itstool) path: row/entry +#: book.translate.xml:22038 +msgid "May 1, 2013" +msgstr "May 1, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22039 +msgid "" +"10-CURRENT after the introduction of the accept4 (rev " +"250154) and pipe2 (rev " +"250159) system calls." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22047 +msgid "1000033" +msgstr "1000033" + +#. (itstool) path: row/entry +#: book.translate.xml:22048 +msgid "May 21, 2013" +msgstr "May 21, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22049 +msgid "" +"10-CURRENT after flex 2.5.37 import (rev 250881)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22054 +msgid "1000034" +msgstr "1000034" + +#. (itstool) path: row/entry +#: book.translate.xml:22055 +msgid "June 3, 2013" +msgstr "June 3, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22056 +msgid "" +"10-CURRENT after the addition of these functions to libm: cacos, cacosf, cacosh, " +"cacoshf, casin, casinf, casinh, casinhf, " +"catan, catanf, catanh, catanhf, logl, " +"log2l, log10l, log1pl, expm1l (rev 251294)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22078 +msgid "1000035" +msgstr "1000035" + +#. (itstool) path: row/entry +#: book.translate.xml:22079 +msgid "June 8, 2013" +msgstr "June 8, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22080 +msgid "" +"10-CURRENT after the introduction of the aio_mlock " +"system call (rev 251526)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22086 +msgid "1000036" +msgstr "1000036" + +#. (itstool) path: row/entry +#: book.translate.xml:22087 book.translate.xml:22096 +msgid "July 9, 2013" +msgstr "July 9, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22088 +msgid "" +"10-CURRENT after the addition of a new function to the kernel GSSAPI " +"module's function call interface (rev 253049)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22095 +msgid "1000037" +msgstr "1000037" + +#. (itstool) path: row/entry +#: book.translate.xml:22097 +msgid "" +"10-CURRENT after the migration of statistics structures to PCPU counters. " +"Changed structures include: ahstat, arpstat, espstat, icmp6_ifstat, " +"icmp6stat, in6_ifstat, " +"ip6stat, ipcompstat, " +"ipipstat, ipsecstat, " +"mrt6stat, mrtstat, pfkeystat, pim6stat, pimstat, " +"rip6stat, udpstat (rev " +"253081)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22120 +msgid "1000038" +msgstr "1000038" + +#. (itstool) path: row/entry +#: book.translate.xml:22121 +msgid "July 16, 2013" +msgstr "July 16, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22122 +msgid "" +"10-CURRENT after making ARM EABI the default ABI on arm, " +"armeb, armv6, and armv6eb architectures (rev 253396)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22129 +msgid "1000039" +msgstr "1000039" + +#. (itstool) path: row/entry +#: book.translate.xml:22130 +msgid "July 22, 2013" +msgstr "July 22, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22131 +msgid "" +"10-CURRENT after CAM and " +"mps4 driver scanning changes (rev 253549)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22137 +msgid "1000040" +msgstr "1000040" + +#. (itstool) path: row/entry +#: book.translate.xml:22138 +msgid "July 24, 2013" +msgstr "July 24, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22139 +msgid "" +"10-CURRENT after addition of libusb pkgconf files (rev 253638)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22144 +msgid "1000041" +msgstr "1000041" + +#. (itstool) path: row/entry +#: book.translate.xml:22145 +msgid "August 5, 2013" +msgstr "August 5, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22146 +msgid "" +"10-CURRENT after change from time_second to " +"time_uptime in PF_INET6 (rev " +"253970)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22154 +msgid "1000042" +msgstr "1000042" + +#. (itstool) path: row/entry +#: book.translate.xml:22155 +msgid "August 9, 2013" +msgstr "August 9, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22156 +msgid "" +"10-CURRENT after VM subsystem change to unify soft and hard busy mechanisms " +"(rev 254138)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22162 +msgid "1000043" +msgstr "1000043" + +#. (itstool) path: row/entry +#: book.translate.xml:22163 +msgid "August 13, 2013" +msgstr "August 13, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22164 +msgid "" +"10-CURRENT after WITH_ICONV is enabled by default. A new " +"src.conf5 option, WITH_LIBICONV_COMPAT " +"(disabled by default) adds libiconv_open to provide " +"compatibility with the libiconv port (rev " +"254273)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22174 +msgid "1000044" +msgstr "1000044" + +#. (itstool) path: row/entry +#: book.translate.xml:22175 book.translate.xml:22185 +msgid "August 15, 2013" +msgstr "August 15, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22176 +msgid "" +"10-CURRENT after libc.so conversion to an " +"ld1 script (rev 251668, 254358)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22184 +msgid "1000045" +msgstr "1000045" + +#. (itstool) path: row/entry +#: book.translate.xml:22186 +msgid "" +"10-CURRENT after devfs programming interface change by replacing the cdevsw " +"flag D_UNMAPPED_IO with the struct cdev flag " +"SI_UNMAPPED (rev 254389)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22194 +msgid "1000046" +msgstr "1000046" + +#. (itstool) path: row/entry +#: book.translate.xml:22195 +msgid "August 19, 2013" +msgstr "August 19, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22196 +msgid "" +"10-CURRENT after addition of M_PROTO[9-12] and removal of " +"M_FRAG|M_FIRSTFRAG|M_LASTFRAG mbuf flags (rev " +"254524, 254526)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22204 +msgid "1000047" +msgstr "1000047" + +#. (itstool) path: row/entry +#: book.translate.xml:22205 +msgid "August 21, 2013" +msgstr "August 21, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22206 +msgid "" +"10-CURRENT after stat2 update to allow " +"storing some Windows/DOS and CIFS file attributes as " +"stat2 flags (rev 254627)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22213 +msgid "1000048" +msgstr "1000048" + +#. (itstool) path: row/entry +#: book.translate.xml:22214 +msgid "August 22, 2013" +msgstr "August 22, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22215 +msgid "" +"10-CURRENT after modification of structure xsctp_inpcb " +"(rev 254672)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22221 +msgid "1000049" +msgstr "1000049" + +#. (itstool) path: row/entry +#: book.translate.xml:22222 book.translate.xml:22231 +msgid "August 24, 2013" +msgstr "August 24, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22223 +msgid "" +"10-CURRENT after physio9 support for devices " +"that do not function properly with split I/O, such as " +"sa4 (rev 254760)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22230 +msgid "1000050" +msgstr "1000050" + +#. (itstool) path: row/entry +#: book.translate.xml:22232 +msgid "" +"10-CURRENT after modifications of structure mbuf (rev " +"254780, 254799, " +"254804, 254807 " +"254842)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22242 +msgid "1000051" +msgstr "1000051" + +#. (itstool) path: row/entry +#: book.translate.xml:22243 +msgid "August 25, 2013" +msgstr "August 25, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22244 +msgid "" +"10-CURRENT after Radeon KMS driver import (rev 254885, 254887)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22250 +msgid "1000052" +msgstr "1000052" + +#. (itstool) path: row/entry +#: book.translate.xml:22251 +msgid "September 3, 2013" +msgstr "September 3, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22252 +msgid "" +"10-CURRENT after import of NetBSD libexecinfo is " +"connected to the build (rev 255180)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22258 +msgid "1000053" +msgstr "1000053" + +#. (itstool) path: row/entry +#: book.translate.xml:22259 book.translate.xml:22267 book.translate.xml:22275 +msgid "September 6, 2013" +msgstr "September 6, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22260 +msgid "" +"10-CURRENT after API and ABI changes to the Capsicum framework (rev " +"255305)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22266 +msgid "1000054" +msgstr "1000054" + +#. (itstool) path: row/entry +#: book.translate.xml:22268 +msgid "" +"10-CURRENT after gcc and libstdc++ are " +"no longer built by default (rev 255321)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22274 +msgid "1000055" +msgstr "1000055" + +#. (itstool) path: row/entry +#: book.translate.xml:22276 +msgid "" +"10-CURRENT after addition of MMAP_32BIT " +"mmap2 flag (rev 255426)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22282 +msgid "1000100" +msgstr "1000100" + +#. (itstool) path: row/entry +#: book.translate.xml:22283 book.translate.xml:22313 book.translate.xml:22321 +msgid "December 7, 2013" +msgstr "December 7, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22284 +msgid "" +"releng/10.0 branched from stable/10 " +"(rev 259065)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22290 +msgid "1000500" +msgstr "1000500" + +#. (itstool) path: row/entry +#: book.translate.xml:22291 book.translate.xml:22586 +msgid "October 10, 2013" +msgstr "October 10, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22292 +msgid "" +"10-STABLE after branch from head/ (rev 256283)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22297 +msgid "1000501" +msgstr "1000501" + +#. (itstool) path: row/entry +#: book.translate.xml:22299 +msgid "" +"10-STABLE after addition of first-boot rc8 support (rev " +"256916)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22304 +msgid "1000502" +msgstr "1000502" + +#. (itstool) path: row/entry +#: book.translate.xml:22305 +msgid "November 20, 2013" +msgstr "November 20, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22306 +msgid "" +"10-STABLE after removal of iconv symbols from libc.so.7 " +"(rev 258398)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22312 +msgid "1000510" +msgstr "1000510" + +#. (itstool) path: row/entry +#: book.translate.xml:22314 +msgid "" +"releng/10.0 __FreeBSD_version update to prevent the value " +"from going backwards (rev 259067)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22320 +msgid "1000700" +msgstr "1000700" + +#. (itstool) path: row/entry +#: book.translate.xml:22322 +msgid "" +"10-STABLE after releng/10.0 branch (rev " +"259069)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22327 +msgid "1000701" +msgstr "1000701" + +#. (itstool) path: row/entry +#: book.translate.xml:22328 book.translate.xml:22617 +msgid "December 15, 2013" +msgstr "December 15, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22329 +msgid "" +"10.0-STABLE after Heimdal encoding fix (rev 259447)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22334 +msgid "1000702" +msgstr "1000702" + +#. (itstool) path: row/entry +#: book.translate.xml:22336 +msgid "10-STABLE after MAP_STACK fixes (rev 260135)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22341 +msgid "1000703" +msgstr "1000703" + +#. (itstool) path: row/entry +#: book.translate.xml:22343 +msgid "" +"10-STABLE after upgrade of libc++ to 3.4 release (rev 262801)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22348 +msgid "1000704" +msgstr "1000704" + +#. (itstool) path: row/entry +#: book.translate.xml:22349 +msgid "March 7, 2014" +msgstr "March 7, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22350 +msgid "" +"10-STABLE after MFC of the vt(4) driver (rev 262861)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22355 +msgid "1000705" +msgstr "1000705" + +#. (itstool) path: row/entry +#: book.translate.xml:22357 +msgid "" +"10-STABLE after upgrade of llvm/clang to 3.4 release (rev 263508)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22362 +msgid "1000706" +msgstr "1000706" + +#. (itstool) path: row/entry +#: book.translate.xml:22363 book.translate.xml:22726 +msgid "April 6, 2014" +msgstr "April 6, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22364 +msgid "" +"10-STABLE after GCC support for __block definition (rev " +"264214)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22370 +msgid "1000707" +msgstr "1000707" + +#. (itstool) path: row/entry +#: book.translate.xml:22371 book.translate.xml:22733 +msgid "April 8, 2014" +msgstr "April 8, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22372 +msgid "" +"10-STABLE after FreeBSD-SA-14:06.openssl (rev 264289)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22377 +msgid "1000708" +msgstr "1000708" + +#. (itstool) path: row/entry +#: book.translate.xml:22379 +msgid "" +"10-STABLE after FreeBSD-SA-14:07.devfs, FreeBSD-SA-14:08.tcp, and FreeBSD-" +"SA-14:09.openssl (rev 265122)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22385 +msgid "1000709" +msgstr "1000709" + +#. (itstool) path: row/entry +#: book.translate.xml:22386 +msgid "May 13, 2014" +msgstr "May 13, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22387 +msgid "" +"10-STABLE after support for UDP-Lite protocol (RFC 3828) (rev " +"265946)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22392 +msgid "1000710" +msgstr "1000710" + +#. (itstool) path: row/entry +#: book.translate.xml:22393 book.translate.xml:22768 +msgid "June 13, 2014" +msgstr "June 13, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22394 +msgid "" +"10-STABLE after changes to strcasecmp3, moving " +"strcasecmp_l() and strncasecmp_l() " +"from <string.h> to <strings.h> for POSIX 2008 compliance (rev 267465)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22403 +msgid "1000711" +msgstr "1000711" + +#. (itstool) path: row/entry +#: book.translate.xml:22405 +msgid "" +"10-STABLE after FreeBSD-SA-14:17.kmem (rev 268432)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22410 +msgid "1000712" +msgstr "1000712" + +#. (itstool) path: row/entry +#: book.translate.xml:22411 +msgid "August 1, 2014" +msgstr "August 1, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22412 +msgid "" +"10-STABLE after nfsd8 4.1 merge (rev " +"269398)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22417 +msgid "1000713" +msgstr "1000713" + +#. (itstool) path: row/entry +#: book.translate.xml:22418 book.translate.xml:22426 book.translate.xml:22815 +msgid "August 3, 2014" +msgstr "August 3, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22419 +msgid "" +"10-STABLE after regex3 library update to add " +"> and < delimiters (rev " +"269484)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22425 +msgid "1000714" +msgstr "1000714" + +#. (itstool) path: row/entry +#: book.translate.xml:22427 +msgid "" +"10-STABLE after SOCK_DGRAM bug fix (rev " +"269490)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22432 +msgid "1000715" +msgstr "1000715" + +#. (itstool) path: row/entry +#: book.translate.xml:22434 +msgid "10-STABLE after FreeBSD-SA-14:18 (rev 269686)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22439 +msgid "1000716" +msgstr "1000716" + +#. (itstool) path: row/entry +#: book.translate.xml:22441 +msgid "10-STABLE after FreeBSD-SA-14:19 (rev 271667)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22446 +msgid "1000717" +msgstr "1000717" + +#. (itstool) path: row/entry +#: book.translate.xml:22447 +msgid "September 18, 2014" +msgstr "September 18, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22448 +msgid "" +"10-STABLE after i915 HW context support (rev 271816)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22453 +msgid "1001000" +msgstr "1001000" + +#. (itstool) path: row/entry +#: book.translate.xml:22454 book.translate.xml:22461 +msgid "October 2, 2014" +msgstr "October 2, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22455 +msgid "10.1-RC1 after releng/10.1 branch (rev 272463)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22460 +msgid "1001500" +msgstr "1001500" + +#. (itstool) path: row/entry +#: book.translate.xml:22462 +msgid "10-STABLE after releng/10.1 branch (rev 272464)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22467 +msgid "1001501" +msgstr "1001501" + +#. (itstool) path: row/entry +#: book.translate.xml:22469 +msgid "" +"10-STABLE after FreeBSD-SA-14:20, FreeBSD-SA-14:22, and FreeBSD-SA-14:23 " +"(rev 273411)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22475 +msgid "1001502" +msgstr "1001502" + +#. (itstool) path: row/entry +#: book.translate.xml:22477 +msgid "" +"10-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25 " +"(rev 274162)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22483 +msgid "1001503" +msgstr "1001503" + +#. (itstool) path: row/entry +#: book.translate.xml:22484 +msgid "November 25, 2014" +msgstr "November 25, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22485 +msgid "" +"10-STABLE after merging new libraries/utilities (dpv and figpar) for data " +"throughput visualization (rev 275040)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22491 +msgid "1001504" +msgstr "1001504" + +#. (itstool) path: row/entry +#: book.translate.xml:22493 +msgid "" +"10-STABLE after merging an important fix to the LLVM vectorizer, which could " +"lead to buffer overruns in some cases (rev 275742)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22499 +msgid "1001505" +msgstr "1001505" + +#. (itstool) path: row/entry +#: book.translate.xml:22500 +msgid "January 3, 2015" +msgstr "January 3, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:22501 +msgid "" +"10-STABLE after merging some arm constants in r276312 (rev " +"276633)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22506 +msgid "1001506" +msgstr "1001506" + +#. (itstool) path: row/entry +#: book.translate.xml:22507 +msgid "January 12, 2015" +msgstr "January 12, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:22508 +msgid "" +"10-STABLE after merging max table size update for yacc (rev " +"277087)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22513 +msgid "1001507" +msgstr "1001507" + +#. (itstool) path: row/entry +#: book.translate.xml:22514 +msgid "January 27, 2015" +msgstr "January 27, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:22515 +msgid "" +"10-STABLE after changes to the UDP tunneling callback to provide a context " +"pointer and the source sockaddr (rev 277790)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22521 +msgid "1001508" +msgstr "1001508" + +#. (itstool) path: row/entry +#: book.translate.xml:22522 book.translate.xml:23070 +msgid "February 18, 2015" +msgstr "February 18, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:22523 +msgid "" +"10-STABLE after addition of the CDAI_TYPE_EXT_INQ request " +"type (rev 278974)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22529 +msgid "1001509" +msgstr "1001509" + +#. (itstool) path: row/entry +#: book.translate.xml:22531 +msgid "" +"10-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-" +"EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind " +"(rev 279287)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22538 +msgid "1001511" +msgstr "1001511" + +#. (itstool) path: row/entry +#: book.translate.xml:22539 +msgid "19 March, 2015" +msgstr "19 March, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:22540 +msgid "" +"10-STABLE after sys/capability.h is renamed to " +"sys/capsicum.h (rev 280224/)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22546 +msgid "1001512" +msgstr "1001512" + +#. (itstool) path: row/entry +#: book.translate.xml:22547 +msgid "24 March, 2015" +msgstr "24 March, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:22548 +msgid "" +"10-STABLE after addition of new mtio(4), sa(4) ioctls (rev " +"281954)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22553 +msgid "1001513" +msgstr "1001513" + +#. (itstool) path: row/entry +#: book.translate.xml:22554 +msgid "24 April, 2015" +msgstr "24 April, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:22555 +msgid "" +"10-STABLE after starting the process of removing the use of the deprecated " +"\"M_FLOWID\" flag from the network code (rev 281955)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22561 +msgid "1002000" +msgstr "1002000" + +#. (itstool) path: row/entry +#: book.translate.xml:22562 book.translate.xml:22569 +msgid "24 July, 2015" +msgstr "24 July, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:22563 +msgid "" +"releng/10.2 branched from 10-STABLE (rev " +"285830)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22568 +msgid "1002500" +msgstr "1002500" + +#. (itstool) path: row/entry +#: book.translate.xml:22570 +msgid "" +"10-STABLE after releng/10.2 branched from 10-STABLE (rev " +"285831)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22576 +msgid "1002501" +msgstr "1002501" + +#. (itstool) path: row/entry +#: book.translate.xml:22577 +msgid "8 October, 2015" +msgstr "8 October, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:22578 +msgid "" +"10-STABLE after merge of ZFS changes that affected the internal interface of " +"zfeature_info structure (rev 28857)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22585 +msgid "1100000" +msgstr "1100000" + +#. (itstool) path: row/entry +#: book.translate.xml:22587 +msgid "11.0-CURRENT (rev 256284)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22592 +msgid "1100001" +msgstr "1100001" + +#. (itstool) path: row/entry +#: book.translate.xml:22593 +msgid "October 19, 2013" +msgstr "October 19, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22595 +msgid "" +"11.0-CURRENT after addition of support for \"first boot\" rc.d scripts, so ports can make use of this (rev 256776)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22601 +msgid "1100002" +msgstr "1100002" + +#. (itstool) path: row/entry +#: book.translate.xml:22602 +msgid "November 5, 2013" +msgstr "November 5, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22604 +msgid "" +"11.0-CURRENT after dropping support for historic ioctls (rev " +"257696)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22609 +msgid "1100003" +msgstr "1100003" + +#. (itstool) path: row/entry +#: book.translate.xml:22610 +msgid "November 17, 2013" +msgstr "November 17, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22611 +msgid "11.0-CURRENT after iconv changes (rev 258284)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22616 +msgid "1100004" +msgstr "1100004" + +#. (itstool) path: row/entry +#: book.translate.xml:22618 +msgid "" +"11.0-CURRENT after the behavior change of gss_pseudo_random introduced in r259286 (rev 259424)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22624 +msgid "1100005" +msgstr "1100005" + +#. (itstool) path: row/entry +#: book.translate.xml:22625 +msgid "December 28, 2013" +msgstr "December 28, 2013" + +#. (itstool) path: row/entry +#: book.translate.xml:22627 +msgid "" +"11.0-CURRENT after r259951 - Do not coalesce entries in " +"vm_map_stack() (rev 260010)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22633 +msgid "1100006" +msgstr "1100006" + +#. (itstool) path: row/entry +#: book.translate.xml:22634 +msgid "January 28, 2014" +msgstr "January 28, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22635 +msgid "" +"11.0-CURRENT after upgrades of libelf and libdwarf (rev 261246)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22640 +msgid "1100007" +msgstr "1100007" + +#. (itstool) path: row/entry +#: book.translate.xml:22641 +msgid "January 30, 2014" +msgstr "January 30, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22642 +msgid "" +"11.0-CURRENT after upgrade of libc++ to 3.4 release (rev 261283)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22647 +msgid "1100008" +msgstr "1100008" + +#. (itstool) path: row/entry +#: book.translate.xml:22648 +msgid "February 14, 2014" +msgstr "February 14, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22649 +msgid "" +"11.0-CURRENT after libc++ 3.4 ABI compatibility fix (rev 261801)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22654 +msgid "1100009" +msgstr "1100009" + +#. (itstool) path: row/entry +#: book.translate.xml:22655 +msgid "February 16, 2014" +msgstr "February 16, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22656 +msgid "" +"11.0-CURRENT after upgrade of llvm/clang to 3.4 release (rev " +"261991)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22661 +msgid "1100010" +msgstr "1100010" + +#. (itstool) path: row/entry +#: book.translate.xml:22662 +msgid "February 28, 2014" +msgstr "February 28, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22663 +msgid "" +"11.0-CURRENT after upgrade of ncurses to 5.9 release (rev 262629)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22668 +msgid "1100011" +msgstr "1100011" + +#. (itstool) path: row/entry +#: book.translate.xml:22669 +msgid "March 13, 2014" +msgstr "March 13, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22670 +msgid "" +"11.0-CURRENT after ABI change in struct if_data (rev 263102)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22675 +msgid "1100012" +msgstr "1100012" + +#. (itstool) path: row/entry +#: book.translate.xml:22677 +msgid "" +"11.0-CURRENT after removal of Novell IPX protocol support (rev " +"263140)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22682 +msgid "1100013" +msgstr "1100013" + +#. (itstool) path: row/entry +#: book.translate.xml:22684 +msgid "" +"11.0-CURRENT after removal of AppleTalk protocol support (rev " +"263152)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22689 +msgid "1100014" +msgstr "1100014" + +#. (itstool) path: row/entry +#: book.translate.xml:22690 +msgid "March 16, 2014" +msgstr "March 16, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22691 +msgid "" +"11.0-CURRENT after renaming <sys/capability.h> to " +"<sys/capsicum.h> to avoid a clash with similarly " +"named headers in other operating systems. A compatibility header is left in " +"place to limit build breakage, but will be deprecated in due course (rev " +"263235)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22701 +msgid "1100015" +msgstr "1100015" + +#. (itstool) path: row/entry +#: book.translate.xml:22702 +msgid "March 22, 2014" +msgstr "March 22, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22703 +msgid "" +"11.0-CURRENT after cnt rename to vm_cnt (rev 263620)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22709 +msgid "1100016" +msgstr "1100016" + +#. (itstool) path: row/entry +#: book.translate.xml:22710 +msgid "March 23, 2014" +msgstr "March 23, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22711 +msgid "" +"11.0-CURRENT after addition of armv6hf " +"TARGET_ARCH (rev 263660)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22717 +msgid "1100017" +msgstr "1100017" + +#. (itstool) path: row/entry +#: book.translate.xml:22718 +msgid "April 4, 2014" +msgstr "April 4, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22719 +msgid "" +"11.0-CURRENT after GCC support for __block definition " +"(rev 264121)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22725 +msgid "1100018" +msgstr "1100018" + +#. (itstool) path: row/entry +#: book.translate.xml:22727 +msgid "" +"11.0-CURRENT after support for UDP-Lite protocol (RFC 3828) (rev " +"264212)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22732 +msgid "1100019" +msgstr "1100019" + +#. (itstool) path: row/entry +#: book.translate.xml:22734 +msgid "" +"11.0-CURRENT after FreeBSD-SA-14:06.openssl (rev 264265)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22739 +msgid "1100020" +msgstr "1100020" + +#. (itstool) path: row/entry +#: book.translate.xml:22740 +msgid "May 1, 2014" +msgstr "May 1, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22741 +msgid "" +"11.0-CURRENT after removing lindev in favor of having /dev/full by default " +"(rev 265212)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22747 +msgid "1100021" +msgstr "1100021" + +#. (itstool) path: row/entry +#: book.translate.xml:22748 +msgid "May 6, 2014" +msgstr "May 6, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22749 +msgid "" +"11.0-CURRENT after src.opts.mk changes, decoupling " +"make.conf5 from buildworld (rev " +"265419)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22756 +msgid "1100022" +msgstr "1100022" + +#. (itstool) path: row/entry +#: book.translate.xml:22757 +msgid "May 30, 2014" +msgstr "May 30, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22758 +msgid "" +"11.0-CURRENT after changes to strcasecmp3, moving " +"strcasecmp_l() and strncasecmp_l() " +"from <string.h> to <strings.h> for POSIX 2008 compliance (rev 266865)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22767 +msgid "1100023" +msgstr "1100023" + +#. (itstool) path: row/entry +#: book.translate.xml:22769 +msgid "" +"11.0-CURRENT after the CUSE library and kernel module have been attached to " +"the build by default (rev 267440)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22775 +msgid "1100024" +msgstr "1100024" + +#. (itstool) path: row/entry +#: book.translate.xml:22776 +msgid "June 27, 2014" +msgstr "June 27, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22777 +msgid "" +"11.0-CURRENT after sysctl3 API " +"change (rev 267992)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22783 +msgid "1100025" +msgstr "1100025" + +#. (itstool) path: row/entry +#: book.translate.xml:22784 +msgid "June 30, 2014" +msgstr "June 30, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22785 +msgid "" +"11.0-CURRENT after regex3 library update to add " +"> and < delimiters (rev " +"268066)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22791 +msgid "1100026" +msgstr "1100026" + +#. (itstool) path: row/entry +#: book.translate.xml:22792 +msgid "July 1, 2014" +msgstr "July 1, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22793 +msgid "" +"11.0-CURRENT after the internal interface between the NFS modules, including " +"the krpc, was changed by (rev 268115)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22799 +msgid "1100027" +msgstr "1100027" + +#. (itstool) path: row/entry +#: book.translate.xml:22801 +msgid "" +"11.0-CURRENT after FreeBSD-SA-14:17.kmem (rev 268431)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22806 +msgid "1100028" +msgstr "1100028" + +#. (itstool) path: row/entry +#: book.translate.xml:22807 +msgid "July 21, 2014" +msgstr "July 21, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22808 +msgid "" +"11.0-CURRENT after hdestroy() compliance fix changed " +"ABI (rev 268945)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22814 +msgid "1100029" +msgstr "1100029" + +#. (itstool) path: row/entry +#: book.translate.xml:22816 +msgid "" +"11.0-CURRENT after SOCK_DGRAM bug fix (rev " +"269489)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22821 +msgid "1100030" +msgstr "1100030" + +#. (itstool) path: row/entry +#: book.translate.xml:22822 +msgid "September 1, 2014" +msgstr "September 1, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22823 +msgid "" +"11.0-CURRENT after SOCK_RAW sockets were changed to not " +"modify packets at all (rev 270929)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22829 +msgid "1100031" +msgstr "1100031" + +#. (itstool) path: row/entry +#: book.translate.xml:22831 +msgid "" +"11.0-CURRENT after FreeBSD-SA-14:18.openssl (rev 269686)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22836 +msgid "1100032" +msgstr "1100032" + +#. (itstool) path: row/entry +#: book.translate.xml:22837 +msgid "September 11, 2014" +msgstr "September 11, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22838 +msgid "" +"11.0-CURRENT after API changes to ifa_ifwithbroadaddr, " +"ifa_ifwithdstaddr, ifa_ifwithnet, and " +"ifa_ifwithroute (rev 271438)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22847 +msgid "1100033" +msgstr "1100033" + +#. (itstool) path: row/entry +#: book.translate.xml:22849 +msgid "" +"11.0-CURRENT after changing access, eaccess, and faccessat to validate the mode argument " +"(rev 271657)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22856 +msgid "1100034" +msgstr "1100034" + +#. (itstool) path: row/entry +#: book.translate.xml:22858 +msgid "" +"11.0-CURRENT after FreeBSD-SA-14:19.tcp (rev 271666)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22863 +msgid "1100035" +msgstr "1100035" + +#. (itstool) path: row/entry +#: book.translate.xml:22864 book.translate.xml:22871 +msgid "September 17, 2014" +msgstr "September 17, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22865 +msgid "" +"11.0-CURRENT after i915 HW context support (rev 271705)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22870 +msgid "1100036" +msgstr "1100036" + +#. (itstool) path: row/entry +#: book.translate.xml:22872 +msgid "" +"Version bump to have ABI note distinguish binaries ready for strict " +"mmap2 flags checking (rev 271724)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22878 +msgid "1100037" +msgstr "1100037" + +#. (itstool) path: row/entry +#: book.translate.xml:22879 +msgid "October 6, 2014" +msgstr "October 6, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22880 +msgid "" +"11.0-CURRENT after addition of explicit_bzero3 (rev " +"272673)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22886 +msgid "1100038" +msgstr "1100038" + +#. (itstool) path: row/entry +#: book.translate.xml:22887 +msgid "October 11, 2014" +msgstr "October 11, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22888 +msgid "" +"11.0-CURRENT after cleanup of TCP wrapper headers (rev 272951)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22893 +msgid "1100039" +msgstr "1100039" + +#. (itstool) path: row/entry +#: book.translate.xml:22894 +msgid "October 18, 2014" +msgstr "October 18, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22895 +msgid "" +"11.0-CURRENT after removal of MAP_RENAME and " +"MAP_NORESERVE (rev 273250)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22902 +msgid "1100040" +msgstr "1100040" + +#. (itstool) path: row/entry +#: book.translate.xml:22904 +msgid "" +"11.0-CURRENT after FreeBSD-SA-14:23 (rev 273146)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22909 +msgid "1100041" +msgstr "1100041" + +#. (itstool) path: row/entry +#: book.translate.xml:22910 +msgid "October 30, 2014" +msgstr "October 30, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22911 +msgid "" +"11.0-CURRENT after API changes to syscall_register, " +"syscall32_register, syscall_register_helper and syscall32_register_helper (rev " +"273707)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22920 +msgid "1100042" +msgstr "1100042" + +#. (itstool) path: row/entry +#: book.translate.xml:22921 +msgid "November 3, 2014" +msgstr "November 3, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22922 +msgid "" +"11.0-CURRENT after a change to struct tcpcb (rev " +"274046)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22928 +msgid "1100043" +msgstr "1100043" + +#. (itstool) path: row/entry +#: book.translate.xml:22930 +msgid "" +"11.0-CURRENT after enabling vt4 by default (rev " +"274085)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22935 +msgid "1100044" +msgstr "1100044" + +#. (itstool) path: row/entry +#: book.translate.xml:22937 +msgid "" +"11.0-CURRENT after adding new libraries/utilities (dpv and figpar) for data " +"throughput visualization (rev 274116)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22943 +msgid "1100045" +msgstr "1100045" + +#. (itstool) path: row/entry +#: book.translate.xml:22945 +msgid "" +"11.0-CURRENT after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25 " +"(rev 274162)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22951 +msgid "1100046" +msgstr "1100046" + +#. (itstool) path: row/entry +#: book.translate.xml:22952 book.translate.xml:22960 +msgid "November 13, 2014" +msgstr "November 13, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22953 +msgid "" +"11.0-CURRENT after kern_poll signature change (rev " +"274462)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22959 +msgid "1100047" +msgstr "1100047" + +#. (itstool) path: row/entry +#: book.translate.xml:22961 +msgid "" +"11.0-CURRENT after removal of no-at version of VFS syscalls helpers, like " +"kern_open (rev 274476)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22967 +msgid "1100048" +msgstr "1100048" + +#. (itstool) path: row/entry +#: book.translate.xml:22968 +msgid "December 1, 2014" +msgstr "December 1, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22969 +msgid "" +"11.0-CURRENT after starting the process of removing the use of the " +"deprecated \"M_FLOWID\" flag from the network code (rev 275358)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22975 +msgid "1100049" +msgstr "1100049" + +#. (itstool) path: row/entry +#: book.translate.xml:22976 +msgid "December 9, 2014" +msgstr "December 9, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22977 +msgid "" +"11.0-CURRENT after importing an important fix to the LLVM vectorizer, which " +"could lead to buffer overruns in some cases (rev 275633)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22983 +msgid "1100050" +msgstr "1100050" + +#. (itstool) path: row/entry +#: book.translate.xml:22984 +msgid "December 12, 2014" +msgstr "December 12, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22985 +msgid "" +"11.0-CURRENT after adding AES-ICM and AES-GCM to OpenCrypto (rev " +"275732)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22990 +msgid "1100051" +msgstr "1100051" + +#. (itstool) path: row/entry +#: book.translate.xml:22991 +msgid "December 23, 2014" +msgstr "December 23, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:22992 +msgid "" +"11.0-CURRENT after removing old NFS client and server code from the kernel " +"(rev 276096)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:22998 +msgid "1100052" +msgstr "1100052" + +#. (itstool) path: row/entry +#: book.translate.xml:22999 +msgid "December 31, 2014" +msgstr "December 31, 2014" + +#. (itstool) path: row/entry +#: book.translate.xml:23000 +msgid "" +"11.0-CURRENT after upgrade of clang, llvm and lldb to 3.5.0 release (rev " +"276479)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23005 +msgid "1100053" +msgstr "1100053" + +#. (itstool) path: row/entry +#: book.translate.xml:23006 +msgid "January 7, 2015" +msgstr "January 7, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23007 +msgid "" +"11.0-CURRENT after MCLGET() gained a return value (rev 276750)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23012 +msgid "1100054" +msgstr "1100054" + +#. (itstool) path: row/entry +#: book.translate.xml:23013 +msgid "January 15, 2015" +msgstr "January 15, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23014 +msgid "" +"11.0-CURRENT after rewrite of callout subsystem (rev 277213)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23019 +msgid "1100055" +msgstr "1100055" + +#. (itstool) path: row/entry +#: book.translate.xml:23020 +msgid "January 22, 2015" +msgstr "January 22, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23021 +msgid "" +"11.0-CURRENT after reverting callout changes in r277213 (rev " +"277528)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23026 +msgid "1100056" +msgstr "1100056" + +#. (itstool) path: row/entry +#: book.translate.xml:23027 +msgid "January 23, 2015" +msgstr "January 23, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23028 +msgid "" +"11.0-CURRENT after addition of futimens and " +"utimensat system calls (rev 277610)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23036 +msgid "1100057" +msgstr "1100057" + +#. (itstool) path: row/entry +#: book.translate.xml:23037 +msgid "January 29, 2015" +msgstr "January 29, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23038 +msgid "" +"11.0-CURRENT after removal of d_thread_t (rev 277897)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23043 +msgid "1100058" +msgstr "1100058" + +#. (itstool) path: row/entry +#: book.translate.xml:23044 +msgid "February 5, 2015" +msgstr "February 5, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23045 +msgid "" +"11.0-CURRENT after addition of support for probing the SCSI VPD Extended " +"Inquiry page (0x86) (rev 278228)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23051 +msgid "1100059" +msgstr "1100059" + +#. (itstool) path: row/entry +#: book.translate.xml:23052 +msgid "February 9, 2015" +msgstr "February 9, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23053 +msgid "" +"11.0-CURRENT after import of xz 5.2.0, which added multi-threaded " +"compression and lzma gained libthr dependency (rev 278433)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23060 +msgid "1100060" +msgstr "1100060" + +#. (itstool) path: row/entry +#: book.translate.xml:23061 +msgid "February 16, 2015" +msgstr "February 16, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23062 +msgid "" +"11.0-CURRENT after forwarding FBIO_BLANK to framebuffer " +"clients (rev 278846)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23069 +msgid "1100061" +msgstr "1100061" + +#. (itstool) path: row/entry +#: book.translate.xml:23071 +msgid "" +"11.0-CURRENT after CDAI_FLAG_NONE addition (rev " +"278964)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23076 +msgid "1100062" +msgstr "1100062" + +#. (itstool) path: row/entry +#: book.translate.xml:23077 +msgid "February 23, 2015" +msgstr "February 23, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23078 +msgid "" +"11.0-CURRENT after mtio4 and " +"sa4 API and ioctl2 additions (rev " +"279221)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23084 +msgid "1100063" +msgstr "1100063" + +#. (itstool) path: row/entry +#: book.translate.xml:23085 book.translate.xml:23093 +msgid "March 7, 2015" +msgstr "March 7, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23086 +msgid "" +"11.0-CURRENT after adding mutex support to the pps_ioctl() API in the kernel " +"(rev 279728)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23092 +msgid "1100064" +msgstr "1100064" + +#. (itstool) path: row/entry +#: book.translate.xml:23094 +msgid "" +"11.0-CURRENT after adding PPS support to USB serial drivers (rev " +"279729)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23099 +msgid "1100065" +msgstr "1100065" + +#. (itstool) path: row/entry +#: book.translate.xml:23100 +msgid "March 15, 2015" +msgstr "March 15, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23101 +msgid "" +"11.0-CURRENT after upgrading clang, llvm and lldb to 3.6.0 (rev " +"280031)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23106 +msgid "1100066" +msgstr "1100066" + +#. (itstool) path: row/entry +#: book.translate.xml:23107 +msgid "March 20, 2015" +msgstr "March 20, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23109 +msgid "" +"11.0-CURRENT after removal of SSLv2 support from OpenSSL (rev " +"280306)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23114 +msgid "1100067" +msgstr "1100067" + +#. (itstool) path: row/entry +#: book.translate.xml:23115 +msgid "March 25, 2015" +msgstr "March 25, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23116 +msgid "" +"11.0-CURRENT after removal of SSLv2 support from " +"fetch1 and fetch3 (rev " +"280630)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23122 +msgid "1100068" +msgstr "1100068" + +#. (itstool) path: row/entry +#: book.translate.xml:23123 +msgid "April 6, 2015" +msgstr "April 6, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23124 +msgid "" +"11.0-CURRENT after change to net.inet6.ip6.mif6table sysctl (rev " +"281172)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23129 +msgid "1100069" +msgstr "1100069" + +#. (itstool) path: row/entry +#: book.translate.xml:23130 +msgid "April 15, 2015" +msgstr "April 15, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23131 +msgid "" +"11.0-CURRENT after removal of const qualifier from " +"iconv3 (rev 281550)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23136 +msgid "1100071" +msgstr "1100071" + +#. (itstool) path: row/entry +#: book.translate.xml:23137 +msgid "April 29, 2015" +msgstr "April 29, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23138 +msgid "" +"11.0-CURRENT after API/ABI change to smb4 (rev " +"281985)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23143 +msgid "1100072" +msgstr "1100072" + +#. (itstool) path: row/entry +#: book.translate.xml:23144 +msgid "May 1, 2015" +msgstr "May 1, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23145 +msgid "" +"11.0-CURRENT after adding reallocarray3 in libc (rev " +"282314)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23150 +msgid "1100073" +msgstr "1100073" + +#. (itstool) path: row/entry +#: book.translate.xml:23151 +msgid "May 8, 2015" +msgstr "May 8, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23152 +msgid "" +"11.0-CURRENT after extending the maximum number of allowed PCM channels in a " +"PCM stream to 127 and decreasing the maximum number of sub-channels to 1 " +"(rev 282650)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23159 +msgid "1100074" +msgstr "1100074" + +#. (itstool) path: row/entry +#: book.translate.xml:23160 +msgid "May 25, 2015" +msgstr "May 25, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23161 +msgid "" +"11.0-CURRENT after adding preliminary support for x86-64 Linux binaries (rev " +"283424), and upgrading clang and llvm to 3.6.1 (rev " +"283526)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23168 +msgid "1100075" +msgstr "1100075" + +#. (itstool) path: row/entry +#: book.translate.xml:23169 +msgid "May 27, 2015" +msgstr "May 27, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23170 +msgid "" +"11.0-CURRENT after dounmount() requiring a reference on the passed struct " +"mount (rev 283602)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23176 +msgid "1100076" +msgstr "1100076" + +#. (itstool) path: row/entry +#: book.translate.xml:23177 +msgid "June 4, 2015" +msgstr "June 4, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23178 +msgid "" +"11.0-CURRENT after disabled generation of legacy formatted password " +"databases entries by default. (rev 283983)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23184 +msgid "1100077" +msgstr "1100077" + +#. (itstool) path: row/entry +#: book.translate.xml:23185 +msgid "June 10, 2015" +msgstr "June 10, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23186 +msgid "" +"11.0-CURRENT after API changes to lim_cur, " +"lim_max, and lim_rlimit (rev " +"284215)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23194 +msgid "1100079" +msgstr "1100079" + +#. (itstool) path: row/entry +#: book.translate.xml:23195 +msgid "August 18, 2015" +msgstr "August 18, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23196 +msgid "" +"11.0-CURRENT after import of jemalloc 4.0.0 (rev 286866)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23201 +msgid "1100080" +msgstr "1100080" + +#. (itstool) path: row/entry +#: book.translate.xml:23202 +msgid "October 5, 2015" +msgstr "October 5, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23203 +msgid "" +"11.0-CURRENT after upgrading clang, llvm, lldb, compiler-rt and libc++ to " +"3.7.0 (rev 288943)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23209 +msgid "1100081" +msgstr "1100081" + +#. (itstool) path: row/entry +#: book.translate.xml:23210 +msgid "October 16, 2015" +msgstr "October 16, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23211 +msgid "" +"11.0-CURRENT after undating ZFS to support resumable send/receive (rev " +"r289362)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23216 +msgid "1100085" +msgstr "1100085" + +#. (itstool) path: row/entry +#: book.translate.xml:23217 +msgid "October 30, 2015" +msgstr "October 30, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23218 +msgid "" +"11.0-CURRENT after import of OpenSSL 1.0.2d (rev 290207)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23223 +msgid "1100088" +msgstr "1100088" + +#. (itstool) path: row/entry +#: book.translate.xml:23224 book.translate.xml:23231 +msgid "November 7, 2015" +msgstr "November 7, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23225 +msgid "" +"11.0-CURRENT after string collation and locales rework (rev " +"290495)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23230 +msgid "1100089" +msgstr "1100089" + +#. (itstool) path: row/entry +#: book.translate.xml:23232 +msgid "" +"11.0-CURRENT after API change to " +"sysctl_add_oid9 (rev 290475 and " +"r290505)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23238 +msgid "1100090" +msgstr "1100090" + +#. (itstool) path: row/entry +#: book.translate.xml:23239 +msgid "November 10, 2015" +msgstr "November 10, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23240 +msgid "" +"11.0-CURRENT after API change to callout_stop macro; (rev 290664)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23245 +msgid "1100092" +msgstr "1100092" + +#. (itstool) path: row/entry +#: book.translate.xml:23246 +msgid "December 19, 2015" +msgstr "December 19, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23247 +msgid "" +"11.0-CURRENT after removal of vm_pageout_grow_cache (rev 292469)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23252 +msgid "1100093" +msgstr "1100093" + +#. (itstool) path: row/entry +#: book.translate.xml:23253 +msgid "December 30, 2015" +msgstr "December 30, 2015" + +#. (itstool) path: row/entry +#: book.translate.xml:23254 +msgid "" +"11.0-CURRENT after removal of sys/crypto/sha2.h (rev 292782)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23259 +msgid "1100094" +msgstr "1100094" + +#. (itstool) path: row/entry +#: book.translate.xml:23260 +msgid "January 15, 2016" +msgstr "January 15, 2016" + +#. (itstool) path: row/entry +#: book.translate.xml:23261 +msgid "" +"11.0-CURRENT after LinuxKPI PCI changes (rev 294086)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23266 +msgid "1100095" +msgstr "1100095" + +#. (itstool) path: row/entry +#: book.translate.xml:23267 +msgid "January 19, 2016" +msgstr "January 19, 2016" + +#. (itstool) path: row/entry +#: book.translate.xml:23268 +msgid "" +"11.0-CURRENT after LRO optimizations (rev 294327)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23273 +msgid "1100096" +msgstr "1100096" + +#. (itstool) path: row/entry +#: book.translate.xml:23274 +msgid "January 21, 2016" +msgstr "January 21, 2016" + +#. (itstool) path: row/entry +#: book.translate.xml:23275 +msgid "" +"11.0-CURRENT after LinuxKPI idr_* additions (rev 294505)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23280 +msgid "1100097" +msgstr "1100097" + +#. (itstool) path: row/entry +#: book.translate.xml:23281 +msgid "January 26, 2016" +msgstr "January 26, 2016" + +#. (itstool) path: row/entry +#: book.translate.xml:23282 +msgid "" +"11.0-CURRENT after API change to dpv(3) (rev 294860)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23287 +msgid "1100098" +msgstr "1100098" + +#. (itstool) path: row/entry +#: book.translate.xml:23288 +msgid "February 16, 2016" +msgstr "February 16, 2016" + +#. (itstool) path: row/entry +#: book.translate.xml:23289 +msgid "" +"11.0-CURRENT after API change to rman (rev 294883)." +msgstr "" + +#. (itstool) path: row/entry +#: book.translate.xml:23294 +msgid "1100100" +msgstr "1100100" + +#. (itstool) path: row/entry +#: book.translate.xml:23295 +msgid "February 26, 2016" +msgstr "February 26, 2016" + +#. (itstool) path: row/entry +#: book.translate.xml:23296 +msgid "" +"11.0-CURRENT after bus_alloc_resource_anywhere() API addition (rev " +"296136)." +msgstr "" + +#. (itstool) path: note/para +#: book.translate.xml:23304 +msgid "" +"Note that 2.2-STABLE sometimes identifies itself as 2.2.5-STABLE after the 2.2.5-RELEASE. The pattern used to be year followed by the " +"month, but we decided to change it to a more straightforward major/minor " +"system starting from 2.2. This is because the parallel development on " +"several branches made it infeasible to classify the releases merely by their " +"real release dates. Do not worry about old -CURRENTs; they are listed here " +"just for reference." +msgstr "" + +