From f99369f3ffdc010d2ab68c40b55358242f17e70b Mon Sep 17 00:00:00 2001 From: Nik Clayton Date: Thu, 4 Jul 2002 18:04:48 +0000 Subject: [PATCH] * Sect 15.13 ("Prefix") is now part of a new chapter, "Testing your port" * Ditto for 15.20 ("Portlint") * Move the text that describes how to choose a good package name in to the same chapter as the text that describes PORTNAME et al. * Split "Naming and categorisation" in to two distinct sections. Move the chapter that describes how to choose a category (and lists the existing categories) next to the section that describes CATEGORIES. * Move the licensing discussion in to the "Special considerations" chapter. While I'm here, document RESTRICTED_FILES. --- .../books/porters-handbook/book.sgml | 1736 +++++++++-------- 1 file changed, 880 insertions(+), 856 deletions(-) diff --git a/en_US.ISO8859-1/books/porters-handbook/book.sgml b/en_US.ISO8859-1/books/porters-handbook/book.sgml index be47ce69a1..7743029d3a 100644 --- a/en_US.ISO8859-1/books/porters-handbook/book.sgml +++ b/en_US.ISO8859-1/books/porters-handbook/book.sgml @@ -704,7 +704,7 @@ lib/X11/oneko/mouse.xpm - Naming and categorisation + Naming The first part of the port's Makefile names the port, describes it's version number, and lists it in the correct @@ -954,6 +954,251 @@ PORTEPOCH= 1 them part of PORTNAME. + + Package Naming Conventions + + 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 lots and lots of packages and users are going to + turn away if they hurt their eyes! + + The package name should look like + language_region-name-compiled.specifics-version.numbers. + + The package name is defined as + ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}. + Make sure to set the variables to conform to that format. + + + + 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. + + 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. + + The language- part should + be set in the PKGNAMEPREFIX variable. + + + + The first letter of name part + should be lowercase. (The rest of the name can 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. If the software in question + has numbers, hyphens, or underscores in its name, you may include + them as well (like kinput2). + + + + 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. + + The compiled.specifics part + should be set in the PKGNAMESUFFIX + variable. + + + + 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. + + 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. + + + + Here are some (real) examples on how to convert the name + as called by the software authors to a suitable package + name: + + + + + + Distribution Name + PKGNAMEPREFIX + PORTNAME + PKGNAMESUFFIX + PORTVERSION + Reason + + + + + + mule-2.2.2 + (empty) + mule + (empty) + 2.2.2 + No changes required + + + + XFree86-3.3.6 + (empty) + XFree86 + (empty) + 3.3.6 + No changes required + + + + EmiClock-1.0.2 + (empty) + emiclock + (empty) + 1.0.2 + No uppercase names for single programs + + + + rdist-1.3alpha + (empty) + rdist + (empty) + 1.3.a + No strings like alpha + allowed + + + + es-0.9-beta1 + (empty) + es + (empty) + 0.9.b1 + No strings like beta + allowed + + + + mailman-2.0rc3 + (empty) + mailman + (empty) + 2.0.r3 + No strings like rc + allowed + + + + v3.3beta021.src + (empty) + tiff + (empty) + 3.3 + What the heck was that anyway? + + + + tvtwm + (empty) + tvtwm + (empty) + pl11 + Version string always required + + + + piewm + (empty) + piewm + (empty) + 1.0 + Version string always required + + + + xvgr-2.10pl1 + (empty) + xvgr + (empty) + 2.10.1 + 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 + + + + pkfonts + (empty) + pkfonts + 300 + 1.0 + 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) + as the version. + + + + + Categorisation + <makevar>CATEGORIES</makevar> @@ -980,6 +1225,489 @@ PORTEPOCH= 1 that case, please send mail to the &a.ports; to propose a new category. + + + Current list of categories + + First, this 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. + + + For non-virtual categories, you will find a one-line + description in the pkg/COMMENT file in that + subdirectory (e.g., + archivers/pkg/COMMENT). + + + + + + + Category + Description + + + + + + afterstep* + Ports to support the AfterStep window manager. + + + + archivers + Archiving tools. + + + + astro + Astronomical ports. + + + + audio + Sound support. + + + + benchmarks + Benchmarking utilities. + + + + biology + Biology-related software. + + + + cad + Computer aided design tools. + + + + chinese + Chinese language support. + + + + comms + Communication software. Mostly software to talk to + your serial port. + + + + converters + Character code converters. + + + + databases + Databases. + + + + deskutils + Things that used to be on the desktop before + computers were invented. + + + + 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. + + + + editors + General editors. Specialized editors go in the section + for those tools (e.g., a mathematical-formula editor will go + in math). + + + + elisp* + Emacs-lisp ports. + + + + 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. + + + + french + French language support. + + + + ftp + FTP client and server utilities. If your + port speaks both FTP and HTTP, put it in + ftp with a secondary + category of www. + + + + games + Games. + + + + german + German language support. + + + + gnome* + Ports from the GNU Object Model Environment (GNOME) + Project. + + + + graphics + Graphics utilities. + + + + hebrew + Hebrew language support. + + + + irc + Internet Relay Chat utilities. + + + + ipv6* + IPv6 related software. + + + + japanese + Japanese language support. + + + + java + Java language support. + + + + kde* + Ports from the K Desktop Environment (KDE) + Project. + + + + korean + Korean language support. + + + + lang + Programming languages. + + + + linux* + Linux applications and support utilities. + + + + mail + Mail software. + + + + math + Numerical computation software and other utilities + for mathematics. + + + + mbone + MBone applications. + + + + misc + Miscellaneous utilities—basically things that + do not belong anywhere else. This is the only category + that 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! + + + + net + Miscellaneous networking software. + + + + news + USENET news software. + + + + offix* + Ports from the OffiX suite. + + + + palm + Software support for the 3Com Palm(tm) series. + + + + perl5* + Ports that require perl version 5 to run. + + + + picobsd + Ports to support PicoBSD. + + + + plan9* + Various programs from Plan9. + + + + print + Printing software. Desktop publishing tools + (previewers, etc.) belong here too. + + + + python* + Software written in python. + + + + ruby* + Software written in ruby. + + + + russian + Russian language support. + + + + science + Scientific ports that don't fit into other + categories such as astro, + biology and + math. + + + + security + Security utilities. + + + + shells + Command line shells. + + + + sysutils + System utilities. + + + + tcl76* + Ports that use Tcl version 7.6 to run. + + + + tcl80* + Ports that use Tcl version 8.0 to run. + + + + tcl81* + Ports that use Tcl version 8.1 to run. + + + + tcl82* + Ports that use Tcl version 8.2 to run. + + + + textproc + Text processing utilities. It does not include + desktop publishing tools, which go to print/. + + + + tk42* + Ports that use Tk version 4.2 to run. + + + + tk80* + Ports that use Tk version 8.0 to run. + + + + tk81* + Ports that use Tk version 8.1 to run. + + + + tk82* + Ports that use Tk version 8.2 to run. + + + + tkstep80* + Ports that use TkSTEP version 8.0 to run. + + + + ukrainian + Ukrainian language support. + + + + vietnamese + Vietnamese language support. + + + + windowmaker* + Ports to support the WindowMaker window + manager + + + + www + Software related to the World Wide Web. HTML language + support belongs here too. + + + + 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. If your port is an X + application, define USE_XLIB (implied by + USE_IMAKE) and put it in the appropriate + categories. Also, many of them go into other + x11-* categories (see below). + + + + x11-clocks + X11 clocks. + + + + x11-fm + X11 file managers. + + + + x11-fonts + X11 fonts and font utilities. + + + + x11-servers + X11 servers. + + + + x11-toolkits + X11 toolkits. + + + + x11-wm + X11 window managers. + + + + zope* + Zope support. + + + + + + + + Choosing the right category + + 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. + + + + Language specific categories always come first. For + example, if your port installs Japanese X11 fonts, then your + CATEGORIES line would read japanese + x11-fonts. + + + + Specific categories win over less-specific ones. For + instance, an HTML editor should be listed as www + editors, not the other way around. Also, you do not + need to list net when the port belongs to + any of irc, mail, + mbone, news, + security, or www. + + + + 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. + + + + 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. + + + + + If your port truly does not belong anywhere else, put it in + misc. + + + + If you are not sure about the category, please put a comment to + that effect in your send-pr 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. + @@ -1617,6 +2345,87 @@ LDCONFIG_DIRS= %%PREFIX%%/lib/foo %%PREFIX%%/lib/bar LOCALBASE and %%X11BASE%% for X11BASE. + + + Ports with distribution restrictions + + 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. + + + 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 or CDROM. If in doubt, + please contact the FreeBSD ports mailing list + freebsd-ports@FreeBSD.org. + + + In situations like this, the following variables can be set. In + addition, ports/LEGAL should also be + updated. + + + <makevar>NO_PACKAGE</makevar> + + This variable indicates that we may not generate a binary + package of the application. However, the port's + DISTFILES files may be freely distributed. + + 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. + + NO_PACKAGE should be set to a string + describing the reason why the package should not be + generated. + + + + <makevar>NO_CDROM</makevar> + + This variable indicates that although we are allowed to generate + binary packages, we are not allowed to put those packages, or the + port's DISTFILES, on to CDROM for resale. The + DISTFILES will still be available via FTP. + + NO_PACKAGE and NO_CDROM + can be set simultaneously. + + + + <makevar>RESTRICTED</makevar> + + Set this variable if the application's license also forbids us + from mirroring the application's DISTFILES via + FTP. + + Also set this if the application's license has general + restrictions on who may use it. Examples include: + + + + The application is for non-commercial use only. + + + + The application contains cryptography code which is + forbidden in some countries. + + + + + + <makevar>RESTRICTED_FILES</makevar> + + If only some of the distribution files are restricted then set + this variable to list them. It defaults to ${DISTFILES} + ${PATCHFILES}. + + + 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 that while you have it installed would do that. + + Do not set USE_X_PREFIX unless your port + truly requires it (i.e., it links against X libs or it needs to + reference files in X11BASE). + + 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. + + 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: + + -DPAGER=\"${PREFIX}/bin/less\" + + or + + -DPAGER=\"${LOCALBASE}/bin/less\" + + if this is an X port, 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. + + + Upgrading @@ -3677,71 +4507,6 @@ post-install: - - <makevar>PREFIX</makevar> - - Do try to make your port install relative to - PREFIX. (The value of this variable will be set - to LOCALBASE (default - /usr/local), unless - USE_X_PREFIX or USE_IMAKE is - set, in which case it will be X11BASE (default - /usr/X11R6).) - - Not hard-coding /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 scripts/Makefiles in the port to read - PREFIX, as this variable is automatically passed - down to every stage of the build and install processes. - - Make sure your application isn't installing things in - /usr/local instead of PREFIX. - A quick test for this is to do this is: - - &prompt.root; make clean; make package PREFIX=/var/tmp/port-name - - If anything is installed outside of PREFIX, - making the package creation process will complain that it - can't find the files. - - - 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 that while you have it installed would do that. - - Do not set USE_X_PREFIX unless your port - truly requires it (i.e., it links against X libs or it needs to - reference files in X11BASE). - - 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. - - 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: - - -DPAGER=\"${PREFIX}/bin/less\" - - or - - -DPAGER=\"${LOCALBASE}/bin/less\" - - if this is an X port, 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. - - Subdirectories @@ -3900,14 +4665,6 @@ drweb:*:426:426:Dr.Web Mail Scanner:/nonexistent:/sbin/nologin to work. - - Portlint - - Do check your work with portlint - before you submit or commit it. - - Feedback @@ -4097,739 +4854,6 @@ pre-install: shared libraries section. - - Package Names - - 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 lots and lots of packages and users are going to - turn away if they hurt their eyes! - - The package name should look like - language_region-name-compiled.specifics-version.numbers. - - The package name is defined as - ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}. - Make sure to set the variables to conform to that format. - - - - 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. - - 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. - - The language- part should - be set in the PKGNAMEPREFIX variable. - - - - The first letter of name part - should be lowercase. (The rest of the name can 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. If the software in question - has numbers, hyphens, or underscores in its name, you may include - them as well (like kinput2). - - - - 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. - - The compiled.specifics part - should be set in the PKGNAMESUFFIX - variable. - - - - 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. - - 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. - - - - Here are some (real) examples on how to convert the name - as called by the software authors to a suitable package - name: - - - - - - Distribution Name - PKGNAMEPREFIX - PORTNAME - PKGNAMESUFFIX - PORTVERSION - Reason - - - - - - mule-2.2.2 - (empty) - mule - (empty) - 2.2.2 - No changes required - - - - XFree86-3.3.6 - (empty) - XFree86 - (empty) - 3.3.6 - No changes required - - - - EmiClock-1.0.2 - (empty) - emiclock - (empty) - 1.0.2 - No uppercase names for single programs - - - - rdist-1.3alpha - (empty) - rdist - (empty) - 1.3.a - No strings like alpha - allowed - - - - es-0.9-beta1 - (empty) - es - (empty) - 0.9.b1 - No strings like beta - allowed - - - - mailman-2.0rc3 - (empty) - mailman - (empty) - 2.0.r3 - No strings like rc - allowed - - - - v3.3beta021.src - (empty) - tiff - (empty) - 3.3 - What the heck was that anyway? - - - - tvtwm - (empty) - tvtwm - (empty) - pl11 - Version string always required - - - - piewm - (empty) - piewm - (empty) - 1.0 - Version string always required - - - - xvgr-2.10pl1 - (empty) - xvgr - (empty) - 2.10.1 - 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 - - - - pkfonts - (empty) - pkfonts - 300 - 1.0 - 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) - as the version. - - - - Categories - - As you already know, ports are classified in several categories. - But for this to work, it is important that porters and users understand - what each category is for and how we decide what to put in each - category. - - - Current list of categories - - First, this 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. - - - For non-virtual categories, you will find a one-line - description in the pkg/COMMENT file in that - subdirectory (e.g., - archivers/pkg/COMMENT). - - - - - - - Category - Description - - - - - - afterstep* - Ports to support the AfterStep window manager. - - - - archivers - Archiving tools. - - - - astro - Astronomical ports. - - - - audio - Sound support. - - - - benchmarks - Benchmarking utilities. - - - - biology - Biology-related software. - - - - cad - Computer aided design tools. - - - - chinese - Chinese language support. - - - - comms - Communication software. Mostly software to talk to - your serial port. - - - - converters - Character code converters. - - - - databases - Databases. - - - - deskutils - Things that used to be on the desktop before - computers were invented. - - - - 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. - - - - editors - General editors. Specialized editors go in the section - for those tools (e.g., a mathematical-formula editor will go - in math). - - - - elisp* - Emacs-lisp ports. - - - - 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. - - - - french - French language support. - - - - ftp - FTP client and server utilities. If your - port speaks both FTP and HTTP, put it in - ftp with a secondary - category of www. - - - - games - Games. - - - - german - German language support. - - - - gnome* - Ports from the GNU Object Model Environment (GNOME) - Project. - - - - graphics - Graphics utilities. - - - - hebrew - Hebrew language support. - - - - irc - Internet Relay Chat utilities. - - - - ipv6* - IPv6 related software. - - - - japanese - Japanese language support. - - - - java - Java language support. - - - - kde* - Ports from the K Desktop Environment (KDE) - Project. - - - - korean - Korean language support. - - - - lang - Programming languages. - - - - linux* - Linux applications and support utilities. - - - - mail - Mail software. - - - - math - Numerical computation software and other utilities - for mathematics. - - - - mbone - MBone applications. - - - - misc - Miscellaneous utilities—basically things that - do not belong anywhere else. This is the only category - that 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! - - - - net - Miscellaneous networking software. - - - - news - USENET news software. - - - - offix* - Ports from the OffiX suite. - - - - palm - Software support for the 3Com Palm(tm) series. - - - - perl5* - Ports that require perl version 5 to run. - - - - picobsd - Ports to support PicoBSD. - - - - plan9* - Various programs from Plan9. - - - - print - Printing software. Desktop publishing tools - (previewers, etc.) belong here too. - - - - python* - Software written in python. - - - - ruby* - Software written in ruby. - - - - russian - Russian language support. - - - - science - Scientific ports that don't fit into other - categories such as astro, - biology and - math. - - - - security - Security utilities. - - - - shells - Command line shells. - - - - sysutils - System utilities. - - - - tcl76* - Ports that use Tcl version 7.6 to run. - - - - tcl80* - Ports that use Tcl version 8.0 to run. - - - - tcl81* - Ports that use Tcl version 8.1 to run. - - - - tcl82* - Ports that use Tcl version 8.2 to run. - - - - textproc - Text processing utilities. It does not include - desktop publishing tools, which go to print/. - - - - tk42* - Ports that use Tk version 4.2 to run. - - - - tk80* - Ports that use Tk version 8.0 to run. - - - - tk81* - Ports that use Tk version 8.1 to run. - - - - tk82* - Ports that use Tk version 8.2 to run. - - - - tkstep80* - Ports that use TkSTEP version 8.0 to run. - - - - ukrainian - Ukrainian language support. - - - - vietnamese - Vietnamese language support. - - - - windowmaker* - Ports to support the WindowMaker window - manager - - - - www - Software related to the World Wide Web. HTML language - support belongs here too. - - - - 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. If your port is an X - application, define USE_XLIB (implied by - USE_IMAKE) and put it in the appropriate - categories. Also, many of them go into other - x11-* categories (see below). - - - - x11-clocks - X11 clocks. - - - - x11-fm - X11 file managers. - - - - x11-fonts - X11 fonts and font utilities. - - - - x11-servers - X11 servers. - - - - x11-toolkits - X11 toolkits. - - - - x11-wm - X11 window managers. - - - - zope* - Zope support. - - - - - - - - Choosing the right category - - 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. - - - - Language specific categories always come first. For - example, if your port installs Japanese X11 fonts, then your - CATEGORIES line would read japanese - x11-fonts. - - - - Specific categories win over less-specific ones. For - instance, an HTML editor should be listed as www - editors, not the other way around. Also, you do not - need to list net when the port belongs to - any of irc, mail, - mbone, news, - security, or www. - - - - 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. - - - - 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. - - - - - If your port truly does not belong anywhere else, put it in - misc. - - - - If you are not sure about the category, please put a comment to - that effect in your send-pr 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. - - - Changes to this document and the ports system