diff --git a/guide/Makefile b/guide/Makefile index ddfe277..2bde1d8 100644 --- a/guide/Makefile +++ b/guide/Makefile @@ -27,32 +27,22 @@ # set XML_DEBUG_CATALOG= to see catalog debugging info SOURCEDIR?= xml -NEWSOURCEDIR?= new/xml DOCBOOK_XSL?= ${prefix}/share/xsl/docbook-xsl/ HTMLDIR?= html -NEWHTMLDIR?= new/html XHTMLDIR?= xhtml STYLESHEET?= ${DOCBOOK_XSL}/html/chunk.xsl XSTYLESHEET?= ${DOCBOOK_XSL}/xhtml/chunk.xsl -NEWSTYLESHEET?= ${DOCBOOK_XSL}/xhtml/docbook.xsl XML_CATALOG_FILES?= ${prefix}/etc/xml/catalog XML_DEBUG_CATALOG?= CSS_STYLESHEET?= docbook.css RESOURCES?= resources/ -NEWRESOURCES?= new/resources/ STRINGPARAMS?= --stringparam html.stylesheet ${CSS_STYLESHEET} --stringparam chunk.section.depth 0 -NEWSTRINGPARAMS?= --stringparam html.stylesheet ${CSS_STYLESHEET} \ - --stringparam section.autolabel 1 \ - --stringparam toc.section.depth 1 \ - --stringparam generate.toc "book toc" \ - --stringparam section.label.includes.component.label 1 .PHONY : all .PHONY : clean #.PHONY : install .PHONY : html .PHONY : xhtml -.PHONY : new .PHONY : check .PHONY : tidy @@ -68,12 +58,6 @@ xhtml: cp ${RESOURCES}${CSS_STYLESHEET} ${XHTMLDIR} xsltproc --xinclude ${STRINGPARAMS} -o "${XHTMLDIR}/" "${XSTYLESHEET}" "${SOURCEDIR}/guide.xml" -new: - mkdir -p ${NEWHTMLDIR} - cp ${NEWRESOURCES}${CSS_STYLESHEET} ${NEWHTMLDIR} - cp ${NEWRESOURCES}/images/* ${NEWHTMLDIR} - xsltproc --xinclude ${NEWSTRINGPARAMS} -o "${NEWHTMLDIR}/guide.html" "${NEWSTYLESHEET}" "${NEWSOURCEDIR}/guide.xml" - all: html xhtml tidy tidy: @@ -85,6 +69,6 @@ tidy: -tidy -quiet -modify -indent -xml ${XHTMLDIR}/* clean: - rm -fr ${HTMLDIR} ${XHTMLDIR} ${NEWHTMLDIR} + rm -fr ${HTMLDIR} ${XHTMLDIR} include ../../base/Mk/macports.autoconf.mk diff --git a/guide/new/resources/docbook.css b/guide/new/resources/docbook.css deleted file mode 100755 index df167d9..0000000 --- a/guide/new/resources/docbook.css +++ /dev/null @@ -1,204 +0,0 @@ -/* - * MacPorts Guide Stylesheet - */ - -/* - CSS design by Mark Duling -*/ - -div.mediaobject { - text-align: center; - margin: auto; - border: thin black inset; -} - -.emphasis { font-weight: bold ; } - -a:link { color: #6298E5; text-decoration: none; } -a:visited { color: #6298E5; text-decoration: none;} -a:hover { text-decoration: underline; } - -.filename { color: #8B1A1A; } - -span.term { font-weight: bold; } - -span.guilabel { font-weight: bold; } - -span.guimenu { font-weight: bold; } - -.programlisting { - font-family: monospace; - font-size: medium; - background-color: #E6E6E6; - border: thin black inset } - -.screen { - font-family: monospace; - font-size: medium; - border: thin black inset; - background-color: white; } - -div.screenshot div.mediaobject { - text-align: center; - margin: auto } - -body { - font-family: Verdana, Arial, sans-serif; - font-size: 14px; - line-height: 1.4; - color: #696969; -} - -div.note h3.title { color: #C00; } - -.author { - font-size: 14px; - color: #6298E5; - font-weight: bold; -} - -.copyright { - font-size: 12px; - font-family: times; -} - -div.book div.titlepage h1 { - font-family: Verdana, Arial, Utopia, sans-serif; - font-size: 24pt; - color: black; - font-weight: bold; - text-align: left; -} - -div.book div.titlepage h2 { - font-family: Verdana, Arial, Utopia, sans-serif; - font-size: 18pt; - color: black; - font-weight: bold; - text-align: left; -} - -div.section div.titlepage h2 { - font-family: Verdana, Arial, Utopia, sans-serif; - font-size: 16pt; - color: black; - text-align: left; -} - -div.section div.titlepage h3 { - font-family: Verdana, Arial, Utopia, sans-serif; - font-size: 14pt; - color: black; - font-weight: bold; - text-align: left; -} - -div.section div.titlepage h4 { - font-family: Verdana, Arial, Utopia, sans-serif; - font-size: 12pt; - color: black; - font-weight: bold; - text-align: left; -} - -div.mediaobject { - text-align: center; - margin: auto; -} - -p { margin-bottom: 14pt; } - -div.toc { - border-width: 1px; - border-color: black; - border-style: solid; -/* background-color: #C2CAD8; Color of macosforge.org sidebar */ - background-color: #9FB6CD; - background-repeat: no-repeat; - background-position: center top; - - font-size: 10px; - font-family: Verdana, Arial, sans-serif; - color: black; - left: 8px; - width: 234px; - padding-left: 2px; - padding-top: 0px; - height: 96%; - float: left; - overflow: scroll; - position: fixed; - top: 12px; - -/* IE hack */ - - position: expression("absolute"); - top: expression(document.body.scrollTop+this.offsetHeight-this.offsetHeight); -} - -/* Definitions for non-Safari/non-IE toc sections */ -div.toc dt { - font-size: 12px; - line-height: 22px; -} - -/* Definitions for non-Safari/non-IE toc subsections */ -div.toc dd dl dt { - font-size: 11px; - line-height: 14px; -} - -/* Definitions for toc sections using Safari Stokely hack */ -html*.toc dt { -/* Seen by Safari */ - font-size: 14px; - line-height: 16px; -/* Seen by IE */ - _font-size: 14px; - _line-height: 22px; -} - -/* Definitions for toc subsections using Safari Stokely hack */ -html*.toc dd dl dt { -/* Seen by Safari */ - font-size: 11px; - line-height: 13px; - padding-bottom: 0px; -/* Seen by IE */ - _font-size: 11px; - _line-height: 14px; - _padding-bottom: 0px; -} - -/* TOC All Links */ -/* div.toc a:link { color: royalblue; } */ -/* div.toc a:hover { color: #D00; } */ -/* div.toc a:visited { color: black; text-decoration: none; } */ - - -/* TOC Section Links */ -div.toc dt a:link { color: #F4F6F8; text-decoration: none; } -div.toc dt a:hover { color: gray; } -div.toc dt a:visited { color: #F4F6F8; text-decoration: none; } - - -/* TOC Subsubsection Links */ -div.toc dd dl dt a:link { color: black; text-decoration: none; } -div.toc dd dl dt a:hover { color: gray; } -div.toc dd dl dt a:visited { color: black; text-decoration: none; } - -div.book { - margin-left: 247px; -} - -/* -div.toc:before { - font-family: Palatino, Bookman, serif; - font-size: 16px; - font-weight: bold; - text-align: center; - display: block; - color: black; - content: "MacPorts Guide Contents"; -} */ - diff --git a/guide/new/resources/images/trac-default.png b/guide/new/resources/images/trac-default.png deleted file mode 100644 index f218abf..0000000 Binary files a/guide/new/resources/images/trac-default.png and /dev/null differ diff --git a/guide/new/xml/glossary.xml b/guide/new/xml/glossary.xml deleted file mode 100644 index 314d9cf..0000000 --- a/guide/new/xml/glossary.xml +++ /dev/null @@ -1,479 +0,0 @@ - - - - MacPorts Guide Terms - - - - MacPorts Guide Terms - - - activate phase - - - - - - - - automake - - - - - - - - autoconf - - - - - - - - API - - - - - - - - BSD Unix - - - - - - - - CVS - - - - - - - - destroot phase - - - - - - - - port binary - - - - - - - - build - - - - - - - - build phase - - - - - - - - checksum - - - - - - - - checksum phase - - - - - - - - compile - - - - - - - - configure - - - - - - - - configure phase - - - - - - - - dependency - - - - - - - - destroot phase - - - - - - - - diff - - - - - - - - extract phase - - - - - - - - fetch phase - - - - - - - - free software - - - - - - - - global keyword - - - - - - - - gunzip - - - - - - - - keyword - - - - - - - - keyword argument modifier - - - - - - - - keyword list modifier - - - - - - - - library - - - - - - - - MacPorts - - - A system for compiling, installing, and managing free and open - source software comprised of an infrastructure called MacPorts base - and a collection of ports. MacPorts current port collection defines - the software may be installed. - - - - - open source software - - - - - - - - patch phase - - - - - - - - patch file - - - - - - - - pextlib - - - - - - - - phase - - - - - - - - port - - - - - - - - port command - - - - - - - - port image - - - - - - - - port maintainer - - - - - - - - port phase - - - - - - - - port phase keyword - - - - - - - - PortGroup - - - - - - - - Portfile - - - - - - - - registry - - - - - - - - rsync - - - - - - - - selfupdate - - - - - - - - shell - - - - - - - - StartupItem - - - - - - - - subversion - - - - - - - - sync - - - - - - - - tar - - - - - - - - Tcl - - - - - - - - Tcl extension - - - - - - - - Trac - - - - - - - - Unix - - - - - - - - unzip - - - - - - - - variant - - - - - - - - Xcode Tools - - - - - - - - X11 - - - - - - - - zip - - - - - - - - \ No newline at end of file diff --git a/guide/new/xml/guide.xml b/guide/new/xml/guide.xml deleted file mode 100644 index 9b3a6f2..0000000 --- a/guide/new/xml/guide.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - MacPorts Guide - - - - Mark - - Duling - - - - Dr - - Michael - - Maibaum - - A - - - - Will - - Barton - - - - 2007 - - The MacPorts Project - - - - 2002, 2003, 2004 - - The OpenDarwin Project - - - - - - - - - - - - - - - - - - - - - - - diff --git a/guide/new/xml/installing.xml b/guide/new/xml/installing.xml deleted file mode 100644 index 38d61fc..0000000 --- a/guide/new/xml/installing.xml +++ /dev/null @@ -1,270 +0,0 @@ - - - - Installing MacPorts - - This chapter show you how to install MacPorts and its prerequisites - step-by-step. Note that sections 1 through 3 are Mac OS X specific. If you - wish to install MacPorts on FreeBSD, first make sure you have gcc and X11 - installed, and then begin with section Install MacPorts - Source. - -
- Install Xcode Tools - - To install Xcode Tools and the X11 SDK, follow these steps. - - - - Download and install the latest version of Xcode Tools—do - not install an older version from the OS X 10.4 install disk or some - ports may fail to install. - - - - Run the binary installer. - - - - Click the button Customize, expand the Applications category and - click the check box beside X11 SDK to add it to the default - items. - - - - Click "Install" to install Xcode Tools and the X11 SDK. - - - - - Xcode Tools are not updated via OS X's Software Update - utility. - -
- -
- Install X11 - - On OS X 10.4, Apple's X Window System (X11) is an optional install - (Apple's X11 is currently recommended over the MacPorts X11 port). It is - recommended that you install it even if you don't plan to run X11 - applications immediately. - - - - Insert the "Mac OS X Install Disk 1" and run the package named - "Optional Installs". - - - - At the software selection window expand the Applications - category and click the check box beside X11 (and nothing else). - - - - Click the Install button to install X11. - - - - Drag the /Applications/Utilities/X11 icon - to your dock —you must open X11 before launching an X11 - application. - - - - - X11 and the X11SDK (from Xcode Tools) are both required for X11 - apps. To verify the presence of both, check for files - X11User.pkg and X11SDK.pkg in - /Library/Receipts/. - - -
- Optional X11 Settings - - To launch X11 applications directly from an X11 window (instead of - a terminal window), you need to have the MacPorts paths imported into - X11 sessions when they are opened. This is a two step process. - - First, tell X11 about the ~/.profile file - that will be created after you install MacPorts. Do this by editing the - file /etc/X11/xinit/xinitrc and adding this line - near the top. - - source ~/.profile - - Now finish the process by making subsequent X11 sessions opened - using the menu bar respect your .profile - file. - - - - Open X11 and select "Customize Menu ..." from the Applications - menu. - - - - Double-click the menu item "Terminal" and change: "xterm" to - "xterm -ls" - - - - Click "Done" to save the change. - - -
-
- -
- Install MacPorts - Binary - - If you wish to install MacPorts to a path other than - /opt/local do not install the MacPorts binary —skip - this section and install MacPorts from - the source code. The MacPorts binary installer will only install to - /opt/local. - - - - Download the latest MacPorts .dmg disk image from the MacPorts - download directory. - - - - Run the binary installer. - - - - Perform the default “easy” install. - - - - - A MacPorts selfupdate - operation will automatically update to the latest release if the binary - .dmg image is behind the latest released tarball. - -
- -
- Install MacPorts - Source - - If you installed MacPorts using the binary installer, skip this - section. Installing from source on Mac OS X is only necessary if you wish - to install to a path other than /opt/local, or if you - wish to install a non-release version of MacPorts base. You must also - install MacPorts from source if you wish to install MacPorts on a platform - other than Mac OS X. - - - - Download and unzip the latest MacPorts tarball from the MacPorts - download directory. - - - - Perform these commands in a terminal window, substituting a real - path for NEW_PREFIX if you wish to use a path other than - /opt/local/. - - %% cd ~/MacPorts-1.x.x/ -%% ./configure --prefix=NEW_PREFIX (setting prefix is optional) -%% make -%% sudo make install - - - -
- Multiple MacPorts Installs - - Occasionally a MacPorts developer may wish to install more than - one copy of MacPorts on the same host, possibly to test two different - versions of MacPorts. But only one copy of MacPorts may use the default - MacPorts Tcl library path /Library/Tcl, so for a - second installation use the --with-tclpackage switch - set to any newly created (empty) directory, say - /Library/Tcl/macports-new. Also, the standard MacPorts binary path must - not be present during the installation of the second instance. To - install a second instance of MacPorts, follow these steps. - - %% export PATH=/bin:/sbin:/usr/bin:/usr/sbin -%% cd ~/MacPorts-1.x.x/ -%% ./configure --prefix=NEW_PREFIX --with-tcl-package=NEW_TCLPACKAGE -%% make -%% sudo make install - -
-
- -
- Set the Bash Shell - - The MacPorts binary installer places a .profile - file in your home directory (view files with a dot using ls - -a). The contents of the ~/.profile adds - the MacPorts paths in front of the standard Unix paths for the default - Bash shell so that MacPorts libraries will take precedence over - vendor-supplied libraries if both are present. - - The path statement in the MacPorts-installed .profile is set as - shown. - - export PATH=/opt/local/bin:/opt/local/sbin:$PATH - - You must add this DISPLAY variable for - X11. - - export DISPLAY=:0.0 - - Add the EDITOR variable to use your favorite text - editor. A complete ~/.profile file with the added - variables is shown below. - - export PATH=/opt/local/bin:/opt/local/sbin:$PATH -export DISPLAY=:0.0 -export EDITOR=/usr/bin/pico - - - Changes to ~/.profile do not take effect until - a new terminal session is opened. Type env in the - terminal to verify the current environment settings. Example output of - env is below. - - TERM_PROGRAM=Apple_Terminal -TERM=xterm-color -SHELL=/bin/bash -TERM_PROGRAM_VERSION=133 -USER=joebob -__CF_USER_TEXT_ENCODING=0x1FC:0:0 -PATH=/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin -PWD=/Users/joebob -EDITOR=/usr/bin/pico -SHLVL=1 -HOME=/Users/joebob -LOGNAME=joebob -DISPLAY=:0.0 -SECURITYSESSIONID=b0cea0 -_=/usr/bin/env - - - If you have either a .bash_login or a - .bash_profile file in your home directory, they may - take precedence over .profile. You may either - remove the previously used file, or add the contents of - .profile to it. - -
- -
- MacPorts Selfupdate - - You must always do a selfupdate after a new MacPorts install, and - you should also do it frequently thereafter. See selfupdate —one of several port commands. -
-
\ No newline at end of file diff --git a/guide/new/xml/internals.xml b/guide/new/xml/internals.xml deleted file mode 100644 index 536e2c1..0000000 --- a/guide/new/xml/internals.xml +++ /dev/null @@ -1,926 +0,0 @@ - - - - MacPorts Internals - - This chapter contains information to help gain a better understanding - of MacPorts or learn how to configure it for non-default operation. - -
- MacPorts File Hierarchy - - MacPorts port authors install files according to guidelines that - define where ports should install the various classes of files in the - MacPorts file hierarchy. These guidelines are listed below. - - - - ${prefix} - - - The base of the MacPorts filesystem hierarchy. - - Default: /opt/local/ - - - - bin/ - - - Common utilities, programming tools, and - applications. - - - - - - - etc/ - - - System configuration files and scripts. - - - - - - - games/ - - - Useful and semi-frivolous programs. - - - - - - - include/ - - - Standard C include files. - - - - - - - java/ - - - Applications based on Java. - - - - - - - libexec/ - - - System daemons and system utilities (executed by other - programs). - - - - - - - sbin/ - - - System programs and administration utilities. - - - - - - - share/ - - - Architecture-independent files. - - - - doc/ - - - Miscellaneous documentation. - - - - - - - examples/ - - - Examples for users and programmers. - - - - - - - info/ - - - GNU Info hypertext system. - - - - - - - locale/ - - - Localization files. - - - - - - - man/ - - - Manual pages. - - - - - - - misc/ - - - Miscellaneous system-wide ASCII text files. - - - - - - - - var/ - - - Multi-purpose log, temporary, transient and spool - files. - - - - db/ - - - Miscellaneous automatically generated - system-specific database files. - - - - mports/ - - - MacPorts runtime data. - - - - - - - - - - spool/ - - - Directory containing output spool files. - - - - - - - log/ - - - Miscellaneous system log files. - - - - - - - run/ - - - System information files describing various - information about the system since it was booted. - - - - - - - - - - - - - /Applications/MacPorts/ - - - Native Mac OS X applications. - - - -
- -
- Configuration Files - - The MacPorts configuration files do not need to be modified for the - general end user. They contain options that may be of use to advanced - users and port developers. All the MacPorts configuration files are - located in /opt/local/etc/macports. - -
- sources.conf - - sources.conf is where the location(s) are set - to scan for MacPorts Portfiles. This file is commonly modified to add a - local Portfile repository. -
- -
- macports.conf - - macports.conf contains advanced MacPorts - configuration options. See the file comments for instructions. -
- -
- variants.conf - - variants.conf is used to specify variants to - be used for all ports where they exist. -
-
- -
- Port Images - - MacPorts has a unique ability to allow for multiple versions, - revisions, and variants of the same port installed at the same time, so - you may test new port versions without uninstalling a previous working - version. - - This capability derives from the fact that a MacPorts port by - default is not installed into its final or "activated" location, but - rather to an intermediate location that is only made available to other - ports and end-users after an activation phase that makes hard links of all - its files in ${prefix} that point to the port's files - in the image repository. Therefore deactivating a port image to install a - different version only removes the hard links in - ${prefix} pointing to the previous port version's image - —the deactivated port's image is not disturbed. - - - MacPorts image mode may be turned off in favor of direct mode by - setting the portinstalltype variable in the - macports.conf file "direct". But unless you know - what you're doing, don't change it. - -
- -
- MacPorts APIs and Libs - - The MacPorts system is composed of three Tcl libraries: - - - - MacPorts API - MacPorts public API for handling Portfiles, - dependencies, and registry - - - - Ports API - API for Portfile parsing and execution - - - - pextlib - C extensions to Tcl - - - -
- Ports API - - The code for the Port API is located in - base/src/port1.0. The Port API provides all the - primitives required for a Portfile to be parsed, queried, and executed. - It also provides a single procedure call that the MacPorts API uses to - kick off execution: "eval_targets". The port Tcl library supplies these - procedures, all of which are generated at run-time using the - options procedure in portutil.tcl. - - The macports Tcl library loads the Portfile into a - sub-interpreter, within which all port-specific code is run. This - process ensures that there will never be pollution of the Tcl space of - other ports, nor the MacPorts libraries, nor the calling - application. - - - Portfiles are executed in a Tcl interpreter as Tcl code (and not - truly parsed strictly speaking), so every Portfile option must be a - TCL procedure. - - - The Ports API performs the following functions: - - - - Manages target registrations. All targets register themselves - with the Port API. Accordingly, the Port API creates pre-/post-/main - overrides for each of the targets. - - - - Option/Default handling. All Portfile options (name, version, - revision ...) are registered by targets. The Port API creates - procedures for these options, and sets up the complex variable - traces necessary to support option defaults. - - - - Executes target procedures, including the pre/post/main - routines. - - - - Manages a state file containing information about what - variants were specified and what targets have run - successfully. - - - - Provides essential Portfile Tcl extensions (reinplace, - xinstall, etc). - - - - Provides simple access to the ui_event mechanism by providing - the various ui_ procedures (i.e., ui_msg, ui_error). - - -
- -
- MacPorts API - - The code for the MacPorts API is located in - base/src/macports1.0. The MacPorts API provides a - public API into the MacPorts system by providing simple primitives for - handling Portfiles, dependencies, and registry operations, and exports - the MacPorts API for the port command line utility, - or any other. The API has very little information about the contents - Portfiles; instead, it relies entirely upon the port - Tcl library. By keeping the high level API simple and generic, revisions - to the underlying ports system will not necessarily require a revision - of the high level MacPorts API. - - The MacPorts API is also responsible for loading user specified - options into a sub-interpreter to be evaluated by the ports API. In that - case it sets the variable name in the sub-interpreter and adds the - option to the sub-interpreter's global array user_options(). User - options are passed as part of the call to mportopen. - - The MacPorts API performs the following functions: - - - - Dependency support. - - This is implemented in a highly generic fashion, and is used - throughout the system. The dependency functions are exported to the - Port API, and the Port API uses them to execute targets in the - correct order. - - - - Dependency processing. - - Software dependencies are handled at this layer using the - dependency support layer. - - - - UI abstractions. - - UI Abstractions are handled at this layer. Each port action is - provided a context, and a mechanism for posting user interface - events is exported to the Port API (ui_event). - - - - Registry management routines. - - Manages the rudimentary port registry in - ${prefix}/var/mports/receipts/. - - - - mportregistry::new: create a new port - registry entry. - - - - mportregistry::exists: check if a port - registry entry exists (either versioned or not). - - - - mportregistry::delete: delete an existing - registry entry. - - - - mportregistry::close: closes a new registry - entry. - - - - - - Exports the MacPorts API for use by client - applications. - - The following routines are defined. - - - - mportinit: Initializes the MacPorts system. - Should be called before trying to use any other - procedure. - - - - mportsearch: Given a regexp, searches the - PortIndex for ports with matching - names. - - - - mportopen: Given a URI to a port, opens a - Portfile and returns an opaque handle to it. - - - - portclose: Given a port handle, closes a - Portfile. - - - - mportexec: Given a port handle, executes a - target (i.e. install). - - - - mportinfo: Given a port handle, this returns - the PortInfo array (as a flat list of array elements). This is a - little tricky and unstable and only used by the - portindex command. - - - - mportdepends: Given a port handle, returns a - list of ports upon which the specified port depends. - - - - - - For an example of the MacPorts API, when one executes - port search cm3, the port utility: - - - - Calls the mportsearch function to find all ports - containing "cm3". - - - - Returns Tcl array(s) containing data from the - PortIndex: port name, version, revision, - variants, etc. - - - - Formats the list of arrays in the standard viewing - format. - - - - For another MacPorts API example, when one executes port - install cm3, the port utility: - - - - Calls the mportsearch function to find the first - port that matches the name "cm3". - - - - Calls the mportopen function to open the - port. - - - - Calls the mportexec function to execute the - install target in the port. - - - - Calls the mportclose function to close the - port. - - -
- -
- pextlib - - The pextlib TCL library provides a variety of C extensions to add - capabilities to TCL procedures; for example, an interface to flock(2) - and mkstemp(3). -
-
- -
- The MacPorts Registry - - This chapter provides an overview of the MacPorts registry and its - API. The registry is queried by MacPorts utilities for information about - installed ports related to dependencies, port images, and simple user - information about what is installed. It provides abstraction over a - modular receipt storage layer; this allows for flat file receipts as well - as receipts stored in a SQLite database. - - The registry allows MacPorts utilities to: - - - - Modify receipts to reflect changes made to installed ports being - maintained by MacPorts. - - - - Query the global file and dependency databases for file - conflicts between a port being installed and a port already - installed. - - - - Maintain dependency trees of installed ports. - - - -
- Registry Files - - The flat file registry (MacPorts default registry) files are - contained in ${portdbpath}/receipts, which by - default is location - ${prefix}/var/macports/receipts. File mappings and - dependency mappings are tracked in the flat file registry by two - files: - - - - file_map.db - - - - dep_map.bz2 - - -
- -
- The Registry API - - The MacPorts registry provides a public API in the registry1.0 Tcl - package. Using this API listed below you can access the MacPorts - Registry using the default receipt storage mechanism chosen in - macports.conf. - - - - registry::new_entry {name version {revision 0} - {variants ""}} - - - Begin the creation of a new registry entry for the given - port. Returns a reference ID to the registry entry created. - - - - - - - registry::open_entry {name {version 0} - {revision 0} {variants ""}} - - - Opens an existing registry entry. Returns a reference ID to - the registry entry that was opened. - - - - - - - registry::entry_exists {name version {revision - 0} {variants ""}} - - - Checks to see if a port exists in the registry. Returns 1 if - the entry exists, 0 if not. - - - - - - - registry::write_entry - {ref} - - - Writes the receipt associated with the given - reference. - - - - - - - registry::delete_entry - {ref} - - - Deletes the receipt associated with the given - reference. - - - - - - - registry::property_store {ref property - value} - - - Store the given value with the property name in the receipt - associated with the given reference. - - - - - - - registry::property_retrieve {ref - property} - - - Retrieve the property name from the receipt associated with - the given reference. Returns the value of the property, if the - property exists. - - - - - - - registry::installed {{name ""} {version - ""}} - - - Get all installed ports, optionally all installed ports - matching the given name, or the given name and version. Returns a - list of the installed ports. - - - - - - - registry::location {portname - portversion} - - - Returns the physical location the port is installed in on - the disk. This is primarily useful for finding out where a port - image is installed. - - - - - - - registry::open_file_map - {args} - - - Opens the file map that contains file-port - relationships. - - - - - - - registry::file_registered - {file} - - - Returns the name of the port that owns the given file, if - the file is registered as installed, and 0 otherwise. - - - - - - - registry::port_registered - {name} - - - Returns a list of all files associated with the given port - if that port is installed, and 0 otherwise. - - - - - - - registry::register_file {file - port} - - - Registers the given file in the file map as belonging to the - given port. - - - - - - - registry::unregister_file - {file} - - - Removes the file from the file map. - - - - - - - registry::write_file_map - {args} - - - Write the changes to the file map. - - - - - - - registry::open_dep_map - {args} - - - Opens the dependency map that contains port dependency - relationships. - - - - - - - registry::fileinfo_for_file - {fname} - - - Returns a list for the given file name representing all data - currently known about the file. This is a 6-tuple in the form - of: - - - - file path - - - - uid - - - - gid - - - - mode - - - - size - - - - md5 checksum - - - - - - - - - registry::fileinfo_for_index - {flist} - - - Returns a list of information concerning each file in the - given file list, if that file exists in the registry. The - information if obtained through registry::fileinfo_for_file - - - - - - - registry::list_depends - {name} - - - Returns a list of all the ports that given port name depends - on. - - - - - - - registry::list_dependents - {name} - - - Returns a list of all the ports that depend on the given - port name. - - - - - - - registry::register_dep {dep type - port} - - - Registers the given dependency as the given type of - dependency with the given port. - - - - - - - registry::unregister_dep {dep type - port} - - - Unregister the given dependency of the given type as a - dependency of the given port. - - - - - - - registry::write_dep_map - {args} - - - Write changes to the dependency map. - - - -
-
-
\ No newline at end of file diff --git a/guide/new/xml/intro.xml b/guide/new/xml/intro.xml deleted file mode 100644 index 92f0591..0000000 --- a/guide/new/xml/intro.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - Introduction - - MacPorts is a system for compiling, installing, and managing free and - open source software. MacPorts may be conceptually divided into two main - parts: the infrastructure, known as MacPorts base, and the set of available - ports. A MacPorts port is a set of specifications contained in a Portfile that defines an - application, its characteristics, and any files or special instructions - required to install it, so MacPorts may automatically fetch, patch, compile, - and install ported software. - - However, installing software using MacPorts instead of doing it - manually brings advantages apart from scripted installs for individual - applications. For example, MacPorts: - - - - Installs automatically any required support software, known as - "dependencies", for a given port. - - - - Provides automatic uninstalls and upgrades for installed - ports. - - - - Confines ported software to a private "sandbox" that keeps it from - intermingling with your operating system and its vendor-supplied - software to prevent them from becoming corrupted. - - - - Allows you to create pre-compiled binary installers of ported - applications to quickly install software on computers without compiling - from source code. - - - - MacPorts is developed on Mac OS X, though it is designed to be - portable so it can work on other Unix-like systems, especially those - descended from the Berkeley Software Distribution (BSD). - -
- Document Conventions - - The MacPorts Guide uses some notational conventions to distinguish - between terminal input/output, file text, and other special text - types. - - - - Terminal I/O and file text. - - %% Commands to be typed into a terminal window. - - Command output to a terminal window. - - File text. - - - - Other special text types. - - A hyperlink: spontaneous - combustion. - - A file: /var/log/system.log. - - A command: ifconfig. - - An option: port - - -
-
\ No newline at end of file diff --git a/guide/new/xml/portfiledev.xml b/guide/new/xml/portfiledev.xml deleted file mode 100644 index 3b93e78..0000000 --- a/guide/new/xml/portfiledev.xml +++ /dev/null @@ -1,696 +0,0 @@ - - - - Portfile Development - - This chapter covers a brief introduction to Portfiles, how to create a - local Portfile repository for development, and creating Portfiles. - -
- Portfile Introduction - - A MacPorts Portfile is a TCL script that usually - contains only the simple keyword/value combinations and Tcl extensions as - described in the Portfile Reference - chapter, though it may also contain arbitrary TCL code. Every port has a - corresponding Portfile, but Portfiles do not completely define a port's - installation behavior since MacPorts base has default port installation - characteristics coded within it. Therefore Portfiles need only specify - required options, though some ports may require non-default - options. - - A common way for Portfiles to augment or override MacPorts base - default installation phase characteristics is by using - Portfile phase declaration(s). If you use Portfile - phase declaration(s), you should know how to identify the "global" section - of a Portfile. Any statements not contained within a phase declaration, no - matter where they are located in a Portfile, are said to be in the global - section of the Portfile; therefore the global section need not be - contiguous. Likewise, to remove statements from the global section they - must be placed within a phase declaration. - - The main phases you need to be aware of when making a Portfile are - these: - - - - Fetch - - - - Extract - - - - Patch - - - - Configure - - - - Build - - - - Destroot - - - - The default installation phase behavior performed by the MacPorts - base works fine for applications that use the standard - configure, make, and make - install steps, which conform to phases configure, build, and - destroot respectively. For applications that do not conform to this - standard behavior, any installation phase may be augmented using pre- and/or post- phases, or - even overridden or - eliminated. See - Example Portfiles - below. - - - For a detailed description of all port phases, see the Portfile Reference chapter. - -
- -
- Local Portfile Repositories - - To create and test Portfiles that are not yet committed to - subversion, you may create a local Portfile repository as shown. Replace - the hypothetical user julesverne with your username - in the example below. - - - - Open the sources.conf file in a text - editor. - - %% cd ${prefix}/etc/macports/ -%% pico sources.conf - - - - Insert a URL pointing to your local repository location before - the rsync URL as shown. - - file:///Users/julesverne/ports -rsync://rsync.macports.org/release/ports - - - - The file URL should always appear before the rsync URL so that - local Portfiles can be tested that are duplicated in the MacPorts - tree, because the port command will always - operate on the first Portfile it encounters. - - - - - Place the Portfiles you create inside a directory whose name - matches the port, which should in turn be placed inside a directory - that reflect the port's primary category (the first category entry in - the Portfile). - - %% cd /Users/julesverne -%% mkdir -p ports/games/bestevergame -%% cd ports/games/bestevergame -%% touch Portfile - - - - After a Portfile is created (see below), use the MacPorts - portindex command in the local repository's - directory to install it into the - Portindex. - - %% cd /Users/julesverne/ports -%% portindex - - Creating software index in /Users/julesverne/ports -Adding port games/bestevergame - -Total number of ports parsed: 1 -Ports successfully parsed: 1 -Ports failed: 0 - - - - Once the local port is added to the Portindex, - it becomes available for searching or installation as with any other - Portfile in the MacPorts tree as shown. - - %% port search bestever - - bestevergame games/bestevergame 1.1 The Best Ever Game -
- -
- Creating a Portfile - - Here we list the individual Portfile components for an application - that conforms to the the standard configure, - make, and make install steps of most - open source application installs. - - - - Subversion ID tag line - - The first line of a new Portfile must be set as shown. When a - port is committed to subversion, ID tags are expanded to include the - last person to commit and the commit time. - - # $Id$ - - - - PortSystem line - - This statement is required for all ports. - - PortSystem 1.0 - - - - Port name - - name rrdtool - - - - Port version - - version 1.2.23 - - - - Port categories - - A port may belong to more than one category, but the first - (primary) category should match the directory name in the ports tree - where the Portfile is to reside. - - categories net - - - - Port maintainers - - A port's maintainer is a person or persons who take - responsibility for keeping the port up-to-date, and the maintainer - keyword lists maintainer email addresses(s). To hide these addresses - from spambots, see the more full explanation of the maintainer keyword - in the Global - Keywords section of the Portfile - Reference chapter. - - maintainers julesverne@example.org - - - The address nomaintainer@macports.org, or in - hidden form nomaintainer, designates a port that may - be modified by any committer. - - - - - Port description - - description Round Robin Database - - - - Port long_description - - long_description RRDtool is a system to store and display time-series data - - - - A port's application homepage - - homepage http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ - - - - Platform statement - - platforms darwin - - - - A port's download URLs - - master_sites http://oss.oetiker.ch/rrdtool/pub/ \ - ftp://ftp.pucpr.br/rrdtool/ - - - - Port checksums - - The checksums specified in a Portfile are checked with the - fetched tarball for security. For the best security, use md5, sha1, - and rmd160 checksum types. - - checksums md5 dafa161bc9c61e57636a6085c87c1fe8 \ - sha1 5da610e1c8bc01b80abc21ab9e98e004363b429c \ - rmd160 0c1147242adf476f5e93f4d59b553ee3ea378b23 - - To find the correct checksums for a port's distribution file, - follow this example: - - %% md5 rrdtool-1.2.23.tar.gz -%% openssl sha1 rrdtool-1.2.23.tar.gz -%% openssl rmd160 rrdtool-1.2.23.tar.gz - - MD5 ( ... rrdtool-1.2.23.tar.gz) = dafa161bc9c61e57636a6085c87c1fe8 - -SHA1( ... rrdtool-1.2.23.tar.gz)= 5da610e1c8bc01b80abc21ab9e98e004363b429c - -RIPEMD160( ... rrdtool-1.2.23.tar.gz)= 0c1147242adf476f5e93f4d59b553ee3ea378b23 - - - - Port dependencies - - A port's dependencies are ports that must be installed before - another port is installed. - - depends_lib port:perl5.8 \ - port:tcl \ - port:zlib - - - - Port configure arguments (optional) - - configure.args --prefix=${prefix} \ - --enable-perl-site-install \ - --mandir=${prefix}/share/man - - -
- -
- Example Portfiles - - In this section we begin by taking a look at a complete simple - Portfile; then we see how to augment default phases by - defining pre- and post- phases, how to override default phases, - and finally how to eliminate port - phases. - -
- A Basic Portfile - - # Id$ -PortSystem 1.0 - -name rrdtool -version 1.2.23 -categories net -maintainers julesverne -description Round Robin Database -long_description RRDtool is a system to store and display time-series data -homepage http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ -platforms darwin -master_sites http://oss.oetiker.ch/rrdtool/pub/ \ - ftp://ftp.pucpr.br/rrdtool/ - -checksums md5 dafa161bc9c61e57636a6085c87c1fe8 \ - sha1 5da610e1c8bc01b80abc21ab9e98e004363b429c \ - rmd160 0c1147242adf476f5e93f4d59b553ee3ea378b23 - -depends_lib port:perl5.8 \ - port:tcl \ - port:zlib - -configure.args --prefix=${prefix} \ - --enable-perl-site-install \ - --mandir=${prefix}/share/man -
- -
- Augment Phases Using pre- / post- - - To augment a port's installation phase, and not override it, you - may use pre- and post- installation phases as shown in this - example. - - post-destroot { -# Install example files not installed by the Makefile - file mkdir ${destroot}${prefix}/share/doc/${name}/examples - file copy ${worksrcpath}/examples/ \ - ${destroot}${prefix}/share/doc/${name}/examples -} -
- -
- Overriding Phases - - To override the automatic MacPorts installation phase processing, - define your own installation phases as shown in this example. - - destroot { - xinstall -m 755 -d ${destroot}${prefix}/bin - xinstall -m 755 ${worksrcpath}/cdpr ${destroot}${prefix}/bin -} -
- -
- Eliminating Phases - - To eliminate a default phase, simply define a phase with no - contents as shown. - - build {} - - - Because many software packages do not use - , a keyword is provided to eliminate the - phase. See the chapter Portfile Reference for full - information. - -
- -
- Creating a StartupItem - - Startupitems may be placed in the global section of a - Portfile. - - startupitem.create yes -startupitem.name nmicmpd -startupitem.executable "${prefix}/bin/nmicmpd" - - Startupitems keywords may also be used within a variant definition - to make their installation conditional. - - variant server { - startupitem.create yes - startupitem.start "${prefix}/share/${name}/vm-pop3d.init start" - startupitem.stop "${prefix}/share/${name}/vm-pop3d.init stop" -} -
-
- -
- Port Variants - - Variants are a way for port authors to provide options that may be - invoked at install time. They are declared in the global section of a - Portfile using the "variant" keyword and may provide a description. - -
- Variants to Modify Options - - The most common use for a variant is to add or remove - dependencies, configure arguments, and build arguments from the global - Portfile section. Here is an example of a port providing four variants - that add additional configure arguments to a port. - - variant pop { configure.args-append --enable-pop } -variant imap { configure.args-append --enable-imap } -variant ssl { configure.args-append --with-ssl } -variant debug { configure.args-append --enable-debug } - - In the example variant declaration, the configure argument - --without-x is removed and a numner of others are - appended. - - variant x11 description {Builds port as an X11 program with Lucid widgets} { - configure.args-delete --without-x - configure.args-append --with-x-toolkit=lucid \ - --without-carbon \ - --with-xpm \ - --with-jpeg \ - --with-tiff \ - --with-gif \ - --with-png - depends_lib-append lib:libX11:XFree86 \ - lib:libXpm:XFree86 \ - port:jpeg \ - port:tiff \ - port:libungif \ - port:libpng -} -
- -
- Variant Actions in a Phase - - If a variant requires options in addition to those provided by - keywords using -append and/or -delete, in other words, any actions that - would normally take place within a port installation phase, do not try - to do this within the variant declaration. Rather, modify the behavior - of any affected phases when the variant is invoked using the - variant_isset keyword. - - post-destroot { - xinstall -m 755 -d ${destroot}${prefix}/etc/ - xinstall ${worksrcpath}/examples/foo.conf \ - ${destroot}${prefix}/etc/ - - if {[variant_isset] carbon]} { - delete ${destroot}${prefix}/bin/emacs - delete ${destroot}${prefix}/bin/emacs-${version} - } -} -
- -
- Default Variants - - Variants are used to specify actions that lie outside the core - functions of an application or port, but there may be some cases where - you wish to specify these non-core functions by default. For this - purpose you may use the keyword default_variants. - - default_variants +foo +bar - - - The default_variant keyword may only be used in the global - Portfile section. - -
-
- -
- Patch Files - - Patch files are files created with the Unix command - diff that are applied using the command - patch to modify text files to fix bugs or extend - functionality. - -
- Creating Portfile Patches - - If you wish to contribute modifications or fixes to a Portfile, - you should do so in the form of a patch. - - - - Make a copy of the Portfile you wish to modify; both files - must be in the same directory, though it may be any - directory. - - %% cp Portfile Portfile.orig - - - - Edit the file to make it as you want it to be after it is - fetched. - - - - Now use the Unix command diff -u to create - a "unified" diff patch file. Put the name of the port in the - patchfile, for example, Portfile-rrdtool.diff. - - %% diff -u Portfile.orig Portfile > Portfile-rrdtool.diff - - - - A patch file that is a "unified" diff file is the easiest to - interpret by humans and this type should always be used for ports. - The Portfile patch below will change the version and checksums when - applied. - - --- Portfile.orig 2007-07-25 18:52:12.000000000 -0700 -+++ Portfile 2007-07-25 18:53:35.000000000 -0700 -@@ -2,7 +2,7 @@ - PortSystem 1.0 - - name nefu --version 1.4.0 -+version 1.3.0 - categories net - maintainers nomaintainer@macports.org - description A network monitoring daemon. -@@ -13,9 +13,9 @@ - - homepage http://rsug.itd.umich.edu/software/${name} - - master_sites ${homepage}/files/ --checksums md5 f0953b21cdb5eb327e40d4b215110b71 -+checksums md5 01532e67a596bfff6a54aa36face26ae - extract.suffix .tgz - platforms darwin - - - - - Now you may attach the patch file to a MacPorts Trac ticket for - the port author to evaluate. -
- -
- Creating Source Code Patches - - Necessary or useful patches to application source code should be - sent to the application developer (not the port author) so the - modifications may be included in the next version, and the port patch - eventually removed. - - - - Locate the file you wish to patch in its original location - within the unpacked source directory and make a duplicate of - it. - - %% cd foo-1.34/src -%% cp Makefile.in Makefile.in.orig - - - - Edit the file to make it as you want it to be after it is - fetched. - - - - Now use the Unix command diff -u to create - a "unified" diff patch file. - - %% cd foo-1.34 -%% diff -u Makefile.in.orig Makefile.in > patch-Makefile.in - - - You must execute the diff command in the - top-level of the unpacked source code. Otherwise the - patch command will look for the file to be - patched in the wrong place and fail. - - - - - A patch file that is a "unified" diff file is the easiest to - interpret by humans and this type should always be used for ports. - See the example below where a patch adds DESTDIR - support to a Makefile.in file. - - --- Makefile.in.orig 2007-06-01 16:30:47.000000000 -0700 -+++ Makefile.in 2007-06-20 10:10:59.000000000 -0700 -@@ -131,23 +131,23 @@ - $(INSTALL_DATA)/gdata $(INSTALL_DATA)/perl - - install-lib: -- -mkdir -p $(INSTALL_LIB) -+ -mkdir -p $(DESTDIR)$(INSTALL_LIB) - $(PERL) tools/install_lib -s src -l $(INSTALL_LIB) $(LIBS) -- cp $(TEXT) $(INSTALL_LIB)/ -+ cp $(TEXT) $(DESTDIR)$(INSTALL_LIB)/ - - - - Now you may place the patch - patch-Makefile.in in the path ${portpath}/files - of a local repository (or commit it to subversion) and use it in a - port using the patchfiles keyword. - - patchfiles patch-Makefile.in - - - You should make a patch file for each file to be patched, - though if you obtain a patch from another source that patches - multiple files it is permissible to use it that way. Patch - filenames should generally be of the form - "patch-<directory>-<filename>", as shown in this - example: patch-src-Makefile.in. - - - -
- -
- Manually Applying Patches - - Though MacPorts applies patch files automatically, you may want to - know how to apply patch files manually if you want to test patch files - you have created or you wish to apply uncommitted Portfile - patches. - - - - Change to the directory containing the file to be patched. In - this example, we'll apply a Portfile patch to the postfix - port. - - %% cd ${prefix}/var/macports/sources/rsync.macports.org/release/ports/mail/postfix - - - - Now apply the patch that is on the current user's desktop. The - patchfile knows the filename of the file to be patched. - - %% patch -p0 < ~/Desktop/Portfile-postfix.diff - - patching file Portfile - - -
-
- -
- Portfile Best Practices - - This section contains practical guidelines for creating Portfiles - that install smoothly and provide consistency between ports. The following - sections are on the TODO list. - -
- Don't Overwrite Config Files - - TODO: -
- -
- Install Docs and Examples - - TODO: -
- -
- Provide User Messages - - TODO: -
- -
- Use Variables - - TODO: Set variables so changing paths may be done in one place; - use them anytime it makes updates simpler: distname - ${name}-src-${version} -
-
-
\ No newline at end of file diff --git a/guide/new/xml/portfileref.xml b/guide/new/xml/portfileref.xml deleted file mode 100644 index 6f0f97e..0000000 --- a/guide/new/xml/portfileref.xml +++ /dev/null @@ -1,2172 +0,0 @@ - - - - Portfile Reference - - This chapter serves as a reference for the major elements of a - Portfile: port phases, dependencies, StartupItems, variables, keywords, and - Tcl extensions. - -
- Port Phases - - A MacPorts port has ten distinct phases. The MacPorts base is set to - perform default steps for applications that use the standard - configure, make, and make - install steps, but for applications that do not conform to this - behavior, installation phases may be declared in a Portfile to augment or override the default - behavior as described in the Portfile - Development chapter. - -
- Fetch - - Overview: Fetch the ${distfiles} from - ${master_sites} and place it in - ${prefix}/var/macports/distfiles. -
- -
- Checksum - - Overview: Compare ${checksums} specified in a - Portfile to the checksums of the fetched - ${distfiles}. -
- -
- Extract - - Overview: Unzip and untar the ${distfiles} into - the path ${prefix}/var/macports/build/..../work -
- -
- Patch - - Overview: Apply optional patch files - specified in ${patchfiles} to modify a port's source - code file(s). - - Details: Patch files are made using the diff command, and - MacPorts patches should be created as unified - diffs. -
- -
- Configure - - Overview: Execute the command "configure" in - ${workpath}. -
- -
- Build - - Overview: Execute the command "make" in - ${workpath}. -
- -
- Destroot - - Overview: Execute the command make install - DESTDIR=${destroot} in ${workpath}. - - Details: Understanding the destroot phase is critical to - understanding MacPorts, because, unlike some port systems, MacPorts - "stages" an installation into an intermediate location —not the final - file destination. There are two main advantages to this method. - - - - A port's files may be cleanly uninstalled because all files - and locations are tracked. - - - - Since a port's files are not installed into MacPorts directory - structure until an activation phase, a port may be deactivated - through MacPorts to allow activation of a different version of the - same port, thus allowing two versions of a port to be present, - though not both active, on a given host. - - - - - The $(DESTDIR) variable must be supported in - an application's Makefile for the MacPorts destroot phase to work - properly. Urge developers to fully support - $(DESTDIR) in their Makefiles. - - - At the beginning of the destroot phase, all the directories in the - file ${prefix}/etc/macports/prefix.mtree are - created. Any directories still empty upon completion of the destroot - phase are removed unless a directory is listed using a destroot.keepdirs - keyword. -
- -
- Archive - - Overview: Use tar to create a tarball of a port's destrooted files - and copy it to - ${prefix}/var/macports/packages/. -
- -
- Install - - Overview: Copy a port's destrooted files into - ${prefix}/var/macports/software. See Port Images in the MacPorts Internals chapter for - details. -
- -
- Activate - - Overview: Set hardlinks pointing - to ${prefix}/var/macports/software to point to - ${prefix}. -
-
- -
- Dependencies - - Free and open source software is highly modular, and MacPorts ports - often require modules not provided in a port's distribution to be - installed before a port may be installed, compiled, or run. These support - modules are generally other MacPorts ports, and the ports required to - satisfy prerequistes for a given port are called a port's - "dependencies". - - There are three types of dependencies in MacPorts: library, build, - and run dependencies. The dependency type is important for proper port - upgrade and uninstall behavior. For example, you may not uninstall a port - that is a library dependency for another port, though you may remove one - with a build dependency; likewise, upgrading a port will upgrade its - library and build dependencies also, but not its run dependencies. - -
- depends_lib - - The list of dependencies to check before phases - , , - , , and - . Library dependencies are needed both at build - time (for headers and libraries to link against) and at run time. - - depends_lib port:rrdtool -
- -
- depends_build - - The list of dependencies to check before phases - , , - , and . Build - dependencies are needed when software is compiled, but not needed at all - once the software is compiled and installed. - - depends_build port:gcc42 -
- -
- depends_run - - The list of dependencies to check before phases - , , and - . Run dependencies are needed when the software - is run, but not to compile it. - - depends_run port:apache2 -
- -
- Non-Port Dependencies - - Port dependencies should refer to other MacPorts ports whenever - possible. However, if satisfying a dependency with a port is not - practical or desirable for a special reason, you may specify - dependencies by having MacPorts test for an individual file by replacing - port: with one of the options lib: bin: or - path:. - - In this lib style dependency, if the file - libX11.6.x.dylib is not found in the library path - the XFree86 port will be installed to satisfy it. - - depends_lib lib:libX11.6:XFree86 - - In this bin style dependency, if the python - binary is not found in the shell's binary path the port python24 will be - installed. - - depends_build bin:python:python24 - - In this path style dependency, if the file - /usr/bin/nano is not found the nano port will be - installed. - - depends_run path:/usr/bin/nano:nano -
-
- -
- StartupItems - - StartupItems are keywords that create Mac OS X startup scripts for - launchd, the - facility intoduced by Apple beginning with OS X 10.4, that starts, stops, - and manages daemons, programs and scripts. Port authors use StartupItem - keywords within Portfiles to instruct MacPorts to generate and install - launchd scripts for daemons during port installation. - To support launchd, a wrapper program named daemondo is - provided by MacPorts base that serves as an adapter between OS X's - launchd and daemons that are normally started via - traditional rc.d style scripts. - - There are three categories of StartupItem keywords. Those that - trigger StartupItem creation and setup logging, those that specify - attributes of executable StartupItems, and those that - specify attributes of script StartupItems. - -
- StartupItem Creation & Logging - - The keywords in this section may be used with either - executable or script StartupItems (see - below). - - - - startupitem.create - - - Trigger the creation of a StartupItem. - - - Type: optional - - Default: - - Values: - - Example: - - - startupitem.create yes - - - - - startupitem.name - - - Sets the name for the StartupItem. - - - Type: required - - Default: none - - Values: any name - - Example: - - - startupitem.name OpenSSH - - - - - startupitem.logfile - - - Path to a logfile for logging events about the lifetime of - the StartupItem. Depending on the type of StartupItem, and the - manner in which it is started, standard output from the daemon may - also be directed to the logfile. - - - Type: optional - - Default: - - Values: /file/path/ - - Example: - - - startupitem.logfile ${prefix}/var/log/mydaemon.log - - - - - startupitem.logevents - - - Control whether or not to log events to the log file. If - logevents is set, events with timestamps are logged to the - logfile. - - - Type: optional - - Default: - - Values: - - Example: - - - startupitem.logevents yes - - - -
- -
- Executable StartupItems - - Executable StartupItems are slightly preferred over - script StartupItems because daemondo - launches the daemon directly, rather than indirectly via a startup - script, and therefore it automatically knows how to monitor the daemon - to restart it if it dies. The executable StartupItem - specifies the path and name of the daemon to be run in the - background. - - - For a given port, the executable StartupItem - keyword may not be used with any keywords in the script - StartupItem category. - - - - - startupitem.executable - - - Specifies the name of the daemon to be run in the - background. It may have multiple arguments, but they must be - appropriate for a call to exec; arbitrary shell code may not be - used. - - - Type: optional - - Default: - - Values: - /path/to/executable - - Example: - - - startupitem.executable "${prefix}/bin/nmicmpd" - - - -
- -
- Script StartupItems - - StartupItems of type script use - daemondo to launch a daemon via a startup script - provided in port distributions containing daemons. When using this type - of StartupItem, the startupitem.pidfile keyword may be used - so daemondo can monitor the daemon's PID and restart - it if it dies. - - - For a given port, StartupItem keywords in category - script may not be used with an - executable StartupItem keyword. - - - - - startupitem.start - - - Specify a shell script to start the daemon. - - - Type: optional - - Default: none - - Values: shell_script - - Example: - - - startupitem.start ${prefix}/share/mysql/mysql.server start - - - - - startupitem.stop - - - Specify a shell script to stop the daemon. - - - Type: optional - - Default: none - - Values: shell_script - - Example: - - - startupitem.start ${prefix}/share/mysql/mysql.server stop - - - - - startupitem.restart - - - Specify a shell script to restart the daemon. In the absence - of this key, the daemon will be restarted by taking the stop - action, followed by taking the start action. - - - Type: optional - - Default: none - - Values: shell_script - - Example: - - - startupitem.start ${prefix}/share/mysql/mysql.server restart - - - - - startupitem.pidfile - - - This keyword must be defined properly for - daemondo to be able to monitor daemons launched - via script StartupItems and restart them if they - die. It specifies two things: a process id (PID) file handling - method, and a pidfile name and path. - - - Type: optional - - Default: | - [${prefix}/var/run/${name}.pid] - - Values: - [/path/to/pidfile] - - Example: - - - startupitem.pidfile auto ${prefix}/var/run/${name}.pidfile - - Pidfile handling options: - - - - The daemon is not to use a - pidfile. - - - The daemon generates its own - pidfile. - - - The daemon never generates a - pidfile; the StartupItem must manage the pidfile on its - own. - - - The daemon generates its own - but will not delete it; the StartupItem must delete it. - - - - - - startupitem.init - - - Shell code that will be executed prior to any of the options - startupitem.start, startupitem.stop and - startupitem.restart. - - - Type: optional - - Default: - - Values: shell_script - - Example: - - - startupitem.init "PID=/var/run/dhcpd.pid" - - - -
-
- -
- Variables - - This section describes the MacPorts preset variables that may be - used within Portfiles. - -
- General - - These are the variables available to any - Portfile. - - - - prefix - - - Installation prefix, set in the system-wide configuration - file ${prefix}/etc/macports/macports.conf - —may be overridden on a per port basis. For example, aqua - applications are installed in - /Applications/MacPorts. - - - - - binpath - - - Default PATH to use in finding executables. Read - only. - - - - - libpath - - - Path to the MacPorts TCL libraries. Read only. - - - - - portpath - - - Path to the directory containing the downloaded Read - only. - - - - - filesdir - - - Path to port files relative to - ${portpath}. Read only. - - - - - workpath - - - Full path to work directory. Read only. - - - - - worksrcpath - - - Full path to extracted source code. Equivalent to - ${workpath}/${worksrcdir}. - - - - - destroot - - - Full path into which software will be destrooted. - Equivalent to ${workpath}/destroot. Read - only. - - - - - distpath - - - Location to store downloaded distfiles. Read only. - - - - - install.user - - - The Unix user at the time of port installation. - - - - - install.group - - - The Unix group at the time of port installation. - - - - - os.platform - - - Identifies platform type (ie, "darwin", "freebsd", etc). - Read only. - - - - - os.arch - - - Identifies hardware type (ie, "powerpc", "intel"). Read - only. - - - - - os.version - - - The version number of the host operating system (ie "8.0" - for Darwin 8.0). Read only. - - - - - os.major - - - The major version number of the host operating system (ie - "8" for Darwin 8.0). Read only. - - - -
- -
- PortGroup Variables - - In addition to the general Portfile type for - standard Unix applications and libraries, there are six optional - PortGroup types that provide special Portfile - handling to make creating a Portfile easier. - - - - perl5 - - - - python24 and python25 - - - - ruby - - - - xcode - - - - gnustep - - - - zope - - - - Some PortGroups provide additional variables when they are - declared within a Portfile. The additional variables provided by - PortGroups perl5, python, and ruby are listed below. You may view the - port Tcl code for each group in the directory - ${prefix}/share/macports/resources/port1.0/group. - - - - PortGroup perl5 - - - Description: The variables available to a - Portfile when the PortGroup - perl5 keyword is declared. - - - - perl5.version - - - The MacPorts Perl version. - - - - - - - perl5.bin - - - The Perl binary path (ie, - ${prefix}/bin/perl). - - - - - - - perl5.lib - - - Path to the Perl vendor directory. - - - - - - - perl5.archlib - - - Path to the Perl architecture-dependent modules - directory. - - - - - - - - - - PortGroup python2x - - - Description: The variables available to a - Portfile when the PortGroup - python2x keyword is declared. - - - - python.bin - - - The MacPorts Python binary location. - - - - - - - python.lib - - - The Python dynamic library and path (ie, - ${prefix}/lib/libpython2.x.dylib). - - - - - - - python.include - - - Path to the Python include directory. - - - - - - - python.pkgd - - - Path to the Python site-packages directory. (ie, - ${prefix}/lib/python2.4/site-packages). - - - - - - - - - - PortGroup ruby - - - Description: The variables available to a - Portfile when the PortGroup - ruby keyword is declared. - - - - ruby.version - - - The MacPorts Ruby version. - - - - - - - ruby.bin - - - The Ruby binary location. - - - - - - - ruby.lib - - - Path to the Ruby vendorlibdir directory (ie, - ${prefix}/lib/ruby/vendor_ruby/${ruby.version}) - - - - - ruby.arch - - - The name for the Ruby architecture-dependent directory - name (ie, i686-darwin8.10.1). - - - - - - - ruby.archlib - - - Path to the Ruby vendor archdir (ie, - ${ruby.lib}/${ruby.arch}). - - - - - - -
-
- -
- Keywords - - MacPorts keywords are used to specify required or optional items - within a Portfile, or to override default options - used by MacPorts base for individual ports when necessary. Keywords are to - be used within the "global" and "variant" sections of Portfiles, and not - within optional port phase declarations. In other words, port phase - keywords are not located within port phase declarations, but rather they - refer to port phases and set options for those - phases, and they take affect whether or not phase declarations have been - explicitly defined by a port author. - - The keywords listed below in category "global" specify information - for ports as a whole, whereas the keywords listed under a port phase - specify information to be used during a particular installation - phase. - -
- Using -append and -delete Keywords - - It is often necessary to add to a list of keyword values - previously set by MacPorts base or set by a prior Portfile keyword. In - these cases we generally don't want to replace the current list, but - rather to add or delete values from the list. For this purpose there are - "-append" and "-delete" keywords; they are listed below according to - keyword category. The three most common uses for these keywords are - given below. - - - - Preserve default configure arguments. - - MacPorts base sets the gcc compiler flags CFLAGS and LDFLAGS - for all ports using configure.cflags and - configure.ldflags, therefore to keep from - overwriting the default compiler flags use: - - - - configure.cflags-append - - - - configure.ldflags-append - - - - - - Preserve default dependencies within a PortGroup. - - Ports in a PortGroup have default library dependencies set by - MacPorts base. Therefore, never use depends_lib - in ports belonging to a PortGroup or it will overwrite the default - library dependencies. Instead, use: - - - - depends_lib-append - - - - - - Add or delete port dependencies, distfiles, patchfiles, etc. - for port variants. - - When a variant requires more or fewer dependencies, distfiles, - or patchfiles, you want to add or remove items to the list of - dependency keyword values that were set in the global section of the - Portfile. Use the appropriate keywords, for example: - - - - depends_lib-append or - depends_lib-delete - - - - distfiles-append or - distfiles-delete - - - - patchfiles-append or - patchfiles-delete - - - - -
- -
- Global Keywords - - The list of global keywords. - - - - PortSystem - - - The top line of every Portfile; it must be followed by a - blank line. It defines which version of the Portfile interpreter - will be used. - - PortSystem 1.0 - - - - - - - name - - - The name of the Port; it should be lowercase. - - - Type: required - - Default: none - - - name foo - - - - - version - - - The version of the ported software. - - version 1.23.45 - - - - - revision - - - Optional keyword (default is 0) that is used to track port - revisions. It should not be incremented for port revisions unless - it would benefit users to upgrade an installed port, and cleared - when the port is updated to a newer version. - - revision 1 - - - - - categories - - - The category under which the ported software falls. The - first category should be the same as the directory within which - the Portfile is stored; secondary and tertiary categories may be - selected. - - categories net security - - - - - maintainers - - - A port's maintainer is a person or persons who take - responsibility for keeping the port up-to-date, and the maintainer - keyword lists maintainer email addresses(s). However, many - maintainers wish to hide these addresses from spambots; to do so - follow these conventions: - - - - For addresses in domain @macports.org, simply omit the - domain name. - - - - For addresses in other domains, say - account@example.org, use the convention - example.org:account to specify the address. - - - - In the example below, the maintainer email addresses - jdoe@macports.org and - julesverne@example.org are hidden using these - conventions. - - maintainers jdoe \ - example.org:julesverne - - - - - description - - - A one-sentence description of the ported software. - - description A clasic shooter arcade game. - - - - - long_description - - - A long description of the ported software. Break long lines - with escaped newlines. - - description A classic shooter arcade game derived from \ - the game alien-munchers. Not suitable for \ - children under two years old. - - - - - homepage - - - Port application's homepage. - - homepage http://www.somesite.org/apps - - - - - platforms - - - The platforms on which the port has been tested. - - platforms darwin freebsd - - - - - depends_lib - - - Library dependencies are needed both at build time (for - headers and libraries to link against) and at run time. - - depends_lib port:rrdtool - - - depends_lib-append - - depends_lib-delete - - - - - - depends_build - - - Build dependencies are needed when software is compiled, but - not needed at all once the software is compiled and - installed. - - depends_build port:gcc42 - - - depends_build-append - - depends_build-delete - - - - - - depends_run - - - Run dependencies are needed when the software is run, but - not to compile it. - - depends_run port:apache2 - - - depends_run-append - - depends_run-delete - - - - -
- -
- Fetch - - The list of keywords related to the fetch phase. - - - - master_sites - - - A list of urls from which a port's download file(s) may be - retrieved. - - For ports that require only one download file, the list is - searched in order until a file matching - ${distname}${extract.suffix} is found. - - master_sites http://www.somesite.org/files/ \ - http://www.somemirror.org/somesite_org/files/ - - You may also use mirror sites predefined by MacPorts. Here - the sourceforge and gnu mirrors are used. - - master_sites sourceforge gnu - - When using mirror master_sites, the subdirectory - ${name} is checked on every mirror. If the - mirror subdirectory does not match ${name}, then you may specify - it using after the mirror separated by a colon. - - master_sites sourceforge:widget \ - gnu:widget - - For ports that must fetch multiple download files from - different locations, you may label the files with tags and match - the tags in a distfiles statement. The format is - mirror:subdirectory:tag. - - In the example below, file_one.tar.gz is fetched from - sourceforge mirrors in subdirectory ${name}; - file tagtwo.tar.gz is fetched from the gnu mirrors in subdirectory - sources. - - distfiles file_one.tar.gz:tagone \ - file_two.tar.gz:tagtwo \ - file_three.tar.gz - -master_sites sourceforge::tagone \ - gnu:sources:tagtwo - - - - - patch_sites - - - A list of sites from which a port's patchfiles may be - downloaded, where applicable. - - patch_sites ftp://ftp.patchcityrepo.com/pub/magic/patches - - - - - distname - - - The default distname is - ${name}-${version}. This keyword is used to - specify download files that do not meet this standard (excluding - the extract.suffix). - - distname ${name} - - - - - distfiles - - - The default distfile name is - ${distname}${extract.suffix}. This keyword is - used when a download file for a port is not - ${distname}${extract.suffix} or to used to - specify multiple download files. - - distfiles ${name}-dev_src.tgz - - - - - extract.suffix - - - The default value is .tar.gz, so is normally used to specify - file suffixes other than .tar.gz. - - extract.suffix .tar.gz - - - - - use_bzip2 - - - This keyword is for downloads that are tarred and bzipped. - It automatically sets these variables: - - - extract_suffix = .tar.bz2 - - extract.cmd = bzip - - - use_bzip2 yes - - - - - use_zip - - - This keyword is for downloads are zipped. It automatically - sets these variables: - - - extract.suffix = .zip - - extract.cmd = unzip - - extract.pre_args = -q - - extract.post_args = "-d $portpath/$workdir" - - - use_zip yes - - - -
- -
- Checksum - - The list of keywords related to the checksum phase. - - - - checksums - - - Checksum(s) of the distribution files. - - checksums md5 65b89365a65dcad71d4402b48 - - To download multiple files for a port, you must associate - the files with their checksums by including the filename. - - checksums ${distname}${extract.suffix} md5 65b89365a65dcad71d4402b44 \ - hobbit.tar.gz md5 65b89365a65dcad71d4402b48 - - - -
- -
- Extract - - The list of keywords related to the extract phase. - - - - extract.only - - - List of files to extract into - ${worksrcpath}; the default is - ${distfiles}. Only use if default extract - behavior is not correct for your port. - - extract.only foo.tar.gz bar.tar.gz - - - extract.only-append - - extract.only-delete - - - - - - extract.cmd - - - Command to perform extraction; the default is "gzip". - - extract.cmd gunzip - - - - - extract.pre_args - - - Arguments added to extract.cmd before a file name; the - default is "-dc". - - extract.pre_args -cd - - - extract.pre_args-append - - extract.pre_args-delete - - - - - - extract.args - - - Arguments to extract.cmd; the default is - ${distpath}/${distfile}. - - extract.args - - - extract.args-append - - extract.args-delete - - - - - - extract.post_args - - - Arguments added to extract.cmd after a file name; the - default is "| tar -xf". - - extract.post_args "| tar -xf - --exclude 'CVS'" - - - extract.post_args-append - - extract.post_args-delete - - - - -
- -
- Patch - - The list of keywords related to the patch phase. - - - - patchfiles - - - Specify patch files to be applied for a port. - - patchfiles patch-Makefile.in patch-source.c - - - patchfiles-append - - patchfiles-delete - - - - -
- -
- Configure - - The list of keywords related to the configure phase. - - MacPorts base sets some important default configure options, so - should use the -append version of most configure keywords so you don't - overwrite them. For example, MacPorts base sets default - configure.ldflags so you should always use - configure.cflags-append to set additional CFLAGS in - Portfiles. - - - - configure.env - - - Set environment variables for configure. - - configure.env CFLAGS=-I${prefix}/include - - - configure.env-append - - configure.env-delete - - - - - - configure.pre_args - - - Arguments added to configure.cmd before - ${configure.args}; the default is - --prefix=${prefix}. - - configure.pre_args --prefix=${prefix}/apache2 - - - configure.pre_args-append - - configure.pre_args-delete - - - - - - configure.args - - - Arguments to pass to configure. - - configure.args --etcdir=${prefix}/etc - - - configure.args-append - - configure.args-delete - - - - - - configure.cflags - - - Set CFLAGS compiler flags. - - configure.cflags -I/usr/X11R6/include - - - configure.cflags-append - - configure.cflags-delete - - - - - - configure.ldflags - - - Set LDFLAGS for the linker. - - configure.ldflags -L${prefix}/lib/db44 - - - configure.ldflags-append - - configure.ldflags-delete - - - - - - configure.cppflags - - - Set CPPFLAGS for passing to the C processor. - - configure.cppflags -I${prefix}/include/db4 - - - configure.cppflags-append - - configure.cppflags-delete - - - - - -
- Automake and Autoconf - - The list of configure keywords available for ports that need - automake and/or autoconf. - - - - use_automake - - - Whether or not to use automake; the default is - "no". - - use_automake yes - - - - - automake.env - - - Environment variables to pass to automake. - - automake.env CFLAGS=-I${prefix}/include - - - - - automake.args - - - Arguments to pass to automake. - - automake.args --foreign - - - - - automake.dir - - - Directory in which to run - ${automake.cmd}; the default is - ${worksrcpath}. - - automake.dir ./src - - - - - use_autoconf - - - Whether or not to use autoconf; the default is - "no". - - use_autoconf yes - - - - - autoconf.env - - - Environmental variables to pass to autoconf. - - autoconf.env CFLAGS=-I${prefix}/include/gtk12 - - - - - autoconf.args - - - Arguments to pass to autoconf. - - autoconf.args -l src/aclocaldir - - - - - autoconf.dir - - - Directory in which to run - ${autoconf.cmd}; the default is - ${worksrcpath}. - - autoconf.dir src - - - -
-
- -
- Build - - The list of keywords related to the build phase. - - - - build.cmd - - - Make command to run in ${worksrcdir}; the - default is "make". - - build.cmd pbxbuild - - - - - build.type - - - Defines which "make" is required: "gnu" or "bsd". Sets - build.cmd to either "gnumake" or "bsdmake" accordingly. - - build.type gnu - - - - - build.pre_args - - - Arguments to pass to ${build.cmd} before - ${build.args}; the default is - ${build.target.current}. - - build.pre_args -project AudioSlicer.xcode - - - build.pre_args-append - - build.pre_args-delete - - - - - - build.args - - - Arguments to pass to ${build.cmd}. - - build.args -DNOWARN - - - - - build.target - - - Target to pass to make for building everything; default is - "all". - - build.target.all all-src - - - -
- -
- Destroot - - The list of keywords related to the destroot phase. - - - - destroot.cmd - - - Install command to run relative to - ${worksrcdir}; defaults is - ${build.cmd}. - - destroot.cmd pbxbuild - - - - - destroot.type - - - Defines which "make" is required: either "gnu" or "bsd". - Sets install.cmd to either "gnumake" or "bsdmake" - accordingly. - - destroot.type gnu - - - - - destroot.pre_args - - - Arguments to pass to ${destroot.cmd} - before ${destroot.args}; default is - ${destroot.target}. - - destroot.pre_args -project AudioSlicer.xcode - - - destroot.pre_args-append - - destroot.pre_args-delete - - - - - - destroot.target - - - Install target to pass to - ${destroot.cmd}. - - destroot.target install-src - - - destroot.target-append - - destroot.target-delete - - - - - - destroot.destdir - - - Arguments passed to ${destroot.cmd} to install correctly - into the destroot. - - destroot.destdir prefix=${destroot}${prefix} - - - If an application's Makefile properly supports the DESTDIR - variable, MacPorts will automatically destroot the port - properly. A port must destroot properly or the port will not - install correctly, upgrade, or uninstall. If not, you may need - to set this variable, or even patch the application's - Makefile. - - - - - - destroot.keepdirs - - - A list of directories that should not be removed if empty - upon destroot completion. - - destroot.keepdirs \ - ${destroot}${prefix}/var/run \ - ${destroot}${prefix}/var/log \ - ${destroot}${prefix}/var/cache/mrtg - - - - - destroot.violate_mtree - - - MacPorts tests for compliance to the common directory - structure in ${prefix}; the default is "no". If a port is not - compliant with the standard, set it to "yes". - - destroot.violate_mtree yes - - - -
-
- -
- Tcl Extensions - - A MacPorts Portfile is a Tcl script, so it may contain any arbitrary - Tcl code you may learn about in a Tcl reference manual. - However, few authors will use arbitrary Tcl code; the vast majority will - use Tcl extensions that are coded within MacPorts for performing the most - common tasks needed for Portfiles. The list below is a list of Tcl - extensions provided by MacPorts base. - - - - file - - - Description. - - - - file copy - - - - - - - - - - file move - - - - - - - - - - file rename - - - - - - - - - - file delete [-force] - - - - - - - - - - file mkdir - - - - - - - - - - - macros - - - Description. - - - - copy - - - Shorthand alternative to "file copy". - - - - - - - move - - - Shorthand alternative to "file rename". - - - - - delete file ... - - - Deletes each of the given files/directories. Behaves - similarly to file delete -force except that file delete - -force will fail to delete directories properly on 10.3 - systems. - - - - - touch - - - Mimicks the BSD touch command. - - - - - ln - - - Mimickes the BSD ln command. - - - - - - - - xinstall - - - xinstall copies files and creates directories; it is - intended to be compatible with install(1). - - - - xinstall [-o owner] [-g group] [-m mode] [file1 file2 - ...] directory - - - Install the specified file(s) to a destination - directory. - - - - - - - xinstall [-o owner] [-g group] [-m mode] [-W dir] [file1 - file2 ...] directory - - - Change to and install file(s) to - a destination directory. - - - - - - - eval xinstall [-o owner] [-g group] [-m mode] [glob - regexp] directory - - - Install the file(s) matching the glob expression to a - destination directory. - - - - - - - xinstall -d [-o owner] [-g group] [-m mode] - directory - - - Create a directory. - - - - - Defaults: - - - - owner - - - - - group - - - - - mode - - - - - Examples: - - xinstall -m 640 ${worksrcpath}/doc README \ - ${destroot}${prefix}/share/doc/${name} - - xinstall -m 640 -W ${worksrcpath}/doc README INSTALL COPY \ - ${destroot}${prefix}/share/doc/${name} - - eval xinstall -m 640 [glob ${worksrcpath}/doc/*] \ - ${destroot}${prefix}/share/doc/${name} - - xinstall -d ${destroot}${prefix}/share/doc/${name} - - - - - reinplace - - - Description. - - Examples: - - example 1 - - example 2 - - example 3 - - - - - user/group - - - - - - - adduser username [uid=uid] [gid=gid] [passwd=passwd] - [realname=realname] [home=home] [shell=shell] - - - Add a new local user to the system with the specified - uid, gid, password, real name, home directory and login - shell. - - - - - - - existsuser username - - - Check if a local user exists. - - - - - - - nextuid - - - Returns the highest used uid plus one. - - - - - - - addgroup group [gid=gid] [passwd=passwd] - [realname=realname] [users=users] - - - Add a new local group to the system, with the - specified gid, password, real name, and with a list users as - members. - - - - - - - existsgroup group - - - Check if a local group exists and return the - corresponding gid. This can be used with adduser: - - addgroup foo -adduser foo gid=[existsgroup foo] - - - - - - - nextgid - - - Returns the highest used gid plus one. - - - - - - - - External program execution - - - Use only when .... - - - - - -
-
\ No newline at end of file diff --git a/guide/new/xml/project.xml b/guide/new/xml/project.xml deleted file mode 100644 index 471fe3e..0000000 --- a/guide/new/xml/project.xml +++ /dev/null @@ -1,438 +0,0 @@ - - - - MacPorts Project - - The MacPorts Project uses a system called Trac to file tickets to report bugs - and enhancement requests. Trac also provides an interface to browse the - MacPorts - Subversion repository. Though anyone may search Trac for tickets, - you must register for a Trac - account to create tickets. - -
- Creating Trac Tickets - - Once you are logged into Trac, you may click View Tickets - -> New Ticket and you will be presented with a new ticket - window shown in the graphic below. Follow the Trac ticket guidelines below - to fill out the form. - - - A new Trac ticket - - - - - - - - -
- Trac Ticket Guidelines - - There are certain conventions used to ensure that Trac tickets - convey as much accurate information as possible so problems and - contributions may be acted upon efficiently. - - - - Short Summary: [port] [version] [concise - description] - - - - Example: "rrdtool-1.2.23 Configure error - build - failure" - - - - - - Type: There are two main types of - tickets. - - - - defect - The default; any port/MacPorts - build/runtime failures and/or documentation corrections. - - - - enhancement - Tickets, with or without - patches, created to enhance something that isn't failing its - intended purpose. - - - - - - Full Description: All details that might - be relevant to someone reading the ticket. Wiki - formatting or attached log files should be used for large - text blocks. - - - - Priority: Assign a priority level to the - ticket. - - - - High - For MacPorts base build/runtime - failures and critical enhancement requests. - - - - Normal - The default. For normal port - failures, non-critical enhancement requests, non-critical port - failures. - - - - Low - For mostly cosmetic improvements, - documentation corrections/improvements, etc. - - - - Blank - Anything that doesn't fit the categories high, - normal, or low. - - - - - - Component: Set what part of the MacPorts - project the ticket is to be filed against. - - - - ports - Tickets related to - ports. - - - - base - Tickets related to MacPorts base - code. - - - - guide - Documentation enhancements and - error corrections, or patches to the MacPorts Guide. - - - - www - MacPorts website enhancements and - error corrections. - - - - infrastructure - Reserved for MacPorts - Portmgr team members. - - - - - - Assign To: For tickets on ports, select - the port maintainer's email address (use port info - <portname>). If the maintainer's email address is - nomaintainer@macports.org, select - macports-dev@lists.macosforge.org. - - - - Milestone: This is a ticket category that - allows for search and sorting tickets efficiently. - - - - Documentation - for tickets relating to - the documentation for Macports, including the MacPorts guide, - wiki and man pages. - - - - MacPorts base enhancements - for - tickets requesting or providing improvements to the - functionality of the MacPorts system. - - - - MacPorts base bugs - for tickets - reporting or fixing bugs in the MacPorts system. - - - - MacPorts x.y - indicates tickets - against the MacPorts base code that have been accepted and - scheduled for inclusion or fixing in the x.y MacPorts release - series. - - - This milestone may only be applied by MacPorts team - members. - - - - - Port Bugs - for tickets reporting or - fixing bugs in ports provided by MacPorts. - - - - Port Enhancements - for submissions - providing enhancements to ports provided by MacPorts. - - - - Port Requests - for requests for ports - to be added to MacPorts. - - - - Port Submissions - for submissions that - add a port to MacPorts. - - - - Port Updates - for submissions that - update a port provided by MacPorts. - - - - - - Version: Select the MacPorts version you - are using when it is applicable. - - - - Keywords: Type any keywords that might - help when searching for tickets (portname, type of problem, - etc). - - - - Cc: The reporter should enter his or her - email address and the maintainer's email address to notify both - parties when updates to the ticket occur. This is important, because - Trac currently only sends emails to addresses on the Cc list, not to - the reporter or the assignee. - - - - Attachments: Files may be attached only - after a ticket has been submitted. Once the ticket has been created - you will see the file attachment button. - - -
-
- -
- Contributing to MacPorts - - You may contribute new ports and port updates to current ports using - Trac tickets. - - - -
- New Ports - - Ports are contributed by following these steps. See Ticket - Submission Guidelines above for a description of all fields. - - - - Create a Trac ticket. - - - - Set the type to enhancement. - - - - Set the milestone to Port - Submissions. - - - - Attach the Portfile and any required - patchfiles to the ticket. - - -
- -
- Port Updates - - Portfile updates should always be contributed as - Portfile patches. Ports are contributed by - following these steps. See Ticket Submission Guidelines above for a - description of all fields. - - - - Create a Portfile patch with your changes - as described in Portfile Development. - - - - Create a Trac ticket. - - - - Set the type to enhancement. - - - - Set the milestone to Port - Enhancements. - - - - Attach your Portfile patch file and any new or changed patch - files (don't patch patches) to the ticket. - - -
-
- -
- Port Update Policies - - Port maintainers normally are given commit privileges to the - Subversion repository so they can make updates to their own ports. - However, the MacPorts project does not restrict commit privileges for - maintainers, so before a person other than a port's maintainer updates a - port it is a good practice to inform a port's maintainer. See details - below. - -
- Non-Maintainer Port Updates - - If you have a port update or bugfix for a port you do not - maintain, to respect the rights of the port maintainer you should follow - the following guidelines: - - - - If a port's maintainer is - nomaintainer@macports.org, you may feel free to make - updates and/or take maintainership of the port. - - - - If a port's maintainer contains the address - openmaintainer@macports.org, this means that the - author allows minor updates to the port without contacting him - first. But permission should still be sought for major - changes. - - - - Create patch file(s) as necessary, attach them to a Trac - ticket, and assign the ticket to the maintainer and Cc him or - her. - - - - Wait for a response from the maintainer. The maintainer should - apply the patches and close the ticket within 72 hours. - - - - However, for maintained ports without - openmaintainer@macports.org, there are some conditions - under which maintainer permission may be waived: - - - - If the maintainer does not respond within 72 hours, you or - another committer may review the patches and update the port. If you - are not a committer, you may email - macports-dev@lists.macosforge.org and request the - updates be committed. - - - - A port is abandoned by it's current maintainer. A port against - which a Port Abandoned ticket has been filed (see below) can be - updated without contacting the maintainer. - - - - A critical port is broken that affects many users. - - -
- -
- Port Abandonment - - A port may be considered abandoned if a bug has not been - acknowledged for more than three weeks after a ticket is filed. If this - time period has passed and you wish to initiate the Port Abandonment - protocol and volunteer as the new maintainer: - - - - File a new Trac ticket with the summary line [Port - Abandoned]. - - - - Refer to the original unacknowledged ticket in the Port - Abandoned ticket. - - - - The Port Abandoned ticket may be closed when the new - maintainer is assigned, and the original ticket with the updates may - be resolved when the updates attached to the original ticket are - committed. - - -
-
- -
- MacPorts Membership - - A requirement for a person to become a MacPorts committer is to - first become involved and contribute to the project. This may be done by - having a record of contributing to the project in several of the following - ways: - - - - Contributing new ports. - - - - Fixing bugs in existing ports. - - - - Volunteering as a maintainer of non-maintained ports. - - - - Involvement on MacPorts support lists. - - - - To apply for MacPorts commit rights, send a brief email to - macports-mgr@lists.macosforge.org entitled “Request for - commit rights” detailing the reasons for your application and why you - think you deserve commit rights (including evidence of contributions to - MacPorts as described above). -
-
\ No newline at end of file diff --git a/guide/new/xml/using.xml b/guide/new/xml/using.xml deleted file mode 100644 index 944d397..0000000 --- a/guide/new/xml/using.xml +++ /dev/null @@ -1,598 +0,0 @@ - - - - Using MacPorts - - This chapter describes using the port command, port - variants, common tasks, port binaries, and setting up an rsync replication - server. - -
- The port Command - - The MacPorts port command is the main utility - used to interact with MacPorts. It is used to update - Portfiles and the MacPorts infrastructure, and - install and manage ports. - -
- selfupdate - - The option should be used regularly to - the local ports tree with the global MacPorts - ports repository so you will have the latest port versions. It also - checks for new revisions of the MacPorts infrastructure, called MacPorts - base, and upgrades it when necessary. - - - Selfupdate runs only on Mac OS X. If you are running MacPorts on - another platform, you must use option sync to update the ports tree; to - update MacPorts base you must manually install a newer version from - source. - - - %% sudo port selfupdate - - Use the debug flag for verbose output. - - %% sudo port -d selfupdate - - DEBUG: Rebuilding the MacPorts base system if needed. -DEBUG: Synchronizing ports tree(s) -Synchronizing from rsync://rsync.macports.org/release/ports/ -DEBUG: /usr/bin/rsync -rtzv --delete-after rsync://rsync.macports.org/release/ports/ -receiving file list ... done - -[ ... trimmed ... ] - -Downloaded MacPorts base version 1.5 -The MacPorts installation is not outdated and so was not updated -DEBUG: Setting ownership to root -selfupdate done! -
- -
- sync - - The option performs a subset of - actions. It synchronizes the ports tree, as - does , but it does not check for upgrades to - MacPorts base. On OS X, unless there is a special reason not to do so, - you should run selfupdate. - - - For platforms other than OS X, is the only - way to get port updates because is - supported only on OS X. - -
- -
- list - - The option is used to get a list of all - available ports. The list of available ports is very long, so use search if you know a port's name or - part of it. - - %% port list -
- -
- search - - The option is very useful to find port - names by partial matches. - - %% port search rrd - - rrdtool net/rrdtool 1.2.23 Round Robin Database -php5-rrdtool www/php5-rrdtool 1.0 PHP 5 glue for RRDtool -
- -
- info - - The option is used to get information about - a port: description, maintainer, etc. - - %% port info flowd - - flowd 0.9, net/flowd (Variants: universal, darwin_8) -http://www.mindrot.org/flowd.html - -flowd is a small, fast and secure NetFlow collector. - -Platforms: darwin -Maintainers: nomaintainer@macports.org -
- -
- deps - - The option shows you the dependencies of a - port; dependencies are explicitly declared in - Portfiles. - - %% port deps apache2 - - apache2 has library dependencies on: - apr - apr-util - expat - openssl - pcre -
- -
- variants - - The option allows you to check what - variations of a port are available before you install it. Variants are a - way for port authors to provide options that may be invoked at install - time. See Invoking Port - Variants below to install ports that have variants. - - %% port variants nmap - - nmap has the variants: - universal - gtk2 - no_ssl - no_pcre -
- -
- install - - The option is used to install a port. See - Invoking Port Variants - below to install ports that have variants. - - %% sudo port install nmap - - - You may break up a port's installation into smaller steps for - troubleshooting by passing port a prior - installation phase such as fetch, configure, build, or destroot. See - section Port Phases for a - complete list of phases. - -
- -
- clean - - The option deletes all intermediate files - that MacPorts creates while building a port. A port - clean is also often necessary to remove corrupted tarballs - after a failed fetch phase. - - %% port clean --all vile - - - You may also clean files selectively by using options - , , or - . - -
- -
- uninstall - - The option will uninstall an installed - port. - - %% port uninstall vile - - - If a port as installed as a dependency of another port, - uninstall will not remove it unless you remove the dependent ports - first. To override this behavior, use the (force) - switch. But some ports need to be rebuilt if dependencies change, so - you should know what you are doing if you force uninstall - ports. - - %% port -f uninstall vile - -
- -
- contents - - The option displays the files that have - been installed by a given port. Uninstalled ports will always show no - contents. - - %% port contents render - - Port render contains: - /opt/local/include/X11/extensions/render.h - /opt/local/include/X11/extensions/renderproto.h - /opt/local/lib/pkgconfig/render.pc - /opt/local/share/doc/render/library - /opt/local/share/doc/render/protocol -
- -
- installed - - The option displays all installed - ports. - - %% port installed - - The following ports are currently installed: - aalib @1.4rc5_2 (active) - apr @1.2.8_0 (active) - apr-util @1.2.8_2 (active) - atk @1.18.0_0 (active) - -[ ... trimmed ...] - - wxWidgets @2.8.4_2+darwin_8 (active) - Xft2 @2.1.7_0 (active) - xrender @0.9.0_0+darwin_8 (active) - zlib @1.2.3_1 (active) -
- -
- outdated - - The option checks your installed ports - against the MacPorts repository to see if updated Portfiles have been - released since your ports were installed. - - %% port outdated - - -
- -
- upgrade - - The option upgrades installed ports and - their dependencies when a Portfile in the - repository has been updated after a port was installed. - - %% port upgrade gnome - - If you wish not to upgrade a port's dependencies, use the - switch. - - %% port -n upgrade gnome - - If you'd like to upgrade all outdated ports, use this - command. - - %% port upgrade outdated - - - The option by default does not - uninstall an upgraded port —it deactivates it. See section Port Images, and also Destroot and Activate phases in Port Phases. If you wish to - uninstall the old version, use the option. - - %% port -u upgrade vile - -
- -
- dependents - - The option reports what ports depend - upon a given port, if any. MacPorts learns about dependents during port - installation, so uninstalled ports will always report that there are no - dependents. - - %% port dependents openssl - - neon depends on openssl -gnome-vfs depends on openssl -libdap depends on openssl -
- -
- livecheck - - The livecheck option checks to see if the application - corresponding to a given port has been updated at the developer's - download site. It's especially useful for port maintainers, but others - may also wish to see if a port has the latest available distribution - source. See section Livecheck - for more information. - - %% port livecheck rrdtool - - rrdtool seems to have been updated (port version: 1.2.23, new version: 1.3beta1) - - - If livecheck finds no higher version at the port's download - site, it prints nothing. The option (debug) may be - used for detailed livecheck processing information. - - - -
-
- -
- Port Variants - - Variants are a way for port authors to provide options for a port - that may be chosen during the port install. To display the available - variants, if any, use this command: - - %% port variants fetchmail - - fetchmail has the variants: - universal - ssl: Support secure connections using OpenSSL - fetchmailconf: Install a graphical configurator - ntlm: Enable NTLM authentication - - - Variant descriptions are optional, so you may not see descriptions - for all variants. - - -
- Invoking Variants - - A variant can only be invoked when a port is installed. After you - have determined what variants a given port has, if any, you may install - a port using the variant as shown. - - %% port install fetchmail +ssl - - Port variant execution may be verified using the - port command with the verbose switch. - - %% port -v install fetchmail +ssl - - When a port is installed using a valid variant and specified - correctly, the verbose output will contain: - - DEBUG: Executing variant ssl provides ssl -
- -
- Negating Default Variants - - For an explanation of default variants see Port Variants. Default variants - are optional, and not all ports using variants have them. For ports with - default variants, you may install a port without them by negating - default variants using "-" as shown. - - %% port install fetchmail -ssl - - To verify that you have properly negated a default variant, you - may want to use verbose mode. But negated variants are simply not - reported in any way by the port command, as if they - did not exist. You will know you have successfully negated the default - variant in the example above if you do not see this - line in the verbose output. - - DEBUG: Executing variant ssl provides ssl -
-
- -
- Common Tasks - - This section lists common operations you may want to perform when - managing a MacPorts installation. - - TODO: Add content here. -
- -
- Port Binaries - - MacPorts can pre-compile ports into binaries so applications need - not be compiled when installing on a target system. MacPorts may create - two types of binaries: archives and packages. - -
- Binary Archives - - Binary archives can only be used on a target system running - MacPorts. Binary archives allow MacPorts utilities to begin installation - after the destroot phase and install and activate a port on the target - system. Binary archives are created using the port - command as shown. - - %% port -d archive logrotate - - Debug output is shown below. - - Creating logrotate-3.7_0.i386.tgz - -[ ... trimmed ... ] - -DEBUG: -./ -./+COMMENT -./+CONTENTS -./+DESC -./+PORTFILE -./+STATE -./opt/ -./opt/local/ -./opt/local/etc/ -./opt/local/etc/logrotate.conf -./opt/local/man/ -./opt/local/man/man8/ -./opt/local/man/man8/logrotate.8 -./opt/local/sbin/ -./opt/local/sbin/logrotate ----> Archive logrotate-3.7_0.i386.tgz packaged -DEBUG: Executing archive_finish ----> Archive for logrotate 3.7_0 packaged]]> - - Binary archive files are placed in - ${prefix}/var/macports/packages/. The archive file - type is set in the macports.conf file. The default - format is .tgz; other options are: tar, tbz, tbz2, xar, zip, cpgz, - cpio. -
- -
- Binary Packages - - Binary packages are standalone binary installers that are - precompiled; they do not require MacPorts on the target system. Binary - files created with MacPorts may be either .pkg (Mac OS X Installer - Packages), or RPM (RPM Package Manager) format. MacPorts may also - process a .pkg package into an OS X .dmg disk image file. You may create - binary packages with the port command as shown in - these examples. - - %% port pkg pstree - - You may create an OS X .dmg disk image file as shown. - - %% port dmg pstree - - You may compile a port into an RPM file as shown, in order to - install it onto a target that has RPM utilities or a full package - management system that can install RPMs. - - %% port rpm pstree - - All packages are placed in a port's work directory. -
- -
- Port Source Packages - - Source packages are bundles consisting of a - Portfile, patches if needed, and any other files - required to install the port. Port source packages are mainly used by - developers of package management and port submission frameworks. Port - source packages may be in either .portpkg (XAR) or .nosrc.rpm (SRPM) - format. -
-
- -
- Rsync Replication Servers - - You may setup an rsync replication server on your local network to - minimize internet delay and bandwidth when performing MacPorts selfupdate - operations. An rsync replication server pulls the latest MacPorts base, - development, and port sources from the remote MacPorts subversion server, - and then serves as the rsync source when rsync replication clients on the - local network perform selfupdates. - - - Only advanced users should attempt to setup an rsync replication - server. Before doing so, please contact portmgr @ - macports.org. If the scripts are run too often you may overload - the MacPorts rsync mirrors; it must not be run any more often than each - one-half hour and should be run at an offset to the clock half hour - periods. - - -
- Rsync Server Setup - - TODO: This section needs to be completed. - - To setup a host as an rsync replication server, follow these - steps: - - - - Change to the portmgr directory where - mprsyncup and rsync.repos - reside. - - %% cd ${prefix}/var/macports/sources/rsync.macports.org/release/ \ - base/portmgr - - - - - Set variables in the mprsyncup - script. - - ??? - - - - Set variables in the rsync.repos - script. - - ??? - - - - Set the mprsyncup and - rsync.repos scripts in - crontab. - - - If you wish to setup and rsync replication server, please - contact portmgr@macports.org. If the scripts are run too often you - may overload the MacPorts rsync mirrors; It must not be run any - more often than each one-half hour and should be run at an offset - to the clock half hour periods. - - - %% sudo crontab -e - - 15 * * * * ${prefix}/var/macports/sources/rsync.macports.org/release/ \ - base/portmgr/mprsyncup - - -
- -
- Rsync Client Setup - - To setup a host as an rsync replication client, follow these - steps: - - - - Change to the MacPorts etc/ directory to - access macports.conf and - sources.conf. - - %% cd ${prefix}/etc/macports - - - - In macports.conf, set variable - rsync_server to the rsync replication server; the - rsync_dir path variable can be left at the - default if you follow the defaults that the MacPorts mirrors - use. - - rsync_server rsync.mycompany.com - -rsync_dir release/base/ - - - - In sources.conf, set the URL rsync:// to - the rsync replication server. - - rsync://rsync.mycompany.com/release/ports/ - - -
-
-
\ No newline at end of file