Index: head/zh_TW.UTF-8/books/porters-handbook/book.xml =================================================================== --- head/zh_TW.UTF-8/books/porters-handbook/book.xml (revision 48495) +++ head/zh_TW.UTF-8/books/porters-handbook/book.xml (revision 48496) @@ -1,12956 +1,23101 @@ - + + - - 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 + 原因 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 gawk-2.15.6 ja- 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)? - 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. - + This has been simplified as much as possible. See + . - - Proposing a new category + - 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. + Detailed Use of <literal>MASTER_SITES:n</literal> + with SourceForge (<literal>SF</literal>) - 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. + MASTER_SITES= http://site1/ SF/something/1.0:sourceforge,TEST +DISTFILES= something.tar.gz:sourceforge - 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.) + something.tar.gz will be + fetched from all sites within SourceForge. + + - Here is the procedure: + + How do I use this with + PATCH*? - - - 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 examples were done with + MASTER* + but they work exactly the same for + PATCH* + ones as can be seen in . - - Participate in the discussion. - + - - 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: + Simplified Use of + <literal>MASTER_SITES:n</literal> with + <varname>PATCH_SITES</varname> + PATCH_SITES= http://site1/ http://site2/:test +PATCHFILES= patch1:test + + + + + + + What Does Change for Ports? What Does Not? + + + + 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 . + + + + 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. + - 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 - - Says that the port uses perl 5 to build and run. + GNU_CONFIGURE + The port uses configure + script to prepare build. - USE_PERL5_BUILD - - Says that the port uses perl 5 to build. + HAS_CONFIGURE + Same as GNU_CONFIGURE, + except default configure target is not added to + CONFIGURE_ARGS. - USE_PERL5_RUN + CONFIGURE_ARGS + Additional arguments passed to + configure script. + - Says that the port uses perl 5 to run. + + CONFIGURE_ENV + Additional environment variables to be set + for configure script run. - PERL + CONFIGURE_TARGET + Override default configure target. Default + value is + ${MACHINE_ARCH}-portbld-freebsd${OSREL}. + + + +
+
- 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. + + 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_CONFIGURE + CMAKE_ARGS + Port specific CMake + flags to be passed to the cmake + binary. + - Configure using Perl's MakeMaker. It implies - USE_PERL5. + + CMAKE_BUILD_TYPE + Type of build (CMake + predefined build profiles). Default is + Release, or + Debug if + WITH_DEBUG is set. - PERL_MODBUILD + CMAKE_ENV + Environment variables to be set for the + cmake binary. Default is + ${CONFIGURE_ENV}. + - 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 - - The full version of perl installed (e.g., - 5.00503). + CMAKE_VERBOSE + Enable verbose build output. Default not set, + unless BATCH or + PACKAGE_BUILDING are set. - PERL_VER - - The short version of perl installed (e.g., - 5.005). + CMAKE_NOCOLOR + Disables color build output. Default not set, + unless BATCH or + PACKAGE_BUILDING are set. + + +
- - PERL_LEVEL + 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. - The installed perl version as an integer of the form MNNNPP - (e.g., 500503). - + 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. - - PERL_ARCH + + <literal>USES= cmake</literal> Example - Where perl stores architecture dependent libraries. - Defaults to ${ARCH}-freebsd. + 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> + + + + + Variable + Means + + - PERL_PORT + SCONS_ARGS + Port specific SCons flags passed to the SCons + environment. + - Name of the perl port that is - installed (e.g., perl5). + + SCONS_BUILDENV + Variables to be set in system + environment. - SITE_PERL + SCONS_ENV + Variables to be set in SCons + environment. + - 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 - - X_FONTS_TYPE1_PORT +.include <bsd.port.options.mk> - Port providing Type1 fonts. - +.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_MANUALS_PORT + USES= imake + The port uses imake. + - Port providing developer oriented manual pages + + XMKMF + Set to the path of xmkmf if + not in the PATH. Defaults to + xmkmf -a.
- 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.
- 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 + - - - - USE_PYTHON + + TCLSH + full path of the Tcl + interpreter + - 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 + + 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_PYDISTUTILS + USE_WX + List of versions the port can use + All available versions + - 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. + + 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 + + + - PYTHON_PKGNAMEPREFIX + 版本 + Port + + - Used as a PKGNAMEPREFIX to distinguish - packages for different Python versions. - Example: py24- + + + 2.4 + x11-toolkits/wxgtk24 - PYTHON_SITELIBDIR + 2.6 + x11-toolkits/wxgtk26 + - 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.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 + + + - 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 + + + 單一版本 + 2.4 - PYTHON_CMD + Ascending range + 2.4+ + - Python interpreter command line, including version - number. + + Descending range + 2.6- - PYNUMERIC + Full range (must be ascending) + 2.4-2.6 + + + +
- Dependency line for numeric extension. + 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 + + - PYNUMPY - Dependency line for the new numeric extension, numpy. - (PYNUMERIC is deprecated by upstream vendor). + WANT_WX_VER + the port - PYXML + WITH_WX_VER + the user + + + +
+
- Dependency line for XML extension (not needed for - Python 2.0 and higher as it is also in base distribution). + + 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 + + + + + 名字 + 描述 + Version restriction + + - USE_TWISTED + wx + main library + none + - Add dependency on twistedCore. The list of required - components can be specified as a value of this - variable. Example: web lore pair - flow + + contrib + contributed libraries + none - USE_ZOPE + python + wxPython + (Python bindings) + 2.4-2.6 + - Add dependency on Zope, a web application platform. - Change Python dependency to Python 2.3. Set - ZOPEBASEDIR containing a directory with - Zope installation. + + mozilla + wxMozilla + 2.4 + + 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. - - ruby18- + + WX_VERSION + The wxWidgets + version that is going to be used (for example, + 2.6) - RUBY_VERSION + WX_UNICODE + If not defined but Unicode is going to be used + then it will be defined + + + +
+ - Full version of Ruby in the form of - x.y.z. + + Processing in + <filename>bsd.port.pre.mk</filename> - 1.8.2 + 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> + + + + + Possible value + Resulting argument + + - RUBY_SITELIBDIR + absolute + --with-wx-config=${WX_CONFIG} + - Architecture independent libraries installation - path. + + relative + --with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T} + + + +
+
+
- /usr/local/lib/ruby/site_ruby/1.8 + + 使用 <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_SITEARCHLIBDIR + LUA_VER + The Lua version that + is going to be used (for example, + 5.1) + - Architecture dependent libraries installation - path. + + LUA_VER_STR + The Lua version + without the dots (for example, + 51) + - /usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd6 + + LUA_PREFIX + The prefix where Lua + (and components) is installed - RUBY_MODDOCDIR + LUA_SUBDIR + The directory under + ${PREFIX}/bin, + ${PREFIX}/share and + ${PREFIX}/lib where + Lua is installed + - Module documentation installation path. + + LUA_INCDIR + The directory where + Lua and + tolua header files are + installed + - /usr/local/share/doc/ruby18/patsy + + LUA_LIBDIR + The directory where + Lua and + tolua libraries are + installed - RUBY_MODEXAMPLESDIR + LUA_MODLIBDIR + The directory where + Lua module libraries + (.so) are installed + - Module examples installation path. + + LUA_MODSHAREDIR + The directory where + Lua modules + (.lua) are installed + - /usr/local/share/examples/ruby18/patsy + + LUA_PKGNAMEPREFIX + The package name prefix used by + Lua modules + + LUA_CMD + The path to the Lua + interpreter + + + + 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> <name>foo</name> <name>foo-devel</name> <name>ja-foo</name> <range><ge>1.6</ge><lt>1.9</lt></range> <range><ge>2.*</ge><lt>2.4_1</lt></range> <range><eq>3.0b1</eq></range> </package> <package> <name>openfoo</name> <range><lt>1.10_7</lt></range> <range><ge>1.2,1</ge><lt>1.3_1,1</lt></range> </package> </affects> <description> <body xmlns="http://www.w3.org/1999/xhtml"> <p>J. Random Hacker reports:</p> <blockquote cite="http://j.r.hacker.com/advisories/1"> <p>Several issues in the Foo software may be exploited via carefully crafted QUUX requests. These requests will permit the injection of Bar code, mumble theft, and the readability of the Foo administrator account.</p> </blockquote> </body> </description> <references> <freebsdsa>SA-10:75.foo</freebsdsa> <freebsdpr>ports/987654</freebsdpr> <cvename>CAN-2010-0201</cvename> <cvename>CAN-2010-0466</cvename> <bid>96298</bid> <certsa>CA-2010-99</certsa> <certvu>740169</certvu> <uscertsa>SA10-99A</uscertsa> <uscertta>SA10-99A</uscertta> <mlist msgid="201075606@hacker.com">http://marc.theaimsgroup.com/?l=bugtraq&amp;m=203886607825605</mlist> <url>http://j.r.hacker.com/advisories/1</url> </references> <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: head/zh_TW.UTF-8/books/porters-handbook/zh_TW.po =================================================================== --- head/zh_TW.UTF-8/books/porters-handbook/zh_TW.po (nonexistent) +++ head/zh_TW.UTF-8/books/porters-handbook/zh_TW.po (revision 48496) @@ -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 "" + + Property changes on: head/zh_TW.UTF-8/books/porters-handbook/zh_TW.po ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property