[123796] branches/gsoc14-interactive/base

shasha at macports.org shasha at macports.org
Thu Aug 14 11:17:24 PDT 2014


Revision: 123796
          https://trac.macports.org/changeset/123796
Author:   shasha at macports.org
Date:     2014-08-14 11:17:24 -0700 (Thu, 14 Aug 2014)
Log Message:
-----------
Merge from trunk

Modified Paths:
--------------
    branches/gsoc14-interactive/base/ChangeLog
    branches/gsoc14-interactive/base/Doxyfile.in
    branches/gsoc14-interactive/base/Makefile.in
    branches/gsoc14-interactive/base/Mk/macports.autoconf.mk.in
    branches/gsoc14-interactive/base/aclocal.m4
    branches/gsoc14-interactive/base/config/RELEASE_URL
    branches/gsoc14-interactive/base/config/macports_version
    branches/gsoc14-interactive/base/configure
    branches/gsoc14-interactive/base/configure.ac
    branches/gsoc14-interactive/base/doc/Makefile.in
    branches/gsoc14-interactive/base/doc/macports.conf.5
    branches/gsoc14-interactive/base/doc/macports.conf.in
    branches/gsoc14-interactive/base/doc/port.1
    branches/gsoc14-interactive/base/doc/portgroup.7
    branches/gsoc14-interactive/base/doc/prefix.mtree.in
    branches/gsoc14-interactive/base/m4/foundation.m4
    branches/gsoc14-interactive/base/portmgr/ReleaseProcess
    branches/gsoc14-interactive/base/portmgr/dmg/postflight.in
    branches/gsoc14-interactive/base/portmgr/jobs/PortIndex2MySQL.tcl
    branches/gsoc14-interactive/base/portmgr/packaging/SETUP.chroot.sh
    branches/gsoc14-interactive/base/portmgr/packaging/buildall.sh
    branches/gsoc14-interactive/base/src/cregistry/Makefile.in
    branches/gsoc14-interactive/base/src/cregistry/registry.c
    branches/gsoc14-interactive/base/src/cregistry/registry.h
    branches/gsoc14-interactive/base/src/darwintracelib1.0/Makefile.in
    branches/gsoc14-interactive/base/src/machista1.0/libmachista.c
    branches/gsoc14-interactive/base/src/macports1.0/Makefile.in
    branches/gsoc14-interactive/base/src/macports1.0/get_systemconfiguration_proxies.c
    branches/gsoc14-interactive/base/src/macports1.0/macports.tcl
    branches/gsoc14-interactive/base/src/macports1.0/macports_autoconf.tcl.in
    branches/gsoc14-interactive/base/src/macports1.0/macports_dlist.tcl
    branches/gsoc14-interactive/base/src/macports1.0/macports_test_autoconf.tcl.in
    branches/gsoc14-interactive/base/src/macports1.0/sysctl.c
    branches/gsoc14-interactive/base/src/macports1.0/tests/macports.test
    branches/gsoc14-interactive/base/src/macports1.0/tests/test.tcl
    branches/gsoc14-interactive/base/src/package1.0/Makefile.in
    branches/gsoc14-interactive/base/src/package1.0/package.tcl
    branches/gsoc14-interactive/base/src/package1.0/portarchivefetch.tcl
    branches/gsoc14-interactive/base/src/package1.0/portmpkg.tcl
    branches/gsoc14-interactive/base/src/package1.0/portpkg.tcl
    branches/gsoc14-interactive/base/src/package1.0/portunarchive.tcl
    branches/gsoc14-interactive/base/src/package1.0/tests/Portfile
    branches/gsoc14-interactive/base/src/package1.0/tests/library.tcl
    branches/gsoc14-interactive/base/src/package1.0/tests/portdmg.test
    branches/gsoc14-interactive/base/src/package1.0/tests/portmdmg.test
    branches/gsoc14-interactive/base/src/package1.0/tests/portmpkg.test
    branches/gsoc14-interactive/base/src/package1.0/tests/portpkg.test
    branches/gsoc14-interactive/base/src/package1.0/tests/test.tcl
    branches/gsoc14-interactive/base/src/pextlib1.0/Pextlib.c
    branches/gsoc14-interactive/base/src/pextlib1.0/curl.c
    branches/gsoc14-interactive/base/src/pextlib1.0/filemap.c
    branches/gsoc14-interactive/base/src/pextlib1.0/flock.c
    branches/gsoc14-interactive/base/src/pextlib1.0/fs-traverse.c
    branches/gsoc14-interactive/base/src/pextlib1.0/mktemp.c
    branches/gsoc14-interactive/base/src/pextlib1.0/readline.c
    branches/gsoc14-interactive/base/src/pextlib1.0/realpath.c
    branches/gsoc14-interactive/base/src/pextlib1.0/rmd160cmd.c
    branches/gsoc14-interactive/base/src/pextlib1.0/setmode.c
    branches/gsoc14-interactive/base/src/pextlib1.0/strcasecmp.h
    branches/gsoc14-interactive/base/src/pextlib1.0/strsed.c
    branches/gsoc14-interactive/base/src/pextlib1.0/system.c
    branches/gsoc14-interactive/base/src/pextlib1.0/tracelib.c
    branches/gsoc14-interactive/base/src/pextlib1.0/tty.c
    branches/gsoc14-interactive/base/src/pextlib1.0/uid.c
    branches/gsoc14-interactive/base/src/pextlib1.0/xinstall.c
    branches/gsoc14-interactive/base/src/port/Makefile.in
    branches/gsoc14-interactive/base/src/port/port.tcl
    branches/gsoc14-interactive/base/src/port1.0/Makefile.in
    branches/gsoc14-interactive/base/src/port1.0/fetch_common.tcl
    branches/gsoc14-interactive/base/src/port1.0/port.tcl
    branches/gsoc14-interactive/base/src/port1.0/portconfigure.tcl
    branches/gsoc14-interactive/base/src/port1.0/portdestroot.tcl
    branches/gsoc14-interactive/base/src/port1.0/portdistcheck.tcl
    branches/gsoc14-interactive/base/src/port1.0/portextract.tcl
    branches/gsoc14-interactive/base/src/port1.0/portfetch.tcl
    branches/gsoc14-interactive/base/src/port1.0/portinstall.tcl
    branches/gsoc14-interactive/base/src/port1.0/portlint.tcl
    branches/gsoc14-interactive/base/src/port1.0/portlivecheck.tcl
    branches/gsoc14-interactive/base/src/port1.0/portload.tcl
    branches/gsoc14-interactive/base/src/port1.0/portsandbox.tcl
    branches/gsoc14-interactive/base/src/port1.0/porttrace.tcl
    branches/gsoc14-interactive/base/src/port1.0/portunload.tcl
    branches/gsoc14-interactive/base/src/port1.0/portutil.tcl
    branches/gsoc14-interactive/base/src/port1.0/tests/portload.test
    branches/gsoc14-interactive/base/src/port1.0/tests/test.tcl
    branches/gsoc14-interactive/base/src/programs/daemondo/Makefile.in
    branches/gsoc14-interactive/base/src/registry2.0/Makefile.in
    branches/gsoc14-interactive/base/src/registry2.0/portimage.tcl
    branches/gsoc14-interactive/base/src/registry2.0/portuninstall.tcl
    branches/gsoc14-interactive/base/src/registry2.0/receipt_sqlite.tcl
    branches/gsoc14-interactive/base/src/registry2.0/tests/depends.tcl
    branches/gsoc14-interactive/base/src/registry2.0/tests/entry.tcl
    branches/gsoc14-interactive/base/src/upgrade_sources_conf_default.tcl.in
    branches/gsoc14-interactive/base/tests/Makefile.in
    branches/gsoc14-interactive/base/tests/test/universal/test.tcl
    branches/gsoc14-interactive/base/tests/test/xcodeversion/Portfile
    branches/gsoc14-interactive/base/tests/test/xcodeversion/test.tcl
    branches/gsoc14-interactive/base/tests/test.tcl.in
    branches/gsoc14-interactive/base/vendor/Makefile.in

Added Paths:
-----------
    branches/gsoc14-interactive/base/doc/TODO
    branches/gsoc14-interactive/base/doc/archives.txt
    branches/gsoc14-interactive/base/doc/asciidoc-deps.tcl
    branches/gsoc14-interactive/base/doc/asciidoc.conf
    branches/gsoc14-interactive/base/doc/dependents-vs-dependencies.txt
    branches/gsoc14-interactive/base/doc/furtherdocs.txt
    branches/gsoc14-interactive/base/doc/global-flags.txt
    branches/gsoc14-interactive/base/doc/macports.conf.5.txt
    branches/gsoc14-interactive/base/doc/manpage.xsl
    branches/gsoc14-interactive/base/doc/port-activate.1
    branches/gsoc14-interactive/base/doc/port-activate.1.txt
    branches/gsoc14-interactive/base/doc/port-archive.1
    branches/gsoc14-interactive/base/doc/port-archive.1.txt
    branches/gsoc14-interactive/base/doc/port-archivefetch.1
    branches/gsoc14-interactive/base/doc/port-archivefetch.1.txt
    branches/gsoc14-interactive/base/doc/port-build.1
    branches/gsoc14-interactive/base/doc/port-build.1.soelim
    branches/gsoc14-interactive/base/doc/port-cat.1
    branches/gsoc14-interactive/base/doc/port-cat.1.txt
    branches/gsoc14-interactive/base/doc/port-cd.1
    branches/gsoc14-interactive/base/doc/port-cd.1.txt
    branches/gsoc14-interactive/base/doc/port-checksum.1
    branches/gsoc14-interactive/base/doc/port-checksum.1.soelim
    branches/gsoc14-interactive/base/doc/port-clean.1
    branches/gsoc14-interactive/base/doc/port-clean.1.txt
    branches/gsoc14-interactive/base/doc/port-configure.1
    branches/gsoc14-interactive/base/doc/port-configure.1.soelim
    branches/gsoc14-interactive/base/doc/port-contents.1
    branches/gsoc14-interactive/base/doc/port-contents.1.txt
    branches/gsoc14-interactive/base/doc/port-deactivate.1
    branches/gsoc14-interactive/base/doc/port-deactivate.1.soelim
    branches/gsoc14-interactive/base/doc/port-dependents.1
    branches/gsoc14-interactive/base/doc/port-dependents.1.txt
    branches/gsoc14-interactive/base/doc/port-deps.1
    branches/gsoc14-interactive/base/doc/port-deps.1.txt
    branches/gsoc14-interactive/base/doc/port-destroot.1
    branches/gsoc14-interactive/base/doc/port-destroot.1.soelim
    branches/gsoc14-interactive/base/doc/port-edit.1
    branches/gsoc14-interactive/base/doc/port-edit.1.txt
    branches/gsoc14-interactive/base/doc/port-extract.1
    branches/gsoc14-interactive/base/doc/port-extract.1.soelim
    branches/gsoc14-interactive/base/doc/port-fetch.1
    branches/gsoc14-interactive/base/doc/port-fetch.1.txt
    branches/gsoc14-interactive/base/doc/port-help.1
    branches/gsoc14-interactive/base/doc/port-help.1.txt
    branches/gsoc14-interactive/base/doc/port-install.1
    branches/gsoc14-interactive/base/doc/port-install.1.txt
    branches/gsoc14-interactive/base/doc/port-patch.1
    branches/gsoc14-interactive/base/doc/port-patch.1.soelim
    branches/gsoc14-interactive/base/doc/port-rdeps.1
    branches/gsoc14-interactive/base/doc/port-rdeps.1.soelim
    branches/gsoc14-interactive/base/doc/port-rev-upgrade.1
    branches/gsoc14-interactive/base/doc/port-rev-upgrade.1.txt
    branches/gsoc14-interactive/base/doc/port-selfupdate.1
    branches/gsoc14-interactive/base/doc/port-selfupdate.1.txt
    branches/gsoc14-interactive/base/doc/port-uninstall.1
    branches/gsoc14-interactive/base/doc/port-uninstall.1.txt
    branches/gsoc14-interactive/base/doc/port.1.txt
    branches/gsoc14-interactive/base/doc/portgroup.7.txt
    branches/gsoc14-interactive/base/doc/portundocumented.7
    branches/gsoc14-interactive/base/doc/portundocumented.7.txt
    branches/gsoc14-interactive/base/src/port1.0/portreload.tcl
    branches/gsoc14-interactive/base/tests/test/library.tcl.in
    branches/gsoc14-interactive/base/tests/test/trace/test.tcl.in

Removed Paths:
-------------
    branches/gsoc14-interactive/base/portmgr/fedora/
    branches/gsoc14-interactive/base/portmgr/freebsd/
    branches/gsoc14-interactive/base/portmgr/packaging/dpkgall.tcl
    branches/gsoc14-interactive/base/portmgr/packaging/rpmall.tcl
    branches/gsoc14-interactive/base/portmgr/ubuntu/
    branches/gsoc14-interactive/base/src/package1.0/portdpkg.tcl
    branches/gsoc14-interactive/base/src/package1.0/portrpm.tcl
    branches/gsoc14-interactive/base/src/package1.0/portsrpm.tcl
    branches/gsoc14-interactive/base/src/package1.0/tests/portdpkg.test
    branches/gsoc14-interactive/base/src/port/port-help.tcl
    branches/gsoc14-interactive/base/tests/test/trace/test.tcl

Property Changed:
----------------
    branches/gsoc14-interactive/base/
    branches/gsoc14-interactive/base/doc/
    branches/gsoc14-interactive/base/src/pextlib1.0/Makefile.in
    branches/gsoc14-interactive/base/src/pextlib1.0/sha2.c
    branches/gsoc14-interactive/base/src/pextlib1.0/sha2.h
    branches/gsoc14-interactive/base/src/registry2.0/receipt_sqlite.tcl
    branches/gsoc14-interactive/base/tests/test/
    branches/gsoc14-interactive/base/tests/test/trace/


Property changes on: branches/gsoc14-interactive/base
___________________________________________________________________
Modified: svn:ignore
   - autom4te.cache
config.log
config.status
Makefile
Doxyfile
tcldox
setupenv.bash

   + autom4te.cache
config.log
config.status
Makefile
Doxyfile
docs
setupenv.bash

Modified: svn:mergeinfo
   - /branches/gsoc08-privileges/base:37343-46937
/branches/gsoc09-logging/base:51231-60371
/branches/gsoc11-rev-upgrade/base:78828-88375
/branches/gsoc11-statistics/base:79520,79666
/branches/gsoc13-tests:106692-111324
/branches/universal-sanity/base:51872-52323
/branches/variant-descs-14482/base:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/users/perry/base-bugs_and_notes:45682-46060
/users/perry/base-select:44044-44692
   + /branches/gsoc08-privileges/base:37343-46937
/branches/gsoc09-logging/base:51231-60371
/branches/gsoc11-rev-upgrade/base:78828-88375
/branches/gsoc11-statistics/base:79520,79666
/branches/gsoc13-tests:106692-111324
/branches/universal-sanity/base:51872-52323
/branches/variant-descs-14482/base:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/trunk/base:119514-123795
/users/perry/base-bugs_and_notes:45682-46060
/users/perry/base-select:44044-44692

Modified: branches/gsoc14-interactive/base/ChangeLog
===================================================================
--- branches/gsoc14-interactive/base/ChangeLog	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/ChangeLog	2014-08-14 18:17:24 UTC (rev 123796)
@@ -12,7 +12,25 @@
       the registry database when MacPorts is aborted during a critical
       operation. (cal in r118297 and r118298)
 
-Release 2.3 (unreleased)
+    - Remove "support" for rpm and deb packages in MacPorts, leaving pkg/mpkg.
+      (afb in r123004)
+
+    - Remove deprecated rpm-vercomp function, ports should use vercmp instead.
+      (afb in r123005)
+
+Release 2.3.1 (2014-06-26 by jmr)
+    - Added macports-clang-3.4 to compiler fallback lists
+      (#43932, jeremyhu in r118735, r119034)
+
+    - Added quoting to PATH and MANPATH variables set by the installer, to
+      accomodate paths containing spaces (#43798, jmr in r121311)
+
+    - Update for automatic dependencies for fetch.type git, needed due to the
+      git-core port being renamed to git (#44052, ciserlohn in r120928)
+
+    - Fixed failure to sync using daily tarball (#43821, cal in r120382)
+
+Release 2.3 (2014-05-24 by jmr)
     - Use a private copy of Tcl 8.5 for MacPorts. Starting with this change
       features introduced with Tcl 8.5 can be used in Portfiles while still
       keeping support for Tiger and Leopard. (cal in r117621)

Modified: branches/gsoc14-interactive/base/Doxyfile.in
===================================================================
--- branches/gsoc14-interactive/base/Doxyfile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/Doxyfile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,236 +1,2283 @@
-# Doxyfile 1.5.4
+# Doxyfile 1.8.5
 
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
+
 #---------------------------------------------------------------------------
 # Project related configuration options
 #---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
 DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
 PROJECT_NAME           = @PACKAGE_NAME@
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
 PROJECT_NUMBER         = @PACKAGE_VERSION@
-OUTPUT_DIRECTORY       = 
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF          =
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO           =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       =
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
 CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-
+# Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto, Farsi,
+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en,
+# Korean, Korean-en, Latvian, Norwegian, Macedonian, Persian, Polish,
+# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish,
+# Turkish, Ukrainian and Vietnamese.
+# The default value is: English.
+
 OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
 BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
 REPEAT_BRIEF           = YES
-ABBREVIATE_BRIEF       = 
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF       =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
 ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
 INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
 FULL_PATH_NAMES        = YES
-STRIP_FROM_PATH        = 
-STRIP_FROM_INC_PATH    = 
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH        =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
+STRIP_FROM_INC_PATH    =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
 SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
 JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
 QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
 MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
 INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
+
 SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
 TAB_SIZE               = 8
-ALIASES                = 
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
+ALIASES                =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST              =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
 OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
 OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C.
+#
+# Note For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING      =
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT       = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT       = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
 BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
 CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
 SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
 DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
 SUBGROUPING            = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS  = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
 TYPEDEF_HIDES_STRUCT   = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE      = 0
+
 #---------------------------------------------------------------------------
 # Build related configuration options
 #---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
 EXTRACT_ALL            = YES
-EXTRACT_PRIVATE        = NO
-EXTRACT_STATIC         = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE        = YES
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE        = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
 EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
+
 EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
 EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
 HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
 HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
 HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
 HIDE_IN_BODY_DOCS      = NO
-INTERNAL_DOCS          = NO
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS          = YES
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
 CASE_SENSE_NAMES       = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
 HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
 SHOW_INCLUDE_FILES     = YES
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES   = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
 INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
+
 SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: NO.
+
 SORT_BRIEF_DOCS        = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
 SORT_BY_SCOPE_NAME     = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING  = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
+
 GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
+
 GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
 GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
 GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS       = 
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
 MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
 SHOW_USED_FILES        = YES
-SHOW_DIRECTORIES       = YES
-FILE_VERSION_FILTER    = 
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
+FILE_VERSION_FILTER    =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE            =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES         =
+
 #---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
+# Configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
 QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
 WARNINGS               = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
 WARN_IF_UNDOCUMENTED   = YES
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
 WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
 WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
 WARN_FORMAT            = "$file:$line: $text "
-WARN_LOGFILE           = 
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
+WARN_LOGFILE           =
+
 #---------------------------------------------------------------------------
-# configuration options related to the input files
+# Configuration options related to the input files
 #---------------------------------------------------------------------------
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
+
 INPUT                  = src
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
 INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
 FILE_PATTERNS          = *.tcl \
                          *.c \
                          *.m \
                          *.h
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
 RECURSIVE              = YES
-EXCLUDE                = 
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE                =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
 EXCLUDE_SYMLINKS       = NO
-EXCLUDE_PATTERNS       = 
-EXCLUDE_SYMBOLS        = 
-EXAMPLE_PATH           = 
-EXAMPLE_PATTERNS       = 
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS        =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
+EXAMPLE_PATH           =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
+EXAMPLE_PATTERNS       =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
 EXAMPLE_RECURSIVE      = NO
-IMAGE_PATH             = 
-INPUT_FILTER           = 
-FILTER_PATTERNS        = *.tcl=@prefix@/bin/tcl-dox
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
+IMAGE_PATH             =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+INPUT_FILTER           =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
 FILTER_SOURCE_FILES    = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
 #---------------------------------------------------------------------------
-# configuration options related to source browsing
+# Configuration options related to source browsing
 #---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
 SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
 INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
 STRIP_CODE_COMMENTS    = NO
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
 REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
 REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
 REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS        = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
 USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
 VERBATIM_HEADERS       = YES
+
 #---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
+# Configuration options related to the alphabetical class index
 #---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
 ALPHABETICAL_INDEX     = NO
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
 COLS_IN_ALPHA_INDEX    = 5
-IGNORE_PREFIX          = 
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX          =
+
 #---------------------------------------------------------------------------
-# configuration options related to the HTML output
+# Configuration options related to the HTML output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
 GENERATE_HTML          = YES
-HTML_OUTPUT            = tcldox
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT            = docs
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 HTML_FILE_EXTENSION    = .html
-HTML_HEADER            = 
-HTML_FOOTER            = 
-HTML_STYLESHEET        = 
-HTML_ALIGN_MEMBERS     = YES
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET        =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET  =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES       =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE    = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT    = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA  = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP         = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET        = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME  = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 GENERATE_HTMLHELP      = NO
-HTML_DYNAMIC_SECTIONS  = NO
-CHM_FILE               = 
-HHC_LOCATION           = 
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE               =
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION           =
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
 GENERATE_CHI           = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING     =
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
 BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
 TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE          = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION           =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP   = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID         = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 DISABLE_INDEX          = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW      = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 ENUM_VALUES_PER_LINE   = 4
-GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 TREEVIEW_WIDTH         = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW    = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE       = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT    = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX            = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT         = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS     =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE       =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE           = NO
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavours of web server based searching depending on the
+# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
+# searching and an index file used by the script. When EXTERNAL_SEARCH is
+# enabled the indexing and searching needs to be provided by external tools. See
+# the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH    = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH        = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL       =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE        = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID     =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS  =
+
 #---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
+# Configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
+
 GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 PAPER_TYPE             = a4wide
-EXTRA_PACKAGES         = 
-LATEX_HEADER           = 
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+EXTRA_PACKAGES         =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER           =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER           =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES      =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 PDF_HYPERLINKS         = NO
+
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 LATEX_BATCHMODE        = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
 LATEX_HIDE_INDICES     = NO
+
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE      = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE        = plain
+
 #---------------------------------------------------------------------------
-# configuration options related to the RTF output
+# Configuration options related to the RTF output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
 GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
 RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
 COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
 RTF_HYPERLINKS         = NO
-RTF_STYLESHEET_FILE    = 
-RTF_EXTENSIONS_FILE    = 
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE    =
+
 #---------------------------------------------------------------------------
-# configuration options related to the man page output
+# Configuration options related to the man page output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
 GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
 MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
 MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
 MAN_LINKS              = NO
+
 #---------------------------------------------------------------------------
-# configuration options related to the XML output
+# Configuration options related to the XML output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
+
 GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
 XML_OUTPUT             = xml
-XML_SCHEMA             = 
-XML_DTD                = 
+
+# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
+# validating XML parser to check the syntax of the XML files.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_SCHEMA             =
+
+# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
+# validating XML parser to check the syntax of the XML files.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_DTD                =
+
+# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
 XML_PROGRAMLISTING     = YES
+
 #---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
+# Configuration options related to the DOCBOOK output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK       = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT         = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://autogen.sf.net) file that captures the structure of
+# the code including all documentation. Note that this feature is still
+# experimental and incomplete at the moment.
+# The default value is: NO.
+
 GENERATE_AUTOGEN_DEF   = NO
+
 #---------------------------------------------------------------------------
-# configuration options related to the Perl module output
+# Configuration options related to the Perl module output
 #---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
+
 GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
 PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
 PERLMOD_PRETTY         = YES
-PERLMOD_MAKEVAR_PREFIX = 
+
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX =
+
 #---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
+# Configuration options related to the preprocessor
 #---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
 ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
+# in the source code. If set to NO only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 SEARCH_INCLUDES        = YES
-INCLUDE_PATH           = 
-INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = 
-EXPAND_AS_DEFINED      = 
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH           =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+INCLUDE_FILE_PATTERNS  =
+
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+PREDEFINED             =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all refrences to function-like macros that are alone on a line, have an
+# all uppercase name, and do not end with a semicolon. Such function macros are
+# typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
 SKIP_FUNCTION_MACROS   = YES
+
 #---------------------------------------------------------------------------
-# Configuration::additions related to external references   
+# Configuration options related to external references
 #---------------------------------------------------------------------------
-TAGFILES               = 
-GENERATE_TAGFILE       = 
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have an unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
+
+TAGFILES               =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+GENERATE_TAGFILE       =
+
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
+
 ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
+# the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
+
 EXTERNAL_GROUPS        = YES
+
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES         = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
 PERL_PATH              = /usr/bin/perl
+
 #---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
+# Configuration options related to the dot tool
 #---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
 CLASS_DIAGRAMS         = YES
-MSCGEN_PATH            = 
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            =
+
+# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
+
 HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: NO.
+
 HAVE_DOT               = YES
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS        = 0
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME           = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 UML_LOOK               = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS   = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 TEMPLATE_RELATIONS     = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 INCLUDE_GRAPH          = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_IMAGE_FORMAT       = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG        = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_PATH               = @prefix@/bin/
-DOTFILE_DIRS           = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS           =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS           =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
 DOT_CLEANUP            = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-SEARCHENGINE           = NO

Modified: branches/gsoc14-interactive/base/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -36,58 +36,58 @@
 
 install::
 	[ ! -f "$(DESTDIR)${sysconfdir}/macports/mp_version" ] || rm -vf "$(DESTDIR)${sysconfdir}/macports/mp_version"
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} "$(DESTDIR)${datadir}/macports/"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 setupenv.bash  "$(DESTDIR)${datadir}/macports/"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 $(srcdir)/macports-pubkey.pem  "$(DESTDIR)${datadir}/macports/"
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "$(DESTDIR)${datadir}/macports/"
+	$(INSTALL)    -o "${DSTUSR}" -g "${DSTGRP}" -m 444 setupenv.bash  "$(DESTDIR)${datadir}/macports/"
+	$(INSTALL)    -o "${DSTUSR}" -g "${DSTGRP}" -m 444 $(srcdir)/macports-pubkey.pem  "$(DESTDIR)${datadir}/macports/"
 # Only run these scripts when not building in a destroot
 ifeq ($(DESTDIR),)
 # create run user if it doesn't exist
 	@if test -n "${DSCL}" -a -n "${DSEDITGROUP}" ; then \
-        if ! ${DSCL} -q . -read /Groups/${RUNUSR} > /dev/null 2>&1 ; then \
+        if ! ${DSCL} -q . -read "/Groups/${RUNUSR}" > /dev/null 2>&1 ; then \
             if test `id -u` -eq 0; then \
                 echo "Creating group \"${RUNUSR}\"" ; \
-                ${DSEDITGROUP} -q -o create ${RUNUSR} ; \
+                ${DSEDITGROUP} -q -o create "${RUNUSR}" ; \
             else \
                 echo "Not creating group \"${RUNUSR}\" (not root)" ; \
             fi ; \
         fi ; \
-        if ! ${DSCL} -q . -list /Users/${RUNUSR} > /dev/null 2>&1 ; then \
+        if ! ${DSCL} -q . -list "/Users/${RUNUSR}" > /dev/null 2>&1 ; then \
             if test `id -u` -eq 0; then \
                 echo "Creating user \"${RUNUSR}\"" ; \
                 NEXTUID=501; \
                 while test -n "`${DSCL} -q /Search -search /Users UniqueID $$NEXTUID`"; do \
                     let "NEXTUID=NEXTUID+1"; \
                 done; \
-                ${DSCL} -q . -create /Users/${RUNUSR} UniqueID $$NEXTUID ; \
+                ${DSCL} -q . -create "/Users/${RUNUSR}" UniqueID $$NEXTUID ; \
                 \
-                ${DSCL} -q . -delete /Users/${RUNUSR} AuthenticationAuthority ; \
-                ${DSCL} -q . -delete /Users/${RUNUSR} PasswordPolicyOptions ; \
-                ${DSCL} -q . -delete /Users/${RUNUSR} dsAttrTypeNative:KerberosKeys ; \
-                ${DSCL} -q . -delete /Users/${RUNUSR} dsAttrTypeNative:ShadowHashData ; \
+                ${DSCL} -q . -delete "/Users/${RUNUSR}" AuthenticationAuthority ; \
+                ${DSCL} -q . -delete "/Users/${RUNUSR}" PasswordPolicyOptions ; \
+                ${DSCL} -q . -delete "/Users/${RUNUSR}" dsAttrTypeNative:KerberosKeys ; \
+                ${DSCL} -q . -delete "/Users/${RUNUSR}" dsAttrTypeNative:ShadowHashData ; \
                 \
-                ${DSCL} -q . -create /Users/${RUNUSR} RealName MacPorts ; \
-                ${DSCL} -q . -create /Users/${RUNUSR} Password \* ; \
-                ${DSCL} -q . -create /Users/${RUNUSR} PrimaryGroupID $$(${DSCL} -q . -read /Groups/${RUNUSR} PrimaryGroupID | /usr/bin/awk '{print $$2}') ; \
-                ${DSCL} -q . -create /Users/${RUNUSR} NFSHomeDirectory "${localstatedir}/macports/home" ; \
-                ${DSCL} -q . -create /Users/${RUNUSR} UserShell /usr/bin/false ; \
+                ${DSCL} -q . -create "/Users/${RUNUSR}" RealName MacPorts ; \
+                ${DSCL} -q . -create "/Users/${RUNUSR}" Password \* ; \
+                ${DSCL} -q . -create "/Users/${RUNUSR}" PrimaryGroupID $$(${DSCL} -q . -read "/Groups/${RUNUSR}" PrimaryGroupID | /usr/bin/awk '{print $$2}') ; \
+                ${DSCL} -q . -create "/Users/${RUNUSR}" NFSHomeDirectory "${localstatedir}/macports/home" ; \
+                ${DSCL} -q . -create "/Users/${RUNUSR}" UserShell /usr/bin/false ; \
             else \
                 echo "Not creating user \"${RUNUSR}\" (not root)" ; \
             fi ; \
         fi ; \
-        if test "$$(${DSCL} -q . -read /Users/${RUNUSR} NFSHomeDirectory)" = "NFSHomeDirectory: /var/empty" ; then \
+        if test "$$(${DSCL} -q . -read "/Users/${RUNUSR}" NFSHomeDirectory)" = "NFSHomeDirectory: /var/empty" ; then \
             if test `id -u` -eq 0; then \
                 echo "Updating home directory location for user \"${RUNUSR}\"" ; \
-                ${DSCL} -q . -create /Users/${RUNUSR} NFSHomeDirectory "${localstatedir}/macports/home" ; \
+                ${DSCL} -q . -create "/Users/${RUNUSR}" NFSHomeDirectory "${localstatedir}/macports/home" ; \
             else \
                 echo "Not updating home directory location for user \"${RUNUSR}\" (not root)" ; \
             fi ; \
         fi ; \
         if test `sw_vers -productVersion | /usr/bin/awk -F . '{print $$2}'` -eq 4 -a `id -u` -eq 0; then \
-            GID=`${DSCL} -q . -read /Groups/${RUNUSR} PrimaryGroupID | /usr/bin/awk '{print $$2}'` ; \
-            if test "`${DSCL} -q . -read /Users/${RUNUSR} PrimaryGroupID 2>/dev/null | /usr/bin/awk '{print $$2}'`" != "$$GID"; then \
+            GID=`${DSCL} -q . -read "/Groups/${RUNUSR}" PrimaryGroupID | /usr/bin/awk '{print $$2}'` ; \
+            if test "`${DSCL} -q . -read "/Users/${RUNUSR}" PrimaryGroupID 2>/dev/null | /usr/bin/awk '{print $$2}'`" != "$$GID"; then \
                 echo "Fixing PrimaryGroupID for user \"${RUNUSR}\"" ; \
-                ${DSCL} -q . -create /Users/${RUNUSR} PrimaryGroupID $$GID ; \
-                ${DSCL} -q . -create /Users/${RUNUSR} RealName MacPorts ; \
+                ${DSCL} -q . -create "/Users/${RUNUSR}" PrimaryGroupID $$GID ; \
+                ${DSCL} -q . -create "/Users/${RUNUSR}" RealName MacPorts ; \
             fi ; \
         fi ; \
     else \
@@ -115,12 +115,12 @@
 
 
 clean::
-	rm -rf tcldox
+	rm -rf docs
 
 distclean::
 	rm -f config.log config.status configure.lineno
 	rm -rf autom4te.cache ${DISTDIR}
-	rm -f Makefile Mk/macports.autoconf.mk portmgr/freebsd/Makefile
+	rm -f Makefile Mk/macports.autoconf.mk
 	rm -f Doxyfile
 	rm -f setupenv.bash
 	rm -f portmgr/dmg/postflight
@@ -151,11 +151,11 @@
 	${MAKE} SVNTAG=${DISTARCTAG} PKGNAME=${DISTARCNAME} _dopkg
 endif
 
-tcldox:
-	@[ -e "${prefix}/bin/doxygen" -a -e "${prefix}/bin/tcl-dox" -a -e "${prefix}/bin/dot" ] \
-		|| { echo "Install doxygen, tcl-dox and graphviz with MacPorts in ${prefix} first."; exit 1; }
+docs:
+	@[ -e "${prefix}/bin/doxygen" -a -e "${prefix}/bin/dot" ] \
+		|| { echo "Install doxygen and graphviz with MacPorts in ${prefix} first."; exit 1; }
 	${prefix}/bin/doxygen
 
 test::
 
-.PHONY: dist _gettag _pkgdist _dopkg tcldoc tcldox
+.PHONY: dist _gettag _pkgdist _dopkg docs

Modified: branches/gsoc14-interactive/base/Mk/macports.autoconf.mk.in
===================================================================
--- branches/gsoc14-interactive/base/Mk/macports.autoconf.mk.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/Mk/macports.autoconf.mk.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -70,4 +70,6 @@
 mpconfigdir		= @MPCONFIGDIR@
 portsdir		= @PORTSDIR@
 
+MACPORTS_VERSION	= @MACPORTS_VERSION@
+
 SILENT			= @

Modified: branches/gsoc14-interactive/base/aclocal.m4
===================================================================
--- branches/gsoc14-interactive/base/aclocal.m4	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/aclocal.m4	2014-08-14 18:17:24 UTC (rev 123796)
@@ -147,7 +147,7 @@
 				AC_MSG_ERROR([Don't know how to extract tarball $mp_tarball])
 				;;
 		esac
-		(cd "$mp_tarball_vendordir"; "$mp_tarball_extract_cmd" -d < "$ac_abs_confdir/$mp_tarball" | tar xf - || AC_MSG_ERROR([failed to extract $mp_tarball]))
+		(cd "$mp_tarball_vendordir"; umask 0022; "$mp_tarball_extract_cmd" -d < "$ac_abs_confdir/$mp_tarball" | tar xf - || AC_MSG_ERROR([failed to extract $mp_tarball]))
 	fi
 	if ! test -d "$ac_dir"; then
 		AC_MSG_ERROR([tarball $mp_tarball did not extract to $ac_dir])

Modified: branches/gsoc14-interactive/base/config/RELEASE_URL
===================================================================
--- branches/gsoc14-interactive/base/config/RELEASE_URL	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/config/RELEASE_URL	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1 +1 @@
-https://svn.macports.org/repository/macports/tags/release_2_2_1/base
+https://svn.macports.org/repository/macports/tags/release_2_3_1/base

Modified: branches/gsoc14-interactive/base/config/macports_version
===================================================================
--- branches/gsoc14-interactive/base/config/macports_version	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/config/macports_version	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1 +1 @@
-2.2.99
+2.3.99

Modified: branches/gsoc14-interactive/base/configure
===================================================================
--- branches/gsoc14-interactive/base/configure	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/configure	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for MacPorts 2.2.99.
+# Generated by GNU Autoconf 2.69 for MacPorts 2.3.99.
 #
 # Report bugs to <macports-dev at lists.macosforge.org>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='MacPorts'
 PACKAGE_TARNAME='macports'
-PACKAGE_VERSION='2.2.99'
-PACKAGE_STRING='MacPorts 2.2.99'
+PACKAGE_VERSION='2.3.99'
+PACKAGE_STRING='MacPorts 2.3.99'
 PACKAGE_BUGREPORT='macports-dev at lists.macosforge.org'
 PACKAGE_URL=''
 
@@ -727,6 +727,7 @@
 MKBOM
 MDLS
 MDFIND
+MAN
 MAKE
 LZMA
 LSBOM
@@ -1414,7 +1415,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures MacPorts 2.2.99 to adapt to many kinds of systems.
+\`configure' configures MacPorts 2.3.99 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1480,7 +1481,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of MacPorts 2.2.99:";;
+     short | recursive ) echo "Configuration of MacPorts 2.3.99:";;
    esac
   cat <<\_ACEOF
 
@@ -1621,7 +1622,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-MacPorts configure 2.2.99
+MacPorts configure 2.3.99
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2290,7 +2291,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by MacPorts $as_me 2.2.99, which was
+It was created by MacPorts $as_me 2.3.99, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2785,7 +2786,7 @@
 # Read in the MacPorts version from the base/config/macports_version file
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking MacPorts version" >&5
 $as_echo_n "checking MacPorts version... " >&6; }
-MACPORTS_VERSION=2.2.99
+MACPORTS_VERSION=2.3.99
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MACPORTS_VERSION" >&5
 $as_echo "$MACPORTS_VERSION" >&6; }
 
@@ -5178,6 +5179,46 @@
 fi
 
 
+# Extract the first word of "man", so it can be a program name with args.
+set dummy man; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MAN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MAN="$MAN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MAN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MAN=$ac_cv_path_MAN
+if test -n "$MAN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAN" >&5
+$as_echo "$MAN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
 # Extract the first word of "mdfind", so it can be a program name with args.
 set dummy mdfind; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -5298,8 +5339,10 @@
 fi
 
 
-# Extract the first word of "mtree", so it can be a program name with args.
-set dummy mtree; ac_word=$2
+for ac_prog in mtree fmtree
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 if ${ac_cv_path_MTREE+:} false; then :
@@ -5339,6 +5382,9 @@
 fi
 
 
+  test -n "$MTREE" && break
+done
+
 # Extract the first word of "open", so it can be a program name with args.
 set dummy open; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -6058,7 +6104,6 @@
 
 
 
-
 if test "x$MTREE" = "x"; then
     as_fn_error $? "mtree not found" "$LINENO" 5
 fi
@@ -7407,7 +7452,6 @@
 
 
 							#include <objc/objc.h>
-							#include <objc/objc-api.h>
 
 int
 main ()
@@ -7526,7 +7570,7 @@
 
 	if test x"${with_objc_foundation}" != x"no"; then
 
-	if test x"${with_objc_foundation}" == x || test x"${with_objc_foundation}" == x"apple"; then
+	if test x"${with_objc_foundation}" = x || test x"${with_objc_foundation}" = x"apple"; then
 		# '[' = '['
 		# ']' = ']'
 		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Apple Foundation library" >&5
@@ -7589,10 +7633,10 @@
 		ac_cv_objc_foundation_apple="no"
 	fi
 
-	if test x"${with_objc_foundation}" == x || test x${with_objc_foundation} == x"GNUstep"; then
+	if test x"${with_objc_foundation}" = x || test x"${with_objc_foundation}" = x"GNUstep"; then
 		GNUSTEP_CONFIG=/usr/bin/gnustep-config
-		if test ! -x "${GNUSTEP_CONFIG}" -a x"${GNUSTEP_SYSTEM_ROOT}" == x; then
-			if test x"${with_objc_foundation}" == x"GNUstep"; then
+		if test ! -x "${GNUSTEP_CONFIG}" -a x"${GNUSTEP_SYSTEM_ROOT}" = x; then
+			if test x"${with_objc_foundation}" = x"GNUstep"; then
 				as_fn_error $? "GNUSTEP_SYSTEM_ROOT is not defined in your environment, preventing the use of GNUstep's Foundation library" "$LINENO" 5
 			else
 				{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GNUSTEP_SYSTEM_ROOT is not defined in your environment, preventing the use of GNUstep's Foundation library" >&5
@@ -7674,7 +7718,7 @@
 	fi
 
 	# NeXT Foundation is prefered
-	if test x"${ac_cv_objc_foundation_apple}" == x"yes"; then
+	if test x"${ac_cv_objc_foundation_apple}" = x"yes"; then
 		OBJC_FOUNDATION="Apple"
 		OBJC_FOUNDATION_CPPFLAGS="${APPLE_FOUNDATION_CFLAGS}"
 		OBJC_FOUNDATION_LIBS="${APPLE_FOUNDATION_LIBS}"
@@ -7684,7 +7728,7 @@
 
 		{ $as_echo "$as_me:${as_lineno-$LINENO}: Using Apple Foundation library" >&5
 $as_echo "$as_me: Using Apple Foundation library" >&6;}
-	elif test x"${ac_cv_objc_foundation_gnustep}" == x"yes"; then
+	elif test x"${ac_cv_objc_foundation_gnustep}" = x"yes"; then
 		OBJC_FOUNDATION="GNUstep"
 		OBJC_FOUNDATION_CPPFLAGS="${GNUSTEP_CPPFLAGS}"
 		OBJC_FOUNDATION_LIBS="${GNUSTEP_LIBS}"
@@ -7694,7 +7738,7 @@
 
 		{ $as_echo "$as_me:${as_lineno-$LINENO}: Using GNUstep Foundation library" >&5
 $as_echo "$as_me: Using GNUstep Foundation library" >&6;}
-	elif test x"${with_objc_foundation}" = x"no"; then
+	elif test x"${with_objc_foundation}" = x"no" || test x"$MACOSX_VERSION" = x; then
 		OBJC_FOUNDATION="none"
 		{ $as_echo "$as_me:${as_lineno-$LINENO}: Not using Foundation implementation" >&5
 $as_echo "$as_me: Not using Foundation implementation" >&6;}
@@ -9706,7 +9750,7 @@
 				as_fn_error $? "Don't know how to extract tarball $mp_tarball" "$LINENO" 5
 				;;
 		esac
-		(cd "$mp_tarball_vendordir"; "$mp_tarball_extract_cmd" -d < "$ac_abs_confdir/$mp_tarball" | tar xf - || as_fn_error $? "failed to extract $mp_tarball" "$LINENO" 5)
+		(cd "$mp_tarball_vendordir"; umask 0022; "$mp_tarball_extract_cmd" -d < "$ac_abs_confdir/$mp_tarball" | tar xf - || as_fn_error $? "failed to extract $mp_tarball" "$LINENO" 5)
 	fi
 	if ! test -d "$ac_dir"; then
 		as_fn_error $? "tarball $mp_tarball did not extract to $ac_dir" "$LINENO" 5
@@ -10123,7 +10167,7 @@
 				as_fn_error $? "Don't know how to extract tarball $mp_tarball" "$LINENO" 5
 				;;
 		esac
-		(cd "$mp_tarball_vendordir"; "$mp_tarball_extract_cmd" -d < "$ac_abs_confdir/$mp_tarball" | tar xf - || as_fn_error $? "failed to extract $mp_tarball" "$LINENO" 5)
+		(cd "$mp_tarball_vendordir"; umask 0022; "$mp_tarball_extract_cmd" -d < "$ac_abs_confdir/$mp_tarball" | tar xf - || as_fn_error $? "failed to extract $mp_tarball" "$LINENO" 5)
 	fi
 	if ! test -d "$ac_dir"; then
 		as_fn_error $? "tarball $mp_tarball did not extract to $ac_dir" "$LINENO" 5
@@ -10535,7 +10579,7 @@
 				as_fn_error $? "Don't know how to extract tarball $mp_tarball" "$LINENO" 5
 				;;
 		esac
-		(cd "$mp_tarball_vendordir"; "$mp_tarball_extract_cmd" -d < "$ac_abs_confdir/$mp_tarball" | tar xf - || as_fn_error $? "failed to extract $mp_tarball" "$LINENO" 5)
+		(cd "$mp_tarball_vendordir"; umask 0022; "$mp_tarball_extract_cmd" -d < "$ac_abs_confdir/$mp_tarball" | tar xf - || as_fn_error $? "failed to extract $mp_tarball" "$LINENO" 5)
 	fi
 	if ! test -d "$ac_dir"; then
 		as_fn_error $? "tarball $mp_tarball did not extract to $ac_dir" "$LINENO" 5
@@ -10949,7 +10993,7 @@
 				as_fn_error $? "Don't know how to extract tarball $mp_tarball" "$LINENO" 5
 				;;
 		esac
-		(cd "$mp_tarball_vendordir"; "$mp_tarball_extract_cmd" -d < "$ac_abs_confdir/$mp_tarball" | tar xf - || as_fn_error $? "failed to extract $mp_tarball" "$LINENO" 5)
+		(cd "$mp_tarball_vendordir"; umask 0022; "$mp_tarball_extract_cmd" -d < "$ac_abs_confdir/$mp_tarball" | tar xf - || as_fn_error $? "failed to extract $mp_tarball" "$LINENO" 5)
 	fi
 	if ! test -d "$ac_dir"; then
 		as_fn_error $? "tarball $mp_tarball did not extract to $ac_dir" "$LINENO" 5
@@ -11382,7 +11426,7 @@
 
 
 # Output
-ac_config_files="$ac_config_files Doxyfile Makefile Mk/macports.autoconf.mk doc/Makefile doc/base.mtree doc/macosx.mtree doc/macports.conf doc/prefix.mtree doc/pubkeys.conf portmgr/freebsd/Makefile portmgr/dmg/postflight setupenv.bash src/Makefile src/cregistry/Makefile src/darwintracelib1.0/Makefile src/machista1.0/Makefile src/macports1.0/Makefile src/macports1.0/macports_autoconf.tcl src/macports1.0/macports_test_autoconf.tcl src/package1.0/Makefile src/package1.0/package_test_autoconf.tcl src/pextlib1.0/Makefile src/port/Makefile src/port1.0/Makefile src/port1.0/port_autoconf.tcl src/port1.0/port_test_autoconf.tcl src/programs/Makefile src/registry2.0/Makefile src/registry2.0/registry_autoconf.tcl tests/Makefile tests/test.tcl vendor/Makefile"
+ac_config_files="$ac_config_files Doxyfile Makefile Mk/macports.autoconf.mk doc/Makefile doc/base.mtree doc/macosx.mtree doc/macports.conf doc/prefix.mtree doc/pubkeys.conf portmgr/dmg/postflight setupenv.bash src/Makefile src/cregistry/Makefile src/darwintracelib1.0/Makefile src/machista1.0/Makefile src/macports1.0/Makefile src/macports1.0/macports_autoconf.tcl src/macports1.0/macports_test_autoconf.tcl src/package1.0/Makefile src/package1.0/package_test_autoconf.tcl src/pextlib1.0/Makefile src/port/Makefile src/port1.0/Makefile src/port1.0/port_autoconf.tcl src/port1.0/port_test_autoconf.tcl src/programs/Makefile src/registry2.0/Makefile src/registry2.0/registry_autoconf.tcl tests/Makefile tests/test.tcl tests/test/library.tcl tests/test/trace/test.tcl vendor/Makefile"
 
 
 ac_config_files="$ac_config_files src/dedup_portfiles.tcl"
@@ -11900,7 +11944,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by MacPorts $as_me 2.2.99, which was
+This file was extended by MacPorts $as_me 2.3.99, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -11962,7 +12006,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-MacPorts config.status 2.2.99
+MacPorts config.status 2.3.99
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -12095,7 +12139,6 @@
     "doc/macports.conf") CONFIG_FILES="$CONFIG_FILES doc/macports.conf" ;;
     "doc/prefix.mtree") CONFIG_FILES="$CONFIG_FILES doc/prefix.mtree" ;;
     "doc/pubkeys.conf") CONFIG_FILES="$CONFIG_FILES doc/pubkeys.conf" ;;
-    "portmgr/freebsd/Makefile") CONFIG_FILES="$CONFIG_FILES portmgr/freebsd/Makefile" ;;
     "portmgr/dmg/postflight") CONFIG_FILES="$CONFIG_FILES portmgr/dmg/postflight" ;;
     "setupenv.bash") CONFIG_FILES="$CONFIG_FILES setupenv.bash" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
@@ -12117,6 +12160,8 @@
     "src/registry2.0/registry_autoconf.tcl") CONFIG_FILES="$CONFIG_FILES src/registry2.0/registry_autoconf.tcl" ;;
     "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
     "tests/test.tcl") CONFIG_FILES="$CONFIG_FILES tests/test.tcl" ;;
+    "tests/test/library.tcl") CONFIG_FILES="$CONFIG_FILES tests/test/library.tcl" ;;
+    "tests/test/trace/test.tcl") CONFIG_FILES="$CONFIG_FILES tests/test/trace/test.tcl" ;;
     "vendor/Makefile") CONFIG_FILES="$CONFIG_FILES vendor/Makefile" ;;
     "src/dedup_portfiles.tcl") CONFIG_FILES="$CONFIG_FILES src/dedup_portfiles.tcl" ;;
     "src/images_to_archives.tcl") CONFIG_FILES="$CONFIG_FILES src/images_to_archives.tcl" ;;

Modified: branches/gsoc14-interactive/base/configure.ac
===================================================================
--- branches/gsoc14-interactive/base/configure.ac	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/configure.ac	2014-08-14 18:17:24 UTC (rev 123796)
@@ -145,10 +145,11 @@
 AC_PATH_PROG(LSBOM, [lsbom], [])
 AC_PATH_PROG(LZMA, [lzma], [])
 AC_PATH_PROG(MAKE, [make])
+AC_PATH_PROG(MAN, [man])
 AC_PATH_PROG(MDFIND, [mdfind], [])
 AC_PATH_PROG(MDLS, [mdls], [])
 AC_PATH_PROG(MKBOM, [mkbom], [])
-AC_PATH_PROG(MTREE, [mtree], [], [$PATH:/usr/sbin])
+AC_PATH_PROGS(MTREE, [mtree fmtree], [], [$PATH:/usr/sbin])
 AC_PATH_PROG(OPEN, [open], [])
 AC_PATH_PROG(OPENSSL, [openssl], [])
 AC_PATH_PROG(PATCH, [patch], [])
@@ -169,7 +170,6 @@
 
 AC_CHECK_PROG(HAVE_LAUNCHD, [launchd], [yes], [], [/sbin])
 
-
 if test "x$MTREE" = "x"; then
     AC_MSG_ERROR([mtree not found])
 fi
@@ -407,7 +407,6 @@
 	doc/macports.conf
 	doc/prefix.mtree
 	doc/pubkeys.conf
-	portmgr/freebsd/Makefile
 	portmgr/dmg/postflight
 	setupenv.bash
 	src/Makefile
@@ -429,6 +428,8 @@
 	src/registry2.0/registry_autoconf.tcl
 	tests/Makefile
 	tests/test.tcl
+	tests/test/library.tcl
+	tests/test/trace/test.tcl
 	vendor/Makefile
 ])
 


Property changes on: branches/gsoc14-interactive/base/doc
___________________________________________________________________
Modified: svn:ignore
   - Makefile
macports.conf
pubkeys.conf
base.mtree
prefix.mtree
macosx.mtree
*[0-9].gz

   + Makefile
macports.conf
pubkeys.conf
base.mtree
prefix.mtree
macosx.mtree
asciidoc.conf
*[0-9].gz
*[0-9].xml
*[0-9].html
.dep


Modified: branches/gsoc14-interactive/base/doc/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/doc/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/doc/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,10 +1,59 @@
 srcdir = @srcdir@
 VPATH  = @srcdir@
 
-MAN1=		port.1
+# If this is a selfupdate, we never want to run any tools from the target
+# prefix (could be broken or wrong architecture), otherwise try to use the
+# tools from the target prefix for generating man pages if they exist
+ifeq ($(SELFUPDATING),1)
+ASCIIDOC=
+XSLTPROC=
+else
+ASCIIDOC=	$(wildcard ${prefix}/bin/asciidoc)
+XSLTPROC=	$(wildcard ${prefix}/bin/xsltproc)
+endif
+
+ASCIIDOCFLAGS=	-f asciidoc.conf -a manversion=${MACPORTS_VERSION}
+XSLTFLAGS=	-nonet
+
+MAN1=	\
+		port-activate.1 \
+		port-archive.1 \
+		port-archivefetch.1 \
+		port-build.1 \
+		port-cat.1 \
+		port-cd.1 \
+		port-checksum.1 \
+		port-clean.1 \
+		port-configure.1 \
+		port-contents.1 \
+		port-deactivate.1 \
+		port-dependents.1 \
+		port-deps.1 \
+		port-destroot.1 \
+		port-edit.1 \
+		port-extract.1 \
+		port-fetch.1 \
+		port-help.1 \
+		port-install.1 \
+		port-patch.1 \
+		port-rdeps.1 \
+		port-rev-upgrade.1 \
+		port-selfupdate.1 \
+		port-uninstall.1 \
+		port.1 \
+
 MAN5=		macports.conf.5
-MAN7=		portfile.7 portstyle.7 porthier.7 portgroup.7
-CONF=       archive_sites.conf macports.conf pubkeys.conf sources.conf variants.conf
+MAN7=		portfile.7 portstyle.7 porthier.7 portgroup.7 portundocumented.7
+MAN=		${MAN1} ${MAN5} ${MAN7}
+
+# Filter man pages with existing source files
+MANTXT=		$(wildcard ${MAN:%=%.txt})
+MANSOELIM= 	$(wildcard ${MAN:%=%.soelim})
+# Only those can be transformed into XML and HTML
+MANXML=		${MANTXT:.txt=.xml}
+MANHTML=	${MANTXT:.txt=.html} ${MANSOELIM:.soelim=.html}
+
+CONF=		archive_sites.conf macports.conf pubkeys.conf sources.conf variants.conf
 INSTALLDIR=	${DESTDIR}${prefix}
 TOPSRCDIR=	..
 
@@ -12,10 +61,27 @@
 include ../Mk/macports.autoconf.mk
 endif
 
-all: ${MAN1:.1=.1.gz} ${MAN5:.5=.5.gz} ${MAN7:.7=.7.gz}
+all: man
 
+# Update "include::" dependencies
+.dep: $(wildcard *.txt) asciidoc-deps.tcl
+	$(INTREE_TCLSH) ./asciidoc-deps.tcl *.txt > $@
+
+-include .dep
+
+.PHONY: man xml html
+
+man: ${MAN} ${MAN:%=%.gz}
+
+xml: ${MANXML}
+
+html: ${MANHTML}
+
 clean:
+	rm -f ${MANTXT:%.txt=%.html} ${MANSOELIM:%.soelim=%.html}
+	rm -f ${MANTXT:%.txt=%.xml}
 	rm -f *.{1,5,7}.gz
+	rm -f .dep
 
 test:
 
@@ -32,18 +98,54 @@
 %.7.gz: %.7
 	gzip -c $^ > $@
 
+%: %.soelim
+	ln -f $< $@
+
+%.html: %.soelim
+	ln -sf $(shell basename $$(awk '{print $$2}' < $<)).html $@
+
+# Define these rules only if both asciidoc and xsltproc are available
+ifneq ($(and $(ASCIIDOC),$(XSLTPROC)),)
+%: %.xml manpage.xsl
+	$(XSLTPROC) $(XSLTFLAGS) manpage.xsl $<
+
+%.xml: %.txt asciidoc.conf
+	$(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $<
+
+%.html: %.txt asciidoc.conf
+	$(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b xhtml11 $<
+else
+man: ${MAN} ${MAN:%=%.gz}
+	@echo "* Warning: Using pre-generated man pages only."
+	@echo "* asciidoc and xsltproc are required to generate man pages from source."
+
+%.xml %.html: | %.txt
+	@echo "* In order to modify and generate output from these source files,"
+	@echo "* please install asciidoc and xsltproc or use"
+	@echo "*   $(MAKE) ASCIIDOC=.../bin/asciidoc XSLTPROC=../bin/xsltproc"
+	@echo "* with appropriate paths."
+	@exit 1
+endif
+
 install: all
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} "${INSTALLDIR}"
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} "${DESTDIR}${mpconfigdir}"
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "${INSTALLDIR}"
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "${DESTDIR}${mpconfigdir}"
 
 	< prefix.mtree $(MTREE) -U -e -p "${INSTALLDIR}" > /dev/null
 	< base.mtree $(MTREE) -U -e -p "${INSTALLDIR}" > /dev/null
+ifneq (,$(findstring darwin, at build_os@))
+ifneq (8, at OS_MAJOR@)
+# Tiger's chmod doesn't accept -h
+# mtree with umask 0077 doesn't get the permissions of the symlink right
+	chmod -h 755 "${INSTALLDIR}/man"
+endif
+endif
 
 	for f in ${CONF}; do \
-		$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 $$f "${DESTDIR}${mpconfigdir}/$${f}.default"; \
+		$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 "$$f" "${DESTDIR}${mpconfigdir}/$${f}.default"; \
 		if test ! -e "${DESTDIR}${mpconfigdir}/$$f" ; then \
 			set -x; \
-			$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 644 $$f "${DESTDIR}${mpconfigdir}"; \
+			$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 644 "$$f" "${DESTDIR}${mpconfigdir}"; \
 		fi; \
 	done
 
@@ -52,13 +154,11 @@
 	for m in ${MAN5}; do rm -f "${INSTALLDIR}/share/man/man5/$$m" ; done
 	for m in ${MAN7}; do rm -f "${INSTALLDIR}/share/man/man7/$$m" ; done
 
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} "${INSTALLDIR}/share/macports/install"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 644 base.mtree "${INSTALLDIR}/share/macports/install/"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 644 prefix.mtree "${INSTALLDIR}/share/macports/install/"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 644 macosx.mtree "${INSTALLDIR}/share/macports/install/"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 port.1.gz "${INSTALLDIR}/share/man/man1"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 macports.conf.5.gz "${INSTALLDIR}/share/man/man5"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 portfile.7.gz "${INSTALLDIR}/share/man/man7"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 portstyle.7.gz "${INSTALLDIR}/share/man/man7"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 porthier.7.gz "${INSTALLDIR}/share/man/man7"
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 portgroup.7.gz "${INSTALLDIR}/share/man/man7"
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "${INSTALLDIR}/share/macports/install"
+	$(INSTALL)    -o "${DSTUSR}" -g "${DSTGRP}" -m 644 base.mtree "${INSTALLDIR}/share/macports/install/"
+	$(INSTALL)    -o "${DSTUSR}" -g "${DSTGRP}" -m 644 prefix.mtree "${INSTALLDIR}/share/macports/install/"
+	$(INSTALL)    -o "${DSTUSR}" -g "${DSTGRP}" -m 644 macosx.mtree "${INSTALLDIR}/share/macports/install/"
+
+	for page in ${MAN1} ${MAN5} ${MAN7}; do \
+		$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 "$${page}.gz" "${INSTALLDIR}/share/man/man$$(echo $$page | sed -e 's/.*\.//')"; \
+	done

Copied: branches/gsoc14-interactive/base/doc/TODO (from rev 123795, trunk/base/doc/TODO)
===================================================================
--- branches/gsoc14-interactive/base/doc/TODO	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/TODO	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,8 @@
+TODO:
+
+    - [options="compact"] not supported by docbook for manpage output
+    - split global-options.txt into macro which allows display selection
+
+Missing new man pages:
+
+    - portarchives(7)

Copied: branches/gsoc14-interactive/base/doc/archives.txt (from rev 123795, trunk/base/doc/archives.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/archives.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/archives.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,13 @@
+PORT IMAGES
+-----------
+
+MacPorts has the ability to install multiple versions or different variant
+selections of the same port. The files will be stored in an intermediate
+location as 'archives', which allows to switch between the versions. Only one
+version can be active at a time. On activation, files will be copied to their
+intended place in 'prefix'.
+
+More information on this topic can be found in the
+guide:internals.images[The MacPorts Guide].
+
+To check the current status of a specific port, use *man:port-installed[1]*.

Copied: branches/gsoc14-interactive/base/doc/asciidoc-deps.tcl (from rev 123795, trunk/base/doc/asciidoc-deps.tcl)
===================================================================
--- branches/gsoc14-interactive/base/doc/asciidoc-deps.tcl	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/asciidoc-deps.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,35 @@
+#!/usr/bin/env tclsh
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4
+
+if {[llength $::argv] == 0} {
+    puts "Usage: ${::argv0} <*.txt>"
+    exit 1
+}
+
+# Dependency storage
+array set deps {}
+
+# Gather includes
+foreach file $::argv {
+    if {![file exists $file]} {
+        continue
+    }
+    set fd [open "$file" r]
+    set cont [read $fd]
+    close $fd
+    set deplst [regexp -all -inline -- {include::([^\[]*)\[\]} $cont]
+    if {[llength $deplst] > 0} {
+        set deps($file) $deplst
+    }
+}
+
+# Output
+foreach {file deplst} [array get deps] {
+    puts -nonewline "[file rootname $file].xml [file rootname $file].html:"
+    foreach {match dep} $deplst {
+        puts -nonewline " $dep"
+    }
+    puts ""
+}
+
+exit 0

Copied: branches/gsoc14-interactive/base/doc/asciidoc.conf (from rev 123795, trunk/base/doc/asciidoc.conf)
===================================================================
--- branches/gsoc14-interactive/base/doc/asciidoc.conf	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/asciidoc.conf	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,45 @@
+[attributes]
+mansource=MacPorts
+#manversion is in the Makefile
+manmanual=MacPorts Manual
+guideurl=http://guide.macports.org/
+wikiurl=https://trac.macports.org/wiki/
+
+## man: macro
+#
+# Usage: man:command[manpage-section]
+#
+# Note, {0} is the manpage section, while {target} is the command.
+#
+# Show link as: <command>(<section>); if section is defined, else just show
+# the command.
+
+[macros]
+(?su)[\\]?(?P<name>man):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=
+(?su)[\\]?(?P<name>guide):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=
+(?su)[\\]?(?P<name>wiki):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=
+
+# man: and guide: for docbook
+ifdef::backend-docbook[]
+[man-inlinemacro]
+<citerefentry>
+    <refentrytitle>{target}</refentrytitle>{0?<manvolnum>{0}</manvolnum>}
+</citerefentry>
+[guide-inlinemacro]
+<ulink url="{guideurl}#{target}">{0={guideurl}{target}}</ulink>
+[wiki-inlinemacro]
+<ulink url="{wikiurl}{target}">{0={target}}</ulink>
+endif::backend-docbook[]
+
+# man: and guide: for xhtml11
+ifdef::backend-xhtml11[]
+[man-inlinemacro]
+<a href="{target}{0?.{0}}.html">{target}{0?({0})}</a>
+[guide-inlinemacro]
+<a href="{guideurl}#{target}">{0={guideurl}{target}}</a>
+[wiki-inlinemacro]
+<a href="{wikiurl}{target}">{0={target}}</a>
+endif::backend-xhtml11[]
+
+[paradef-default]
+cmdsynopsis-style=template="verseparagraph"

Copied: branches/gsoc14-interactive/base/doc/dependents-vs-dependencies.txt (from rev 123795, trunk/base/doc/dependents-vs-dependencies.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/dependents-vs-dependencies.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/dependents-vs-dependencies.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,17 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+
+DEPENDENCY RELATIONS
+--------------------
+
+Do not confuse 'dependents' and 'dependencies' (or, shortened, 'deps').
+Refer to the following example to understand the difference:
+
+----
+portA --> portB
+----
+
+*portA* depends on *portB*, i.e., *portA* needs *portB* to run. Because of
+that, *portB* is a 'dependency' (or 'dep') of *portA*. After installing
+*portA*, *portB* has been automatically installed. At this point, *portA* has
+become a 'dependent' of *portB*. You can only uninstall *portB* once all of its
+dependents (i.e., including *portA*) have been uninstalled.

Copied: branches/gsoc14-interactive/base/doc/furtherdocs.txt (from rev 123795, trunk/base/doc/furtherdocs.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/furtherdocs.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/furtherdocs.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,15 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+Further documentation on MacPorts can be found in the following places:
+
+guide:[The MacPorts Guide]::
+    Detailed help and support guide
+wiki:[The MacPorts Wiki]::
+    MacPorts usage, development, and support
+wiki:MailingLists[Mailing Lists]::
+    Ask questions on the mailing lists:
+    macports-dev for base and Portfile development,
+    macports-users for user support questions
+wiki:FAQ[]::
+    Frequently Asked Questions
+wiki:ProblemHotlist[Problem Hotlist]::
+    Solutions for the most common error messages and other problems

Copied: branches/gsoc14-interactive/base/doc/global-flags.txt (from rev 123795, trunk/base/doc/global-flags.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/global-flags.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/global-flags.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,8 @@
+// $Id$
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+
+GLOBAL OPTIONS
+--------------
+
+Please see the section *GLOBAL OPTIONS* in the man:port[1] man page for a
+description of global port options.

Modified: branches/gsoc14-interactive/base/doc/macports.conf.5
===================================================================
--- branches/gsoc14-interactive/base/doc/macports.conf.5	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/doc/macports.conf.5	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,318 +1,683 @@
-.\" Copyright (c) 2005 Matt Anton <matt at opendarwin.org>
-.\" Copyright (c) 2007 Juan Manuel Palacios <jmpp at macports.org>
-.\" Copyright (c) 2007-2011 The MacPorts Project
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY Eric Melville AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.Dd May 22, 2007
-.Dt MACPORTS.CONF 5 "MacPorts"
-.Os 
-.Sh NAME
-macports.conf
-.Nd Configuration file of the MacPorts system
-.Sh DESCRIPTION
-.Nm macports.conf
-is the configuration file used to bootstrap the MacPorts system. This file is read by the
-.Nm port
-command and determines how it behaves. Lines beginning with '#' are comments, empty lines are ignored.
-The format is that of a simple key/value space or tab separated pair.
-.Pp
+'\" t
+.TH "MACPORTS\&.CONF" "5" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+macports.conf \- Configuration file of the MacPorts system
+.SH "DESCRIPTION"
+.sp
+\fBmacports\&.conf\fR is the configuration file used to bootstrap the MacPorts system\&. This file is read by the \fBport\fR command and determines how it behaves\&. Lines beginning with \fI#\fR are comments, empty lines are ignored\&. The format is that of a simple key/value space or tab separated pair\&.
+.sp
 The file contains entries of the form:
-.Pp
-.Dl Va "<key> <value>"
-.Pp
-The value of any given key can be referred to by the '${<keyname>}' abstraction, where <keyname> expands
-to the key in question.
-.Pp
-.Sh KEYS
-The following keys are used by
-.Nm port
-itself:
-.Pp
-.Bl -tag -width lc
-.It Va prefix
-Sets the directory where ports are installed. Any path may be used but those with spaces and/or non ascii
-characters should be avoided, as this can break some ports. This key is often referred to as '${prefix}'.
-.br
-.Ic Default:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+<key> <value>
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+The value of any given key can be referred to by the \fI${<keyname>}\fR abstraction, where \fI<keyname>\fR expands to the key in question\&.
+.SH "KEYS"
+.sp
+The following keys are used by \fBport\fR itself:
+.PP
+prefix
+.RS 4
+Sets the directory where ports are installed\&. Any path may be used but those with spaces and/or non ascii characters should be avoided, as this can break some ports\&. This key is often referred to as
+\fI${prefix}\fR\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 /opt/local
-.It Va portdbpath
-Directory where MacPorts keeps working data such as downloaded sources, installed ports' receipts
-and the main registry. The same path restrictions apply as for '${prefix}'.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+portdbpath
+.RS 4
+Directory where MacPorts keeps working data such as downloaded sources, installed ports\*(Aq receipts and the main registry\&. The same path restrictions apply as for
+\fI${prefix}\fR\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 ${prefix}/var/macports
-.It Va portdbformat
-Storage type to use for the MacPorts registry. The preferred format is "sqlite", with "flat"
-also available as a legacy format.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+portdbformat
+.RS 4
+Storage type to use for the MacPorts registry\&. The preferred format is "sqlite", with "flat" also available as a legacy format\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 sqlite
-.It Va applications_dir
-Directory containing Applications installed from ports.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+applications_dir
+.RS 4
+Directory containing Applications installed from ports\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 /Applications/MacPorts
-.It Va frameworks_dir
-Directory containing Frameworks installed from ports.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+frameworks_dir
+.RS 4
+Directory containing Frameworks installed from ports\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 ${prefix}/Library/Frameworks
-.It Va sources_conf
-Location of the sources file. This file enables rsync synchronization of the default ports tree with the
-MacPorts rsync server (through the "sync" target of the
-.Nm port
-command) and any other local tree(s) you might have.
-.br
-.Ic Default:
-${prefix}/etc/macports/sources.conf
-.It Va variants_conf
-Location of the optional global variants definition file, listing those that should be used in all installed
-ports if available.
-.br
-.Ic Default:
-${prefix}/etc/macports/variants.conf
-.It Va buildfromsource
-Controls whether ports are built from source or downloaded as pre-built
-archives. Setting to 'always' will never use archives, 'never' will always
-try to use an archive and fail if one is not available. 'ifneeded' will try to
-fetch an archive and fall back to building from source if that isn't possible.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+sources_conf
+.RS 4
+Location of the sources file\&. This file enables rsync synchronization of the default ports tree with the MacPorts rsync server (through the "sync" target of the port command) and any other local tree(s) you might have\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
+${prefix}/etc/macports/sources\&.conf
+T}
+.TE
+.sp 1
+.RE
+.PP
+variants_conf
+.RS 4
+Location of the optional global variants definition file, listing those that should be used in all installed ports if available\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
+${prefix}/etc/macports/variants\&.conf
+T}
+.TE
+.sp 1
+.RE
+.PP
+buildfromsource
+.RS 4
+Controls whether ports are built from source or downloaded as pre\-built archives\&. Setting to
+\fIalways\fR
+will never use archives,
+\fInever\fR
+will always try to use an archive and fail if one is not available\&.
+\fIifneeded\fR
+will try to fetch an archive and fall back to building from source if that isn\(cqt possible\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 ifneeded
-.It Va portarchivetype
-Format of archives in which to store port images. This controls both the type
-of archive created locally after building from source, and the type to request
-from remote servers. Changing this will not affect the usability of already
-installed archives; they can be of any supported type.
-.br
-Supported types are: tgz, tar, tbz, tbz2, tlz, txz, xar, zip, cpgz, cpio
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+portarchivetype
+.RS 4
+Format of archives in which to store port images\&. This controls both the type of archive cre\- ated locally after building from source, and the type to request from remote servers\&. Changing this will not affect the usability of already installed archives; they can be of any supported type\&.
+.TS
+tab(:);
+lt lt
+lt lt.
+T{
+\fBSupported types:\fR
+T}:T{
+tgz, tar, tbz, tbz2, tlz, txz, xar, zip, cpgz, cpio
+T}
+T{
+\fBDefault:\fR
+T}:T{
 tbz2
-.It Va configureccache
-Use ccache (C/C++ compiler cache). Requires that ccache has been installed.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+configureccache
+.RS 4
+Use ccache (C/C++ compiler cache)\&. Requires that ccache has been installed\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 no
-.It Va ccache_dir
+T}
+.TE
+.sp 1
+.RE
+.PP
+ccache_dir
+.RS 4
 Location where ccache stores its files
-.br
-.Ic Default:
-${portdbpath}/build/.ccache
-.It Va ccache_size
-Maximum size ccache may use.
-.br
-Use 'G', 'M', or 'K' suffix for giga-, mega- or kilobytes.
-.br
-.Ic Default:
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
+${portdbpath}/build/\&.ccache
+T}
+.TE
+.sp 1
+.RE
+.PP
+ccache_size
+.RS 4
+Maximum size ccache may use\&. Use
+\fIG\fR,
+\fIM\fR, or
+\fIK\fR
+suffix for giga\-, mega\- or kilobytes\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 2G
-.It Va configuredistcc
-Use distcc (distributed compiler). Requires that distcc has been installed.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+configuredistcc
+.RS 4
+Use distcc (distributed compiler)\&. Requires that distcc has been installed\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 no
-.It Va configurepipe
-Use pipes rather than intermediate files when compiling C/C++/etc (gcc -pipe)
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+configurepipe
+.RS 4
+Use pipes rather than intermediate files when compiling C/C++/etc (gcc \-pipe)
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 yes
-.It Va buildnicevalue
-Lowered scheduling priority (0-20) to use for make when building ports
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+buildnicevalue
+.RS 4
+Lowered scheduling priority (0\-20) to use for make when building ports
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 0
-.It Va buildmakejobs
-Number of simultaneous make jobs (commands) to use when building ports. 0 is a
-special value meaning "the number of CPU cores or the number of GB
-of physical memory plus one, whichever is less."
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+buildmakejobs
+.RS 4
+Number of simultaneous make jobs (commands) to use when building ports\&. 0 is a special value meaning "the number of CPU cores or the number of GB of physical memory plus one, whichever is less\&."
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 0
-.It Va portautoclean
-Automatic cleaning of the build directory of a given port after it has been installed.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+portautoclean
+.RS 4
+Automatic cleaning of the build directory of a given port after it has been installed\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 yes
-.It Va keeplogs 
-Keep logs for ports
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+keeplogs
+.RS 4
+Keep logs for ports\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 no
-.It Va build_arch
-The machine architecture to try to build for in normal use
-.br
-Regular architectures include: ppc, i386, ppc64, x86_64
-.br
-.Ic Default (10.6):
+T}
+.TE
+.sp 1
+.RE
+.PP
+build_arch
+.RS 4
+The machine architecture to try to build for in normal use\&.
+.TS
+tab(:);
+lt lt
+lt lt
+lt lt.
+T{
+\fBRegular architectures include:\fR
+T}:T{
+ppc, i386, ppc64, x86_64
+T}
+T{
+\fBDefault (10\&.6):\fR
+T}:T{
 x86_64 or i386 depending on hardware
-.br
-.Ic Default (10.5 and earlier):
+T}
+T{
+\fBDefault (10\&.5 and earlier):\fR
+T}:T{
 i386 or ppc depending on hardware
-.It Va universal_archs
-The machine architectures to use for +universal variant
-(multiple architecture entries should be space separated)
-.br
-Regular architectures include: ppc, i386, ppc64, x86_64
-.br
-.Ic Default (10.6):
+T}
+.TE
+.sp 1
+.RE
+.PP
+universal_archs
+.RS 4
+The machine architectures to use for +universal variant (multiple architecture entries should be space separated)\&.
+.TS
+tab(:);
+lt lt
+lt lt
+lt lt.
+T{
+\fBRegular architectures include:\fR
+T}:T{
+ppc, i386, ppc64, x86_64
+T}
+T{
+\fBDefault (10\&.6):\fR
+T}:T{
 x86_64 i386
-.br
-.Ic Default (10.5 and earlier):
+T}
+T{
+\fBDefault (10\&.5 and earlier):\fR
+T}:T{
 i386 ppc
-.It Va startupitem_type
-Set the default type of startupitems to be generated, overridable by Portfiles that explicitly state a
-startupitem.type key. If set to "default", then a type will be selected that's appropriate to the OS.
-Supported types are: none, SystemStarter, launchd, default, rcNG.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+startupitem_type
+.RS 4
+Set the default type of startupitems to be generated, overridable by Portfiles that explicitly state a startupitem\&.type key\&. If set to "default", then a type will be selected that\(cqs appropriate to the OS\&.
+.TS
+tab(:);
+lt lt
+lt lt.
+T{
+\fBSupported types:\fR
+T}:T{
+none, SystemStarter, launchd, default, rcNG\&.
+T}
+T{
+\fBDefault:\fR
+T}:T{
 default
-.It Va startupitem_install
-Option to install symlinks into /Library/LaunchAgents or
-/Library/LaunchDaemons; startupitem_install may be empty, "yes" or "no";
-if the option is NOT "no" then a symlink for the startupitem will be
-created in the appropriate system directory.
-.br
-.Ic Default:
-yes
-.It Va destroot_umask
-Umask value to use during the destrooting of a port.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+destroot_umask
+.RS 4
+Umask value to use during the destrooting of a port\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 022
-.It Va rsync_server
-Default rsync server to connect to when running "selfupdate" through the
-.Nm port
-command to update your base MacPorts infrastructure. While selfupdate also
-syncs the ports tree, it uses the settings from ${sources_conf} to do so.
-.br
-.Ic Default:
-rsync.macports.org
-.It Va rsync_dir
-Rsync directory from which to pull MacPorts sources from the rsync server.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+rsync_server
+.RS 4
+Default rsync server to connect to when running "selfupdate" through the port com\- mand to update your base MacPorts infrastructure\&. While selfupdate also syncs the ports tree, it uses the settings from ${sources_conf} to do so\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
+rsync\&.macports\&.org
+T}
+.TE
+.sp 1
+.RE
+.PP
+rsync_dir
+.RS 4
+Rsync directory from which to pull MacPorts sources from the rsync server\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 release/base/ (which pulls sources for the currently shipping MacPorts release)
-.It Va rsync_options
-Default rsync options to use when connecting to the rsync server.
-.br
-.Ic Default:
--rtzv --delete-after
-.It Va binpath
-Sets the directory search path for locating system executables used by MacPorts. This variable should contain
-the paths for locating utilities such as rsync, tar, cvs and others. Changing this is unsupported; don't do so
-unless you understand and accept the consequences.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+rsync_options
+.RS 4
+Default rsync options to use when connecting to the rsync server\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
+\-rtzv \-\-delete\-after
+T}
+.TE
+.sp 1
+.RE
+.PP
+binpath
+.RS 4
+Sets the directory search path for locating system executables used by MacPorts\&. This variable should contain the paths for locating utilities such as rsync, tar, cvs and others\&. Don\(cqt change this unless you understand and accept the consequences\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 ${prefix}/bin:${prefix}/sbin:/bin:/sbin:/usr/bin:/usr/sbin
-.It Va extra_env
-List of extra environment variables MacPorts should keep in the user's environment when sanitizing it.
-Changing this is unsupported.
-.It Va proxy_override_env
-Proxy support. Precedence is: env, macports.conf, System Preferences.
-That is, if it's set in the environment, that will be used instead of
-anything here or in System Preferences. Setting proxy_override_env to
-yes will cause any proxies set here (or in System Preferences if set
-there but not here) to override what's in the environment. Note that
-System Preferences doesn't have an rsync proxy definition. Also note, on
-10.5, sudo will clear many environment variables including those for
-proxy support. Equivalent environment variables: http_proxy,
-HTTPS_PROXY, FTP_PROXY, RSYNC_PROXY, NO_PROXY
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+extra_env
+.RS 4
+List of extra environment variables MacPorts should keep in the user\(cqs environment when sanitizing it\&. Changing this is unsupported\&.
+.RE
+.PP
+proxy_override_env
+.RS 4
+Proxy support\&. Precedence is: env, macports\&.conf, System Preferences\&. That is, if it\(cqs set in the environment, that will be used instead of anything here or in System Preferences\&. Setting proxy_override_env to yes will cause any proxies set here (or in System Preferences if set there but not here) to override what\(cqs in the environment\&. Note that System Preferences doesn\(cqt have an rsync proxy definition\&. Also note, on 10\&.5, sudo will clear many environment variables including those for proxy support\&. Equivalent environment variables: http_proxy, HTTPS_PROXY, FTP_PROXY, RSYNC_PROXY, NO_PROXY
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 yes
-.It Va proxy_http
+T}
+.TE
+.sp 1
+.RE
+.PP
+proxy_http
+.RS 4
 HTTP proxy
-.br
-.Ic Default:
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.It Va proxy_https
+T}
+.TE
+.sp 1
+.RE
+.PP
+proxy_https
+.RS 4
 HTTPS proxy
-.br
-.Ic Default:
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.It Va proxy_ftp
+T}
+.TE
+.sp 1
+.RE
+.PP
+proxy_ftp
+.RS 4
 FTP proxy
-.br
-.Ic Default:
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.It Va proxy_rsync
+T}
+.TE
+.sp 1
+.RE
+.PP
+proxy_rsync
+.RS 4
 rsync proxy
-.br
-.Ic Default:
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.It Va proxy_skip
-Hosts not to go through the proxy (comma-separated, applies to HTTP,
-HTTPS and FTP, but not rsync):
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+proxy_skip
+.RS 4
+Hosts not to go through the proxy (comma\-separated, applies to HTTP, HTTPS and FTP, but not rsync)\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.It Va host_blacklist
-Space separated list of download hosts that should not be used.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+host_blacklist
+.RS 4
+Space separated list of download hosts that should not be used\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.It Va preferred_hosts
-Space separated list of download hosts that should be used preferentially.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+preferred_hosts
+.RS 4
+Space separated list of download hosts that should be used preferentially\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.It Va revupgrade_autorun
-Controls whether the rev-upgrade action will be run automatically after
-upgrading ports.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+revupgrade_autorun
+.RS 4
+Controls whether the rev\-upgrade action will be run automatically after upgrading ports\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 yes
-.It Va revupgrade_mode
-Controls the rev-upgrade functionality which checks for broken linking and can
-rebuild ports to fix it. 'rebuild' means ports will automatically be rebuilt
-when broken linking is detected in their files, while 'report' means broken
-files will be scanned for and reported but the ports will not be rebuilt.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+revupgrade_mode
+.RS 4
+Controls the rev\-upgrade functionality which checks for broken linking and can rebuild ports to fix it\&.
+\fIrebuild\fR
+means ports will automatically be rebuilt when broken linking is detected in their files, while
+\fIreport\fR
+means broken files will be scanned for and reported but the ports will not be rebuilt\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 rebuild
-.It Va default_compiler
-Default value for configure.compiler. This can be a space-separated list. Later
-entries will be used if earlier entries are unavailable or blacklisted by a
-port. Setting this is unsupported.
-.br
-.Ic Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+default_compiler
+.RS 4
+Default value for configure\&.compiler\&. This can be a space\-separated list\&. Later entries will be used if earlier entries are unavailable or blacklisted by a port\&. Setting this is unsupported\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none (internal list based on Xcode version is normally used)
-.El
-.Sh FILES
-.Bl -tag -width
-.It Va ${prefix}/etc/macports/macports.conf
-Standard system-wide MacPorts configuration file.
-.It Va ~/.macports/macports.conf
-User-specific configuration override. This file, if found, will be used instead of the default file at
-${prefix}/etc/macports/macports.conf.
-.El
-.Sh SEE ALSO
-.Xr port 1 ,
-.Xr portfile 7 ,
-.Xr portgroup 7 ,
-.Xr portstyle 7
-.Xr porthier 7 ,
-.Sh AUTHORS
-.An "Juan Manuel Palacios" Aq jmpp at macports.org
-.An "Matt Anton" Aq matt at opendarwin.org
+T}
+.TE
+.sp 1
+.RE
+.SH "FILES"
+.PP
+${prefix}/etc/macports/macports\&.conf
+.RS 4
+Standard system\-wide MacPorts configuration file\&.
+.RE
+.PP
+~/\&.macports/macports\&.conf
+.RS 4
+User\-specific configuration override\&. This file, if found, will be used instead of the default file at ${prefix}/etc/macports/macports\&.conf\&.
+.RE
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBportfile\fR(7)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2007\-2011 The MacPorts Project
+Juan Manuel Palacios <jmpp at macports\&.org>
+Matt Anton <matt at opendarwin\&.org>
+Rainer Mueller <raimue at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/macports.conf.5.txt (from rev 123795, trunk/base/doc/macports.conf.5.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/macports.conf.5.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/macports.conf.5.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,255 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+macports.conf(5)
+================
+$Id$
+
+NAME
+----
+macports.conf - Configuration file of the MacPorts system
+
+DESCRIPTION
+-----------
+*macports.conf* is the configuration file used to bootstrap the MacPorts
+system. This file is read by the *port* command and determines how it behaves.
+Lines beginning with '#' are comments, empty lines are ignored. The format is
+that of a simple key/value space or tab separated pair.
+
+The file contains entries of the form:
+--------
+<key> <value>
+--------
+
+The value of any given key can be referred to by the '$\{<keyname>\}'
+abstraction, where '<keyname>' expands to the key in question.
+
+KEYS
+----
+// Set default style for second-level labeled lists in this section
+:listdef-labeled2.style: horizontal
+
+The following keys are used by *port* itself:
+
+prefix::
+    Sets the directory where ports are installed. Any path may be used but those
+    with spaces and/or non ascii characters should be avoided, as this can break
+    some ports. This key is often referred to as '$\{prefix\}'.
+    *Default:*;; /opt/local
+
+portdbpath::
+    Directory where MacPorts keeps working data such as downloaded sources,
+    installed ports' receipts and the main registry. The same path restrictions
+    apply as for '$\{prefix\}'.
+    *Default:*;; $\{prefix\}/var/macports
+
+portdbformat::
+    Storage type to use for the MacPorts registry. The preferred format is
+    "sqlite", with "flat" also available as a legacy format.
+    *Default:*;; sqlite
+
+applications_dir::
+    Directory containing Applications installed from ports.
+    *Default:*;; /Applications/MacPorts
+
+frameworks_dir::
+    Directory containing Frameworks installed from ports.
+    *Default:*;; $\{prefix\}/Library/Frameworks
+
+sources_conf::
+    Location of the sources file. This file enables rsync synchronization of the
+    default ports tree with the MacPorts rsync server (through the "sync" target
+    of the port command) and any other local tree(s) you might have.
+    *Default:*;; $\{prefix\}/etc/macports/sources.conf
+
+variants_conf::
+    Location of the optional global variants definition file, listing those that
+    should be used in all installed ports if available.
+    *Default:*;; $\{prefix\}/etc/macports/variants.conf
+
+buildfromsource::
+    Controls whether ports are built from source or downloaded as pre-built
+    archives. Setting to 'always' will never use archives, 'never' will always
+    try to use an archive and fail if one is not available. 'ifneeded' will try
+    to fetch an archive and fall back to building from source if that isn't
+    possible.
+    *Default:*;; ifneeded
+
+portarchivetype::
+    Format of archives in which to store port images. This controls both the
+    type of archive cre- ated locally after building from source, and the type
+    to request from remote servers. Changing this will not affect the usability
+    of already installed archives; they can be of any supported type.
+    *Supported types:*;; tgz, tar, tbz, tbz2, tlz, txz, xar, zip, cpgz, cpio
+    *Default:*;; tbz2
+
+configureccache::
+    Use ccache (C/C++ compiler cache). Requires that ccache has been installed.
+    *Default:*;; no
+
+ccache_dir::
+    Location where ccache stores its files
+    *Default:*;; $\{portdbpath\}/build/.ccache
+
+ccache_size::
+    Maximum size ccache may use. Use 'G', 'M', or 'K' suffix for giga-, mega- or
+    kilobytes.
+    *Default:*;; 2G
+
+configuredistcc::
+    Use distcc (distributed compiler). Requires that distcc has been installed.
+    *Default:*;; no
+
+configurepipe::
+    Use pipes rather than intermediate files when compiling C/C++/etc (gcc
+    -pipe)
+    *Default:*;; yes
+
+buildnicevalue::
+    Lowered scheduling priority (0-20) to use for make when building ports
+    *Default:*;; 0
+
+buildmakejobs::
+    Number of simultaneous make jobs (commands) to use when building ports. 0 is
+    a special value meaning "the number of CPU cores or the number of GB of
+    physical memory plus one, whichever is less."
+    *Default:*;; 0
+
+portautoclean::
+    Automatic cleaning of the build directory of a given port after it has been
+    installed.
+    *Default:*;; yes
+
+keeplogs::
+    Keep logs for ports.
+    *Default:*;; no
+
+build_arch::
+    The machine architecture to try to build for in normal use.
+    *Regular architectures include:*;; ppc, i386, ppc64, x86_64
+    *Default (10.6):*;; x86_64 or i386 depending on hardware
+    *Default (10.5 and earlier):*;; i386 or ppc depending on hardware
+
+universal_archs::
+    The machine architectures to use for +universal variant (multiple
+    architecture entries should be space separated).
+    *Regular architectures include:*;; ppc, i386, ppc64, x86_64
+    *Default (10.6):*;; x86_64 i386
+    *Default (10.5 and earlier):*;; i386 ppc
+
+startupitem_type::
+    Set the default type of startupitems to be generated, overridable by
+    Portfiles that explicitly state a startupitem.type key. If set to "default",
+    then a type will be selected that's appropriate to the OS.
+    *Supported types:*;; none, SystemStarter, launchd, default, rcNG.
+    *Default:*;; default
+
+destroot_umask::
+    Umask value to use during the destrooting of a port.
+    *Default:*;; 022
+
+rsync_server::
+    Default rsync server to connect to when running "selfupdate" through the
+    port com- mand to update your base MacPorts infrastructure. While selfupdate
+    also syncs the ports tree, it uses the settings from $\{sources_conf\} to do
+    so.
+    *Default:*;; rsync.macports.org
+
+rsync_dir::
+    Rsync directory from which to pull MacPorts sources from the rsync server.
+    *Default:*;; release/base/ (which pulls sources for the currently shipping
+    MacPorts release)
+
+rsync_options::
+    Default rsync options to use when connecting to the rsync server.
+    *Default:*;; -rtzv --delete-after
+
+binpath::
+    Sets the directory search path for locating system executables used by
+    MacPorts. This variable should contain the paths for locating utilities such
+    as rsync, tar, cvs and others. Don't change this unless you understand and
+    accept the consequences.
+    *Default:*;; $\{prefix\}/bin:$\{prefix\}/sbin:/bin:/sbin:/usr/bin:/usr/sbin
+
+extra_env::
+    List of extra environment variables MacPorts should keep in the user's
+    environment when sanitizing it. Changing this is unsupported.
+
+proxy_override_env::
+    Proxy support. Precedence is: env, macports.conf, System Preferences. That
+    is, if it's set in the environment, that will be used instead of anything
+    here or in System Preferences. Setting proxy_override_env to yes will cause
+    any proxies set here (or in System Preferences if set there but not here) to
+    override what's in the environment. Note that System Preferences doesn't
+    have an rsync proxy definition. Also note, on 10.5, sudo will clear many
+    environment variables including those for proxy support. Equivalent
+    environment variables: http_proxy, HTTPS_PROXY, FTP_PROXY, RSYNC_PROXY,
+    NO_PROXY
+    *Default:*;; yes
+
+proxy_http::
+    HTTP proxy
+    *Default:*;; none
+
+proxy_https::
+    HTTPS proxy
+    *Default:*;; none
+
+proxy_ftp::
+    FTP proxy
+    *Default:*;; none
+
+proxy_rsync::
+    rsync proxy
+    *Default:*;; none
+
+proxy_skip::
+    Hosts not to go through the proxy (comma-separated, applies to HTTP, HTTPS
+    and FTP, but not rsync).
+    *Default:*;; none
+
+host_blacklist::
+    Space separated list of download hosts that should not be used.
+    *Default:*;; none
+
+preferred_hosts::
+    Space separated list of download hosts that should be used preferentially.
+    *Default:*;; none
+
+revupgrade_autorun::
+    Controls whether the rev-upgrade action will be run automatically after
+    upgrading ports.
+    *Default:*;; yes
+
+revupgrade_mode::
+    Controls the rev-upgrade functionality which checks for broken linking and
+    can rebuild ports to fix it. 'rebuild' means ports will automatically be
+    rebuilt when broken linking is detected in their files, while 'report' means
+    broken files will be scanned for and reported but the ports will not be
+    rebuilt.
+    *Default:*;; rebuild
+
+default_compiler::
+    Default value for configure.compiler. This can be a space-separated list.
+    Later entries will be used if earlier entries are unavailable or blacklisted
+    by a port. Setting this is unsupported.
+    *Default:*;; none (internal list based on Xcode version is normally used)
+
+FILES
+-----
+
+$\{prefix\}/etc/macports/macports.conf::
+    Standard system-wide MacPorts configuration file.
+
+~/.macports/macports.conf::
+    User-specific configuration override. This file, if found, will be used
+    instead of the default file at $\{prefix\}/etc/macports/macports.conf.
+
+SEE ALSO
+--------
+man:port[1], man:portfile[7]
+
+AUTHORS
+-------
+  (C) 2007-2011 The MacPorts Project
+  Juan Manuel Palacios <jmpp at macports.org>
+  Matt Anton <matt at opendarwin.org>
+  Rainer Mueller <raimue at macports.org>

Modified: branches/gsoc14-interactive/base/doc/macports.conf.in
===================================================================
--- branches/gsoc14-interactive/base/doc/macports.conf.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/doc/macports.conf.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -105,8 +105,8 @@
 #keeplogs            	no
 
 # The rsync server for fetching MacPorts base during selfupdate. This
-# setting is NOT used when downloading the ports tree; the sources for
-# the ports tree are set in sources.conf. See
+# setting is NOT used when downloading ports trees; ports trees are
+# configured using the file referenced by sources_conf. See
 # https://trac.macports.org/wiki/Mirrors#MacPortsSource for a list of
 # available servers.
 #rsync_server        	rsync.macports.org
@@ -128,11 +128,13 @@
 # - default: Create StartupItems for launchd on OS X and for rc.d on
 #   other platforms.
 # - none: Disable creation of StartupItems.
+# This setting only applies when building ports from source.
 #startupitem_type    	default
 
 # Create system-level symlinks to generated StartupItems. If set to
 # "no", symlinks will not be created; otherwise, symlinks will be placed
 # in /Library/LaunchDaemons or /Library/LaunchAgents as appropriate.
+# This setting only applies when building ports from source.
 #startupitem_install	yes
 
 # Extra environment variables to keep. MacPorts sanitizes its

Copied: branches/gsoc14-interactive/base/doc/manpage.xsl (from rev 123795, trunk/base/doc/manpage.xsl)
===================================================================
--- branches/gsoc14-interactive/base/doc/manpage.xsl	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/manpage.xsl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,18 @@
+<?xml version='1.0' ?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"/>
+
+<xsl:param name="man.endnotes.list.heading">External References</xsl:param>
+<xsl:param name="man.authors.section.enabled">0</xsl:param>
+<xsl:param name="man.copyright.section.enabled">0</xsl:param>
+
+<!-- Do not write soelim files -->
+<xsl:template name="write.stubs">
+</xsl:template>
+
+<!-- Remove top comment with build date -->
+<xsl:template name="top.comment">
+</xsl:template>
+
+</xsl:stylesheet>

Copied: branches/gsoc14-interactive/base/doc/port-activate.1 (from rev 123795, trunk/base/doc/port-activate.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-activate.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-activate.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,81 @@
+'\" t
+.TH "PORT\-ACTIVATE" "1" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-activate, port-deactivate \- Change active version of an installed port
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-vdf\fR] [\fB\-D\fR \fIportdir\fR] \fBactivate\fR
+     [\-\-no\-exec]
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+     [\fI at version\fR]
+.fi
+.sp
+.nf
+\fBport\fR [\fB\-vdf\fR] [\fB\-D\fR \fIportdir\fR] \fBdeactivate\fR
+     [\-\-no\-exec]
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport activate\fR will set the status of an previously installed version of a port to active\&. The passed ports have to reference already installed versions\&.
+.sp
+\fBport deactivate\fR will set the status of a port to inactive\&. The passed ports have to be active at the moment\&. You will be warned if this port has active dependents\&.
+.sp
+If any version is active at the time of using \fBport activate\fR, it will be deactivated first\&. This can be used to switch from one version to another\&.
+.SH "PORT IMAGES"
+.sp
+MacPorts has the ability to install multiple versions or different variant selections of the same port\&. The files will be stored in an intermediate location as \fIarchives\fR, which allows to switch between the versions\&. Only one version can be active at a time\&. On activation, files will be copied to their intended place in \fIprefix\fR\&.
+.sp
+More information on this topic can be found in the \m[blue]\fBThe MacPorts Guide\fR\m[]\&\s-2\u[1]\d\s+2\&.
+.sp
+To check the current status of a specific port, use \fB\fBport-installed\fR(1)\fR\&.
+.SH "OPTIONS"
+.PP
+\-\-no\-exec
+.RS 4
+Do not execute any stored pre\- or post\-uninstall procedures\&.
+.RE
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-install\fR(1), \fBport-installed\fR(1), \fBport-deactivate\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2009 The MacPorts Project
+Rainer Mueller <raimue at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}
+.SH "EXTERNAL REFERENCES"
+.IP " 1." 4
+The MacPorts Guide
+.RS 4
+\%http://guide.macports.org/#internals.images
+.RE

Copied: branches/gsoc14-interactive/base/doc/port-activate.1.txt (from rev 123795, trunk/base/doc/port-activate.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-activate.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-activate.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,56 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-activate(1)
+===============
+$Id$
+
+NAME
+----
+port-activate, port-deactivate - Change active version of an installed port
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-vdf*] [*-D* 'portdir'] *activate*
+     [--no-exec]
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+     ['@version']
+
+[cmdsynopsis]
+*port* [*-vdf*] [*-D* 'portdir'] *deactivate*
+     [--no-exec]
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+
+DESCRIPTION
+-----------
+*port activate* will set the status of an previously installed version of a port
+to active. The passed ports have to reference already installed versions.
+
+*port deactivate* will set the status of a port to inactive. The passed ports
+have to be active at the moment. You will be warned if this port has active
+dependents.
+
+// [NOTE]
+If any version is active at the time of using *port activate*, it will be
+deactivated first. This can be used to switch from one version to another.
+
+include::archives.txt[]
+
+OPTIONS
+-------
+
+--no-exec::
+    Do not execute any stored pre- or post-uninstall procedures.
+
+
+include::global-flags.txt[]
+
+
+SEE ALSO
+--------
+man:port[1], man:port-install[1], man:port-installed[1],
+man:port-deactivate[1]
+
+AUTHORS
+-------
+ (C) 2009 The MacPorts Project
+ Rainer Mueller <raimue at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-archive.1 (from rev 123795, trunk/base/doc/port-archive.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-archive.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-archive.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,68 @@
+'\" t
+.TH "PORT\-ARCHIVE" "1" "2014\-08\-04" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-archive \- Create an archive of a port\&.
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-vdqysbckpotf\fR] [\fB\-D\fR \fIportdir\fR] \fBarchive\fR
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+     [+/\-variant \&...]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport archive\fR will create the port image (also called archive) for a port but will not actually install the port\(cqs files\&. In a nutshell, \fBport archive\fR is like \fBinstall\fR, but without the implicit \fBactivate\fR at the end\&. See \fBport-install\fR(1) and \fBport-activate\fR(1) and the \fBPORT IMAGES\fR section for details\&. The created port image can be located using \fBport-location\fR(1),
+.sp
+You can choose multiple variants, by specifying +name, which indicates the variant is desired, or \-name, indicating the contrary\&.
+.sp
+Global variants will be applied as specified in \fBvariants.conf\fR(5)\&.
+.SH "PORT IMAGES"
+.sp
+MacPorts has the ability to install multiple versions or different variant selections of the same port\&. The files will be stored in an intermediate location as \fIarchives\fR, which allows to switch between the versions\&. Only one version can be active at a time\&. On activation, files will be copied to their intended place in \fIprefix\fR\&.
+.sp
+More information on this topic can be found in the \m[blue]\fBThe MacPorts Guide\fR\m[]\&\s-2\u[1]\d\s+2\&.
+.sp
+To check the current status of a specific port, use \fB\fBport-installed\fR(1)\fR\&.
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-install\fR(1), \fBport-activate\fR(1), \fBport-info\fR(1), \fBport-variants\fR(1), \fBvariants.conf\fR(5)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}
+.SH "EXTERNAL REFERENCES"
+.IP " 1." 4
+The MacPorts Guide
+.RS 4
+\%http://guide.macports.org/#internals.images
+.RE

Copied: branches/gsoc14-interactive/base/doc/port-archive.1.txt (from rev 123795, trunk/base/doc/port-archive.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-archive.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-archive.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,43 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-archive(1)
+===============
+$Id$
+
+NAME
+----
+port-archive - Create an archive of a port.
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-vdqysbckpotf*] [*-D* 'portdir'] *archive*
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+     [+/-variant ...]
+
+DESCRIPTION
+-----------
+*port archive* will create the port image (also called archive) for a port but
+will not actually install the port's files. In a nutshell, *port archive* is
+like *install*, but without the implicit *activate* at the end. See
+man:port-install[1] and man:port-activate[1] and the *PORT IMAGES* section for
+details. The created port image can be located using man:port-location[1],
+
+You can choose multiple variants, by specifying +name, which indicates the
+variant is desired, or -name, indicating the contrary.
+
+Global variants will be applied as specified in man:variants.conf[5].
+
+include::archives.txt[]
+
+include::global-flags.txt[]
+
+
+SEE ALSO
+--------
+man:port[1], man:port-install[1], man:port-activate[1], man:port-info[1],
+man:port-variants[1], man:variants.conf[5]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-archivefetch.1 (from rev 123795, trunk/base/doc/port-archivefetch.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-archivefetch.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-archivefetch.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,73 @@
+'\" t
+.TH "PORT\-ARCHIVEFETCH" "1" "2014\-08\-04" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-archivefetch \- Fetch archive for the given ports if available\&.
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-vdqypotf\fR] [\fB\-D\fR \fIportdir\fR] \fBarchivefetch\fR
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+     [+/\-variant \&...]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport archivefetch\fR attempts to download a binary archive for the given port(s) from the configured binary sources, by default from \fIpackages\&.macports\&.org\fR and its mirrors\&. An archive or port image is a tarball containing the files of a port and some metadata and can be used to install a port without building it from source\&. See the \fBPORT IMAGES\fR section for a description of the port image concept in MacPorts\&.
+.sp
+You can choose multiple variants, by specifying +name, which indicates the variant is desired, or \-name, indicating the contrary\&.
+.sp
+Global variants will be applied as specified in \fBvariants.conf\fR(5)\&.
+.SH "PORT IMAGES"
+.sp
+MacPorts has the ability to install multiple versions or different variant selections of the same port\&. The files will be stored in an intermediate location as \fIarchives\fR, which allows to switch between the versions\&. Only one version can be active at a time\&. On activation, files will be copied to their intended place in \fIprefix\fR\&.
+.sp
+More information on this topic can be found in the \m[blue]\fBThe MacPorts Guide\fR\m[]\&\s-2\u[1]\d\s+2\&.
+.sp
+To check the current status of a specific port, use \fB\fBport-installed\fR(1)\fR\&.
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.PP
+\-p
+.RS 4
+Proceed even if a port fails to fetch\&. This is useful if you are trying to download all available binary images for a number of ports, e\&.g\&., if you want to install them later without a network connection\&.
+.RE
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-archive\fR(1), \fBport-variants\fR(1), \fBvariants.conf\fR(5)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}
+.SH "EXTERNAL REFERENCES"
+.IP " 1." 4
+The MacPorts Guide
+.RS 4
+\%http://guide.macports.org/#internals.images
+.RE

Copied: branches/gsoc14-interactive/base/doc/port-archivefetch.1.txt (from rev 123795, trunk/base/doc/port-archivefetch.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-archivefetch.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-archivefetch.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,48 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-archivefetch(1)
+====================
+$Id$
+
+NAME
+----
+port-archivefetch - Fetch archive for the given ports if available.
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-vdqypotf*] [*-D* 'portdir'] *archivefetch*
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+     [+/-variant ...]
+
+DESCRIPTION
+-----------
+*port archivefetch* attempts to download a binary archive for the given port(s)
+from the configured binary sources, by default from 'packages.macports.org' and
+its mirrors. An archive or port image is a tarball containing the files of
+a port and some metadata and can be used to install a port without building it
+from source. See the *PORT IMAGES* section for a description of the port image
+concept in MacPorts.
+
+You can choose multiple variants, by specifying +name, which indicates the
+variant is desired, or -name, indicating the contrary.
+
+Global variants will be applied as specified in man:variants.conf[5].
+
+include::archives.txt[]
+
+include::global-flags.txt[]
+
+-p::
+    Proceed even if a port fails to fetch. This is useful if you are trying to
+    download all available binary images for a number of ports, e.g., if you
+    want to install them later without a network connection.
+
+
+SEE ALSO
+--------
+man:port[1], man:port-archive[1], man:port-variants[1], man:variants.conf[5]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-build.1 (from rev 123795, trunk/base/doc/port-build.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-build.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-build.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-build.1.soelim (from rev 123795, trunk/base/doc/port-build.1.soelim)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-build.1.soelim	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-build.1.soelim	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-cat.1 (from rev 123795, trunk/base/doc/port-cat.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-cat.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-cat.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,47 @@
+'\" t
+.TH "PORT\-CAT" "1" "2014\-08\-04" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-cat \- Print the contents of a Portfile
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-D\fR \fIportdir\fR] \fBcat\fR
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+.fi
+.SH "DESCRIPTION"
+.sp
+Print the \fIPortfile\fR of the given port(s)\&. Note that always the latest version in your local ports tree is printed\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-selfupdate\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port-cat.1.txt (from rev 123795, trunk/base/doc/port-cat.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-cat.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-cat.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,28 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-cat(1)
+===========
+$Id$
+
+NAME
+----
+port-cat - Print the contents of a Portfile
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-D* 'portdir'] *cat*
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+
+DESCRIPTION
+-----------
+Print the 'Portfile' of the given port(s). Note that always the latest version
+in your local ports tree is printed.
+
+SEE ALSO
+--------
+man:port[1], man:port-selfupdate[1]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-cd.1 (from rev 123795, trunk/base/doc/port-cd.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-cd.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-cd.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,48 @@
+'\" t
+.TH "PORT\-CD" "1" "2014\-08\-06" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-cd \- Change the current working directory in interactive mode\&.
+.SH "SYNOPSIS"
+.sp
+To be used only in interactive mode:
+.sp
+\fBcd\fR [\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]
+.SH "DESCRIPTION"
+.sp
+\fBcd\fR can be used in interactive mode of \fBport\fR (see \fBport-interactive\fR(7)) to change the current working directory to the directory that contains a given port\&. The second parameter is not optional, as it usually is with \fBcd\fR in your shell\&.
+.sp
+Note that \fBport cd\fR can be used from the command line, but is a no\-op\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-interactive\fR(7)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port-cd.1.txt (from rev 123795, trunk/base/doc/port-cd.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-cd.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-cd.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,33 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-cd(1)
+==========
+$Id$
+
+NAME
+----
+port-cd - Change the current working directory in interactive mode.
+
+SYNOPSIS
+--------
+To be used only in interactive mode:
+
+*cd*
+    ['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']
+
+DESCRIPTION
+-----------
+*cd* can be used in interactive mode of *port* (see man:port-interactive[7]) to
+change the current working directory to the directory that contains a given
+port. The second parameter is not optional, as it usually is with *cd* in your
+shell.
+
+Note that *port cd* can be used from the command line, but is a no-op.
+
+SEE ALSO
+--------
+man:port[1], man:port-interactive[7]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-checksum.1 (from rev 123795, trunk/base/doc/port-checksum.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-checksum.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-checksum.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-checksum.1.soelim (from rev 123795, trunk/base/doc/port-checksum.1.soelim)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-checksum.1.soelim	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-checksum.1.soelim	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-clean.1 (from rev 123795, trunk/base/doc/port-clean.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-clean.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-clean.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,143 @@
+'\" t
+.TH "PORT\-CLEAN" "1" "2014\-08\-07" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-clean \- Remove temporary files used to build a port\&.
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-vdqypotf\fR] [\fB\-D\fR \fIportdir\fR] \fBclean\fR
+     [\-\-archive] [\-\-dist] [\-\-logs] [\-\-work] [\-\-all]
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport clean\fR removes temporary files that were created while installing a port\&.
+.sp
+During the installation of a port, a number of files might be placed on your system\&. Whether they actually are depends on the installation process (e\&.g\&., if a pre\-built binary is available, source code will not be downloaded and extracted)\&. The temporary files include:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Archives of source code, the so\-called distfile(s),
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+log files for the build,
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+a working directory for the build MacPorts internal state, and folders + used as home and temporary directories,
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+an extracted copy of the source code, and
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+a staging directory for installations\&.
+.RE
+.sp
+By default, most of these temporary files are removed after a successful installation, while others (such as the source code archives) are kept because they might be re\-used later\&. However, if a build fails, these files are not deleted, might be re\-used later and lead to failure again\&. It is for this reason, that the standard approach in case of a build failure in MacPorts is \fBclean\fR and try again\&.
+.sp
+Which of the temporary files are removed depends on the flags given to clean\&. The default behavior is \fB\-\-work\fR\&.
+.SH "OPTIONS"
+.PP
+\fB\-\-archive\fR
+.RS 4
+Remove partially downloaded binary archives\&.
+.RE
+.PP
+\fB\-\-dist\fR
+.RS 4
+Delete source code archives, the so\-called distfiles\&.
+.RE
+.PP
+\fB\-\-logs\fR
+.RS 4
+Delete log files\&.
+.RE
+.PP
+\fB\-\-work\fR
+.RS 4
+Delete the work directory of a port\&. This is the default and includes the extracted source code, the staging directory and MacPorts\*(Aq internal progress information\&. This is included in all but
+\fB\-\-logs\fR\&.
+.RE
+.PP
+\fB\-\-all\fR
+.RS 4
+Remove all temporary files\&. The same as specifying
+\fB\-\-archive\fR,
+\fB\-\-dist\fR,
+\fB\-\-logs\fR, and
+\fB\-\-work\fR\&.
+.RE
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port-clean.1.txt (from rev 123795, trunk/base/doc/port-clean.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-clean.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-clean.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,74 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-clean(1)
+=============
+$Id$
+
+NAME
+----
+port-clean - Remove temporary files used to build a port.
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-vdqypotf*] [*-D* 'portdir'] *clean*
+     [--archive] [--dist] [--logs] [--work] [--all]
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+
+DESCRIPTION
+-----------
+*port clean* removes temporary files that were created while installing a port.
+
+During the installation of a port, a number of files might be placed on your
+system. Whether they actually are depends on the installation process (e.g., if
+a pre-built binary is available, source code will not be downloaded and
+extracted). The temporary files include:
+
+ * Archives of source code, the so-called distfile(s),
+ * log files for the build,
+ * a working directory for the build MacPorts internal state, and folders
+ + used as home and temporary directories,
+ * an extracted copy of the source code, and
+ * a staging directory for installations.
+
+By default, most of these temporary files are removed after a successful
+installation, while others (such as the source code archives) are kept because
+they might be re-used later. However, if a build fails, these files are not
+deleted, might be re-used later and lead to failure again. It is for this
+reason, that the standard approach in case of a build failure in MacPorts is
+*clean* and try again.
+
+Which of the temporary files are removed depends on the flags given to clean.
+The default behavior is *--work*.
+
+OPTIONS
+-------
+*--archive*::
+    Remove partially downloaded binary archives.
+
+*--dist*::
+    Delete source code archives, the so-called distfiles.
+
+*--logs*::
+    Delete log files.
+
+*--work*::
+    Delete the work directory of a port. This is the default and includes the
+    extracted source code, the staging directory and MacPorts' internal progress
+    information. This is included in all but *--logs*.
+
+*--all*::
+    Remove all temporary files. The same as specifying *--archive*, *--dist*,
+    *--logs*, and *--work*.
+
+
+include::global-flags.txt[]
+
+
+SEE ALSO
+--------
+man:port[1]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-configure.1 (from rev 123795, trunk/base/doc/port-configure.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-configure.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-configure.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-configure.1.soelim (from rev 123795, trunk/base/doc/port-configure.1.soelim)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-configure.1.soelim	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-configure.1.soelim	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-contents.1 (from rev 123795, trunk/base/doc/port-contents.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-contents.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-contents.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,120 @@
+'\" t
+.TH "PORT\-CONTENTS" "1" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-contents \- List the files installed by a given port
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-q\fR] [\fB\-D\fR \fIportdir\fR] \fBcontents\fR
+     [\-\-size] [\-\-units \fIunit\fR]
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport contents\fR displays a list of all files that have been installed by a given port\&. You can only use \fBcontents\fR for ports that are \fIactive\fR and installed\&.
+.sp
+Common uses for \fBcontents\fR include finding the location of a port\(cqs executable after installing it\&. You can combine \fBport contents\fR with other tools to simplify this, e\&.g\&.
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port \-q contents asciidoc | grep \-E \*(Aq/s?bin/\*(Aq
+.fi
+.if n \{\
+.RE
+.\}
+.SH "OPTIONS"
+.PP
+\-\-size
+.RS 4
+Enable printing a human\-readable representation of the files\*(Aq sizes\&. The size output can be adjusted using the
+\fB\-\-units \fR\fB\fIunit\fR\fR
+flag\&.
+.RE
+.PP
+\-\-units \fIunit\fR
+.RS 4
+Used in conjunction with
+\fB\-\-size\fR
+to choose the unit in which the size is given\&. Valid values for
+\fIunit\fR
+are
+.PP
+B
+.RS 4
+List sizes in bytes\&.
+.RE
+.PP
+K, Ki, or KiB
+.RS 4
+List sizes in KiB, i\&.e\&., 1024 bytes\&.
+.RE
+.PP
+Mi, or MiB
+.RS 4
+List sizes in MiB, i\&.e\&., 1024 * 1024 bytes\&.
+.RE
+.PP
+Gi, or GiB
+.RS 4
+List sizes in GiB, i\&.e\&., 1024 * 1024 * 1024 bytes\&.
+.RE
+.PP
+k, or kB
+.RS 4
+List sizes in kB, i\&.e\&., 1000 bytes\&.
+.RE
+.PP
+M, or MB
+.RS 4
+List sizes in MB, i\&.e\&., 1000 * 1000 bytes\&.
+.RE
+.PP
+G, or GB
+.RS 4
+List sizes in GB, i\&.e\&., 1000 * 1000 * 1000 bytes\&.
+.RE
+.RE
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.PP
+\-q
+.RS 4
+Do not print the header line\&.
+.RE
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBgrep\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port-contents.1.txt (from rev 123795, trunk/base/doc/port-contents.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-contents.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-contents.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,75 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-contents(1)
+================
+$Id$
+
+NAME
+----
+port-contents - List the files installed by a given port
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-q*] [*-D* 'portdir'] *contents*
+     [--size] [--units 'unit']
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+
+DESCRIPTION
+-----------
+*port contents* displays a list of all files that have been installed by a given
+port. You can only use *contents* for ports that are 'active' and installed.
+
+Common uses for *contents* include finding the location of a port's executable
+after installing it. You can combine *port contents* with other tools to
+simplify this, e.g.
+----
+port -q contents asciidoc | grep -E '/s?bin/'
+----
+
+OPTIONS
+-------
+
+--size::
+    Enable printing a human-readable representation of the files' sizes. The
+    size output can be adjusted using the *--units 'unit'* flag.
+
+--units 'unit'::
+    Used in conjunction with *--size* to choose the unit in which the size is
+    given. Valid values for 'unit' are
+
+    B:::
+        List sizes in bytes.
+
+    K, Ki, or KiB:::
+        List sizes in KiB, i.e., 1024 bytes.
+
+    Mi, or MiB:::
+        List sizes in MiB, i.e., 1024 * 1024 bytes.
+
+    Gi, or GiB:::
+        List sizes in GiB, i.e., 1024 * 1024 * 1024 bytes.
+
+    k, or kB:::
+        List sizes in kB, i.e., 1000 bytes.
+
+    M, or MB:::
+        List sizes in MB, i.e., 1000 * 1000 bytes.
+
+    G, or GB:::
+        List sizes in GB, i.e., 1000 * 1000 * 1000 bytes.
+
+
+include::global-flags.txt[]
+
+-q::
+    Do not print the header line.
+
+
+SEE ALSO
+--------
+man:port[1], man:grep[1]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-deactivate.1 (from rev 123795, trunk/base/doc/port-deactivate.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-deactivate.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-deactivate.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-activate.1

Copied: branches/gsoc14-interactive/base/doc/port-deactivate.1.soelim (from rev 123795, trunk/base/doc/port-deactivate.1.soelim)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-deactivate.1.soelim	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-deactivate.1.soelim	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-activate.1

Copied: branches/gsoc14-interactive/base/doc/port-dependents.1 (from rev 123795, trunk/base/doc/port-dependents.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-dependents.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-dependents.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,78 @@
+'\" t
+.TH "PORT\-DEPENDENTS" "1" "2014\-08\-12" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-dependents \- List ports that depend on a given (installed) port
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-D\fR \fIportdir\fR] \fBdependents\fR
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport dependents\fR reports which ports depend upon a given (installed) port, if any\&. Note that \fBdependents\fR does not work for ports that are not installed on your system\&. It uses the database of installed ports that MacPorts keeps internally, which records the dependency relations at installation time\&. \fBport dependents\fR prints this information\&.
+.sp
+For this reason, \fBport dependents\fR does not work for ports that are not installed on your system\&. If you want to find out which ports depend on a port you haven\(cqt installed, you can use the \fBdepends:\fR pseudo\-portname selector:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port echo depends:<portname>
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+This command will, however, not cover dependencies that are only present in non\-default variants\&. For more information about pseudo\-portname selectors, see \fBport\fR(1)\&.
+.sp
+The dependency relations printed by \fBport dependents\fR are the same that are used to determine if a port can be safely uninstalled\&. Ports that still have dependents installed cannot be uninstalled without either the \fB\-\-follow\-dependents\fR or the \fB\-f\fR flag\&. See \fBport-uninstall\fR(1) for more details\&.
+.SH "DEPENDENCY RELATIONS"
+.sp
+Do not confuse \fIdependents\fR and \fIdependencies\fR (or, shortened, \fIdeps\fR)\&. Refer to the following example to understand the difference:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+portA \-\-> portB
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+\fBportA\fR depends on \fBportB\fR, i\&.e\&., \fBportA\fR needs \fBportB\fR to run\&. Because of that, \fBportB\fR is a \fIdependency\fR (or \fIdep\fR) of \fBportA\fR\&. After installing \fBportA\fR, \fBportB\fR has been automatically installed\&. At this point, \fBportA\fR has become a \fIdependent\fR of \fBportB\fR\&. You can only uninstall \fBportB\fR once all of its dependents (i\&.e\&., including \fBportA\fR) have been uninstalled\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-echo\fR(1), \fBport-deps\fR(1), \fBport-uninstall\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port-dependents.1.txt (from rev 123795, trunk/base/doc/port-dependents.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-dependents.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-dependents.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,51 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-dependents(1)
+==================
+$Id$
+
+NAME
+----
+port-dependents - List ports that depend on a given (installed) port
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-D* 'portdir'] *dependents*
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+
+DESCRIPTION
+-----------
+*port dependents* reports which ports depend upon a given (installed) port, if
+any. Note that *dependents* does not work for ports that are not installed on
+your system. It uses the database of installed ports that MacPorts keeps
+internally, which records the dependency relations at installation time. *port
+dependents* prints this information.
+
+For this reason, *port dependents* does not work for ports that are not
+installed on your system. If you want to find out which ports depend on a port
+you haven't installed, you can use the *depends:* pseudo-portname selector:
+
+----
+port echo depends:<portname>
+----
+
+This command will, however, not cover dependencies that are only present in
+non-default variants. For more information about pseudo-portname selectors, see
+man:port[1].
+
+The dependency relations printed by *port dependents* are the same that are used
+to determine if a port can be safely uninstalled. Ports that still have
+dependents installed cannot be uninstalled without either the
+*--follow-dependents* or the *-f* flag. See man:port-uninstall[1] for more
+details.
+
+include::dependents-vs-dependencies.txt[]
+
+SEE ALSO
+--------
+man:port[1], man:port-echo[1], man:port-deps[1], man:port-uninstall[1]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-deps.1 (from rev 123795, trunk/base/doc/port-deps.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-deps.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-deps.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,91 @@
+'\" t
+.TH "PORT\-DEPS" "1" "2014\-08\-12" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-deps, port-rdeps \- Display a dependency listing for the given port(s)
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-D\fR \fIportdir\fR] \fBdeps\fR
+     [\-\-index] [\-\-no\-build]
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+.fi
+.sp
+.nf
+\fBport\fR [\fB\-D\fR \fIportdir\fR] \fBrdeps\fR
+     [\-\-full] [\-\-index] [\-\-no\-build]
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport deps\fR lists all dependencies of the given port(s), i\&.e\&., the ports that need to be installed to build or use a port\&.
+.sp
+\fBport rdeps\fR recursively descends into the dependencies and displays a tree of dependencies for a given port\&.
+.SH "OPTIONS"
+.PP
+\fB\-\-full\fR
+.RS 4
+When using
+\fBrdeps\fR, display all branches of the dependency tree instead of listing each dependency only once\&.
+.RE
+.PP
+\fB\-\-index\fR
+.RS 4
+Do not read Portfiles, but instead rely solely on the PortIndex information\&. Note that this option will prevent the dependencies reported from reflecting the effects of any variants specified\&.
+.RE
+.PP
+\fB\-\-no\-build\fR
+.RS 4
+Exclude dependencies only required at build time, i\&.e\&., fetch, extract, and build dependencies\&.
+.RE
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.SH "DEPENDENCY RELATIONS"
+.sp
+Do not confuse \fIdependents\fR and \fIdependencies\fR (or, shortened, \fIdeps\fR)\&. Refer to the following example to understand the difference:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+portA \-\-> portB
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+\fBportA\fR depends on \fBportB\fR, i\&.e\&., \fBportA\fR needs \fBportB\fR to run\&. Because of that, \fBportB\fR is a \fIdependency\fR (or \fIdep\fR) of \fBportA\fR\&. After installing \fBportA\fR, \fBportB\fR has been automatically installed\&. At this point, \fBportA\fR has become a \fIdependent\fR of \fBportB\fR\&. You can only uninstall \fBportB\fR once all of its dependents (i\&.e\&., including \fBportA\fR) have been uninstalled\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-variants\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port-deps.1.txt (from rev 123795, trunk/base/doc/port-deps.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-deps.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-deps.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,56 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-deps(1)
+============
+$Id$
+
+NAME
+----
+port-deps, port-rdeps - Display a dependency listing for the given port(s)
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-D* 'portdir'] *deps*
+     [--index] [--no-build]
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+
+[cmdsynopsis]
+*port* [*-D* 'portdir'] *rdeps*
+     [--full] [--index] [--no-build]
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+
+DESCRIPTION
+-----------
+*port deps* lists all dependencies of the given port(s), i.e., the ports that
+need to be installed to build or use a port.
+
+*port rdeps* recursively descends into the dependencies and displays a tree of
+dependencies for a given port.
+
+OPTIONS
+-------
+*--full*::
+    When using *rdeps*, display all branches of the dependency tree instead of
+    listing each dependency only once.
+
+*--index*::
+    Do not read Portfiles, but instead rely solely on the PortIndex information.
+    Note that this option will prevent the dependencies reported from reflecting
+    the effects of any variants specified.
+
+*--no-build*::
+    Exclude dependencies only required at build time, i.e., fetch, extract, and
+    build dependencies.
+
+include::global-flags.txt[]
+
+include::dependents-vs-dependencies.txt[]
+
+SEE ALSO
+--------
+man:port[1], man:port-variants[1]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-destroot.1 (from rev 123795, trunk/base/doc/port-destroot.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-destroot.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-destroot.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-destroot.1.soelim (from rev 123795, trunk/base/doc/port-destroot.1.soelim)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-destroot.1.soelim	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-destroot.1.soelim	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-edit.1 (from rev 123795, trunk/base/doc/port-edit.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-edit.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-edit.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,85 @@
+'\" t
+.TH "PORT\-EDIT" "1" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-edit \- Open the Portfile in an editor
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-D\fR \fIportdir\fR] \fBedit\fR
+     [\-\-editor <editor>]
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport edit\fR will open the associated Portfile in an editor\&. It will try to determine your favorite editor by respecting the environment variables \fB$VISUAL\fR or \fB$EDITOR\fR in this order\&. If none has been set it will fallback to \fI/usr/bin/vi\fR\&. Your shell will be blocked until the editor returns\&. The path to the Portfile is passed as one single argument to the editor\&.
+.sp
+If you specify multiple ports, the editor is executed multiple times for each of them one after another\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBNote\fR
+.ps -1
+.br
+.sp
+If you edit a \fIPortfile\fR, your changes might be lost on the next sync\&. If you want to permanently use a changed \fIPortfile\fR, copy it to a local ports tree and edit it there\&. See also \m[blue]\fBThe MacPorts Guide\fR\m[]\&\s-2\u[1]\d\s+2\&.
+.sp .5v
+.RE
+.SH "OPTIONS"
+.PP
+\fB\-\-editor <editor>\fR
+.RS 4
+Use the specified
+\fIeditor\fR, overriding environment variables\&.
+.RE
+.SH "ENVIRONMENT"
+.PP
+\fBEDITOR\fR, \fBVISUAL\fR
+.RS 4
+Specifies the editor to be launched\&.
+.RE
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-file\fR(1), \fBport-cat\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2009 The MacPorts Project
+Rainer Mueller <raimue at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}
+.SH "EXTERNAL REFERENCES"
+.IP " 1." 4
+The MacPorts Guide
+.RS 4
+\%http://guide.macports.org/#development.local-repositories
+.RE

Copied: branches/gsoc14-interactive/base/doc/port-edit.1.txt (from rev 123795, trunk/base/doc/port-edit.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-edit.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-edit.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,51 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-edit(1)
+============
+$Id$
+
+NAME
+----
+port-edit - Open the Portfile in an editor
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-D* 'portdir'] *edit*
+     [--editor <editor>]
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+
+DESCRIPTION
+-----------
+*port edit* will open the associated Portfile in an editor. It will try to
+determine your favorite editor by respecting the environment variables *$VISUAL*
+or *$EDITOR* in this order. If none has been set it will fallback to
+'/usr/bin/vi'. Your shell will be blocked until the editor returns. The path to
+the Portfile is passed as one single argument to the editor.
+
+If you specify multiple ports, the editor is executed multiple times for
+each of them one after another.
+
+[NOTE]
+If you edit a 'Portfile', your changes might be lost on the next sync. If you
+want to permanently use a changed 'Portfile', copy it to a local ports tree and
+edit it there. See also guide:development.local-repositories[The MacPorts
+Guide].
+
+OPTIONS
+-------
+*--editor <editor>*::
+Use the specified 'editor', overriding environment variables.
+
+ENVIRONMENT
+-----------
+*EDITOR*, *VISUAL*::
+Specifies the editor to be launched.
+
+SEE ALSO
+--------
+man:port[1], man:port-file[1], man:port-cat[1]
+
+AUTHORS
+-------
+ (C) 2009 The MacPorts Project
+ Rainer Mueller <raimue at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-extract.1 (from rev 123795, trunk/base/doc/port-extract.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-extract.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-extract.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-extract.1.soelim (from rev 123795, trunk/base/doc/port-extract.1.soelim)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-extract.1.soelim	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-extract.1.soelim	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-fetch.1 (from rev 123795, trunk/base/doc/port-fetch.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-fetch.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-fetch.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,52 @@
+'\" t
+.TH "PORT\-FETCH" "1" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-fetch, port-checksum, port-extract, port-patch, port-configure, port-build, port-destroot \- Run a specific phase of a port
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-vdoy\fR] [\fB\-D\fR \fIportdir\fR] \fBfetch\fR | \fBchecksum\fR | \fBextract\fR | \fBpatch\fR | \fBconfigure\fR | \fBbuild\fR | \fBdestroot\fR
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+.fi
+.SH "DESCRIPTION"
+.sp
+These commands run a specific phase of a port\&. Depending phases will be executed automatically as needed\&.
+.sp
+If the \fIPortfile\fR has changed between multiple invocation, \fBport\fR will perform a clean before running the phase\&. The flag \fI\-o\fR can be used to ignore this and keep the current state of the \(lqwork\(rq dir\&.
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-install\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2010 The MacPorts Project
+Rainer Mueller <raimue at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port-fetch.1.txt (from rev 123795, trunk/base/doc/port-fetch.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-fetch.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-fetch.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,35 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-fetch(1)
+===============
+$Id$
+
+NAME
+----
+port-fetch, port-checksum, port-extract, port-patch, port-configure, port-build, port-destroot - Run a specific phase of a port
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-vdoy*] [*-D* 'portdir'] *fetch* | *checksum* | *extract* | *patch* | *configure* | *build* | *destroot*
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+
+DESCRIPTION
+-----------
+These commands run a specific phase of a port. Depending phases will be
+executed automatically as needed.
+
+If the 'Portfile' has changed between multiple invocation, *port* will perform
+a clean before running the phase. The flag '-o' can be used to ignore this and
+keep the current state of the ``work'' dir.
+
+
+include::global-flags.txt[]
+
+SEE ALSO
+--------
+man:port[1], man:port-install[1]
+
+AUTHORS
+-------
+ (C) 2010 The MacPorts Project
+ Rainer Mueller <raimue at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-help.1 (from rev 123795, trunk/base/doc/port-help.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-help.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-help.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,99 @@
+'\" t
+.TH "PORT\-HELP" "1" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-help \- Get help on MacPorts commands
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR \fBhelp\fR [\fIaction\fR | \fIhelp\-topic\fR]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport help\fR opens the manpage for a given port action such as \fIinstall\fR, \fIupgrade\fR, \fIselfupdate\fR, etc\&. or a specific help topic like \fImacports\&.conf\fR\&. MacPorts even has help for its help feature\&. MacPorts will however not engage in higher level abstractions: There is no help on the help on the help\&.
+.sp
+Further documentation on MacPorts can be found in the following places:
+.PP
+\m[blue]\fBThe MacPorts Guide\fR\m[]\&\s-2\u[1]\d\s+2
+.RS 4
+Detailed help and support guide
+.RE
+.PP
+\m[blue]\fBThe MacPorts Wiki\fR\m[]\&\s-2\u[2]\d\s+2
+.RS 4
+MacPorts usage, development, and support
+.RE
+.PP
+\m[blue]\fBMailing Lists\fR\m[]\&\s-2\u[3]\d\s+2
+.RS 4
+Ask questions on the mailing lists: macports\-dev for base and Portfile development, macports\-users for user support questions
+.RE
+.PP
+\m[blue]\fBFAQ\fR\m[]\&\s-2\u[4]\d\s+2
+.RS 4
+Frequently Asked Questions
+.RE
+.PP
+\m[blue]\fBProblem Hotlist\fR\m[]\&\s-2\u[5]\d\s+2
+.RS 4
+Solutions for the most common error messages and other problems
+.RE
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}
+.SH "EXTERNAL REFERENCES"
+.IP " 1." 4
+The MacPorts Guide
+.RS 4
+\%http://guide.macports.org/#
+.RE
+.IP " 2." 4
+The MacPorts Wiki
+.RS 4
+\%https://trac.macports.org/wiki/
+.RE
+.IP " 3." 4
+Mailing Lists
+.RS 4
+\%https://trac.macports.org/wiki/MailingLists
+.RE
+.IP " 4." 4
+FAQ
+.RS 4
+\%https://trac.macports.org/wiki/FAQ
+.RE
+.IP " 5." 4
+Problem Hotlist
+.RS 4
+\%https://trac.macports.org/wiki/ProblemHotlist
+.RE

Copied: branches/gsoc14-interactive/base/doc/port-help.1.txt (from rev 123795, trunk/base/doc/port-help.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-help.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-help.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,31 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-help(1)
+============
+$Id$
+
+NAME
+----
+port-help - Get help on MacPorts commands
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* *help* ['action' | 'help-topic']
+
+DESCRIPTION
+-----------
+*port help* opens the manpage for a given port action such as 'install',
+'upgrade', 'selfupdate', etc. or a specific help topic like 'macports.conf'.
+MacPorts even has help for its help feature. MacPorts will however not engage in
+higher level abstractions: There is no help on the help on the help.
+
+include::furtherdocs.txt[]
+
+SEE ALSO
+--------
+man:port[1]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-install.1 (from rev 123795, trunk/base/doc/port-install.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-install.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-install.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,69 @@
+'\" t
+.TH "PORT\-INSTALL" "1" "2014\-08\-04" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-install \- Install a new port
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-vdqysbckpotf\fR] [\fB\-D\fR \fIportdir\fR] \fBinstall\fR
+     [\-\-no\-rev\-upgrade] [\-\-unrequested]
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+     [+/\-variant \&...]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport install\fR will install a new port on your system\&. You can choose multiple variants, by specifying \e+name, which indicates the variant is desired, or \-name, indicating the contrary\&.
+.sp
+Global variants will be applied as specified in \fBvariants.conf\fR(5)\&.
+.SH "OPTIONS"
+.PP
+\fB\-\-no\-rev\-upgrade\fR
+.RS 4
+Do not run rev\-upgrade after installation\&. See
+\fBport-rev-upgrade\fR(1)
+for more information\&.
+.RE
+.PP
+\fB\-\-unrequested\fR
+.RS 4
+Do not mark the installed ports as requested\&. See
+\fBport-setrequested\fR(1)
+for more information\&.
+.RE
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-uninstall\fR(1), \fBport-info\fR(1), \fBport-variants\fR(1), \fBport-rev-upgrade\fR(1), \fBport-setrequested\fR(1), \fBvariants.conf\fR(5)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2009 The MacPorts Project
+Rainer Mueller <raimue at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port-install.1.txt (from rev 123795, trunk/base/doc/port-install.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-install.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-install.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,48 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-install(1)
+===============
+$Id$
+
+NAME
+----
+port-install - Install a new port
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-vdqysbckpotf*] [*-D* 'portdir'] *install*
+     [--no-rev-upgrade] [--unrequested]
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+     [+/-variant ...]
+
+DESCRIPTION
+-----------
+*port install* will install a new port on your system. You can choose multiple
+variants, by specifying \+name, which indicates the variant is desired, or
+-name, indicating the contrary.
+
+Global variants will be applied as specified in man:variants.conf[5].
+
+OPTIONS
+-------
+*--no-rev-upgrade*::
+Do not run rev-upgrade after installation. See man:port-rev-upgrade[1] for more
+information.
+
+*--unrequested*::
+Do not mark the installed ports as requested. See man:port-setrequested[1] for
+more information.
+
+
+include::global-flags.txt[]
+
+
+SEE ALSO
+--------
+man:port[1], man:port-uninstall[1], man:port-info[1], man:port-variants[1],
+man:port-rev-upgrade[1], man:port-setrequested[1], man:variants.conf[5]
+
+AUTHORS
+-------
+ (C) 2009 The MacPorts Project
+ Rainer Mueller <raimue at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-patch.1 (from rev 123795, trunk/base/doc/port-patch.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-patch.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-patch.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-patch.1.soelim (from rev 123795, trunk/base/doc/port-patch.1.soelim)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-patch.1.soelim	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-patch.1.soelim	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-fetch.1

Copied: branches/gsoc14-interactive/base/doc/port-rdeps.1 (from rev 123795, trunk/base/doc/port-rdeps.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-rdeps.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-rdeps.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-deps.1

Copied: branches/gsoc14-interactive/base/doc/port-rdeps.1.soelim (from rev 123795, trunk/base/doc/port-rdeps.1.soelim)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-rdeps.1.soelim	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-rdeps.1.soelim	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1 @@
+.so man1/port-deps.1

Copied: branches/gsoc14-interactive/base/doc/port-rev-upgrade.1 (from rev 123795, trunk/base/doc/port-rev-upgrade.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-rev-upgrade.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-rev-upgrade.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,58 @@
+'\" t
+.TH "PORT\-REV\-UPGRADE" "1" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-rev-upgrade \- Check for linking inconsistencies and attempt to fix them automatically\&.
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-vdy\fR] \fBrev\-upgrade\fR
+     [\-\-id\-loadcmd\-check]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport rev\-upgrade\fR will check all binaries (i\&.e\&., executables and libraries) installed by MacPorts for consistency\&. If any linking problems such as missing or incompatible libraries are found, \fBrev\-upgrade\fR will rebuild broken ports in an attempt to fix the problems\&.
+.sp
+By default, \fBrev\-upgrade\fR is run automatically after each installation or upgrade, unless you pass the \fB\-\-no\-rev\-upgrade\fR option or disable this beahvior in \fBmacports.conf\fR(5) using the \fBrevupgrade_autorun\fR switch\&.
+.SH "OPTIONS"
+.PP
+\-\-id\-loadcmd\-check
+.RS 4
+Check the ID load command in each library installed by MacPorts\&. This load command contains a path that should always reference the library itself, because the path will be copied into all binaries and libraries that link against this library\&. This option verifies that this is the case and will detect incorrect or non\-absolute paths\&. Since this check is only helpful for port maintainers, it is disabled by default\&.
+.RE
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBmacports.conf\fR(5)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port-rev-upgrade.1.txt (from rev 123795, trunk/base/doc/port-rev-upgrade.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-rev-upgrade.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-rev-upgrade.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,51 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-rev-upgrade(1)
+===================
+$Id$
+
+NAME
+----
+port-rev-upgrade - Check for linking inconsistencies and attempt to fix them
+automatically.
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-vdy*] *rev-upgrade*
+     [--id-loadcmd-check]
+
+DESCRIPTION
+-----------
+*port rev-upgrade* will check all binaries (i.e., executables and libraries)
+installed by MacPorts for consistency. If any linking problems such as missing
+or incompatible libraries are found, *rev-upgrade* will rebuild broken ports in
+an attempt to fix the problems.
+
+By default, *rev-upgrade* is run automatically after each installation or
+upgrade, unless you pass the *--no-rev-upgrade* option or disable this beahvior
+in man:macports.conf[5] using the *revupgrade_autorun* switch.
+
+
+OPTIONS
+-------
+
+--id-loadcmd-check::
+    Check the ID load command in each library installed by MacPorts. This load
+    command contains a path that should always reference the library itself,
+    because the path will be copied into all binaries and libraries that link
+    against this library. This option verifies that this is the case and will
+    detect incorrect or non-absolute paths. Since this check is only helpful for
+    port maintainers, it is disabled by default.
+
+
+include::global-flags.txt[]
+
+
+SEE ALSO
+--------
+man:port[1], man:macports.conf[5]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-selfupdate.1 (from rev 123795, trunk/base/doc/port-selfupdate.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-selfupdate.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-selfupdate.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,163 @@
+'\" t
+.TH "PORT\-SELFUPDATE" "1" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-selfupdate \- Upgrade MacPorts itself and update the port definition files\&.
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-qvdf\fR] \fBselfupdate\fR [\-\-nosync]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport selfupdate\fR checks for new releases of MacPorts and upgrades it when necessary\&. \fBselfupdate\fR also updates the local port definitions (the so\-called ports tree) to the latest state so you have the latest versions of ports available\&. This part of the operation corresponds to \fBport-sync\fR(1)\&.
+.sp
+You should regularly run \fBselfupdate\fR to update your local port definitions\&. Running \fBselfupdate\fR is required to get updated software with bug fixes and new features\&.
+.SH "OPTIONS"
+.PP
+\-\-nosync
+.RS 4
+Only check for updates \- and install if available \- for MacPorts itself\&. Do not update the ports tree\&.
+.RE
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.PP
+\-q
+.RS 4
+Supress status output, be as silent as possible\&.
+.RE
+.PP
+\-f
+.RS 4
+Do not check whether the downloaded MacPorts version is newer than the currently installed one, but always rebuild and reinstall MacPorts\&.
+
+You can use this to downgrade from a beta or development version to the latest release\&. Note that there is no guarantee that there have not been made incompatible and irreversible changes to MacPorts\*(Aq internal data structures, making a downgrade impossible\&.
+.RE
+.SH "EXAMPLES"
+.sp
+When no new versions are available, \fBselfupdate\fR looks like this:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+$ sudo port selfupdate
+\-\-\-> Updating MacPorts base sources using rsync
+MacPorts base version 2\&.3\&.99 installed,
+MacPorts base version 2\&.3\&.99 downloaded\&.
+\-\-\-> Updating the ports tree
+\-\-\-> MacPorts base is already the latest version
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+If \fBselfupdate\fR detects that a newer version of MacPorts is available, it attempts to update your copy to this version\&. In that case, the output will be different:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+$ sudo port selfupdate
+\-\-\-> Updating MacPorts base sources using rsync
+MacPorts base version 2\&.3\&.0 installed,
+MacPorts base version 2\&.3\&.99 downloaded\&.
+\-\-\-> Updating the ports tree
+\-\-\-> MacPorts base is outdated, installing new version 2\&.3\&.99
+Installing new MacPorts release in /opt/local as root:admin; permissions 755
+.fi
+.if n \{\
+.RE
+.\}
+.SH "TROUBLESHOOTING"
+.sp
+If \fBselfupdate\fR fails, it usually does so in one of two places: The network connection, or the installation of the update\&.
+.PP
+Network Problems
+.RS 4
+MacPorts uses the
+\fIrsync\fR
+protocol to update its sources to the latest version\&. This will fail if you are on a network that blocks TCP connections to the rsync port 873\&. Talk to your network administrators and ask them to allow connections to port 873 if this happens to you\&. Alternatively, you can just download a new installer \&.pkg from macports\&.org and run that to upgrade your installation\&.
+.sp
+Network connection problems might also affect you if you are in a country with US export restrictions\&. We suggest using one of our other
+\m[blue]\fBmirrors\fR\m[]\&\s-2\u[1]\d\s+2
+outside of the US in these cases\&.
+.RE
+.PP
+Compilation Problems
+.RS 4
+When a problem occurs while building and installing the new MacPorts version, you will see the message
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+Error installing new MacPorts base: command execution failed
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+To find out what went wrong, re\-run
+\fBselfupdate\fR
+with the
+\fB\-d\fR
+flag\&. This will allow you to see all output generated by the build system\&. Look for the first occurance of \(lqerror\(rq\&. If you cannot figure out what\(cqs wrong on your own, feel free to ask on
+\m[blue]\fBthe macports\-users mailing list\fR\m[]\&\s-2\u[2]\d\s+2
+and attach the output generated by
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+$ sudo port \-d selfupdate
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-sync\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2014 The MacPorts Project
+Clemens Lang <cal at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}
+.SH "EXTERNAL REFERENCES"
+.IP " 1." 4
+mirrors
+.RS 4
+\%https://trac.macports.org/wiki/Mirrors#MacPortsSource
+.RE
+.IP " 2." 4
+the macports-users mailing list
+.RS 4
+\%mailto:macports-users at lists.macosforge.org
+.RE

Copied: branches/gsoc14-interactive/base/doc/port-selfupdate.1.txt (from rev 123795, trunk/base/doc/port-selfupdate.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-selfupdate.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-selfupdate.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,118 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-selfupdate(1)
+==================
+$Id$
+
+NAME
+----
+port-selfupdate - Upgrade MacPorts itself and update the port definition files.
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-qvdf*] *selfupdate* [--nosync]
+
+DESCRIPTION
+-----------
+*port selfupdate* checks for new releases of MacPorts and upgrades it when
+necessary. *selfupdate* also updates the local port definitions (the so-called
+ports tree) to the latest state so you have the latest versions of ports
+available. This part of the operation corresponds to man:port-sync[1].
+
+You should regularly run *selfupdate* to update your local port definitions.
+Running *selfupdate* is required to get updated software with bug fixes and new
+features.
+
+OPTIONS
+-------
+
+--nosync::
+    Only check for updates - and install if available - for MacPorts itself. Do
+    not update the ports tree.
+
+include::global-flags.txt[]
+
+-q::
+    Supress status output, be as silent as possible.
+
+-f::
+    Do not check whether the downloaded MacPorts version is newer than the
+    currently installed one, but always rebuild and reinstall MacPorts.
+    +
+    You can use this to downgrade from a beta or development version to the
+    latest release. Note that there is no guarantee that there have not been
+    made incompatible and irreversible changes to MacPorts' internal data
+    structures, making a downgrade impossible.
+
+EXAMPLES
+--------
+When no new versions are available, *selfupdate* looks like this:
+
+[subs="verbatim,attributes"]
+----
+$ sudo port selfupdate
+---> Updating MacPorts base sources using rsync
+MacPorts base version {manversion} installed,
+MacPorts base version {manversion} downloaded.
+---> Updating the ports tree
+---> MacPorts base is already the latest version
+----
+
+If *selfupdate* detects that a newer version of MacPorts is available, it
+attempts to update your copy to this version. In that case, the output will be
+different:
+
+[subs="verbatim,attributes"]
+----
+$ sudo port selfupdate
+---> Updating MacPorts base sources using rsync
+MacPorts base version 2.3.0 installed,
+MacPorts base version {manversion} downloaded.
+---> Updating the ports tree
+---> MacPorts base is outdated, installing new version {manversion}
+Installing new MacPorts release in /opt/local as root:admin; permissions 755
+----
+
+TROUBLESHOOTING
+---------------
+If *selfupdate* fails, it usually does so in one of two places: The network
+connection, or the installation of the update.
+
+Network Problems::
+MacPorts uses the 'rsync' protocol to update its sources to the latest version.
+This will fail if you are on a network that blocks TCP connections to the rsync
+port 873. Talk to your network administrators and ask them to allow connections
+to port 873 if this happens to you. Alternatively, you can just download a new
+installer .pkg from macports.org and run that to upgrade your installation.
++
+Network connection problems might also affect you if you are in a country with
+US export restrictions. We suggest using one of our other
+wiki:Mirrors#MacPortsSource[mirrors] outside of the US in these cases.
+
+Compilation Problems::
+When a problem occurs while building and installing the new MacPorts version,
+you will see the message
++
+----
+Error installing new MacPorts base: command execution failed
+----
++
+To find out what went wrong, re-run *selfupdate* with the *-d* flag. This will
+allow you to see all output generated by the build system. Look for the first
+occurance of ``error''. If you cannot figure out what's wrong on your own, feel
+free to ask on mailto:macports-users at lists.macosforge.org[the macports-users
+mailing list] and attach the output generated by
++
+----
+$ sudo port -d selfupdate
+----
+
+
+SEE ALSO
+--------
+man:port[1], man:port-sync[1]
+
+AUTHORS
+-------
+ (C) 2014 The MacPorts Project
+ Clemens Lang <cal at macports.org>

Copied: branches/gsoc14-interactive/base/doc/port-uninstall.1 (from rev 123795, trunk/base/doc/port-uninstall.1)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-uninstall.1	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-uninstall.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,70 @@
+'\" t
+.TH "PORT\-INSTALL" "1" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port-uninstall \- Remove a previously installed port
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-vdquxpf\fR] [\fB\-D\fR \fIportdir\fR] \fBuninstall\fR
+     [\-\-follow\-dependents] [\-\-follow\-dependencies] [\-\-no\-exec]
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+     [@version]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport uninstall\fR removes a port from your system\&. You can only uninstall a port if all dependents have been removed before or by applying force with \fB\-f\fR\&.
+.sp
+If multiple versions of the same port are installed, you need to specify a version using the \fB at version\fR syntax\&. Use \fBport installed\fR to find out which versions are currently installed on your system\&. If multiple versions are installed and you did not specify a version, \fBport\fR will output a list\&.
+.SH "OPTIONS"
+.PP
+\-\-follow\-dependents
+.RS 4
+Also uninstall all ports recursively depending directly or indirectly on one of the specified ports before uninstalling the port itself\&.
+.RE
+.PP
+\-\-follow\-dependencies
+.RS 4
+Also recursively uninstall all ports that the specified port depends on\&. This will not uninstall dependencies that are marked as requested or that have other dependents\&.
+.RE
+.PP
+\-\-no\-exec
+.RS 4
+Do not execute any stored pre\- or post\-uninstall procedures\&.
+.RE
+.SH "GLOBAL OPTIONS"
+.sp
+Please see the section \fBGLOBAL OPTIONS\fR in the \fBport\fR(1) man page for a description of global port options\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBport-uninstall\fR(1), \fBport-info\fR(1), \fBport-variants\fR(1), \fBvariants.conf\fR(5)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2009 The MacPorts Project
+Rainer Mueller <raimue at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port-uninstall.1.txt (from rev 123795, trunk/base/doc/port-uninstall.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port-uninstall.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port-uninstall.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,55 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port-install(1)
+===============
+$Id$
+
+NAME
+----
+port-uninstall - Remove a previously installed port
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-vdquxpf*] [*-D* 'portdir'] *uninstall*
+     [--follow-dependents] [--follow-dependencies] [--no-exec]
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+     [@version]
+
+DESCRIPTION
+-----------
+*port uninstall* removes a port from your system. You can only uninstall a port
+if all dependents have been removed before or by applying force with *-f*.
+    
+If multiple versions of the same port are installed, you need to specify a
+version using the *@version* syntax. Use *port installed* to find out
+which versions are currently installed on your system. If multiple versions are
+installed and you did not specify a version, *port* will output a list.
+
+OPTIONS
+-------
+
+--follow-dependents::
+    Also uninstall all ports recursively depending directly or indirectly on one
+    of the specified ports before uninstalling the port itself.
+
+--follow-dependencies::
+    Also recursively uninstall all ports that the specified port depends on.
+    This will not uninstall dependencies that are marked as requested or that
+    have other dependents.
+
+--no-exec::
+    Do not execute any stored pre- or post-uninstall procedures.
+
+
+include::global-flags.txt[]
+
+
+SEE ALSO
+--------
+man:port[1], man:port-uninstall[1], man:port-info[1], man:port-variants[1],
+man:variants.conf[5]
+
+AUTHORS
+-------
+ (C) 2009 The MacPorts Project
+ Rainer Mueller <raimue at macports.org>

Modified: branches/gsoc14-interactive/base/doc/port.1
===================================================================
--- branches/gsoc14-interactive/base/doc/port.1	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/doc/port.1	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,770 +1,1315 @@
-.\" port.1
-.\"
-.\" Copyright (c) 2004-2011 The MacPorts Project
-.\" Copyright (c) 2002-2003 Apple Inc.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of Apple Inc. nor the names of its
-.\"    contributors may be used to endorse or promote products derived from
-.\"    this software without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-.\" POSSIBILITY OF SUCH DAMAGE.
-.\"
-.Dd April 29, 2007
-.Dt PORT 1 "MacPorts"
-.Os
-.Sh NAME
-.Nm port
-.Nd operate on individual or multiple Mac
-.Ar ports
-.Sh SYNOPSIS
-.Nm
-.Op Fl bcdfknopqRstuvy
-.Op Fl D Ar portdir
-.Op Fl F Ar cmdfile
-.Op Ar action
-.Op Ar actionflags
-.Op Oo Ar portname | pseudo-portname | port-url Oc
-.Op Oo Ar @version Oc Oo +/-variant ... Oc ... Oo option=value ... Oc
-.Sh DESCRIPTION
-.Nm
-is designed to operate on individual or multiple Mac
-.Ar ports ,
-optionally within a single call, based on the requested
-.Ar action .
-If no
-.Ar portdir
-or
-.Ar portname
-is specified, the current working directory is assumed; if no
-.Ar action
-is specified the port command enters interactive mode, in which commands are read via stdin. Batch commands may be
-passed via a
-.Ar cmdfile .
-Port 
-.Ar options 
-are passed as key=value pairs and take precedence over individual
-.Ar portname
-options as specified in its Portfile and system-wide settings.
-.Pp
-Port
-.Ar variants
-can specified as
-.Ar +name ,
-which indicates the variant is desired, or
-.Ar -name ,
-indicating the contrary. In case of ambiguities, a port can be fully specified with the
-.Ar @version_revision+variants
-format.
-.Pp
-Installed ports can be activated or deactivated without being uninstalled. A port can be installed if all other
-version/variant(s) combinations installed at any given moment are deactivated.
-.Pp
-The
-.Nm
-command knows various
-.Ar pseudo-portnames
-that will expand to the specified set of ports from the available ports tree(s). These may be used in place of a
-.Ar portname .
-Common options are:
-.Pp
-.Bl -bullet -offset indent -compact
-.It
-.Ar all :
-all the ports in each ports tree listed in
-.Ar sources.conf
-.Pp
-.It
-.Ar current :
-the port in the current working directory.
-.Pp
-.It
-.Ar active :
-set of installed and active ports.
-.Pp
-.It
-.Ar inactive :
-set of installed but inactive ports.
-.Pp
-.It
-.Ar actinact :
-set of installed ports that have both an active version and one or more inactive versions.
-.Pp
-.It
-.Ar installed :
-set of all installed ports.
-.Pp
-.It
-.Ar uninstalled :
-ports in the ports tree(s) that aren't installed.
-.Pp
-.It
-.Ar outdated :
-installed ports that are out of date with respect to their current version/revision in the ports tree(s)
-.Pp
-.It
-.Ar obsolete :
-set of ports that are installed but no longer exist in any port tree
-.Pp
-.It
-.Ar requested :
-installed ports that were explicitly asked for.
-.Pp
-.It
-.Ar unrequested :
-installed ports that were installed only to satisfy dependencies.
-.Pp
-.It
-.Ar leaves :
-installed ports that are unrequested and have no dependents.
-.Pp
-.El
-Sets of ports can also be specified with
-.Ar pseudo-portname selectors ,
-which expand to the ports in which the value of the
-.Ar Portfile
-key corresponding to the selector's name (in either singular or plural form where applicable)
-matches the given regular expression. Usage is:
-.Ar selector:regex
-.Pp
-Available selectors are:
-.Pp
-.Bl -bullet -offset indent -compact
-.It
-.Ar name
-.It
-.Ar version
-.It
-.Ar revision
-.It
-.Ar epoch
-.It
-.Ar variant
-.It
-.Ar variants
-.It
-.Ar category
-.It
-.Ar categories
-.It
-.Ar maintainer
-.It
-.Ar maintainers
-.It
-.Ar platform
-.It
-.Ar platforms
-.It
-.Ar description
-.It
-.Ar long_description
-.It
-.Ar homepage
-.It
-.Ar portdir
-.El
-.Pp
-.Pp
-Other pseudo-portname selectors match ports which have a particular relationship to
-another port. These will match ports that are direct or recursive dependencies or dependents
-of the given portname:
-.Pp
-.Bl -bullet -offset indent -compact
-.It
-.Ar depof
-.It
-.Ar rdepof
-.It
-.Ar dependentof
-.It
-.Ar rdependentof
-.El
-.Pp
-.Ar portnames
-containing valid UNIX glob patterns will also expand to the set of matching ports. Any
-.Ar action
-passed to
-.Nm
-will be invoked on each of them. For example:
-.Pp
-.Dl port list variant:no_ssl
-.Dl port uninstall name:sql
-.Dl port echo depof:mysql5
-.\" COMMENT: glob pattern expansion in portnames:
-.\" write an example here that illustrats better glob pattern expansion in portnames, but that does not employ
-.\" logical operators (and, or, not, !) because I still haven't gotten to them yet.
-.Dl port echo apache*
-.Pp
-Logical operators "and", "or", "not", "!", "(" and ")" may be used to combine individual
-.Ar portnames ,
-port glob patterns and/or
-.Ar pseudo-portnames
-to construct complex port expressions that expand to the set of matching ports. For example:
-.Pp
-.Dl port upgrade installed and "apache*"
-.Dl port echo maintainer:jberry and uninstalled and \e(\ category:java and not commons*\ \e)
-.\" COMMENT: more complex exmaples here would be useful.
-.\" PENDING: port-url explanation. Proposed text:
-.\".Pp
-.\"A
-.\".Ar portname
-.\"may also be specified as a URL pointing to the location of the
-.\".Ar portdir
-.\" ...
-.Pp
-The
-.Nm
-command also recognizes several command line flags and
-.Ar targets :
-.Sh OPTIONS
-.Bl -tag -width -indent
-.It Fl v
-verbose mode (generate verbose messages)
-.It Fl d
-debug mode (generate debugging messages, implies
-.Fl v )
-.It Fl q
-quiet mode (suppress messages)
-.It Fl n
-don't upgrade dependencies (affects upgrade and install)
-.It Fl R
-also upgrade dependents (only affects upgrade) - note that this does not upgrade dependents' dependencies
-.It Fl u
-uninstall non-active ports when upgrading and uninstalling
-.It Fl f
-force mode (ignore state file)
-.It Fl o
-honor state files even if the Portfile has been modified since (called -o because it used to mean "older")
-.It Fl s
-source-only mode (build and install from source, do not attempt to fetch binary archives)
-.It Fl b
-binary-only mode (build and install from binary archives, ignore source, abort if no archive available)
-.It Fl c
-autoclean mode (execute clean after install)
-.It Fl k
-keep mode (don't autoclean after install)
-.It Fl D
-specify
-.Ar portdir
-.It Fl F
+'\" t
+.TH "PORT" "1" "2014\-08\-12" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+port \- Command line interface for MacPorts
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBport\fR [\fB\-bcdfknopqRstuvy\fR] [\fB\-D\fR \fIportdir\fR] [\fB\-F\fR \fIcmdfile\fR] [\fIaction\fR] [\fIactionflags\fR]
+     [[\fIportname\fR | \fIpseudo\-portname\fR | \fIport\-expressions\fR | \fIport\-url\fR]]
+     [[\fI at version\fR] [+/\-variant \&...] \&... [option=value \&...]]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBport\fR is designed to operate on individual or multiple \fIports\fR, optionally within a single call, based on the requested \fIaction\fR\&. If no \fIaction\fR is specified the port command enters interactive mode, in which commands are read via stdin\&. If no \fIportdir\fR or \fIportname\fR is specified for an \fIaction\fR, the current working directory is assumed\&. Batch commands may be passed via a \fIcmdfile\fR\&. Port \fIoptions\fR are passed as key=value pairs and take precedence over individual \fIportname\fR options as specified in its Portfile and system\-wide settings\&.
+.sp
+Port \fIvariants\fR can be specified as \fI+name\fR, which indicates the variant is desired, or \fI\-name\fR, indicating the contrary\&. In case of ambiguities, a port can be fully specified with the \fI at version_revision+variants\fR format\&.
+.sp
+Installed ports can be activated or deactivated without being uninstalled\&. A port can be installed in multiple versions and variant combinations, but only one of them can be \fIactive\fR\&. See \fBportarchives\fR(7)\&.
+.sp
+When passing \fIportnames\fR to an \fIaction\fR, \fBport\fR recognizes various \fIpseudo\-portnames\fR that will expand to the specified set of ports from the available port tree(s)\&. These may be used in the same way as a \fIportname\fR\&.
+.PP
+\fBThe \fR\fB\fIpseudo\-portnames\fR\fR\fB are:\fR
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIall\fR: all the ports in each ports tree listed in
+\fIsources\&.conf\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIcurrent\fR: the port in the current working directory
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIactive\fR: set of installed and active ports
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIinactive\fR: set of installed but inactive ports
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIinstalled\fR: set of all installed ports
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIuninstalled\fR: ports in the ports tree(s) that are not installed
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIoutdated\fR: installed ports that are out of date with respect to their current version/revision in the ports tree(s)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIobsolete\fR: set of ports that are installed but no longer exist in any port tree
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIrequested\fR: installed ports that were explicitly asked for
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIunrequested\fR: installed ports that were installed only to satisfy dependencies
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIleaves\fR: installed ports that are unrequested and have no dependents
+.RE
+.sp
+Sets of ports can also be specified with \fIpseudo\-portname selectors\fR, which expand to the ports in which the value of the \fIPortfile\fR option corresponding to the selector\(cqs name (in either singular or plural form where applicable) matches the given regular expression\&. Usage is: selector:regex
+.PP
+\fBThe \fR\fB\fIpseudo\-portname selectors\fR\fR\fB are:\fR
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIname\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIversion\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIrevision\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIepoch\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIvariant\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIvariants\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIcategory\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIcategories\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fImaintainer\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fImaintainers\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIplatform\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIplatforms\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIdescription\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIlong_description\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIhomepage\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIlicense\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIportdir\fR
+.RE
+.sp
+Other pseudo\-portname selectors match ports which have a particular relationship to another port\&. These will match ports that are direct or recursive dependencies or dependents of the given portname:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIdepof\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIrdepof\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIdependentof\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIrdependentof\fR
+.RE
+.sp
+Search strings that will expand to a set of matching ports can be constructed based on the "\fIpseudo\-portname selector\fR":regex combination used\&. \fIportnames\fR containing valid UNIX glob patterns will also expand to the set of matching ports\&. Any action passed to port will be invoked on each of them\&.
+.sp
+For example:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port info variant:no_ssl
+port uninstall name:sql
+port echo depof:mysql5
+port echo \*(Aqapache*\*(Aq
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+Logical operators "and", "or", "not", "!", "(" and ")" may be used to combine individual \fIportnames\fR, port glob patterns and/or \fIpseudo\-portnames\fR to construct complex \fIport\-expressions\fR that expand to the set of matching ports\&.
+.sp
+For example:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port upgrade outdated and \*(Aqpy27\-*\*(Aq
+port echo maintainer:jberry and uninstalled and \e( category:java and not commons* \e)
+.fi
+.if n \{\
+.RE
+.\}
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBNote\fR
+.ps -1
+.br
+.sp
+Special shell characters like *, \e( or \e) need to be escaped in order to be passed correctly to \fBport\fR\&.
+.sp .5v
+.RE
+.SH "GLOBAL OPTIONS"
+.sp
+The port command recognizes several global flags and options\&.
+.PP
+\fBOutput control\fR
+.PP
+\-v
+.RS 4
+Verbose mode, generates verbose messages
+.RE
+.PP
+\-d
+.RS 4
+Debug mode, generate debugging messages, implies \-v
+.RE
+.PP
+\-q
+.RS 4
+Quiet mode, suppress informational messages to a minimum
+.RE
+.PP
+\fBInstallation and upgrade\fR
+.PP
+\-n
+.RS 4
+Don\(cqt follow dependencies in upgrade (affects
+\fIupgrade\fR
+and
+\fIinstall\fR)
+.RE
+.PP
+\-R
+.RS 4
+Also upgrade dependents (only for
+\fIupgrade\fR)
+.RE
+.PP
+\-u
+.RS 4
+Uninstall inactive ports when upgrading and uninstalling
+.RE
+.PP
+\-y
+.RS 4
+Perform a dry run\&. All of the steps to build the ports and their dependencies are computed, but not actually performed\&. With the verbose flag, every step is reported; otherwise there is just one message per port, which allows you to easily determine the recursive deps of a port (and the order in which they will be built)\&.
+.RE
+.PP
+\fBSources\fR
+.PP
+\-s
+.RS 4
+Source\-only mode, build and install from source; do not attempt to fetch binary archives\&.
+.RE
+.PP
+\-b
+.RS 4
+Binary\-only mode, build and install from binary archives, ignore source, abort if no archive available\&.
+.RE
+.PP
+\fBCleaning\fR
+.PP
+\-c
+.RS 4
+Autoclean mode, execute clean after
+\fIinstall\fR
+.RE
+.PP
+\-k
+.RS 4
+Keep mode, do not autoclean after
+\fIinstall\fR
+.RE
+.PP
+\fBExit status\fR
+.PP
+\-p
+.RS 4
+Despite any errors encountered, proceed to process multiple ports and commands\&.
+.RE
+.PP
+\fBDevelopment\fR
+.PP
+\-o
+.RS 4
+Honor state files even if the Portfile was modified\&. This flag is called \-o because it used to mean "older"\&.
+.RE
+.PP
+\-t
+.RS 4
+Enable trace mode debug facilities on platforms that support it, currently only Mac OS X\&.
+
+This feature is two\-folded\&. It consists in automatically detecting and reporting undeclared dependencies based on what files the port reads or what programs the port executes\&. In verbose mode, it will also report unused dependencies for each stage of the port installation\&. It also consists in forbidding and reporting file creation and file writes outside allowed directories (temporary directories and ${workpath})\&.
+.RE
+.PP
+\fBMisc\fR
+.PP
+\-f
+.RS 4
+Force mode, ignore state file
+.RE
+.PP
+\-D \fIportdir\fR
+.RS 4
+Specfiy
+\fIportdir\fR
+.RE
+.PP
+\-F \fIcmdfile\fR
+.RS 4
 Read and process the
-.Ar file
-of commands specified by the argument. If the argument is '-', then read commands from stdin. If the option is given multiple times, then multiple files will be read.
-.It Fl p
-Despite any errors encountered, proceed to process multiple ports and commands.
-.It Fl y
-Perform a dry run. All of the steps to build the ports and their dependencies are computed, but not actually performed. With the verbose flag, every step is reported; otherwise there is just one message per port, which allows you to easily determine the recursive deps of a port (and the order in which they will be built).
-.It Fl t
-enable trace mode debug facilities on platforms that support it (Mac OS X). This feature is two-folded. It consists in automatically detecting and reporting undeclared dependencies based on what files the port reads or what programs the port executes. In verbose mode, it will also report unused dependencies for each stage of the port installation. It also consists in forbidding and reporting file creation and file writes outside allowed directories (temporary directories and ${workpath}).
-.El
-.Sh USER TARGETS
+\fIfile\fR
+of commands specified by the argument\&. If the argument is
+\fI\-\fR, then read commands from stdin\&. If the option is given multiple times, then multiple files will be read\&.
+.RE
+.SH "USER TARGETS"
+.sp
 Targets most commonly used by regular MacPorts users are:
-.Ss search
-Search for an available port. By default, the search string is treated as a case-insensitive glob,
-and is matched against the name and description fields. To have the search string treated as
-a regular expression, as a literal, or in a case-sensitive manner, use
-.Fl -regex,
-.Fl -exact,
-or
-.Fl -case-sensitive,
-respectively. To match against a different set of fields, use one or more
-.Fl -<field-name>
-options. To display each result on a single line, use
-.Fl -line.
+.PP
+search
+.RS 4
+Search for an available port whose name or description matches a regular expression\&.
+.sp
 For example:
-.Pp
-.Dl "port search vim"
-.Dl "port search --regex --depends_build 'docbook.*[0-9]+'"
-.Pp
-.Ss info
-Displays meta-information available for
-.Ar portname .
-Specific meta-information may be requested through an option such as
-.Fl -maintainer
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port search vim
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+info
+.RS 4
+Displays meta\-information available for
+\fIportname\fR\&. Specific meta\-information may be requested through an option such as
+\fB\-\-maintainer\fR
 or
-.Fl -category
-(recognized field names are those from the PortIndex, see "port help
-info" for a complete list). If no specific fields are specified, a
-useful default collection of fields will be displayed. If the global option
-.Fl q
-is in effect, the meta-info fields will not be labeled.
-If the option
-.Fl -line
-is provided, all such data will be consolidated into a single line per port,
-suitable for processing in a pipe of commands.
-If the option
-.Fl -pretty
-is provided, the information will be formatted in a somewhat more
-attractive fashion for human readers. This is the default when no
-options at all are specified to info.
-If the option
-.Fl -index
-is provided, the information will be pulled from the PortIndex rather than
-from the Portfile (in this case variant information, such as dependencies,
-will not affect the output).
-.Pp
+\fB\-\-category\fR\&. Recognized field names are those from the PortIndex, see \(lqport help info\(rq for a complete list\&. If no specific fields are specified, a useful default collection of fields will be displayed\&. If the global option
+\fB\-q\fR
+is in effect, the meta\-info fields will not be labeled\&. If the option
+\fB\-\-line\fR
+is provided, all such data will be consolidated into a single line per port, suitable for processing in a pipe of commands\&. If the option
+\fB\-\-pretty\fR
+is provided, the information will be formatted in a somewhat more attractive fashion for human readers\&. This is the default when no options at all are specified to info\&. If the option
+\fB\-\-index\fR
+is provided, the information will be pulled from the PortIndex rather than from the Portfile\&. In this case variant information, such as dependencies, will not affect the output\&.
+.sp
 For example:
-.br
-.Dl "port info vim +ruby"
-.Dl "port info --category --name apache*"
-.Dl "port -q info --category --name --version category:java"
-.Dl "port info --line --category --name all"
-.Dl "port info --pretty --fullname --depends gtk2"
-.Dl "port info --index python24"
-.Ss notes
-Displays notes for 
-.Ar portname
-(useful information concerning setup and use of the port).
-.Ss variants
-Lists the build variants available for
-.Ar portname .
-.Ss deps
-Lists the other ports that are required to build and run
-.Ar portname .
-This is simply an alias for "info --pretty --fullname --depends".
-.Ss rdeps
-Recursively lists the other ports that are required to build and run
-.Ar portname .
-To display the full dependency tree instead of only showing each port once, use
-.Fl -full .
-To take dependency information from the PortIndex instead of the Portfile
-(faster, but does not take variant selections into account), use
-.Fl -index .
-To exclude dependencies that are only needed at build time (i.e.
-depends_fetch, depends_extract, depends_build), use
-.Fl -no-build .
-.Ss dependents
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port info vim +ruby
+port info \-\-category \-\-name apache*
+port \-q info \-\-category \-\-name \-\-version category:java
+port info \-\-line \-\-category \-\-name all
+port info \-\-pretty \-\-fullname \-\-depends gtk2
+port info \-\-index python27
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+notes
+.RS 4
+Displays notes for
+\fIportname\fR
+which usually contain useful information concerning setup and use of the port\&.
+.RE
+.PP
+variants
+.RS 4
+Lists the variants available for
+\fIportname\fR\&.
+.RE
+.PP
+deps
+.RS 4
+Lists the other ports that are required to build and run portname\&. This is simply an alias for \(lqinfo \-\-pretty \-\-fullname \-\-depends\(rq\&.
+.RE
+.PP
+rdeps
+.RS 4
+Recursively lists the other ports that are required to build and run portname\&. To display the full dependency tree instead of only showing each port once, use \-\-full\&. To take dependency information from the PortIndex instead of the Portfile (faster, but does not take variant selections into account), use \-\-index\&. To exclude dependencies that are only needed at build time (i\&.e\&. depends_fetch, depends_extract, depends_build), use
+\fB\-\-no\-build\fR\&.
+.RE
+.PP
+dependents
+.RS 4
 Lists the installed ports that depend on the port
-.Ar portname .
-.Ss rdependents
-Recursively lists the installed ports that depend on the port
-.Ar portname .
-To display the full tree of dependents instead of only showing each port once, use
-.Fl -full .
-.Ss install
+\fIportname\fR\&.
+.RE
+.PP
+rdependents
+.RS 4
+Recursively lists the installed ports that depend on the port portname\&. To display the full tree of dependents instead of only showing each port once, use \-\-full\&.
+.RE
+.PP
+install
+.RS 4
 Install and activate
-.Ar portname .
-.Ss uninstall
-Deactivate and uninstall
-.Ar portname .
-To uninstall all installed but inactive ports, use
-.Fl u .
-To recursively uninstall all ports that depend on
-.Ar portname
-before uninstalling the port itself, use
-.Fl -follow-dependents .
-To uninstall
-.Ar portname
-and then recursively uninstall all ports it depended on, use
-.Fl -follow-dependencies .
-This will not uninstall dependencies that are marked as requested or that have other dependents.
-.Pp
+\fIportname\fR\&.
+.RE
+.PP
+uninstall
+.RS 4
+Deactivate and uninstall portname\&. To uninstall all installed but
+\fIinactive\fR
+ports, use
+\fB\-u\fR\&. To recursively uninstall all dependents of this port, use
+\fB\-\-follow\-dependents\fR\&. To uninstall portname and then recursively uninstall all ports it depended on, use \-\-follow\-dependencies\&. This will not uninstall dependencies that are marked as requested or that have other dependents\&.
+.sp
 For example:
-.Pp
-.Dl "port uninstall vim"
-.Dl "port -u uninstall"
-.Dl "port uninstall --follow-dependents python24"
-.Ss select
-For a given
-.Ar group ,
-selects a
-.Ar version
-to be the default by creating appropriate symbolic links.
-For instance,
-.Ic "python"
-might be linked to
-.Ic "python2.6" .
-Available select groups are installed as subdirectories of
-.Ar ${prefix}/etc/select/
-and can be listed using
-.Fl -summary .
-To list the available versions in a group, use
-.Fl -list .
-To see which version is currently selected for a group, use
-.Fl -show .
-To change the selected version for a group, use
-.Fl -set .
-.Pp
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port uninstall vim
+port \-u uninstall
+port uninstall \-\-follow\-dependents python27
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+select
+.RS 4
+For a given group, selects a version to be the default by creating appropriate symbolic links\&. For instance, python might be linked to python2\&.6\&. Available select groups are installed as subdirectories of ${prefix}/etc/select/ and can be listed using
+\fB\-\-summary\fR\&. To list the available versions in a group, use
+\fB\-\-list\fR\&. To see which version is currently selected for a group, use
+\fB\-\-show\fR\&. To change the selected version for a group, use
+\fB\-\-set\fR\&.
+.sp
 For example:
-.Pp
-.Dl "port select --summary"
-.Dl "port select --show python"
-.Dl "port select --list python"
-.Dl "port select --set python python34"
-.Pp
-.Ss activate
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port select \-\-summary
+port select \-\-show python
+port select \-\-list python
+port select \-\-set python python34
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+activate
+.RS 4
 Activate the installed
-.Ar portname .
-.Ss deactivate
+\fIportname\fR\&.
+.RE
+.PP
+deactivate
+.RS 4
 Deactivate the installed
-.Ar portname .
-.Ss setrequested
-Mark
-.Ar portname
-as requested.
-.Ss unsetrequested
-Mark
-.Ar portname
-as unrequested.
-.Ss installed
-Show the installed versions and variants for
-.Ar portname .
-If no
-.Ar portname
-is given, all installed ports are shown.
-.Ss location
-Print the install location of a given port.
-.Ss contents
+\fIportname\fR\&.
+.RE
+.PP
+setrequested
+.RS 4
+Mark portname as requested\&.
+.RE
+.PP
+unsetrequested
+.RS 4
+Mark portname as unrequested\&.
+.RE
+.PP
+installed
+.RS 4
+Show the installed version, variants and activation status for each
+\fIportname\fR\&. If no arguments are given, all installed ports are displayed\&.
+.RE
+.PP
+location
+.RS 4
+Print the install location of a given port\&.
+.RE
+.PP
+contents
+.RS 4
 Lists the files installed by
-.Ar portname .
-.Ss provides
-Determines which port owns a given file and can take either a relative or absolute path. For example:
-.Pp
-.Dl "port provides /opt/local/etc/irssi.conf"
-.Dl "port provides include/tiff.h"
-.Ss sync
-Performs a sync operation only on the ports tree of a MacPorts installation, pulling in the latest
-revision available of the
-.Ar Portfiles
-from the MacPorts rsync server. To update you would normally do:
-.Pp
-.Dl "sudo port -d sync"
-.Pp
-If any of the ports tree(s) uses a file: URL that points to a local subversion working copy,
-.Ic sync
-will perform an
-.Ic "svn update"
-on the working copy with the user set to the owner of the working copy.
-.Ss outdated
-List the installed ports that need upgrading.
-.Ss upgrade
-The upgrade target works on a port and its dependencies. If you
-want to change this behaviour, look at the switches for n (no
-dependencies) and R (dependents) below.
-.Pp    
+\fIportname\fR\&.
+.RE
+.PP
+provides
+.RS 4
+Determines which port owns a given file and can take either a relative or absolute path\&.
+.sp
+For example:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port provides /opt/local/etc/irssi\&.conf
+port provides include/tiff\&.h
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+sync
+.RS 4
+Performs a sync operation only on the ports tree of a MacPorts installation, pulling in the latest revision available of the Portfiles from the MacPorts rsync server\&.
+.sp
+To update you would normally do:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+sudo port \-d sync
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+If any of the ports tree(s) uses a file: URL that points to a local subversion working copy, sync will perform an svn update on the working copy with the user set to the owner of the working copy\&.
+.RE
+.PP
+outdated
+.RS 4
+Lists the installed ports which need a
+\fIupgrade\fR\&.
+.RE
+.PP
+upgrade
+.RS 4
+The upgrade target works on a port and its dependencies\&. If you want to change this behavior, look at the switches for
+\fB\-n\fR
+(no dependencies) and
+\fB\-R\fR
+(dependents) above\&.
+.sp
 Upgrade the installed
-.Ar portname .
-For example:
-.Pp
-.Dl "port upgrade vim"
-.Pp
-To upgrade all installed ports:
-.Pp
-.Dl "port upgrade installed"
-.Pp
+\fIportname\fR\&. For example:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port upgrade vim
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+To upgrade all outdated ports:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port upgrade outdated
+.fi
+.if n \{\
+.RE
+.\}
+.sp
 To upgrade
-.Ar portname
+\fIportname\fR
 and the ports that depend on it:
-.Pp
-.Dl "port -R upgrade libiconv"
-.Pp
-To force an upgrade (rebuild) use:
-.Pp
-.Dl "port upgrade --force vim"
-.Pp
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port \-R upgrade libiconv
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+To force a rebuild of
+\fIportname\fR
+and all of its dependencies use:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port upgrade \-\-force vim
+.fi
+.if n \{\
+.RE
+.\}
+.sp
 To upgrade
-.Ar portname
-without following its dependencies, use
-.Fl n .
+\fIportname\fR
+without following its dependencies before, use
+\fB\-n\fR\&.
+.sp
 For example:
-.Pp
-.Dl "port -n upgrade wireshark"
-.Pp  
-Note that in selecting the variants to use in the upgraded build of the 
-port, any variants specified on the command line take highest precedence, 
-then the variants active in the latest installed version of the port, and 
-finally the global variants specified in variants.conf, if any.  Note that 
-upgrade will not normally rebuild a port only to change the selected 
-variants; you can either specify --enforce-variants, or deactivate the port and reinstall it 
-with different variants. 
-.Pp
-After the upgrade MacPorts will automatically run \fBrev-upgrade\fP to check for
-broken ports that need to be rebuilt. If there are known problems with
-\fBrev-upgrade\fP or other reasons why you would want to avoid running this
-step, you can disable it by running \fBport upgrade\fP with the
-\fB--no-rev-upgrade\fP switch:
-.Pp
-.Dl "port upgrade --no-rev-upgrade outdated"
-.Ss rev-upgrade
-Manually check for broken binaries and rebuild ports containing broken binaries.
-\fBrev-upgrade\fP is usually automatically run after each upgrade, unless you
-specify the \fB--no-rev-upgrade\fP option.
-.Pp
-\fBrev-upgrade\fP can run more checks against a special loadcommand in Mach-O
-binaries that should always be referencing the file itself. This check is most
-helpful for maintainers to check whether their ports have been built correctly.
-It is disabled by default and can be enabled by passing \fB--id-loadcmd-check\fP
-to \fBrev-upgrade\fP.
-.Pp
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port \-n upgrade wireshark
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBNote\fR
+.ps -1
+.br
+By selecting the variants to use in the upgraded build of the port, any variants specified on the command line take highest precedence, then the variants active in the latest installed version of the port, and finally the global variants specified in variants\&.conf, if any\&. Note that upgrade will not normally rebuild a port only to change the selected variants; you can either specify \-\-enforce\-variants, or deactivate the port and reinstall it with different variants\&.
+.sp .5v
+.RE
+\ \&
+.sp
+After the upgrade MacPorts will automatically run rev\-upgrade to check for broken ports that need to be rebuilt\&. If there are known problems with rev\-upgrade or other reasons why you would want to avoid running this step, you can disable it by running port upgrade with the \-\-no\-rev\-upgrade switch:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port upgrade \-\-no\-rev\-upgrade outdated
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+rev\-upgrade
+.RS 4
+Manually check for broken binaries and rebuild ports containing broken binaries\&. rev\-upgrade is usually automatically run after each upgrade, unless you specify the \-\-no\-rev\-upgrade option\&.
+
+rev\-upgrade can run more checks against a special loadcommand in Mach\-O binaries that should always be referencing the file itself\&. This check is most helpful for maintainers to check whether their ports have been built correctly\&. It is disabled by default and can be enabled by passing \-\-id\- loadcmd\-check to rev\-upgrade\&.
+
 See also:
-.Xr macports.conf 5
-.Ss clean
+\fBmacports.conf\fR(5)
+.RE
+.PP
+clean
+.RS 4
 Clean the files used for building
-.Ar portname .
-To just remove the work files, use the
-.Fl -work
-.Ar actionflag .
-This is the default when no flag is given.
-To remove the distribution files (tarballs, etc), specify
-.Fl -dist .
-To remove any archives of a port that remain in the temporary download directory, pass
-.Fl -archive .
-(This does not remove archives from the installed location.)
-To remove the log files for a port, pass
-.Fl -logs .
-To remove the work files, distribution files, temporary archives and logs, pass
-.Fl -all .
+\fIportname\fR\&. To just remove the work files, use the
+\fB\-\-work\fR\fIactionflag\fR\&. This is the default when no flag is given\&. To remove the distribution files (fetched tarballs, patches, etc), specify
+\fB\-\-dist\fR\&. To remove any archive(s) of a port than remain in the temporary download directory, pass
+\fB\-\-archive\fR\&. (This does not remove archives from the installed location\&.) To remove log files for a port, pass
+\fB\-\-logs\fR\&. To remove the work files, distribution files, temporary archives and logs pass
+\fB\-\-all\fR\&.
+.sp
 For example:
-.Pp
-.Dl "port clean --dist vim"
-.Dl "port clean --logs vim"
-.Pp
-To remove only certain version(s) of a port's temporary archives (
-.Ar version
-is any valid UNIX glob pattern), you can use:
-.Pp
-.Dl "port clean --archive vim 6.2.114"
-.Pp
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port clean \-\-dist vim
+port clean \-\-archive vim
+port clean \-\-logs vim
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+To remove only certain version(s) of a port\(cqs archives (version is any valid UNIX glob pattern), you can use:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port clean \-\-archive vim 6\&.2\&.114
+.fi
+.if n \{\
+.RE
+.\}
+.sp
 or:
-.Pp
-.Dl "port clean --archive vim '6.*'"
-.Ss log
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port clean \-\-archive vim \*(Aq6\&.*\*(Aq
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+log
+.RS 4
 Parses and shows log files for
-.Ar portname .
-To filter log files by some criterions use
-.Fl -phase 
-to specify phase you want to show and
-.Fl -verbosity
-to specify message category (msg, info, debug)
+\fIportname\fR\&. To filter log files by some criterions use
+\fB\-\-phase\fR
+to specify the phase you want to show and
+\fB\-\-verbosity\fR
+to specify message category (msg, info, debug)\&.
+.sp
 For example:
-.Pp
-.Dl "port log --phase configure vim"
-.Dl "port log --phase fetch --verbosity debug vim"
-.Pp
-.Ss logfile
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port log \-\-phase configure vim
+port log \-\-phase fetch \-\-verbosity debug vim
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+logfile
+.RS 4
 Displays the path to the log file for
-.Ar portname .
-.Pp
-.Ss echo
+\fIportname\fR\&.
+.RE
+.PP
+echo
+.RS 4
 Writes to stdout the arguments passed to
-.Nm .
-This follows the expansion of
-.Ar pseudo-portnames ,
-portname glob patterns,
-.Ar pseudo-portname selectors
-and the evaluation of port expressions.
-.Nm echo 
-may be used to determine the exact set of ports to which a given string of arguments will expand, without performing any further operations on them. For example:
-.Pp
-.Dl port echo category:net
-.Dl port echo maintainer:jmpp and name:netw
-.Dl port echo maintainer:jmpp and \e(\ net* or category:text\ \e)
-.Pp
-.Ss list
-If no argument is given, display a list of the latest version of all available ports.
-If portname(s) are given as arguments, display a list of the latest version of each port.
-.Ss mirror
-Create/update a local mirror of distfiles used for ports given on the command line.  The filemap database can be reset by using the
-.Fl -new
-option (though if no database is found, it will be created automatically).
-If the fetched file does not match the checksum given in the Portfile, it is
-deleted.  This can be used with
-.Ar pseudo-portnames ,
-eg,
-.Ar all ,
-to mirror everything.  Note that if you use
-.Ar all ,
-you'll most likely want to use
-.Fl p
+\fIport\fR\&. This follows the expansion of
+\fIpseudo\-portnames\fR, portname glob patterns,
+\fIpseudo\-portname selectors\fR
+and the evaluation of
+\fIport\-expressions\fR\&.
+\fBecho\fR
+may be used to determine the exact set of ports to which a given string of arguments will expand, without performing any further operations on them\&.
+.sp
+For example:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port echo category:net
+port echo maintainer:jmpp and name:netw
+port echo maintainer:jmpp and \e( net* or category:text \e)
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+list
+.RS 4
+If no argument is given, display a list of the latest version of all available ports\&. If portname(s) are given as arguments, display a list of the latest version of each port\&.
+.RE
+.PP
+mirror
+.RS 4
+Create/update a local mirror of distfiles used for ports given on the command line\&. The filemap database can be reset by using the
+\fB\-\-new\fR
+option (though if no database is found, it will be created automatically)\&. If the fetched file does not match the checksum given in the Portfile, it is deleted\&. This can be used with
+\fIpseudo\-portnames\fR, e\&.g\&.
+\fIall\fR, to mirror everything\&. Note that if you use
+\fIall\fR, you\(cqll most likely want to use
+\fB\-p\fR
 so
-.Nm
-doesn't quit on the first download failure.
-.Ss version
-Display the release number of the installed MacPorts infrastructure.
-.Ss platform
-Display the platform information for the current system.
-.Ss selfupdate
-Updates the MacPorts system, ports tree(s) and base tools if needed, from the MacPorts rsync server,
-installing the newest infrastructure available. To update you would typically do:
-.Pp
-.Dl "sudo port selfupdate"
-.Pp
+\fBport\fR
+doesn\(cqt quit on the first download failure\&.
+.RE
+.PP
+version
+.RS 4
+Display the release number of the installed MacPorts infrastructure\&.
+.RE
+.PP
+selfupdate
+.RS 4
+Updates the MacPorts system, ports tree(s) and base tools if needed, from the MacPorts rsync server, installing the newest infrastructure available\&.
+.sp
+To update you would typically do:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+sudo port selfupdate
+.fi
+.if n \{\
+.RE
+.\}
+.sp
 See
-.Ic sync
-for more information about updating ports tree(s).
-.Ss load
-Provides a shortcut to using launchctl to load a port's daemon (as installed
-in /Library/LaunchDaemons).  It runs:
-.Pp
-.Dl launchctl load -w /Library/LaunchDaemons/org.macports.${port}.plist
-.Ss unload
-A shortcut to launchctl, like load, but unloads the daemon.
-.Ss gohome
-Loads the home page for the given 
-.Ar portname 
-in the default web browser.
-.Ss usage
-Displays a condensed usage summary.
-.Ss help
-Displays a summary of all available actions and port command syntax on stdout.
-.Sh DEVELOPER TARGETS
-The targets that are often used by Port developers are intended to provide access to the different phases of a Port's build process:
-.Ss dir
+\fIsync\fR
+for more information about updating ports tree(s)\&.
+.RE
+.PP
+load
+.RS 4
+Provides a shortcut to using launchctl to load a port\(cqs daemon (as installed in /Library/LaunchDaemons)\&. It runs:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+launchctl load \-w /Library/LaunchDaemons/org\&.macports\&.${port}\&.plist
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+unload
+.RS 4
+A shortcut to launchctl, like load, but unloads the daemon\&.
+.RE
+.PP
+reload
+.RS 4
+A shortcut to launchctl, like load and unload, but reloads the daemon\&.
+.RE
+.PP
+gohome
+.RS 4
+Loads the home page for the given portname in the default web browser\&.
+.RE
+.PP
+usage
+.RS 4
+Displays a condensed usage summary\&.
+.RE
+.PP
+help
+.RS 4
+Displays a summary of all available actions and port command syntax on stdout\&.
+.RE
+.SH "DEVELOPER TARGETS"
+.sp
+The targets that are often used by Port developers are intended to provide access to the different phases of a Port\(cqs build process:
+.PP
+dir
+.RS 4
 Displays the path to the directory containing
-.Ar portname .
-.Ss work
+\fIportname\fR\&.
+.RE
+.PP
+work
+.RS 4
 Displays the path to the work directory for
-.Ar portname .
-.Ss cd
-Changes the current working directory to the one containing
-.Ar portname .
-Only useful in interactive mode.
-.Ss file
+\fIportname\fR\&.
+.RE
+.PP
+cd
+.RS 4
+Changes the current working directory to the one containing portname\&. Only useful in interactive mode\&.
+.RE
+.PP
+file
+.RS 4
 Displays the path to the Portfile for
-.Ar portname .
-.Ss url
-Displays the URL for the path of the given
-.Ar portname ,
-which can be passed as port-url
-.Ss cat
+\fIportname\fR\&.
+.RE
+.PP
+url
+.RS 4
+Displays the URL for the path of the given portname, which can be passed as
+\fIport\-url\fR\&.
+.RE
+.PP
+cat
+.RS 4
 Concatenates and prints the contents of
-.Ar Portfile
-on stdout.
-.Ss edit
-Opens
-.Ar Portfile 
-with your default editor specified in your shell's environment variable.
-.Pp
-You can also use the
-.Fl -editor
-flag on the command line to specify an alternative editor. For example:
-.Dl port edit --editor nano apache2
-.Pp
-.Ss fetch
+\fIPortfile\fR
+on stdout\&.
+.RE
+.PP
+edit
+.RS 4
+Opens Portfile with your default editor specified in your shell\(cqs environment variable\&. You can also use the \-\-editor flag on the command line to specify an alternative editor\&.
+.sp
+For example:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port edit \-\-editor nano apache2
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+fetch
+.RS 4
 Fetches the distribution files required to build
-.Ar portname .
-.Ss checksum
-Compute the checksums of the distribution files for 
-.Ar portname ,
-and compare them to the checksums listed in 
-.Ar Portfile .
-.Ss extract
+\fIportname\fR\&.
+.RE
+.PP
+checksum
+.RS 4
+Compute the checksums of the distribution files for
+\fIportname\fR, and compare them to the checksums listed in
+\fIPortfile\fR\&.
+.RE
+.PP
+extract
+.RS 4
 Extracts the distribution files for
-.Ar portname .
-.Ss patch
-Applies any required patches to 
-.Ar portname's
-extracted distribution files.
-.Ss configure
+\fIportname\fR\&.
+.RE
+.PP
+patch
+.RS 4
+Applies any required patches to
+\fIportname\(cqs\fR
+extracted distribution files\&.
+.RE
+.PP
+configure
+.RS 4
 Runs any configure process for
-.Ar portname .
-.Ss build
+\fIportname\fR\&.
+.RE
+.PP
+build
+.RS 4
 Build
-.Ar portname .
-.Ss destroot
+\fIportname\fR\&.
+.RE
+.PP
+destroot
+.RS 4
 Installs
-.Ar portname
-to a temporary directory.
-.Ss test
+\fIportname\fR
+to a temporary directory\&.
+.RE
+.PP
+test
+.RS 4
 Tests
-.Ar portname .
-.Ss lint
-Verifies Portfile for
-.Ar portname .
-To nitpick about whitespace and patchfile names, use
-.Fl -nitpick .
-.Ss distcheck
-Check if the distfiles haven't changed and can be fetched.
-.Ss distfiles
-Display each distfile, its checksums, and the URLs used to fetch it.
-.Ss livecheck
-Check if the software hasn't been updated since the Portfile was last modified.
-.Sh PACKAGING TARGETS
+\fIportname\fR\&.
+.RE
+.PP
+lint
+.RS 4
+Verifies Portfile for portname\&. To nitpick about whitespace and patchfile names, use
+\fB\-\-nitpick\fR\&.
+.RE
+.PP
+distcheck
+.RS 4
+Check if the distfiles haven\(cqt changed and can be fetched\&.
+.RE
+.PP
+distfiles
+.RS 4
+Display each distfile, its checksums, and the URLs used to fetch it\&.
+.RE
+.PP
+livecheck
+.RS 4
+Check if the software hasn\(cqt been updated since the Portfile was last modified\&.
+.RE
+.SH "PACKAGING TARGETS"
+.sp
 There are also targets for producing installable packages of ports:
-.Pp
-.Ss pkg
+.PP
+pkg
+.RS 4
 Creates an OS X installer package of
-.Ar portname.
-.Ss mpkg
-Creates an OS X installer metapackage of 
-.Ar portname
-and its dependencies.
-.Ss dmg
-Creates an internet-enabled disk image containing an OS X package of
-.Ar portname .
-.Ss mdmg
-Creates an internet-enabled disk image containing an OS X metapackage of
-.Ar portname
-and its dependencies.
-.Ss rpm
-Creates an RPM binary package of
-.Ar portname ,
-similar to a tgz "archive".
-.Ss srpm
-Creates a SRPM source package of
-.Ar portname ,
-similar to a xar "portpkg".
-.Ss dpkg
-Creates a DEB binary package of
-.Ar portname .
-.Sh EXAMPLES
-The following demonstrates invoking
-.Nm
-with the
-.Ar extract
-target on
-.Ar portdir
-\&"textproc/figlet" and extract.suffix set to ".tgz":
-.Pp
-.Dl "port extract -D textproc/figlet extract.suffix=.tgz"
-.Pp
-.Sh FILES
-.Bl -tag -width
-.It Va ${prefix}/etc/macports/macports.conf
-Global configuration file for the MacPorts system.
-.It Va ${prefix}/etc/macports/sources.conf
-Global listing of the ports trees used by MacPorts. This file also enables rsync synchronization.
-.It Va ${prefix}/etc/macports/variants.conf
-Global variants used when a port is installed.
-.It Va ~/.macports/macports.conf
-User configuration file for the MacPorts system. It overrides the global
-.Ar macports.conf
-file.
-.El
-.Sh DIAGNOSTICS
-.Ex -std
-.Sh SEE ALSO
-.Xr macports.conf 5 ,
-.Xr portfile 7 ,
-.Xr portgroup 7 ,
-.Xr portstyle 7 ,
-.Xr porthier 7
-.Sh AUTHORS
-.An "Landon Fuller" Aq landonf at macports.org
-.An "James Berry" Aq jberry at macports.org
-.An "Jordan K. Hubbard" Aq jkh at macports.org
-.An "Juan Manuel Palacios" Aq jmpp at macports.org
-.An "Kevin Van Vechten" Aq kevin at opendarwin.org
-.An "Ole Guldberg Jensen" Aq olegb at opendarwin.org
-.An "Robert Shaw" Aq rshaw at opendarwin.org
-.An "Chris Ridd" Aq cjr at opendarwin.org
-.An "Matt Anton" Aq matt at opendarwin.org
-.An "Joe Auty" Aq joe at opendarwin.org
+\fIportname\fR\&.
+.RE
+.PP
+mpkg
+.RS 4
+Creates an OS X installer metapackage of
+\fIportname\fR
+and its dependencies\&.
+.RE
+.PP
+dmg
+.RS 4
+Creates an internet\-enabled disk image containing an OS X package of
+\fIportname\fR\&.
+.RE
+.PP
+mdmg
+.RS 4
+Creates an internet\-enabled disk image containing an OS X metapackage of
+\fIportname\fR
+and its dependencies\&.
+.RE
+.SH "EXAMPLES"
+.sp
+The following demonstrates invoking port with the extract target on portdir \(lqtextproc/figlet\(rq and extract\&.suffix set to \(lq\&.tgz\(rq:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port extract \-D textproc/figlet extract\&.suffix=\&.tgz
+.fi
+.if n \{\
+.RE
+.\}
+.SH "FILES"
+.PP
+${prefix}/etc/macports/macports\&.conf
+.RS 4
+Global configuration file for the MacPorts system\&.
+.RE
+.PP
+${prefix}/etc/macports/sources\&.conf
+.RS 4
+Global listing of the ports trees used by MacPorts\&. This file also enables rsync synchronization\&.
+.RE
+.PP
+${prefix}/etc/macports/variants\&.conf
+.RS 4
+Global variants used when a port is installed\&.
+.RE
+.PP
+~/\&.macports/macports\&.conf
+.RS 4
+User configuration file for the MacPorts system\&. It overrides the global
+\fImacports\&.conf(5)\fR
+file\&.
+.RE
+.SH "DIAGNOSTICS"
+.sp
+The \fBport\fR utility exits 0 on success, and >0 if an error occurs\&.
+.SH "SEE ALSO"
+.sp
+\fBmacports.conf\fR(5), \fBportfile\fR(7), \fBportgroup\fR(7), \fBportstyle\fR(7), \fBporthier\fR(7)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2002\-2003 Apple Inc\&.
+(C) 2004\-2012 The MacPorts Project
+Landon Fuller <landonf at macports\&.org>
+James Berry <jberry at macports\&.org>
+Jordan K\&. Hubbard <jkh at macports\&.org>
+Juan Manuel Palacios <jmpp at macports\&.org>
+Kevin Van Vechten <kevin at opendarwin\&.org>
+Ole Guldberg Jensen <olegb at opendarwin\&.org>
+Robert Shaw <rshaw at opendarwin\&.org>
+Chris Ridd <cjr at opendarwin\&.org>
+Matt Anton <matt at opendarwin\&.org>
+Joe Auty <joe at opendarwin\&.org>
+Rainer Mueller <raimue at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/port.1.txt (from rev 123795, trunk/base/doc/port.1.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/port.1.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/port.1.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,697 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+port(1)
+=======
+$Id$
+
+NAME
+----
+port - Command line interface for MacPorts
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+*port* [*-bcdfknopqRstuvy*] [*-D* 'portdir'] [*-F* 'cmdfile'] ['action'] ['actionflags']
+     [['portname' | 'pseudo-portname' | 'port-expressions' | 'port-url']]
+     [['@version'] [+/-variant ...] ... [option=value ...]]
+
+DESCRIPTION
+-----------
+*port* is designed to operate on individual or multiple 'ports', optionally
+within a single call, based on the requested 'action'. If no 'action' is
+specified the port command enters interactive mode, in which commands are read
+via stdin. If no 'portdir' or 'portname' is specified for an 'action', the
+current working directory is assumed. Batch commands may be passed via a
+'cmdfile'. Port 'options' are passed as key=value pairs and take precedence over
+individual 'portname' options as specified in its Portfile and system-wide
+settings.
+
+Port 'variants' can be specified as '+name', which indicates the variant is
+desired, or '-name', indicating the contrary. In case of ambiguities, a port
+can be fully specified with the '@version_revision+variants' format.
+
+Installed ports can be activated or deactivated without being uninstalled. A
+port can be installed in multiple versions and variant combinations, but only
+one of them can be 'active'. See man:portarchives[7].
+
+When passing 'portnames' to an 'action', *port* recognizes various
+'pseudo-portnames' that will expand to the specified set of ports from the
+available port tree(s). These may be used in the same way as a 'portname'.
+
+.The 'pseudo-portnames' are:
+
+    - 'all': all the ports in each ports tree listed in 'sources.conf'
+    - 'current': the port in the current working directory
+    - 'active': set of installed and active ports
+    - 'inactive': set of installed but inactive ports
+    - 'installed': set of all installed ports
+    - 'uninstalled': ports in the ports tree(s) that are not installed
+    - 'outdated': installed ports that are out of date with respect to their 
+      current version/revision in the ports tree(s)
+    - 'obsolete': set of ports that are installed but no longer exist in any
+      port tree
+    - 'requested': installed ports that were explicitly asked for
+    - 'unrequested': installed ports that were installed only to satisfy
+      dependencies
+    - 'leaves': installed ports that are unrequested and have no dependents
+
+Sets of ports can also be specified with 'pseudo-portname selectors', which
+expand to the ports in which the value of the 'Portfile' option corresponding
+to the selector's name (in either singular or plural form where applicable)
+matches the given regular expression. Usage is: selector:regex
+
+[options="compact"]
+.The 'pseudo-portname selectors' are:
+    - 'name'
+    - 'version'
+    - 'revision'
+    - 'epoch'
+    - 'variant'
+    - 'variants'
+    - 'category'
+    - 'categories'
+    - 'maintainer'
+    - 'maintainers'
+    - 'platform'
+    - 'platforms'
+    - 'description'
+    - 'long_description'
+    - 'homepage'
+    - 'license'
+    - 'portdir'
+
+Other pseudo-portname selectors match ports which have a particular
+relationship to another port. These will match ports that are direct or
+recursive dependencies or dependents of the given portname:
+
+[options="compact"]
+    - 'depof'
+    - 'rdepof'
+    - 'dependentof'
+    - 'rdependentof'
+
+Search strings that will expand to a set of matching ports can be constructed
+based on the "'pseudo-portname selector'":regex combination used. 'portnames'
+containing valid UNIX glob patterns will also expand to the set of matching
+ports. Any action passed to port will be invoked on each of them.
+
+For example:
+--------
+port info variant:no_ssl
+port uninstall name:sql
+port echo depof:mysql5
+port echo 'apache*'
+--------
+
+Logical operators "and", "or", "not", "!", "(" and ")" may be used to combine
+individual 'portnames', port glob patterns and/or 'pseudo-portnames' to
+construct complex 'port-expressions' that expand to the set of matching ports.
+
+For example:
+--------
+port upgrade outdated and 'py27-*'
+port echo maintainer:jberry and uninstalled and \( category:java and not commons* \)
+--------
+
+[NOTE]
+Special shell characters like \*, \( or \) need to be escaped in order to be
+passed correctly to *port*.
+
+
+GLOBAL OPTIONS
+--------------
+
+The port command recognizes several global flags and options.
+
+.Output control
+-v::
+    Verbose mode, generates verbose messages
+
+-d::
+    Debug mode, generate debugging messages, implies -v
+
+-q::
+    Quiet mode, suppress informational messages to a minimum
+
+.Installation and upgrade
+-n::
+    Don't follow dependencies in upgrade (affects 'upgrade' and 'install')
+
+-R::
+    Also upgrade dependents (only for 'upgrade')
+
+-u::
+    Uninstall inactive ports when upgrading and uninstalling
+
+-y::
+    Perform a dry run. All of the steps to build the ports and their
+    dependencies are computed, but not actually performed. With the verbose
+    flag, every step is reported; otherwise there is just one message per port,
+    which allows you to easily determine the recursive deps of a port (and the
+    order in which they will be built).
+
+.Sources
+-s::
+    Source-only mode, build and install from source; do not attempt to fetch
+    binary archives.
+
+-b::
+    Binary-only mode, build and install from binary archives, ignore source,
+    abort if no archive available.
+
+.Cleaning
+-c::
+    Autoclean mode, execute clean after 'install'
+
+-k::
+    Keep mode, do not autoclean after 'install'
+
+.Exit status
+-p::
+    Despite any errors encountered, proceed to process multiple ports and
+    commands.
+
+.Development
+-o::
+    Honor state files even if the Portfile was modified. This flag is called -o
+    because it used to mean "older".
+
+-t::
+    Enable trace mode debug facilities on platforms that support it, currently
+    only Mac OS X.
+    + 
+    This feature is two-folded. It consists in automatically detecting and
+    reporting undeclared dependencies based on what files the port reads or what
+    programs the port executes. In verbose mode, it will also report unused
+    dependencies for each stage of the port installation. It also consists in
+    forbidding and reporting file creation and file writes outside allowed
+    directories (temporary directories and $\{workpath\}).
+
+.Misc
+-f::
+    Force mode, ignore state file
+
+-D 'portdir'::
+    Specfiy 'portdir'
+
+-F 'cmdfile'::
+    Read and process the 'file' of commands specified by the argument. If the
+    argument is '-', then read commands from stdin. If the option is given
+    multiple times, then multiple files will be read.
+
+
+USER TARGETS
+------------
+
+Targets most commonly used by regular MacPorts users are:
+
+search::
+    Search for an available port whose name or description matches a regular expression.
++
+For example:
++
+--------
+port search vim
+--------
+
+info::
+    Displays meta-information available for 'portname'.  Specific meta-information
+    may be requested through an option such as *--maintainer* or *--category*.
+    Recognized field names are those from the PortIndex, see ``port help info''
+    for a complete list. If no specific fields are specified, a useful
+    default collection of fields will be displayed. If the global option *-q*
+    is in effect, the meta-info fields will not be labeled.  If the option
+    *--line* is provided, all such data will be consolidated into a single
+    line per port, suitable for processing in a pipe of commands.  If the
+    option *--pretty* is provided, the information will be formatted in a
+    somewhat more attractive fashion for human readers. This is the default
+    when no options at all are specified to info. If the option *--index* is
+    provided, the information will be pulled from the PortIndex rather than
+    from the Portfile. In this case variant information, such as
+    dependencies, will not affect the output.
++
+For example:
++
+--------
+port info vim +ruby
+port info --category --name apache*
+port -q info --category --name --version category:java
+port info --line --category --name all
+port info --pretty --fullname --depends gtk2
+port info --index python27
+--------
+
+notes::
+    Displays notes for 'portname' which usually contain useful information
+    concerning setup and use of the port.
+
+variants::
+    Lists the variants available for 'portname'.
+
+deps::
+    Lists the other ports that are required to build and run portname. This is
+    simply an alias for ``info --pretty --fullname --depends''.
+
+rdeps::
+    Recursively lists the other ports that are required to build and run
+    portname. To display the full dependency tree instead of only showing each
+    port once, use --full. To take dependency information from the PortIndex
+    instead of the Portfile (faster, but does not take variant selections into
+    account), use --index. To exclude dependencies that are only needed at
+    build time (i.e. depends_fetch, depends_extract, depends_build), use
+    *--no-build*.
+
+dependents::
+    Lists the installed ports that depend on the port 'portname'.
+
+rdependents::
+    Recursively lists the installed ports that depend on the port portname. To
+    display the full tree of dependents instead of only showing each port once,
+    use --full.
+
+install::
+    Install and activate 'portname'.
+
+uninstall::
+    Deactivate and uninstall portname. To uninstall all installed but 'inactive'
+    ports, use *-u*. To recursively uninstall all dependents of this port, use
+    *--follow-dependents*. To uninstall portname and then recursively uninstall
+    all ports it depended on, use --follow-dependencies.  This will not
+    uninstall dependencies that are marked as requested or that have other
+    dependents.
++
+For example:
++
+--------
+port uninstall vim
+port -u uninstall
+port uninstall --follow-dependents python27
+--------
+
+select::
+    For a given group, selects a version to be the default by creating
+    appropriate symbolic links.  For instance, python might be linked to
+    python2.6. Available select groups are installed as subdirectories of
+    $\{prefix\}/etc/select/ and can be listed using *--summary*.  To list the
+    available versions in a group, use *--list*. To see which version is currently
+    selected for a group, use *--show*. To change the selected version for
+    a group, use *--set*.
++
+For example:
++
+--------
+port select --summary
+port select --show python
+port select --list python
+port select --set python python34
+--------
+
+activate::
+    Activate the installed 'portname'.
+
+deactivate::
+    Deactivate the installed 'portname'.
+
+setrequested::
+    Mark portname as requested.
+
+unsetrequested::
+    Mark portname as unrequested.
+
+installed::
+    Show the installed version, variants and activation status for each
+    'portname'. If no arguments are given, all installed ports are displayed.
+
+location::
+    Print the install location of a given port.
+
+contents::
+    Lists the files installed by 'portname'.
+
+provides::
+    Determines which port owns a given file and can take either a relative or
+    absolute path.
++
+For example:
++
+--------
+port provides /opt/local/etc/irssi.conf
+port provides include/tiff.h
+--------
+
+sync::
+    Performs a sync operation only on the ports tree of a MacPorts installation,
+    pulling in the latest revision available of the Portfiles from the MacPorts
+    rsync server.
++
+To update you would normally do:
++
+--------
+sudo port -d sync
+--------
++
+If any of the ports tree(s) uses a file: URL that points to a local
+subversion working copy, sync will perform an svn update on the working
+copy with the user set to the owner of the working copy.
++
+
+outdated::
+    Lists the installed ports which need a 'upgrade'.
+
+upgrade::
+    The upgrade target works on a port and its dependencies. If you want to
+    change this behavior, look at the switches for *-n* (no dependencies) and
+    *-R* (dependents) above.
++
+--
+Upgrade the installed 'portname'. For example:
+--------
+port upgrade vim
+--------
+
+To upgrade all outdated ports:
+
+--------
+port upgrade outdated
+--------
+
+To upgrade 'portname' and the ports that depend on it:
+
+--------
+port -R upgrade libiconv
+--------
+
+To force a rebuild of 'portname' and all of its dependencies use:
+
+--------
+port upgrade --force vim
+--------
+
+To upgrade 'portname' without following its dependencies before, use *-n*.
+
+For example:
+
+--------
+port -n upgrade wireshark
+--------
+
+[NOTE]
+By selecting the variants to use in the upgraded build of the port, any variants
+specified on the command line take highest precedence, then the variants active
+in the latest installed version of the port, and finally the global variants
+specified in variants.conf, if any. Note that upgrade will not normally rebuild
+a port only to change the selected variants; you can either specify
+--enforce-variants, or deactivate the port and reinstall it with different
+variants.
+
+// Forcing a new paragraph here by inserting a dummy space
+{nbsp}
+
+After the upgrade MacPorts will automatically run rev-upgrade to check for
+broken ports that need to be rebuilt. If there are known problems with
+rev-upgrade or other reasons why you would want to avoid running this step, you
+can disable it by running port upgrade with the --no-rev-upgrade switch:
+
+--------
+port upgrade --no-rev-upgrade outdated
+--------
+--
+
+rev-upgrade::
+    Manually check for broken binaries and rebuild ports containing broken
+    binaries.  rev-upgrade is usually automatically run after each upgrade,
+    unless you specify the --no-rev-upgrade option.
+    +
+    rev-upgrade can run more checks against a special loadcommand in Mach-O
+    binaries that should always be referencing the file itself. This check is
+    most helpful for maintainers to check whether their ports have been built
+    correctly. It is disabled by default and can be enabled by passing --id-
+    loadcmd-check to rev-upgrade.
+    +
+    See also: man:macports.conf[5]
+
+clean::
+    Clean the files used for building 'portname'. To just remove the work files,
+    use the *--work* 'actionflag'.  This is the default when no flag is given.
+    To remove the distribution files (fetched tarballs, patches, etc), specify
+    *--dist*. To remove any archive(s) of a port than remain in the temporary
+    download directory, pass *--archive*. (This does not remove archives from
+    the installed location.) To remove log files for a port, pass *--logs*. To
+    remove the work files, distribution files, temporary archives and logs pass
+    *--all*.
++
+--
+For example:
+
+--------
+port clean --dist vim
+port clean --archive vim
+port clean --logs vim
+--------
+
+To remove only certain version(s) of a port's archives (version is any
+valid UNIX glob pattern), you can use:
+
+--------
+port clean --archive vim 6.2.114
+--------
+
+or:
+
+--------
+port clean --archive vim '6.*'
+--------
+--
+
+log::
+    Parses and shows log files for 'portname'. To filter log files by some
+    criterions use *--phase* to specify the phase you want to show and
+    *--verbosity* to specify message category (msg, info, debug).
++
+For example:
++
+--------
+port log --phase configure vim
+port log --phase fetch --verbosity debug vim
+--------
+
+logfile::
+    Displays the path to the log file for 'portname'.
+
+echo::
+    Writes to stdout the arguments passed to 'port'. This follows the expansion
+    of 'pseudo-portnames', portname glob patterns, 'pseudo-portname selectors'
+    and the evaluation of 'port-expressions'. *echo* may be used to determine
+    the exact set of ports to which a given string of arguments will expand,
+    without performing any further operations on them.
++
+For example:
++
+--------
+port echo category:net
+port echo maintainer:jmpp and name:netw
+port echo maintainer:jmpp and \( net* or category:text \)
+--------
+
+list::
+    If no argument is given, display a list of the latest version of all
+    available ports. If portname(s) are given as arguments, display a list of
+    the latest version of each port.
+
+mirror::
+    Create/update a local mirror of distfiles used for ports given on the
+    command line. The filemap database can be reset by using the *--new* option
+    (though if no database is found, it will be created automatically). If the
+    fetched file does not match the checksum given in the Portfile, it is
+    deleted. This can be used with 'pseudo-portnames', e.g. 'all', to mirror
+    everything.  Note that if you use 'all', you'll most likely want to use *-p*
+    so *port* doesn't quit on the first download failure.
+
+version::
+    Display the release number of the installed MacPorts infrastructure.
+
+selfupdate::
+    Updates the MacPorts system, ports tree(s) and base tools if needed, from
+    the MacPorts rsync server, installing the newest infrastructure available.
++
+To update you would typically do:
++
+--------
+sudo port selfupdate
+--------
++
+See 'sync' for more information about updating ports tree(s).
+
+load::
+    Provides a shortcut to using launchctl to load a port's daemon (as installed
+    in /Library/LaunchDaemons). It runs:
++
+--------
+launchctl load -w /Library/LaunchDaemons/org.macports.${port}.plist
+--------
+
+unload::
+    A shortcut to launchctl, like load, but unloads the daemon.
+
+reload::
+    A shortcut to launchctl, like load and unload, but reloads the daemon.
+
+gohome::
+    Loads the home page for the given portname in the default web browser.
+
+usage::
+    Displays a condensed usage summary.
+
+help::
+    Displays a summary of all available actions and port command syntax on
+    stdout.
+
+DEVELOPER TARGETS
+-----------------
+
+The targets that are often used by Port developers are intended to provide
+access to the different phases of a Port's build process:
+
+dir::
+    Displays the path to the directory containing 'portname'.
+
+work::
+    Displays the path to the work directory for 'portname'.
+
+cd::
+    Changes the current working directory to the one containing portname. Only
+    useful in interactive mode.
+
+file::
+    Displays the path to the Portfile for 'portname'.
+
+url::
+    Displays the URL for the path of the given portname, which can be passed as
+    'port-url'.
+
+cat::
+    Concatenates and prints the contents of 'Portfile' on stdout.
+
+edit::
+    Opens Portfile with your default editor specified in your shell's
+    environment variable. You can also use the --editor flag on the command line
+    to specify an alternative editor.
++
+For example:
++
+--------
+port edit --editor nano apache2
+--------
+
+fetch::
+    Fetches the distribution files required to build 'portname'.
+
+checksum::
+    Compute the checksums of the distribution files for 'portname', and compare
+    them to the checksums listed in 'Portfile'.
+
+extract::
+    Extracts the distribution files for 'portname'.
+
+patch::
+    Applies any required patches to 'portname's' extracted distribution files.
+
+configure::
+    Runs any configure process for 'portname'.
+
+build::
+    Build 'portname'.
+
+destroot::
+    Installs 'portname' to a temporary directory.
+
+test::
+    Tests 'portname'.
+
+lint::
+    Verifies Portfile for portname. To nitpick about whitespace and patchfile
+    names, use *--nitpick*.
+
+distcheck::
+    Check if the distfiles haven't changed and can be fetched.
+
+distfiles::
+    Display each distfile, its checksums, and the URLs used to fetch it.
+
+livecheck::
+    Check if the software hasn't been updated since the Portfile was last
+    modified.
+
+
+PACKAGING TARGETS
+-----------------
+
+There are also targets for producing installable packages of ports:
+
+pkg::
+    Creates an OS X installer package of 'portname'.
+
+mpkg::
+    Creates an OS X installer metapackage of 'portname' and its dependencies.
+
+dmg::
+    Creates an internet-enabled disk image containing an OS X package of
+    'portname'.
+
+mdmg::
+    Creates an internet-enabled disk image containing an OS X metapackage of
+    'portname' and its dependencies.
+
+
+EXAMPLES
+--------
+
+The following demonstrates invoking port with the extract target on portdir
+``textproc/figlet'' and extract.suffix set to ``.tgz'':
+
+--------
+port extract -D textproc/figlet extract.suffix=.tgz
+--------
+
+FILES
+-----
+
+$\{prefix\}/etc/macports/macports.conf::
+    Global configuration file for the MacPorts system.
+
+$\{prefix\}/etc/macports/sources.conf::
+    Global listing of the ports trees used by MacPorts. This file also enables
+    rsync synchronization.
+
+$\{prefix\}/etc/macports/variants.conf::
+    Global variants used when a port is installed.
+
+~/.macports/macports.conf::
+    User configuration file for the MacPorts system. It overrides the global
+    'macports.conf(5)' file.
+
+DIAGNOSTICS
+-----------
+The *port* utility exits 0 on success, and >0 if an error occurs.
+
+
+SEE ALSO
+--------
+man:macports.conf[5], man:portfile[7], man:portgroup[7],
+man:portstyle[7], man:porthier[7]
+
+
+AUTHORS
+-------
+ (C) 2002-2003 Apple Inc.
+ (C) 2004-2012 The MacPorts Project
+ Landon Fuller <landonf at macports.org>
+ James Berry <jberry at macports.org>
+ Jordan K. Hubbard <jkh at macports.org>
+ Juan Manuel Palacios <jmpp at macports.org>
+ Kevin Van Vechten <kevin at opendarwin.org>
+ Ole Guldberg Jensen <olegb at opendarwin.org>
+ Robert Shaw <rshaw at opendarwin.org>
+ Chris Ridd <cjr at opendarwin.org>
+ Matt Anton <matt at opendarwin.org>
+ Joe Auty <joe at opendarwin.org>
+ Rainer Mueller <raimue at macports.org>

Modified: branches/gsoc14-interactive/base/doc/portgroup.7
===================================================================
--- branches/gsoc14-interactive/base/doc/portgroup.7	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/doc/portgroup.7	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,376 +1,616 @@
-.\" portgroup.7
-.\"
-.\" Copyright (c) 2005 Paul Guyot <pguyot at kallisys.net>
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of The MacPorts Project nor the names of its
-.\"    contributors may be used to endorse or promote products derived from
-.\"    this software without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-.\" POSSIBILITY OF SUCH DAMAGE.
-.\"
-.Dd February 5, 2007
-.Dt XCODE 7 "MacPorts"
-.Os
-.Sh NAME
-.Nm PortGroup
-.Nd MacPorts PortGroup command reference
-.Sh SYNOPSIS
-.Nm PortGroup gnustep 1.0
-.Nm PortGroup perl5 1.0
-.Nm PortGroup python24 1.0
-.Nm PortGroup python25 1.0
-.Nm PortGroup python30 1.0
-.Nm PortGroup ruby 1.0
-.Nm PortGroup xcode 1.0
-.Sh DESCRIPTION
-MacPorts defines the notion of PortGroup classes with the PortGroup command.
-These classes factorize the work for similar ports.  Port maintainers willing to
-use
-.Nm PortGroup
-need to have some notion of Portfiles. See
-.Xr portfile 7
-.Pp
-.Sh XCODE PORTGROUP
-.Nm PortGroup xcode
-is here to easily port Xcode-based opensource software. It handles
-configuration, build and destroot phases. It also defines some values
-for Xcode-based software. A minimum Portfile using the xcode PortGroup class
-only defines the fetch and the checksum phases.
-.Pp
-Using
-.Nm PortGroup xcode
-is a way to make your port more robust to Xcode version updates as the PortGroup
-is tested against all supported Mac OS X and Xcode versions.
-.Sh XCODE PORTGROUP SUGAR
-Portfiles using xcode PortGroup do not need to define the following variables:
-.Bl -tag -width lc
-.It Ic categories
-.Sy Default:
-.Em aqua
-.br
-.It Ic platforms
-.Sy Default:
-.Em macosx
-.br
-.It Ic use_configure
-.Sy Default:
-.Em no
-.El
-.br
-Moreover, Portfiles using
-.Nm PortGroup xcode
-do not need to define any build or destroot phase.  Some options are provided
-for tailoring these phases to what the software requires.
-.Sh XCODE PORTGROUP SPECIFIC VARIABLES
-Portfiles using xcode PortGroup may define the following variables:
-.Bl -tag -width lc
-.It Ic xcode.project
-path (relative to ${build.dir} and ${destroot.dir}) of the Xcode project. If
-unset, let xcode tool figure it out. It usually succeeds if there is a single
-project in the directory.
-.br
-.Sy Type:
-.Em optional
-.br
-.Sy Example:
-.Dl xcode.project ${name}.xcode
-.br
-.It Ic xcode.configuration
-Project configuration/buildstyle to use.
-.br
-.Sy Type:
-.Em optional
-.br
-.Sy Default:
-.Em Deployment
-.br
-.Sy Example:
-.Dl xcode.configuration Main
-.br
-.It Ic xcode.target
-If present, overrides build.target and destroot.target.
-.br
-.Sy Type:
-.Em optional
-.br
-.It Ic xcode.build.settings
-Additional settings passed to the xcode build tool during the build phase.
-These settings should be in the X=Y form.
-.br
-.Sy Type:
-.Em optional
-.br
-.Sy Example:
-.Bd -literal -offset indent -compact
-xcode.build.settings FRAMEWORK_SEARCH_PATHS=${prefix}/Library/Frameworks
-.Ed
-.It Ic xcode.destroot.type
-Type of project that will be installed. This tells Xcode PortGroup how to
-destroot the project. Correct values are application and framework.
-.br
-.Sy Type:
-.Em optional
-.br
-.Sy Default:
-.Em application
-.br
-.Sy Example:
-.Dl xcode.destroot.type framework
-.br
-.It Ic xcode.destroot.path
-Where to install the build product.
-.br
-.Sy Type:
-.Em optional
-.br
-.Sy Default:
-.Em ${prefix}/Library/Frameworks
-or
-.Em /Applications/MacPorts depending on xcode.destroot.type
-.br
-.It Ic xcode.destroot.settings
-Additional settings passed to the xcode build tool during the destroot phase.
-These settings should be in the X=Y form.
-.br
-.Sy Type:
-.Em optional
-.br
-.Sy Example:
-.Bd -literal -offset indent -compact
-xcode.destroot.settings SKIP_INSTALL=NO
-.Ed
-.El
-.Sh STANDARD PORTFILE VARIABLES AFFECTING XCODE PORTGROUP
-The following standard Portfile variables actually affect
-.Nm xcode PortGroup.
-In most cases, you will not need to set any of these variables in the Portfile.
-.Bl -tag -width lc
-.It Ic destroot
-Where to destroot the project.
-.br
-.It Ic build.cmd
-The command to invoke to build the project.
-.Nm xcode PortGroup
-sets this variable to ${xcodebuildcmd}.
-.br
-.It Ic build.target
-The Xcode target to build.
-.Nm xcode PortGroup
-sets this variable to "", thus building all targets. This variable will be
-ignored if xcode.target is set.
-.br
-.It Ic build.pre_args
-Additional parameters for ${build.cmd}.
-.br
-.Sy Default:
+'\" t
+.TH "PORTGROUP" "7" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+portgroup \- MacPorts PortGroup command reference
+.SH "SYNOPSIS"
+.sp
+.nf
+PortGroup gnustep 1\&.0
+PortGroup perl5 1\&.0
+PortGroup python24 1\&.0
+PortGroup python25 1\&.0
+PortGroup python30 1\&.0
+PortGroup ruby 1\&.0
+PortGroup xcode 1\&.0
+.fi
+.SH "DESCRIPTION"
+.sp
+MacPorts defines the notion of PortGroup classes with the PortGroup command\&. These classes factorize the work for similar ports\&. Port maintainers willing to use PortGroup need to have some notion of Portfiles\&. See \fBportfile\fR(7)\&.
+.SH "XCODE PORTGROUP"
+.sp
+\fBPortGroup xcode\fR is here to easily port Xcode\-based opensource software\&. It handles configuration, build and destroot phases\&. It also defines some values for Xcode\-based software\&. A minimum Portfile using the \fBxcode PortGroup\fR class only defines the fetch and the checksum phases\&.
+.sp
+Using \fBPortGroup xcode\fR is a way to make your port more robust to Xcode version updates as the PortGroup is tested against all supported Mac OS X and Xcode versions\&.
+.SS "XCODE PORTGROUP SUGAR"
+.sp
+Portfiles using \fBxcode PortGroup\fR do not need to define the following variables:
+.PP
+categories
+.RS 4
+\fBDefault:\fR
+aqua
+.RE
+.PP
+platforms
+.RS 4
+\fBDefault:\fR
+macosx
+.RE
+.PP
+use_configure
+.RS 4
+\fBDefault:\fR
+no
+.RE
+.sp
+Moreover, Portfiles using \fBPortGroup xcode\fR do not need to define any build or destroot phase\&. Some options are provided for tailoring these phases to what the software requires\&.
+.SS "XCODE PORTGROUP SPECIFIC VARIABLES"
+.sp
+Portfiles using \fBxcode PortGroup\fR may define the following variables:
+.PP
+xcode\&.project
+.RS 4
+Path (relative to ${build\&.dir} and ${destroot\&.dir}) of the Xcode project\&. If unset, let xcode tool figure it out\&. It usually succeeds if there is a single project in the directory\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBType:\fR
+T}:T{
+optional
+T}
+.TE
+.sp 1
+\fBExample:\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+xcode\&.project ${name}\&.xcode
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+xcode\&.configuration
+.RS 4
+Project configuration/buildstyle to use\&.
+.TS
+tab(:);
+lt lt
+lt lt.
+T{
+\fBType:\fR
+T}:T{
+optional
+T}
+T{
+\fBDefault:\fR
+T}:T{
+Deployment
+T}
+.TE
+.sp 1
+\fBExample:\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+xcode\&.configuration Main
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+xcode\&.target
+.RS 4
+If present, overrides build\&.target and destroot\&.target\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBType:\fR
+T}:T{
+optional
+T}
+.TE
+.sp 1
+.RE
+.PP
+xcode\&.build\&.settings
+.RS 4
+Additional settings passed to the xcode build tool during the build phase\&. These settings should be in the X=Y form\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBType:\fR
+T}:T{
+optional
+T}
+.TE
+.sp 1
+\fBExample:\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+xcode\&.build\&.settings FRAMEWORK_SEARCH_PATHS=${prefix}/Library/Frameworks
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+xcode\&.destroot\&.type
+.RS 4
+Type of project that will be installed\&. This tells Xcode PortGroup how to destroot the project\&. Correct values are application and framework\&.
+.TS
+tab(:);
+lt lt
+lt lt.
+T{
+\fBType:\fR
+T}:T{
+optional
+T}
+T{
+\fBDefault:\fR
+T}:T{
+application
+T}
+.TE
+.sp 1
+\fBExample:\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+xcode\&.destroot\&.type framework
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+xcode\&.destroot\&.path
+.RS 4
+Where to install the build product\&.
+.TS
+tab(:);
+lt lt
+lt lt.
+T{
+\fBType:\fR
+T}:T{
+optional
+T}
+T{
+\fBDefault:\fR
+T}:T{
+${prefix}/Library/Frameworks or /Applications/MacPorts depending on xcode\&.destroot\&.type
+T}
+.TE
+.sp 1
+.RE
+.PP
+xcode\&.destroot\&.settings
+.RS 4
+Additional settings passed to the xcode build tool during the destroot phase\&. These settings should be in the X=Y form\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBType:\fR
+T}:T{
+optional
+T}
+.TE
+.sp 1
+\fBExample:\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+xcode\&.destroot\&.settings SKIP_INSTALL=NO
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.SS "STANDARD PORTFILE VARIABLES AFFECTING XCODE PORTGROUP"
+.sp
+The following standard Portfile variables actually affect \fBxcode PortGroup\fR\&. In most cases, you will not need to set any of these variables in the Portfile\&.
+.PP
+destroot
+.RS 4
+Where to destroot the project\&.
+.RE
+.PP
+build\&.cmd
+.RS 4
+The command to invoke to build the project\&.
+\fBxcode PortGroup\fR
+sets this variable to ${xcodebuildcmd}\&.
+.RE
+.PP
+build\&.target
+.RS 4
+The Xcode target to build\&.
+\fBxcode PortGroup\fR
+sets this variable to "", thus building all targets\&. This variable will be ignored if xcode\&.target is set\&.
+.RE
+.PP
+build\&.pre_args
+.RS 4
+Additional parameters for ${build\&.cmd}\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.br
-.It Ic build.args
-Main parameters for ${build.cmd}.
-.br
-.Sy Default:
-.Em build
-.br
-.It Ic build.post_args
-Additional parameters for ${build.cmd}.
-.br
-.Sy Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+build\&.args
+.RS 4
+Main parameters for ${build\&.cmd}\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
+build
+T}
+.TE
+.sp 1
+.RE
+.PP
+build\&.post_args
+.RS 4
+Additional parameters for ${build\&.cmd}\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.br
-.It Ic build.dir
-Where to build the project from (i.e. where the Xcode project is).
-.br
-.Sy Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+build\&.dir
+.RS 4
+Where to build the project from (i\&.e\&. where the Xcode project is)\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 ${worksrcpath}
-.br
-.It Ic destroot.cmd
-The command to invoke to destroot the project.
-.Nm xcode PortGroup
-sets this variable to xcodebuildcmd.
-.br
-.It Ic destroot.target
-The Xcode target to install.
-.Nm xcode PortGroup
-sets this variable to "", thus installing all targets. This variable will be
-ignored if xcode.target is set.
-.br
-.It Ic destroot.pre_args
-Additional parameters for ${destroot.cmd}.
-.br
-.Sy Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+destroot\&.cmd
+.RS 4
+The command to invoke to destroot the project\&.
+\fBxcode PortGroup\fR
+sets this variable to xcodebuildcmd\&.
+.RE
+.PP
+destroot\&.target
+.RS 4
+The Xcode target to install\&.
+\fBxcode PortGroup\fR
+sets this variable to "", thus installing all targets\&. This variable will be ignored if xcode\&.target is set\&.
+.RE
+.PP
+destroot\&.pre_args
+.RS 4
+Additional parameters for ${destroot\&.cmd}\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.br
-.It Ic destroot.args
-Main parameters for ${destroot.cmd}.
-.br
-.Sy Default:
-.Em install
-.br
-.It Ic destroot.post_args
-Additional parameters for ${destroot.cmd}.
-.br
-.Sy Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+destroot\&.args
+.RS 4
+Main parameters for ${destroot\&.cmd}\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
+install
+T}
+.TE
+.sp 1
+.RE
+.PP
+destroot\&.post_args
+.RS 4
+Additional parameters for ${destroot\&.cmd}\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 none
-.br
-.It Ic destroot.dir
-Where to destroot the project from (i.e. where the Xcode project is).
-.br
-.Sy Default:
+T}
+.TE
+.sp 1
+.RE
+.PP
+destroot\&.dir
+.RS 4
+Where to destroot the project from (i\&.e\&. where the Xcode project is)\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBDefault:\fR
+T}:T{
 ${worksrcpath}
-.br
-.El
-.Sh GNUSTEP PORTGROUP
-.Nm PortGroup gnustep
-is here to easily port GNUstep-based opensource software using the GNU 
-objective-C runtime. It handles configuration, build and destroot phases.
-It also defines some values for GNUstep-based software. A minimum Portfile 
-using the gnustep PortGroup class only defines the fetch and the checksum phases.
-.Sh GNUSTEP FILESYSTEM LAYOUTS
-.Nm PortGroup gnustep
-also supports both the traditionnal gnustep file layout and the new fhs file layout.
-However, the ports themselves do not necessarily support both.
-The Portfiles have access to many procedures in dealing with these two layouts :
-.Bl -tag -width lc
-.It Ic set_gnustep_make
+T}
+.TE
+.sp 1
+.RE
+.SH "GNUSTEP PORTGROUP"
+.sp
+\fBPortGroup gnustep\fR is here to easily port GNUstep\-based opensource software using the GNU objective\- C runtime\&. It handles configuration, build and destroot phases\&. It also defines some values for GNUstep\-based software\&. A minimum Portfile using the \fBgnustep PortGroup\fR class only defines the fetch and the checksum phases\&.
+.SS "GNUSTEP FILESYSTEM LAYOUTS"
+.sp
+PortGroup gnustep also supports both the traditionnal gnustep file layout and the new fhs file layout\&. However, the ports themselves do not necessarily support both\&. The Portfiles have access to many procedures in dealing with these two layouts:
+.PP
+set_gnustep_make
+.RS 4
 Sets GNUSTEP_MAKEFILES according to the FilesystemLayout
-.br
-.It Ic set_gnustep_env
+.RE
+.PP
+set_gnustep_env
+.RS 4
 Sets DYLD_LIBRARY_PATH and PATH for the gnustep FilesystemLayout
-.br
-.It Ic gnustep_layout
+.RE
+.PP
+gnustep_layout
+.RS 4
 Returns true (1) if current file layout is gnustep
-.br
-.It Ic set_system_library
+.RE
+.PP
+set_system_library
+.RS 4
 Sets GNUSTEP_SYSTEM_LIBRARY according to the FilesystemLayout
-.br
-.It Ic set_local_library
+.RE
+.PP
+set_local_library
+.RS 4
 Sets GNUSTEP_LOCAL_LIBRARY according to the FilesystemLayout
-.br
-.El
-.Pp
-.Sh GNUSTEP PORTGROUP SUGAR
-Portfiles using gnustep PortGroup do not need to define the following variables:
-.Bl -tag -width lc
-.It Ic categories
-.Sy Default:
-.Em gnustep
-.br
-.It Ic homepage
-.Sy Default:
-.Em http://www.gnustep.org/
-.br
-.It Ic master_sites
-.Sy Default:
-.Em gnustep:core
-.br
-.It Ic depends_lib
-.Sy Default:
-.Em gnustep-core
-.br
-.It Ic use_configure
-.Sy Default:
-.Em no
-.It Ic configure.env
-.Sy Default:
-.Em DYLD_LIBRARY_PATH PATH
-.It Ic configure.pre_args-append
-.Sy Default:
-.Em CC=gcc-mp-4.2 GNUSTEP_MAKEFILES
-.br
-.It Ic build.type
-.Sy Default:
-.Em gnu
-.br
-.It Ic build.env
-.Sy Default:
-.Em DYLD_LIBRARY_PATH PATH
-.It Ic build.pre_args-append
-.Sy Default:
-.Em messages=yes
-.br
-.It Ic destroot.env
-.Sy Default:
-.Em DYLD_LIBRARY_PATH PATH
-.It Ic destroot.pre_args-append
-.Sy Default:
-.Em messages=yes
-.br
-.br
-.El
-.br
-Moreover, Portfiles using
-.Nm PortGroup gnustep
-do not need to define any build or destroot phase.  Some options are provided
-for tailoring these phases to what the software requires.  A mechanism is also
-provided to ease the patch process.
-.Sh GNUSTEP PORTGROUP SPECIFIC VARIABLES
-Portfiles using 
-.Nm gnustep PortGroup 
-may define the following variables:
-.Bl -tag -width lc
-.It Ic gnustep.post_flags
-an associative array which specifies the sub-directories relative to ${worksrcpath}
-and the SHARED_LD_POSTFLAGS variables to be added to GNUmakefile.preamble in those
-sub-directories.  This helps making the patching process easier on Darwin.
-.br
-.Sy Type:
-.Em optional
-.br
-.Sy Example:
-.Dl platform darwin {
-.Dl		array set gnustep.post_flags {
-.Dl			BundleSubDir  """-lfoo -lbar""
-.Dl		}
-.Dl }
-.br
-.It Ic gnustep.cc
-.br
-.Sy Type:
-.Em optional
-.br
-.Sy Default:
-.Em gcc-mp-4.2
-.br
-.Sy Example:
-.Dl gnustep.cc gcc-mp-4.3
-.br
-.It Ic variant with_docs
-Many GNUstep packages include a Documentation sub-directory that is not
-built by default.  Enabling this variant builds and installs the included 
-documentation.
-.br
-.Sy Type:
-.Em optional
-.br
-.Sy Example:
-.Dl port install gnustep-gui +with_docs
-.br
-.El
-.Sh SEE ALSO
-.Xr port 1 ,
-.Xr macports.conf 5 ,
-.Xr portfile 7 ,
-.Xr portstyle 7 ,
-.Xr porthier 7
-.Sh AUTHORS
-.An "Paul Guyot" Aq pguyot at kallisys.net
-.An "Yves de Champlain" Aq yves at macports.org
+.RE
+.SS "GNUSTEP PORTGROUP SUGAR"
+.sp
+Portfiles using \fBgnustep PortGroup\fR do not need to define the following variables:
+.PP
+categories
+.RS 4
+\fBDefault:\fR
+gnustep
+.RE
+.PP
+homepage
+.RS 4
+\fBDefault:\fR\m[blue]\fBhttp://www\&.gnustep\&.org/\fR\m[]
+.RE
+.PP
+master_sites
+.RS 4
+\fBDefault:\fR
+gnustep:core
+.RE
+.PP
+depends_lib
+.RS 4
+\fBDefault:\fR
+gnustep\-core
+.RE
+.PP
+use_configure
+.RS 4
+\fBDefault:\fR
+no
+.RE
+.PP
+configure\&.env
+.RS 4
+\fBDefault:\fR
+DYLD_LIBRARY_PATH PATH
+.RE
+.PP
+configure\&.pre_args\-append
+.RS 4
+\fBDefault:\fR
+CC=gcc\-mp\-4\&.2 GNUSTEP_MAKEFILES
+.RE
+.PP
+build\&.type
+.RS 4
+\fBDefault:\fR
+gnu
+.RE
+.PP
+build\&.env
+.RS 4
+\fBDefault:\fR
+DYLD_LIBRARY_PATH PATH
+.RE
+.PP
+build\&.pre_args\-append
+.RS 4
+\fBDefault:\fR
+messages=yes
+.RE
+.PP
+destroot\&.env
+.RS 4
+\fBDefault:\fR
+DYLD_LIBRARY_PATH PATH
+.RE
+.PP
+destroot\&.pre_args\-append
+.RS 4
+\fBDefault:\fR
+messages=yes
+.RE
+.sp
+Moreover, Portfiles using \fBPortGroup gnustep\fR do not need to define any build or destroot phase\&. Some options are provided for tailoring these phases to what the software requires\&. A mechanism is also provided to ease the patch process\&.
+.SS "GNUSTEP PORTGROUP SPECIFIC VARIABLES"
+.sp
+Portfiles using \fBgnustep PortGroup\fR may define the following variables:
+.PP
+gnustep\&.post_flags
+.RS 4
+an associative array which specifies the sub\-directories relative to ${worksrcpath} and the SHARED_LD_POSTFLAGS variables to be added to GNUmakefile\&.preamble in those sub\-directories\&. This helps making the patching process easier on Darwin\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBType:\fR
+T}:T{
+optional
+T}
+.TE
+.sp 1
+\fBExample:\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+platform darwin {
+    array set gnustep\&.post_flags {
+        BundleSubDir "\-lfoo \-lbar"
+    }
+}
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+gnustep\&.cc
+.RS 4
+.TS
+tab(:);
+lt lt
+lt lt.
+T{
+\fBType:\fR
+T}:T{
+optional
+T}
+T{
+\fBDefault:\fR
+T}:T{
+gcc\-mp\-4\&.2
+T}
+.TE
+.sp 1
+\fBExample:\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+gnustep\&.cc gcc\-mp\-4\&.3
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.PP
+variant with_docs
+.RS 4
+Many GNUstep packages include a Documentation sub\-directory that is not built by default\&. Enabling this variant builds and installs the included documentation\&.
+.TS
+tab(:);
+lt lt.
+T{
+\fBType:\fR
+T}:T{
+optional
+T}
+.TE
+.sp 1
+\fBExample:\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+port install gnustep\-gui +with_docs
+.fi
+.if n \{\
+.RE
+.\}
+.RE
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1), \fBmacports.conf\fR(5), \fBportfile\fR(7), \fBportstyle\fR(7), \fBporthier\fR(7)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2013 The MacPorts Project
+Paul Guyot <pguyot at kallisys\&.net>
+Yves de Champlain <yves at macports\&.org>
+Rainer Mueller <raimue at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}

Copied: branches/gsoc14-interactive/base/doc/portgroup.7.txt (from rev 123795, trunk/base/doc/portgroup.7.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/portgroup.7.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/portgroup.7.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,339 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+PortGroup(7)
+============
+$Id$
+// Set default style for second-level labeled lists in this document
+:listdef-labeled2.style: horizontal
+
+NAME
+----
+portgroup - MacPorts PortGroup command reference
+
+SYNOPSIS
+--------
+[cmdsynopsis]
+PortGroup gnustep 1.0
+PortGroup perl5 1.0
+PortGroup python24 1.0
+PortGroup python25 1.0
+PortGroup python30 1.0
+PortGroup ruby 1.0
+PortGroup xcode 1.0
+
+DESCRIPTION
+-----------
+MacPorts defines the notion of PortGroup classes with the PortGroup command.
+These classes factorize the work for similar ports. Port maintainers willing
+to use PortGroup need to have some notion of Portfiles. See man:portfile[7].
+
+XCODE PORTGROUP
+---------------
+*PortGroup xcode* is here to easily port Xcode-based opensource software. It
+handles configuration, build and destroot phases. It also defines some values
+for Xcode-based software. A minimum Portfile using the *xcode PortGroup* class
+only defines the fetch and the checksum phases.
+
+Using *PortGroup xcode* is a way to make your port more robust to Xcode version
+updates as the PortGroup is tested against all supported Mac OS X and Xcode
+versions.
+
+XCODE PORTGROUP SUGAR
+~~~~~~~~~~~~~~~~~~~~~
+
+Portfiles using *xcode PortGroup* do not need to define the following variables:
+
+categories::
+    *Default:* aqua
+
+platforms::
+    *Default:* macosx
+
+use_configure::
+    *Default:* no
+
+Moreover, Portfiles using *PortGroup xcode* do not need to define any build or
+destroot phase. Some options are provided for tailoring these phases to what the
+software requires.
+
+XCODE PORTGROUP SPECIFIC VARIABLES
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Portfiles using *xcode PortGroup* may define the following variables:
+
+xcode.project::
+    Path (relative to ${build.dir} and ${destroot.dir}) of the Xcode
+    project. If unset, let xcode tool figure it out. It usually succeeds if
+    there is a single project in the directory.
++
+--
+*Type:*;; optional
+--
++
+*Example:*
++
+--------
+xcode.project ${name}.xcode
+--------
+
+xcode.configuration::
+    Project configuration/buildstyle to use.
++
+--
+*Type:*;; optional
+*Default:*;; Deployment
+--
++
+*Example:*
++
+--------
+xcode.configuration Main
+--------
+
+xcode.target::
+    If present, overrides build.target and destroot.target.
+    *Type:*;; optional
+
+xcode.build.settings::
+    Additional settings passed to the xcode build tool during the build phase.
+    These settings should be in the X=Y form.
++
+--
+*Type:*;; optional
+--
++
+*Example:*
++
+--------
+xcode.build.settings FRAMEWORK_SEARCH_PATHS=${prefix}/Library/Frameworks
+--------
+
+xcode.destroot.type::
+    Type of project that will be installed. This tells Xcode PortGroup how to
+    destroot the project. Correct values are application and framework.
++
+--
+*Type:*;; optional
+*Default:*;; application
+--
++
+*Example:*
++
+--------
+xcode.destroot.type framework
+--------
+
+xcode.destroot.path::
+    Where to install the build product.
+    *Type:*;; optional
+    *Default:*;; $\{prefix\}/Library/Frameworks or /Applications/MacPorts depending on xcode.destroot.type
+
+xcode.destroot.settings::
+    Additional settings passed to the xcode build tool during the destroot
+    phase. These settings should be in the X=Y form.
++
+--
+*Type:*;; optional
+--
++
+*Example:*
++
+--------
+xcode.destroot.settings SKIP_INSTALL=NO
+--------
+
+
+STANDARD PORTFILE VARIABLES AFFECTING XCODE PORTGROUP
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following standard Portfile variables actually affect *xcode PortGroup*. In
+most cases, you will not need to set any of these variables in the Portfile.
+
+destroot::
+    Where to destroot the project.
+
+build.cmd::
+    The command to invoke to build the project. *xcode PortGroup* sets this
+    variable to $\{xcodebuildcmd\}.
+
+build.target::
+    The Xcode target to build. *xcode PortGroup* sets this variable to "", thus
+    building all targets. This variable will be ignored if xcode.target is set.
+
+build.pre_args::
+    Additional parameters for ${build.cmd}.
+    *Default:*;; none
+
+build.args::
+    Main parameters for ${build.cmd}.
+    *Default:*;; build
+
+build.post_args::
+    Additional parameters for ${build.cmd}.
+    *Default:*;; none
+
+build.dir::
+    Where to build the project from (i.e. where the Xcode project is).
+    *Default:*;; $\{worksrcpath\}
+
+destroot.cmd::
+    The command to invoke to destroot the project. *xcode PortGroup* sets this
+    variable to xcodebuildcmd.
+
+destroot.target::
+    The Xcode target to install. *xcode PortGroup* sets this variable to "",
+    thus installing all targets. This variable will be ignored if xcode.target
+    is set.
+
+destroot.pre_args::
+    Additional parameters for ${destroot.cmd}.
+    *Default:*;; none
+
+destroot.args::
+    Main parameters for ${destroot.cmd}.
+    *Default:*;; install
+
+destroot.post_args::
+    Additional parameters for ${destroot.cmd}.
+    *Default:*;; none
+
+destroot.dir::
+    Where to destroot the project from (i.e. where the Xcode project is).
+    *Default:*;; $\{worksrcpath\}
+
+GNUSTEP PORTGROUP
+-----------------
+*PortGroup gnustep* is here to easily port GNUstep-based opensource software
+using the GNU objective- C runtime. It handles configuration, build and destroot
+phases. It also defines some values for GNUstep-based software. A minimum
+Portfile using the *gnustep PortGroup* class only defines the fetch and the
+checksum phases.
+
+GNUSTEP FILESYSTEM LAYOUTS
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+PortGroup gnustep also supports both the traditionnal gnustep file layout and
+the new fhs file layout. However, the ports themselves do not necessarily
+support both. The Portfiles have access to many procedures in dealing with these
+two layouts:
+
+set_gnustep_make::
+    Sets GNUSTEP_MAKEFILES according to the FilesystemLayout
+
+set_gnustep_env::
+    Sets DYLD_LIBRARY_PATH and PATH for the gnustep FilesystemLayout
+
+gnustep_layout::
+    Returns true (1) if current file layout is gnustep
+
+set_system_library::
+    Sets GNUSTEP_SYSTEM_LIBRARY according to the FilesystemLayout
+
+set_local_library::
+    Sets GNUSTEP_LOCAL_LIBRARY according to the FilesystemLayout
+
+GNUSTEP PORTGROUP SUGAR
+~~~~~~~~~~~~~~~~~~~~~~~
+Portfiles using *gnustep PortGroup* do not need to define the following variables:
+
+categories::
+    *Default:* gnustep
+
+homepage::
+    *Default:* http://www.gnustep.org/
+
+master_sites::
+    *Default:* gnustep:core
+
+depends_lib::
+    *Default:* gnustep-core
+
+use_configure::
+    *Default:* no
+
+configure.env::
+    *Default:* DYLD_LIBRARY_PATH PATH
+
+configure.pre_args-append::
+    *Default:* CC=gcc-mp-4.2 GNUSTEP_MAKEFILES
+
+build.type::
+    *Default:* gnu
+
+build.env::
+    *Default:* DYLD_LIBRARY_PATH PATH
+
+build.pre_args-append::
+    *Default:* messages=yes
+
+destroot.env::
+    *Default:* DYLD_LIBRARY_PATH PATH
+
+destroot.pre_args-append::
+    *Default:* messages=yes
+
+Moreover, Portfiles using *PortGroup gnustep* do not need to define any build or
+destroot phase. Some options are provided for tailoring these phases to what the
+software requires. A mechanism is also provided to ease the patch process.
+
+GNUSTEP PORTGROUP SPECIFIC VARIABLES 
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Portfiles using *gnustep PortGroup* may define the following variables:
+
+gnustep.post_flags::
+    an associative array which specifies the sub-directories relative to
+    $\{worksrcpath\} and the SHARED_LD_POSTFLAGS variables to be added to
+    GNUmakefile.preamble in those sub-directories. This helps making the
+    patching process easier on Darwin.
++
+--
+*Type:*;; optional
+--
++
+*Example:*
++
+--------
+platform darwin {
+    array set gnustep.post_flags {
+        BundleSubDir "-lfoo -lbar"
+    }
+}
+--------
+
+gnustep.cc::
++
+--
+*Type:*;; optional
+*Default:*;; gcc-mp-4.2
+--
++
+*Example:*
++
+--------
+gnustep.cc gcc-mp-4.3
+--------
+
+variant with_docs::
+    Many GNUstep packages include a Documentation sub-directory that is not
+    built by default. Enabling this variant builds and installs the included
+    documentation.
++
+--
+*Type:*;; optional
+--
++
+*Example:*
++
+--------
+port install gnustep-gui +with_docs
+--------
+
+SEE ALSO
+--------
+man:port[1], man:macports.conf[5], man:portfile[7], man:portstyle[7],
+man:porthier[7]
+
+AUTHORS
+-------
+ (C) 2013 The MacPorts Project
+ Paul Guyot <pguyot at kallisys.net>
+ Yves de Champlain <yves at macports.org>
+ Rainer Mueller <raimue at macports.org>

Copied: branches/gsoc14-interactive/base/doc/portundocumented.7 (from rev 123795, trunk/base/doc/portundocumented.7)
===================================================================
--- branches/gsoc14-interactive/base/doc/portundocumented.7	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/portundocumented.7	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,102 @@
+'\" t
+.TH "PORTUNDOCUMENTED" "7" "2014\-08\-03" "MacPorts 2\&.3\&.99" "MacPorts Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+portundocumented \- A last\-resort man page for missing MacPorts documentation
+.SH "DESCRIPTION"
+.sp
+Unfortunately, the requested topic is not yet documented in the MacPorts man pages\&. Sorry\&.
+.sp
+Further documentation on MacPorts can be found in the following places:
+.PP
+\m[blue]\fBThe MacPorts Guide\fR\m[]\&\s-2\u[1]\d\s+2
+.RS 4
+Detailed help and support guide
+.RE
+.PP
+\m[blue]\fBThe MacPorts Wiki\fR\m[]\&\s-2\u[2]\d\s+2
+.RS 4
+MacPorts usage, development, and support
+.RE
+.PP
+\m[blue]\fBMailing Lists\fR\m[]\&\s-2\u[3]\d\s+2
+.RS 4
+Ask questions on the mailing lists: macports\-dev for base and Portfile development, macports\-users for user support questions
+.RE
+.PP
+\m[blue]\fBFAQ\fR\m[]\&\s-2\u[4]\d\s+2
+.RS 4
+Frequently Asked Questions
+.RE
+.PP
+\m[blue]\fBProblem Hotlist\fR\m[]\&\s-2\u[5]\d\s+2
+.RS 4
+Solutions for the most common error messages and other problems
+.RE
+.SH "CONTRIBUTING"
+.sp
+All sort of contributions to MacPorts base, ports and especially the documentation you were just looking for are welcome\&. If you care about MacPorts and would like to improve our documentation, please take a look at the source code of the man pages \m[blue]\fBin our repository\fR\m[]\&\s-2\u[6]\d\s+2 and get in touch with us on our \m[blue]\fBmailing lists\fR\m[]\&\s-2\u[3]\d\s+2\&.
+.SH "SEE ALSO"
+.sp
+\fBport\fR(1)
+.SH "AUTHORS"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+(C) 2012 The MacPorts Project
+Rainer Mueller <raimue at macports\&.org>
+.fi
+.if n \{\
+.RE
+.\}
+.SH "EXTERNAL REFERENCES"
+.IP " 1." 4
+The MacPorts Guide
+.RS 4
+\%http://guide.macports.org/#
+.RE
+.IP " 2." 4
+The MacPorts Wiki
+.RS 4
+\%https://trac.macports.org/wiki/
+.RE
+.IP " 3." 4
+Mailing Lists
+.RS 4
+\%https://trac.macports.org/wiki/MailingLists
+.RE
+.IP " 4." 4
+FAQ
+.RS 4
+\%https://trac.macports.org/wiki/FAQ
+.RE
+.IP " 5." 4
+Problem Hotlist
+.RS 4
+\%https://trac.macports.org/wiki/ProblemHotlist
+.RE
+.IP " 6." 4
+in our repository
+.RS 4
+\%https://trac.macports.org/browser/trunk/base/doc
+.RE

Copied: branches/gsoc14-interactive/base/doc/portundocumented.7.txt (from rev 123795, trunk/base/doc/portundocumented.7.txt)
===================================================================
--- branches/gsoc14-interactive/base/doc/portundocumented.7.txt	                        (rev 0)
+++ branches/gsoc14-interactive/base/doc/portundocumented.7.txt	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,33 @@
+// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
+portundocumented(7)
+====================
+$Id$
+
+NAME
+----
+portundocumented - A last-resort man page for missing MacPorts documentation
+
+DESCRIPTION
+-----------
+Unfortunately, the requested topic is not yet documented in the MacPorts man
+pages. Sorry.
+
+include::furtherdocs.txt[]
+
+CONTRIBUTING
+------------
+All sort of contributions to MacPorts base, ports and especially the
+documentation you were just looking for are welcome. If you care about MacPorts
+and would like to improve our documentation, please take a look at the source
+code of the man pages https://trac.macports.org/browser/trunk/base/doc[in our
+repository] and get in touch with us on our wiki:MailingLists[mailing lists].
+
+
+SEE ALSO
+--------
+man:port[1]
+
+AUTHORS
+-------
+ (C) 2012 The MacPorts Project
+ Rainer Mueller <raimue at macports.org>

Modified: branches/gsoc14-interactive/base/doc/prefix.mtree.in
===================================================================
--- branches/gsoc14-interactive/base/doc/prefix.mtree.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/doc/prefix.mtree.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -237,8 +237,6 @@
         skel
         ..
     ..
-    src
-    ..
     var
     ..
     www

Modified: branches/gsoc14-interactive/base/m4/foundation.m4
===================================================================
--- branches/gsoc14-interactive/base/m4/foundation.m4	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/m4/foundation.m4	2014-08-14 18:17:24 UTC (rev 123796)
@@ -208,7 +208,6 @@
 			AC_LINK_IFELSE([
 					AC_LANG_PROGRAM([
 							#include <objc/objc.h>
-							#include <objc/objc-api.h>
 						], [
 							id class = objc_lookup_class("Object");
 							id obj = @<:@class alloc@:>@;
@@ -314,7 +313,7 @@
 
 	if test x"${with_objc_foundation}" != x"no"; then
 	
-	if test x"${with_objc_foundation}" == x || test x"${with_objc_foundation}" == x"apple"; then
+	if test x"${with_objc_foundation}" = x || test x"${with_objc_foundation}" = x"apple"; then
 		# '@<:@' = '['
 		# '@:>@' = ']'
 		AC_MSG_CHECKING([for Apple Foundation library])
@@ -353,10 +352,10 @@
 		ac_cv_objc_foundation_apple="no"
 	fi
 
-	if test x"${with_objc_foundation}" == x || test x${with_objc_foundation} == x"GNUstep"; then
+	if test x"${with_objc_foundation}" = x || test x"${with_objc_foundation}" = x"GNUstep"; then
 		GNUSTEP_CONFIG=/usr/bin/gnustep-config
-		if test ! -x "${GNUSTEP_CONFIG}" -a x"${GNUSTEP_SYSTEM_ROOT}" == x; then
-			if test x"${with_objc_foundation}" == x"GNUstep"; then
+		if test ! -x "${GNUSTEP_CONFIG}" -a x"${GNUSTEP_SYSTEM_ROOT}" = x; then
+			if test x"${with_objc_foundation}" = x"GNUstep"; then
 				AC_MSG_ERROR([GNUSTEP_SYSTEM_ROOT is not defined in your environment, preventing the use of GNUstep's Foundation library])
 			else
 				AC_MSG_WARN([GNUSTEP_SYSTEM_ROOT is not defined in your environment, preventing the use of GNUstep's Foundation library])
@@ -413,21 +412,21 @@
 	fi
 	
 	# NeXT Foundation is prefered
-	if test x"${ac_cv_objc_foundation_apple}" == x"yes"; then
+	if test x"${ac_cv_objc_foundation_apple}" = x"yes"; then
 		OBJC_FOUNDATION="Apple"
 		OBJC_FOUNDATION_CPPFLAGS="${APPLE_FOUNDATION_CFLAGS}"
 		OBJC_FOUNDATION_LIBS="${APPLE_FOUNDATION_LIBS}"
 		OBJC_FOUNDATION_LDFLAGS=""
 		AC_DEFINE([APPLE_FOUNDATION], 1, [Define if using the Apple Foundation framework]) 
 		AC_MSG_NOTICE([Using Apple Foundation library])
-	elif test x"${ac_cv_objc_foundation_gnustep}" == x"yes"; then
+	elif test x"${ac_cv_objc_foundation_gnustep}" = x"yes"; then
 		OBJC_FOUNDATION="GNUstep"
 		OBJC_FOUNDATION_CPPFLAGS="${GNUSTEP_CPPFLAGS}"
 		OBJC_FOUNDATION_LIBS="${GNUSTEP_LIBS}"
 		OBJC_FOUNDATION_LDFLAGS="${GNUSTEP_LDFLAGS}"
 		AC_DEFINE([GNUSTEP_FOUNDATION], 1, [Define if using the GNUstep Foundation library]) 
 		AC_MSG_NOTICE([Using GNUstep Foundation library])
-	elif test x"${with_objc_foundation}" = x"no"; then
+	elif test x"${with_objc_foundation}" = x"no" || test x"$MACOSX_VERSION" = x; then
 		OBJC_FOUNDATION="none"
 		AC_MSG_NOTICE([Not using Foundation implementation])
 	else

Modified: branches/gsoc14-interactive/base/portmgr/ReleaseProcess
===================================================================
--- branches/gsoc14-interactive/base/portmgr/ReleaseProcess	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/portmgr/ReleaseProcess	2014-08-14 18:17:24 UTC (rev 123796)
@@ -103,14 +103,13 @@
 tag URL. For instance:
 
  svn co [-r<rev>] https://svn.macports.org/repository/macports/trunk release_2.0.0-archive
- cd release_2.0.0-archive/base
- svn switch https://svn.macports.org/repository/macports/tags/release_2_0_0/base
+ cd release_2.0.0-archive
+ svn rm base
+ svn cp https://svn.macports.org/repository/macports/tags/release_2_0_0/base base
 
 And finally we tag the entire directory as release_2_0_0-archive:
 
-FIXME: this doesn't seem to work any more. The base subdir in the tag ends up being from trunk.
-
- cd ../../
+ cd ..
  svn cp -m "commit-message" release_2.0.0-archive https://svn.macports.org/repository/macports/tags/release_2_0_0-archive
 
 
@@ -233,7 +232,6 @@
    appropriate in the trunk/www/includes/common.inc file.
  * The &macports-version; entity in trunk/doc-new/guide/xml/installing.xml.
  * [https://trac.macports.org/news/] The MacOSforge news section (submitter: portmgr@)
- * [http://freecode.com/projects/macports/ Freecode] (submitter: mww@)
  * [http://www.versiontracker.com/dyn/moreinfo/macosx/26679 VersionTracker] (submitter: mij@)
  * [http://sourceforge.net/projects/macports/ sourceforge] (submitted: rhwood@)
  * [http://www.macupdate.com/info.php/id/21309/macports MacUpdate] (submitter: ???)
@@ -247,5 +245,3 @@
 Using new features introduced by a release should be delayed for 14 days. This
 should allow users to upgrade their installations to the new release. This
 delay matches the warning about outdated ports tree sources.
-
-

Modified: branches/gsoc14-interactive/base/portmgr/dmg/postflight.in
===================================================================
--- branches/gsoc14-interactive/base/portmgr/dmg/postflight.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/portmgr/dmg/postflight.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -36,10 +36,10 @@
 #set -x
 
 # Script identification ('cause more often than not the svn Id is not expanded):
-VERSION=2.3.0
+VERSION=2.3.1
 
 # Abstraction variables:
-PREFIX=__PREFIX__
+PREFIX=@prefix@
 BINPATH=${PREFIX}/bin
 SBINPATH=${PREFIX}/sbin
 CONFIGPATH=${PREFIX}/etc/macports
@@ -240,7 +240,7 @@
 if ${SHELL} ${LOGIN_FLAG} -c "/usr/bin/printenv PATH" | grep ${PREFIX} > /dev/null; then
     echo "Your shell already has the right PATH environment variable for use with MacPorts!"
 else
-    write_setting PATH "${BINPATH}:${SBINPATH}:\$PATH"
+    write_setting PATH "\"${BINPATH}:${SBINPATH}:\$PATH\""
 fi
 
 # We gather the path into a variable of our own for faster operation:
@@ -259,7 +259,7 @@
   [[ -z "$(echo "${ORIGINAL_MANPATH}" | awk -F : '{print $NF}')" ]]; then
     echo "Your shell already has the right MANPATH environment variable for use with MacPorts!"
 else
-    write_setting MANPATH "${MANPAGES}:\$MANPATH"
+    write_setting MANPATH "\"${MANPAGES}:\$MANPATH\""
 fi
 
 # Adding a DISPLAY variable only if we're running on Tiger or less and if it doesn't already exist:

Modified: branches/gsoc14-interactive/base/portmgr/jobs/PortIndex2MySQL.tcl
===================================================================
--- branches/gsoc14-interactive/base/portmgr/jobs/PortIndex2MySQL.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/portmgr/jobs/PortIndex2MySQL.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,4 +1,4 @@
-#!@TCLSH@
+#!/opt/local/bin/port-tclsh
 # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4
 #
 # PortIndex2MySQL.tcl
@@ -58,18 +58,31 @@
 #####
 
 
+# Configuration variables. Fill in the blank strings.
+#
+# Email addresses that get failure notifications - e.g. "admin at macosforge.org"
+set SPAM_LOVERS ""
+# File to read the db password from - e.g. "/var/macports/script_data"
+set passwdfile ""
+# Database abstraction variables:
+# name of the mysql executable
+set mysql_exe "mysql"
+# path where the mysql executable is located (only needed if not in the default PATH)
+set mysql_exe_path ""
+set sqlfile "/tmp/portsdb.sql"
+set portsdb_host localhost
+set portsdb_name macports
+set portsdb_user macports
 
-# Runtime information log file and reciepient.
+# Runtime information log file and recipient.
 set runlog "/tmp/portsdb.log"
 set runlog_fd [open $runlog w+]
 set lockfile "/tmp/portsdb.lock"
 set mailprog "/usr/sbin/sendmail"
 set DATE [clock format [clock seconds] -format "%A %Y-%m-%d at %T"]
 
-#set SPAM_LOVERS example at hostname.com
-
 set SUBJECT "PortIndex2MySQL run failure on $DATE"
-set FROM macports-mgr at lists.macosforge.org
+set FROM noreply at macports.org
 set HEADERS "To: $SPAM_LOVERS\r\nFrom: $FROM\r\nSubject: $SUBJECT\r\n\r\n"
 
 # handle command line arguments
@@ -141,6 +154,12 @@
 
 # Procedure to catch the database password from a protected file.
 proc getpasswd {passwdfile} {
+    if {$passwdfile eq ""} {
+        global lockfile lockfile_fd
+        ui_error "passwdfile is empty, did you forget to set it?"
+        cleanup lockfile
+        terminate 1
+    }
     if {[catch {open $passwdfile r} passwdfile_fd]} {
         global lockfile lockfile_fd
         ui_error "${::errorCode}: $passwdfile_fd"
@@ -197,14 +216,8 @@
 }
 
 
-# Database abstraction variables:
-set sqlfile "/tmp/portsdb.sql"
-set portsdb_host localhost
-set portsdb_name macports
-set portsdb_user macports
-set passwdfile "/opt/local/share/macports/resources/portmgr/password_file"
 set portsdb_passwd [getpasswd $passwdfile]
-set portsdb_cmd [macports::findBinary mysql5]
+set portsdb_cmd [macports::findBinary $mysql_exe $mysql_exe_path]
 
 
 # Flat text file to which sql statements are written.

Modified: branches/gsoc14-interactive/base/portmgr/packaging/SETUP.chroot.sh
===================================================================
--- branches/gsoc14-interactive/base/portmgr/packaging/SETUP.chroot.sh	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/portmgr/packaging/SETUP.chroot.sh	2014-08-14 18:17:24 UTC (rev 123796)
@@ -31,7 +31,6 @@
 mkdir -p /darwinports/logs
 mkdir -p /darwinports/pkgs
 mkdir -p /darwinports/mpkgs
-mkdir -p /darwinports/rpms
 
 cd $HOME/darwinports
 #tclsh base/src/portmgr/packageall.tcl

Modified: branches/gsoc14-interactive/base/portmgr/packaging/buildall.sh
===================================================================
--- branches/gsoc14-interactive/base/portmgr/packaging/buildall.sh	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/portmgr/packaging/buildall.sh	2014-08-14 18:17:24 UTC (rev 123796)
@@ -97,9 +97,6 @@
 echo "file:///darwinports/dports" > /opt/local/etc/ports/sources.conf
 echo "BatchMode yes" >> /etc/ssh_config
 EOF
-	if [ "$PKGTYPE" = "dpkg" ]; then
-	    echo "/opt/local/bin/port install dpkg" >> $dir/bootstrap.sh
-	fi
 	chmod 755 $dir/bootstrap.sh
 	echo "Bootstrapping darwinports in chroot"
 	/sbin/mount_devfs devfs ${dir}/dev
@@ -137,7 +134,7 @@
 
 # main:  This is where we start the show.
 TGTPORTS=""
-PKGTYPE=rpmpackage
+PKGTYPE=mpkg
 
 if [ $# -lt 1 ]; then
 	echo "Usage: $0 chrootdir [-p pkgtype] [targetportsfile]"
@@ -207,10 +204,6 @@
 		echo $pkg >> outputdir/summary/portspackaged
 		if [ "$PKGTYPE" = "mpkg" ]; then
 		    mv $DIR/Package/*.mpkg outputdir/Packages/
-		elif [ "$PKGTYPE" = "rpmpackage" ]; then
-		    mv $DIR/Package/RPMS/${ARCH}/*.rpm outputdir/Packages/
-		elif [ "$PKGTYPE" = "dpkg" ]; then
-		    mv $DIR/Package/*.deb outputdir/Packages/
 		fi
 		type="succeeded"
 	fi

Deleted: branches/gsoc14-interactive/base/portmgr/packaging/dpkgall.tcl
===================================================================
--- branches/gsoc14-interactive/base/portmgr/packaging/dpkgall.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/portmgr/packaging/dpkgall.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,943 +0,0 @@
-#!/usr/bin/env tclsh8.4
-# dpkgbuild.tcl
-# $Id$
-#
-# Copyright (c) 2009-2011 The MacPorts Project
-# Copyright (c) 2004 Landon Fuller <landonf at macports.org>
-# Copyright (c) 2003 Kevin Van Vechten <kevin at opendarwin.org>
-# Copyright (c) 2002 Apple Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#	 notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#	 notice, this list of conditions and the following disclaimer in the
-#	 documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Inc. nor the names of its contributors
-#	 may be used to endorse or promote products derived from this software
-#	 without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-
-#######################################
-#
-# Must be installed outside of dports tree:
-#	tcl 8.4
-#	curl
-#	tar
-#	gzip
-#	unzip
-#	dports tree
-#
-# A tar file containing full /${portprefix} directory tree, stored in:
-#	$pkgrepo/$architecture/root.tar.gz
-# The /${portprefix} directory tree must contain:
-#	MacPorts installation
-#	dpkg
-#
-# Configuration:
-#	/etc/ports/dpkg.conf
-#	/etc/ports/dpkg
-#
-#######################################
-
-package require darwinports
-
-# Configuration Namespace
-namespace eval dpkg {
-	variable configopts "pkgrepo architecture portlistfile portprefix dportsrc silentmode initialports"
-
-	# Preferences
-	variable silentmode false
-	variable configfile "/etc/ports/dpkg.conf"
-	variable portlist ""
-	variable portprefix "/usr/dports"
-	variable dportsrc "/usr/darwinports"
-	variable pkgrepo "/export/dpkg/"
-	# architecture is set in main
-	variable architecture
-	variable initialports "dpkg apt"
-	variable aptpackagedir
-	variable packagedir
-	# portlistfile defaults to ${pkgrepo}/${architecture}/etc/buildlist.txt (set in main)
-	variable portlistfile
-	# baselistfile defaults to ${pkgrepo}/${architecture}/etc/baselist.txt (set in main)
-	variable baselistfile
-
-	# Non-user modifiable.
-	# Ports required for building. Format:
-	# <binary> <portname> <binary> <portname> ...
-	variable requiredports "dpkg dpkg apt-get apt"
-
-	# Current log file descriptor
-	variable logfd
-}
-
-# MacPorts UI Event Callbacks
-proc ui_prefix {priority} {
-	switch $priority {
-		debug {
-			return "Debug: "
-		}
-		error {
-			return "Error: "
-		}
-		warn {
-			return "Warning: "
-		}
-		default {
-			return ""
-		}
-	}
-}
-
-proc ui_channels {priority} {
-	global dpkg::logfd
-	if {[info exists logfd] && $logfd ne ""} {
-		return {$logfd}
-	} elseif {$message(priority) ne "debug"} {
-		# If there's no log file, echo to stdout
-		return {stdout}
-	}
-}
-
-proc ui_silent {message} {
-	global dpkg::silentmode
-	if {"${silentmode}" != true} {
-		puts $message
-		ui_msg $message
-	} else {
-		ui_msg $message
-	}
-}
-
-# Outputs message to console and to log
-# Should only be used with errors
-proc ui_noisy_error {message} {
-	puts $message
-	ui_error $message
-}
-
-proc log_message {channel message} {
-	seek $channel 0 end
-	puts $channel $message
-	flush $channel
-}
-
-# Read in configuration file
-proc readConfig {file} {
-	global dpkg::configopts
-
-	set fd [open $file r]
-	while {[gets $fd line] >= 0} {
-		foreach option $configopts {
-			if {[regexp "^$option\[ \t\]+(\[A-Za-z0-9_:,\./-\]+$)" $line match val] == 1} {
-				set dpkg::$option $val
-			}
-		}
-	}
-}
-
-# Read a list of newline seperated port names from $file
-proc readPortList {file} {
-	set fd [open $file r]
-	set portlist ""
-
-	while {[gets $fd line] >= 0} {
-		lappend portlist $line
-	}
-
-	return $portlist
-}
-
-# Escape all regex characters in a portname
-proc regex_escape_portname {portname} {
-	regsub -all "(\\(){1}|(\\)){1}|(\\{1}){1}|(\\+){1}|(\\{1}){1}|(\\{){1}|(\\}){1}|(\\^){1}|(\\$){1}|(\\.){1}|(\\\\){1}" $portname "\\\\&" escaped_string
-	return $escaped_string
-}
-
-# Print usage string
-proc print_usage {args} {
-	global argv0
-	puts "Usage: [file tail $argv0] \[-qa\] \[-f configfile\] \[-p portlist\]"
-	puts "	-q	Quiet mode (only errors reported)"
-	puts "	-w	No warnings (progress still reported)"
-	puts "	-a	Build all ports"
-	puts "	-b	Re-generate base install archive"
-	puts "	-p	Attempt to build ports that do not advertise support for the build platform"
-	puts "	-i	Initialize Build System (Should only be run on a new build system)"
-}
-
-# Delete and restore the build system
-proc reset_tree {args} {
-	global dpkg::portprefix dpkg::pkgrepo dpkg::architecture
-
-	ui_silent "Restoring pristine ${portprefix} from ${pkgrepo}/${architecture}/root.tar.gz"
-	if {[catch {system "rm -Rf ${portprefix}"} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_noisy_error "Internal error: $error"
-		exit 1
-	}
-
-	if {[catch {system "rm -Rf /usr/X11R6"} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_noisy_error "Internal error: $error"
-		exit 1
-	}
-
-	if {[catch {system "rm -Rf /etc/X11"} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_noisy_error "Internal error: $error"
-		exit 1
-	}
-
-	if {[catch {system "cd / && tar xvf ${pkgrepo}/${architecture}/root.tar.gz"} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_noisy_error "Internal error: $error"
-		exit 1
-	}
-
-	ui_silent "Linking static distfiles directory to ${portprefix}/var/db/dports/distfiles."
-	if {[file isdirectory ${portprefix}/var/db/dports/distfiles"]} {
-		if {[catch {system "rm -rf ${portprefix}/var/db/dports/distfiles"} error]} {
-			global errorInfo
-			ui_debug "$errorInfo"
-			ui_noisy_error "Internal error: $error"
-			exit 1
-		}
-
-		if {[catch {system "ln -s ${pkgrepo}/distfiles ${portprefix}/var/db/dports/distfiles"} error]} {
-			global errorInfo
-			ui_debug "$errorInfo"
-			ui_noisy_error "Internal error: $error"
-			exit 1
-		}
-	}
-}
-
-proc main {argc argv} {
-	global dpkg::configfile dpkg::pkgrepo dpkg::architecture dpkg::portlistfile
-	global dpkg::portsArray dpkg::portprefix dpkg::silentmode dpkg::logfd dpkg::packagedir dpkg::aptpackagedir
-	global dpkg::requiredports dpkg::baselistfile tcl_platform
-
-	# First time through, we reset the tree
-	set firstrun_flag true
-
-	# Read command line options
-	set buildall_flag false
-	set anyplatform_flag false
-	set nowarn_flag false
-	set basegen_flag false
-	set initialize_flag false
-
-	for {set i 0} {$i < $argc} {incr i} {
-		set arg [lindex $argv $i]
-		switch -- $arg {
-			-a {
-				set buildall_flag true
-			}
-			-b {
-				set basegen_flag true
-			}
-			-f {
-				incr i
-				set configfile [lindex $argv $i]
-
-				if {![file readable $configfile]} {
-					return -code error "Configuration file \"$configfile\" is unreadable."
-				}
-			}
-			-i {
-				set initialize_flag true
-			}
-			-p {
-				incr i
-				set portlistfile [lindex $argv $i]
-				if {![file readable $portlistfile]} {
-					return -code error "Port list file \"$portlistfile\" is unreadable."
-				}
-			}
-			-q {
-				set silentmode true
-			}
-			-w {
-				set nowarn_flag true
-			}
-			-p {
-				set anyplatform_flag true
-			}
-			default {
-				print_usage
-				exit 1
-			}
-		}
-	}
-
-	# Initialize System
-	array set ui_options {}
-	array set options {}
-	array set variations {}
-	mportinit ui_options options variations
-
-	# If -i was specified, install base system and exit
-	if {$initialize_flag == "true"} {
-		initialize_system
-		exit 0
-	}
-
-	# We must have dpkg by now
-	if {[catch {set_architecture} result]} {
-		puts "$result."
-		puts "Have you initialized the build system? Use the -i flag:"
-		print_usage
-		exit 1
-	}
-
-	# Set the platform
-	set platformString [string tolower $tcl_platform(os)]
-
-	set packagedir ${pkgrepo}/${architecture}/packages/
-	set aptpackagedir ${pkgrepo}/apt/dists/stable/main/binary-${architecture}/
-
-	# Read configuration files
-	if {[file readable $configfile]} {
-		readConfig $configfile
-	}
-
-	# If portlistfile has not been set, supply a reasonable default
-	if {![info exists portlistfile]} {
-		# The default portlist file
-		set portlistfile [file join $pkgrepo $architecture etc buildlist.txt]
-	}
-
-	# If baselistfile has not been set, supply a reasonable default
-	if {![info exists baselistfile]} {
-		# The default baselist file
-		set baselistfile [file join $pkgrepo $architecture etc baselist.txt]
-	}
-
-	# Read the port list
-	if {[file readable $portlistfile]} {
-		set portlist [readPortList $portlistfile]
-	} else {
-		set portlist ""
-	}
-
-	if {[file readable $baselistfile]} {
-		set baselist [readPortList $baselistfile]
-	} else {
-		set baselist ""
-	}
-
-	# If no portlist file was specified, create a portlist that includes all ports
-	if {[llength $portlist] == 0 || "$buildall_flag" == "true"} {
-		set res [mportlistall]
-		foreach {name array} $res {
-			lappend portlist $name
-		}
-	} else {
-		# Port list was specified. Ensure that all the specified ports are available.
-		# Add ${baselist} and get_required_ports to the list
-		set portlist [lsort -unique [concat $portlist $baselist [get_required_ports]]]
-		foreach port $portlist {
-			set fail false
-
-			if {[catch {set res [get_portinfo $port]} result]} {
-				global errorInfo
-				ui_debug "$errorInfo"
-				ui_noisy_error "Error: $result"
-				set fail true
-			}
-
-			# Add all of the specified ports' dependencies to the portlist
-			set dependencies [get_dependencies $port false]
-			foreach dep $dependencies {
-				lappend portlist [lindex $dep 0]
-			}
-		}
-		if {"$fail" == "true"} {
-			exit 1
-		}
-	}
-
-	# Clean out duplicates
-	set portlist [lsort -unique $portlist]
-
-	# Ensure that the log directory exists, and open up
-	# the default debug log
-	open_default_log w
-
-	# Set the dport options
-	# Package build path
-	set options(package.destpath) ${packagedir}
-
-	# Ensure that it exists
-	file mkdir $options(package.destpath)
-
-	# Force mode
-	set options(ports_force) yes
-
-	# Set variations (empty)
-	set variations [list]
-
-
-	if {"$silentmode" != "true" && "$nowarn_flag" != "true"} {
-		puts "WARNING: The full contents of ${portprefix}, /usr/X11R6, and /etc/X11 will be deleted by this script. If you do not want this, control-C NOW."
-		exec sleep 10
-	}
-
-	# Destroy the existing apt repository
-	if {[catch {system "rm -Rf ${aptpackagedir}"} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_noisy_error "Internal error: $error"
-		exit 1
-	}
-
-	# Recreate
-	file mkdir ${aptpackagedir}
-
-	close_default_log
-
-	foreach port $portlist {
-		# Open the default debug log write/append
-		open_default_log
-
-		if {[catch {set res [get_portinfo $port]} error]} {
-			global errorInfo
-			ui_debug "$errorInfo"
-			ui_noisy_error "Internal error: port search failed: $error"
-			exit 1
-		}
-
-		# Reset array from previous runs
-		unset -nocomplain portinfo
-		array set portinfo [lindex $res 1]
-
-		if {![info exists portinfo(name)] ||
-			![info exists portinfo(version)] ||
-			![info exists portinfo(revision)] ||
-			![info exists portinfo(categories)]} {
-			ui_noisy_error "Internal error: $name missing some portinfo keys"
-			close $logfd
-			continue
-		}
-
-		# open correct subport
-		set options(subport) $portinfo(name)
-
-		# Skip un-supported ports
-		if {[info exists portinfo(platforms)] && ${anyplatform_flag} != "true"} {
-			if {[lsearch $portinfo(platforms) $platformString] == -1} {
-				ui_silent "Skipping unsupported port $portinfo(name) (platform: $platformString supported: $portinfo(platforms))"
-				continue
-			}
-		}
-
-
-		# Add apt override line. dpkg is special cased and marked 'required'
-		# TODO: add the ability to specify the "required" priority for specific
-		# ports in a config file.
-		if {"$portinfo(name)" == "dpkg"} {
-			set pkg_priority required
-		} else {
-			set pkg_priority optional
-		}
-		add_override $portinfo(name) $pkg_priority [lindex $portinfo(categories) 0]
-
-		# Skip up-to-date software
-		set pkgfile [get_pkgpath $portinfo(name) $portinfo(version) $portinfo(revision)]
-		if {[file exists ${pkgfile}]} {
-			if {[regsub {^file://} $portinfo(porturl) "" portpath]} {
-				if {[file readable $pkgfile] && ([file mtime ${pkgfile}] > [file mtime ${portpath}/Portfile])} {
-					ui_silent "Skipping ${portinfo(name)}-${portinfo(version)}-${portinfo(revision)}; package is up to date."
-					# Shove the package into the apt repository
-					copy_pkg_to_apt $portinfo(name) $portinfo(version) $portinfo(revision) [lindex $portinfo(categories) 0]
-					continue
-				}
-			}
-		}
-
-		# We're going to actually build the package, reset the tree
-		# if this is our first time through. The tree is always reset
-		# at the end of a packaging run, too.
-		if {$firstrun_flag == true} {
-			reset_tree
-			set firstrun_flag false
-		}
-
-		ui_silent "Building $portinfo(name) ..."
-
-		# Close the main debug log
-		close_default_log
-
-		# Create log directory and open the build log
-		file mkdir [file join ${pkgrepo} ${architecture} log build ${port}]
-		set logfd [open ${pkgrepo}/${architecture}/log/build/${port}/build.log w 0644]
-
-		# Install binary dependencies if possible
-		set dependencies [get_dependencies $portinfo(name)]
-		foreach dep $dependencies {
-			install_binary_if_available $dep
-		}
-
-		if {[catch {set workername [mportopen $portinfo(porturl) [array get options] [array get variations] yes]} result] || $result == 1} {
-			global errorInfo
-			ui_debug "$errorInfo"
-			ui_noisy_error "Internal error: unable to open port: $result"
-			exit 1
-		}
-
-		if {[catch {set result [mportexec $workername clean]} result] || $result == 1} {
-			ui_noisy_error "Cleaning $portinfo(name) failed, consult build log"
-
-			# Close the log
-			close $logfd
-
-			# Copy the log to the failure directory
-			copy_failure_log $portinfo(name)
-
-			# Close the port
-			mportclose $workername
-
-			continue
-		}
-
-		# Re-open the port. MacPorts doesn't play well with multiple targets, apparently
-		mportclose $workername
-		if {[catch {set workername [mportopen $portinfo(porturl) [array get options] [array get variations] yes]} result] || $result == 1} {
-			global errorInfo
-			ui_debug "$errorInfo"
-			ui_noisy_error "Internal error: unable to open port: $result"
-			exit 1
-		}
-
-		if {[catch {set result [mportexec $workername dpkg]} result] || $result == 1} {
-			ui_noisy_error "Packaging $portinfo(name) failed, consult build log"
-
-			# Copy the log to the failure directory
-			copy_failure_log $portinfo(name)
-
-			# Close the port
-			mportclose $workername
-
-			# Close the log
-			close $logfd
-
-			# Open default log
-			open_default_log
-
-			ui_silent "Resetting /usr/dports ..."
-			reset_tree
-			ui_silent "Done."
-
-			# Close the log
-			close $logfd
-
-			continue
-		}
-
-		ui_silent "Package build for $portinfo(name) succeeded"
-
-		# Into the apt repository you go!
-		copy_pkg_to_apt $portinfo(name) $portinfo(version) $portinfo(revision) [lindex $portinfo(categories) 0]
-
-		ui_silent "Resetting /usr/dports ..."
-		reset_tree
-		ui_silent "Done."
-
-		# Close the log
-		close $logfd
-
-		# Delete any previous failure logs
-		delete_failure_log $portinfo(name)
-
-		# Close the port
-		mportclose $workername
-	}
-
-	open_default_log
-
-	# If required, rebuild the clientinstall.tgz
-	if {$basegen_flag == true} {
-		# dpkg is always required
-		set pkglist [lsort -unique [concat dpkg $baselist [get_required_ports]]]
-		set workdir [file join ${pkgrepo} ${architecture}]
-		set rootdir [file join $workdir clientroot]
-		set rootfile [file join $workdir client-root.tar.gz]
-		file mkdir ${rootdir}
-
-		# dpkg is required
-		array set portinfo [lindex [get_portinfo dpkg] 1]
-		set pkgfile [get_pkgpath $portinfo(name) $portinfo(version) $portinfo(revision)]
-		system "cd \"${rootdir}\" && ar x \"${pkgfile}\" data.tar.gz"
-		system "cd \"${rootdir}\" && tar xvf data.tar.gz; rm data.tar.gz"
-
-		foreach port $pkglist {
-			set dependencies [get_dependencies $port false]
-			foreach dep $dependencies {
-				lappend newpkglist [lindex $dep 0]
-			}
-		}
-
-		if {[info exists newpkglist]} {
-			set pkglist [lsort -unique [concat $newpkglist $pkglist]]
-		}
-
-		foreach port $pkglist {
-			array set portinfo [lindex [get_portinfo $port] 1]
-			system "dpkg --root \"${rootdir}\" --force-depends -i \"[get_pkgpath $portinfo(name) $portinfo(version) $portinfo(revision)]\""
-		}
-
-		system "cd \"${rootdir}\" && tar cf \"[file join ${workdir} clientinstall.tar.gz]\" ."
-		file delete -force ${rootdir}
-	}
-
-	ui_silent "Building apt-get index ..."
-	if {[catch {system "cd ${pkgrepo}/apt && dpkg-scanpackages dists override >${aptpackagedir}/Packages"} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_noisy_error "Internal error: $error"
-		exit 1
-	}
-
-	if {[catch {system "cd ${aptpackagedir} && gzip Packages"} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_noisy_error "Internal error: $error"
-		exit 1
-	}
-	remove_override_file
-	ui_silent "Done."
-
-	ui_silent "Package run finished."
-	close_default_log
-
-	exit 0
-}
-
-# Return ports listed in $dpkg::requiredports that are not
-# installed
-proc get_required_ports {args} {
-	global dpkg::requiredports
-	set reqlist ""
-
-	foreach {binary port} $requiredports {
-		if {[find_binary $binary] eq ""} {
-			lappend reqlist $port
-		}
-	}
-	return $reqlist
-}
-
-# Given a binary name, searches PATH
-proc find_binary {binary} {
-	global env
-	set path [split $env(PATH) :]
-	foreach dir $path {
-		set file [file join $dir $binary]
-		if {[file exists $file]} {
-			return $file
-		}
-	}
-	return ""
-}
-
-# Set the architecture global
-proc set_architecture {args} {
-	set dpkg::architecture "[exec dpkg --print-installation-architecture]"
-}
-
-# Initialize a new build system
-proc initialize_system {args} {
-	global dpkg::initialports dpkg::pkgrepo
-	global dpkg::architecture dpkg::portprefix
-
-	# Create standard directories
-	ui_msg "Creating ${pkgrepo} directory"
-	file mkdir ${pkgrepo}
-
-	set builddeps ""
-	set rundeps ""
-
-	foreach port [get_required_ports] {
-		set builddeps [concat $builddeps [get_dependencies $port true]]
-		set rundeps [concat $rundeps [get_dependencies $port false]]
-	}
-
-	set buildlist [lsort -unique $builddeps]
-
-	foreach port $builddeps {
-		if {[lsearch -exact $port $rundeps] >= 0} {
-			lappend removelist $port
-		}
-	}
-
-	set options ""
-	set variations ""
-
-	foreach port [get_required_ports] {
-		set options(subport) $port
-		if {[catch {do_portexec $port [array get options] [array get variants] activate} result]} {
-			global errorInfo
-			ui_debug "$errorInfo"
-			ui_noisy_error "Fatal error: $result"
-			exit 1
-		}
-	}
-
-	if {[info exists removelist]} {
-		ui_msg "Removing build dependencies ..."
-		foreach portlist $removelist {
-			set port [lindex $portlist 0]
-
-			ui_msg "Uninstalling $port."
-			if { [catch {registry_uninstall::uninstall $portname $portversion "" 0 [array get options]} result] } {
-				global errorInfo
-				ui_debug "$errorInfo"
-				ui_noisy_errorr "Fatal error: Uninstalling $port failed: $result"
-				exit 1
-			}
-		}
-		ui_msg "Done."
-	}
-
-
-	if {[catch {set_architecture} result]} {
-		puts "Fatal error: $result."
-		exit 1
-	}
-
-	ui_msg "Creating [file join ${pkgrepo} ${architecture}] directory"
-	file mkdir [file join ${pkgrepo} ${architecture}]
-	file mkdir [file join ${pkgrepo} ${architecture} etc]
-
-	ui_msg "Generating pristine archive: [file join ${pkgrepo} ${architecture} root.tar.gz]"
-	if {[catch {system "tar -zcf \"[file join ${pkgrepo} ${architecture} root.tar.gz]\" \"${portprefix}\""} result]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_noisy_error "Fatal error: Archive creation failed: $result"
-		exit 1
-	}
-
-	ui_msg "Build system successfully initialized!"
-}
-
-# Execute a target on a port (by port name)
-proc do_portexec {port options variants target} {
-
-	array set portinfo [lindex [get_portinfo $port] 1]
-
-	if {[catch {set workername [mportopen $portinfo(porturl) $options $variants yes]} result] || $result == 1} {
-		return -code error "Internal error: unable to open port: $result"
-		exit 1
-	}
-
-	if {[catch {set result [mportexec $workername $target]} result] || $result == 1} {
-
-		# Close the port
-		mportclose $workername
-
-		# Return error
-		return -code error "Executing target $target on $portinfo(name) failed."
-	}
-}
-
-proc get_portinfo {port} {
-	set searchstring [regex_escape_portname $port]
-	set res [mportlookup ${searchstring}]
-
-	if {[llength $res] < 2} {
-		return -code error "Port \"$port\" not found in index."
-	}
-
-	return $res
-}
-
-# Given name, version, and revision, returns the path to a package file
-proc get_pkgpath {name version revision} {
-	global dpkg::pkgrepo dpkg::architecture
-	global dpkg::packagedir
-	if {${revision} == 0} {
-		set revision ""
-	} else {
-		set revision "-${revision}"
-	}
-
-	return [string tolower ${packagedir}/${name}_${version}${revision}_${architecture}.deb]
-}
-
-# Opens the default log file and sets dpkg::logfd
-proc open_default_log {{mode a}} {
-	global dpkg::pkgrepo dpkg::architecture dpkg::logfd
-	# Ensure that the log directory exists, and open up
-	# the default debug log
-	file mkdir ${pkgrepo}/${architecture}/log/
-	set logfd [open ${pkgrepo}/${architecture}/log/debug.log ${mode} 0644]
-}
-
-# Closes the current logfile
-proc close_default_log {args} {
-	global dpkg::logfd
-	close $logfd
-}
-
-# Copies a port log file to the failure directory
-proc copy_failure_log {name} {
-	global dpkg::pkgrepo dpkg::architecture
-	# Copy the log to the failure log directory
-	file mkdir ${pkgrepo}/${architecture}/log/failure/${name}
-	file copy -force ${pkgrepo}/${architecture}/log/build/${name}/build.log ${pkgrepo}/${architecture}/log/failure/${name}/
-}
-
-# Deletes a port's failure log
-proc delete_failure_log {name} {
-	global dpkg::pkgrepo dpkg::architecture
-	if {[catch {system "rm -Rf ${pkgrepo}/${architecture}/log/failure/${name}"} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_noisy_error "Internal error: $error"
-		exit 1
-	}
-}
-
-# Add an override entry to the apt override file
-proc add_override {name priority section {maintainer ""}} {
-	global dpkg::aptpackagedir dpkg::pkgrepo
-	set output "${name}	${priority}	${section}"
-	if {${maintainer} != ""} {
-		append output " ${maintainer}"
-	}
-	set fd [open "${pkgrepo}/apt/override" a 0644]
-	puts $fd $output
-	close $fd
-}
-
-# Deletes the apt override file
-proc remove_override_file {args} {
-	global dpkg::aptpackagedir dpkg::pkgrepo
-	if {[catch {file delete -force ${pkgrepo}/apt/override} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_noisy_error "Internal error: $error"
-		exit 1
-	}
-}
-
-# Copies a given package to the apt repository
-proc copy_pkg_to_apt {name version revision category} {
-	global dpkg::aptpackagedir
-
-	set pkgfile [get_pkgpath $name $version $revision]
-	file mkdir $aptpackagedir/main/$category
-	file link -hard $aptpackagedir/main/$category/[file tail $pkgfile] $pkgfile
-}
-
-# Recursive bottom-up approach of building a list of dependencies.
-proc get_dependencies {portname {includeBuildDeps "true"}} {
-	set result [get_dependencies_recurse $portname $includeBuildDeps]
-	return [lsort -unique $result]
-}
-
-proc get_dependencies_recurse {portname includeBuildDeps} {
-	set result {}
-
-	set res [get_portinfo $portname]
-
-	foreach {name array} $res {
-		array set portinfo $array
-		if {![info exists portinfo(name)] ||
-			![info exists portinfo(version)] ||
-			![info exists portinfo(revision)] ||
-			![info exists portinfo(categories)]} {
-			ui_error "Internal error: $name missing some portinfo keys"
-			continue
-		}
-
-		lappend result [list $portinfo(name) $portinfo(version) $portinfo(revision) [lindex $portinfo(categories) 0]]
-
-		# Append the package's dependents to the result list
-		set depends {}
-		if {[info exists portinfo(depends_run)]} { eval "lappend depends $portinfo(depends_run)" }
-		if {[info exists portinfo(depends_lib)]} { eval "lappend depends $portinfo(depends_lib)" }
-		if {$includeBuildDeps == "true" && [info exists portinfo(depends_build)]} {
-			eval "lappend depends $portinfo(depends_build)"
-		}
-		if {$includeBuildDeps == "true" && [info exists portinfo(depends_fetch)]} {
-			eval "lappend depends $portinfo(depends_fetch)"
-		}
-		if {$includeBuildDeps == "true" && [info exists portinfo(depends_extract)]} {
-			eval "lappend depends $portinfo(depends_extract)"
-		}
-		foreach depspec $depends {
-			set dep [lindex [split $depspec :] end]
-			set x [get_dependencies_recurse $dep $includeBuildDeps]
-			eval "lappend result $x"
-			set result [lsort -unique $result]
-		}
-	}
-	return $result
-}
-
-# Install binary packages if they've already been built.  This will
-# speed up the testing, since we won't have to recompile dependencies
-# which have already been compiled.
-
-proc install_binary_if_available {dep} {
-	global dpkg::architecture dpkg::pkgrepo dpkg::portprefix
-
-	set portname [lindex $dep 0]
-	set portversion [lindex $dep 1]
-	set portrevision [lindex $dep 2]
-	set category [lindex $dep 3]
-
-	if {${portrevision} != ""} {
-		set verstring ${portversion}_${portrevision}
-	} else {
-		set verstring ${portversion}
-	}
-
-	set receiptdir [file join $portprefix var db receipts ${portname} ${verstring}]
-	set pkgpath [get_pkgpath ${portname} ${portversion} ${portrevision}]
-
-	# Check if the package is available, and ensure that it has not already been
-	# installed through MacPorts (bootstrap packages such as dpkg and its
-	# dependencies are always installed)
-	if {[file readable $pkgpath] && ![file exists $receiptdir/receipt.bz2]} {
-		ui_silent "Installing binary: $pkgpath"
-		if {[catch {system "dpkg --force-depends -i ${pkgpath}"} error]} {
-			global errorInfo
-			ui_debug "$errorInfo"
-			ui_noisy_error "Internal error: $error"
-			exit 1
-		}
-		# Touch the receipt
-		file mkdir $receiptdir
-		if {[catch {system "touch [file join $receiptdir receipt.bz2]"} error]} {
-			global errorInfo
-			ui_debug "$errorInfo"
-			ui_noisy_error "Internal error: $error"
-			exit 1
-		}
-	}
-}
-
-### main() entry point ####
-main $argc $argv

Deleted: branches/gsoc14-interactive/base/portmgr/packaging/rpmall.tcl
===================================================================
--- branches/gsoc14-interactive/base/portmgr/packaging/rpmall.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/portmgr/packaging/rpmall.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,502 +0,0 @@
-#!/usr/bin/env tclsh
-# rpmall.tcl
-# $Id$
-#
-# Copyright (c) 2009-2011 The MacPorts Project
-# Copyright (c) 2003 Benjamin Reed <ranger at befunk.com>
-# Copyright (c) 2003 Kevin Van Vechten <kevin at opendarwin.org>
-# Copyright (c) 2002 Apple Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#	 notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#	 notice, this list of conditions and the following disclaimer in the
-#	 documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Inc. nor the names of its contributors
-#	 may be used to endorse or promote products derived from this software
-#	 without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-
-package require darwinports
-
-# globals
-set portdir .
-
-# UI Instantiations
-array set ui_options {}
-# ui_options(ports_debug) - If set, output debugging messages.
-# ui_options(ports_verbose) - If set, output info messages (ui_info)
-# ui_options(ports_quiet) - If set, don't output "standard messages"
-
-# ui_options accessor
-proc ui_isset {val} {
-	global ui_options
-	if {[info exists ui_options($val)]} {
-		if {$ui_options($val) eq "yes"} {
-			return 1
-		}
-	}
-	return 0
-}
-
-set options(package.destpath) "/darwinports/rpms"
-
-# UI Callback
-
-proc ui_prefix {priority} {
-	switch $priority {
-		debug {
-			return "DEBUG: "
-		}
-		error {
-			return "Error: "
-		}
-		warn {
-			return "Warning: "
-		}
-		default {
-			return ""
-		}
-	}
-}
-
-proc ui_channels {priority} {
-	global logfd
-	switch $priority {
-		debug {
-			if {[ui_isset ports_debug]} {
-				return {stdout}
-			} else {
-				return {}
-			}
-		}
-		info {
-			# put verbose stuff only to the log file
-			if {[ui_isset ports_verbose]} {
-				return {$logfd}
-			} else {
-				return {}
-			}
-		}
-		msg {
-			if {[ui_isset ports_quiet]} {
-				return {}
-			} else {
-				return {stdout}
-			}
-		}
-		default {
-			return {stdout}
-		}
-	}
-}
-
-proc pkg_ui_log {message} {
-	global logfd
-	if {$logfd ne ""} {
-		log_message $logfd $message
-	}
-}
-
-proc log_message {channel message} {
-	seek $channel 0 end
-	puts $channel $message
-	flush $channel
-}
-
-# Recursive bottom-up approach of building a list of dependencies.
-proc get_dependencies {portname includeBuildDeps} {
-	set result {}
-
-	if {[catch {set search [mportsearch "^$portname\$"]} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_error "Internal error: port search failed: $error"
-		return {}
-	}
-	foreach {name array} $search {
-		array set portinfo $array
-		if {![info exists portinfo(name)] ||
-			![info exists portinfo(version)] ||
-			![info exists portinfo(categories)]} {
-			ui_error "Internal error: $name missing some portinfo keys"
-			continue
-		}
-		if {![info exists portinfo(revision)]} {
-			set portinfo(revision) 0
-		}
-
-		set portname $portinfo(name)
-		set portversion $portinfo(version)
-		set revision $portinfo(revision)
-
-		# Append the package itself to the result list
-		lappend result [list $portname $portversion $revision]
-
-		# Append the package's dependents to the result list
-		set depends {}
-		if {[info exists portinfo(depends_run)]} { eval "lappend depends $portinfo(depends_run)" }
-		if {[info exists portinfo(depends_lib)]} { eval "lappend depends $portinfo(depends_lib)" }
-		if {$includeBuildDeps ne "" && [info exists portinfo(depends_build)]} {
-			eval "lappend depends $portinfo(depends_build)"
-		}
-		if {$includeBuildDeps ne "" && [info exists portinfo(depends_fetch)]} {
-			eval "lappend depends $portinfo(depends_fetch)"
-		}
-		if {$includeBuildDeps ne "" && [info exists portinfo(depends_extract)]} {
-			eval "lappend depends $portinfo(depends_extract)"
-		}
-		foreach depspec $depends {
-			set dep [lindex [split $depspec :] end]
-			set x [get_dependencies $dep $includeBuildDeps]
-			eval "lappend result $x"
-			set result [lsort -unique $result]
-		}
-	}
-	return $result
-}
-
-# Install binary packages if they've already been built.  This will
-# speed up the testing, since we won't have to recompile dependencies
-# which have already been compiled.
-
-proc install_binary_if_available {dep} {
-	set portname [lindex $dep 0]
-	set portversion [lindex $dep 1]
-	set revision [lindex $dep 2]
-
-	foreach dir {"${prefix}/src/apple/RPMS" "/usr/src/apple/RPMS" "/darwinports/rpms/RPMS"} {
-		foreach arch {"ppc" "i386" "fat"} {
-			set rpmpath "${dir}/${arch}/${portname}-${portversion}-${revision}.${arch}.rpm"
-			if {[file readable $rpmpath]} {
-				ui_msg "Installing binary: $rpmpath"
-				if {[catch {system "rpm -Uvh --force $rpmpath"} error ]} {
-					global errorInfo
-					ui_debug "$errorInfo"
-					ui_error "Internal error: $error"
-				} else {
-					return true
-				}
-			}
-		}
-	}
-	return false
-}
-
-
-# Standard procedures
-
-proc fatal args {
-	global argv0
-	puts stderr "$argv0: $args"
-	exit
-}
-
-# Main
-array set options [list]
-array set variations [list]
-
-#	set ui_options(ports_verbose) yes
-if {![file exists /usr/bin/sw_vers]} {
-	set variations(puredarwin) "+"
-}
-
-if {[catch {mportinit ui_options options variations} result]} {
-	puts "Failed to initialize ports system, $result"
-	exit 1
-}
-
-package require Pextlib
-
-# If no arguments were given, default to all ports.
-if {[llength $argv] == 0} {
-	lappend argv ".*"
-}
-
-foreach pname $argv {
-	if {[catch {set allpackages [mportsearch "^${pname}\$"]} result]} {
-		puts "port search failed: $result"
-		exit 1
-	}
-
-	set logpath "/darwinports/logs"
-	set logfd ""
-
-	foreach {name array} $allpackages {
-		array unset portinfo
-		array set portinfo $array
-
-		#ui_msg "foo $portinfo(porturl)"
-
-		# Start with verbose output off;
-		# this will prevent the repopulation of /opt/local from getting logged.
-		set ui_options(ports_verbose) no
-
-		if {![info exists portinfo(porturl)]} {
-			puts stderr "Internal error: no porturl for $name"
-			continue
-		}
-		if {![info exists portinfo(revision)]} {
-			set portinfo(revision) 0
-		}
-
-		set porturl $portinfo(porturl)
-
-		# this is used to short-circuit the RPM check and
-		# move on to the next package
-
-		global exit_loop
-		set exit_loop false
-
-		# Skip up-to-date packages
-		if {[regsub {^file://} $portinfo(porturl) "" portpath]} {
-			if {[info exists portinfo(name)] &&
-				[info exists portinfo(version)] &&
-				[info exists portinfo(revision)]} {
-				set portname $portinfo(name)
-				set portversion $portinfo(version)
-				set revision $portinfo(revision)
-
-				foreach dir {"/opt/local/src/apple/RPMS" "/usr/src/apple/RPMS" "/darwinports/rpms/RPMS"} {
-					foreach arch {"ppc" "i386" "fat"} {
-						set rpmpath "${dir}/${arch}/${portname}-${portversion}-${revision}.${arch}.rpm"
-						#ui_msg "trying ${rpmpath}"
-						if {[file readable $rpmpath] && ([file mtime ${rpmpath}] >= [file mtime ${portpath}/Portfile])} {
-							puts stderr "->    skipping ${portname}-${portversion}; package is up to date."
-							set exit_loop true
-							break
-						}
-					}
-					if {${exit_loop}} {
-						break
-					}
-				}
-			}
-		}
-		if {${exit_loop}} {
-			continue
-		}
-
-		# Skip packages which previously failed
-		set exit_loop false
-
-		# Skip up-to-date packages
-		if {[regsub {^file://} $portinfo(porturl) "" portpath]} {
-			if {[info exists portinfo(name)] &&
-				[info exists portinfo(version)] &&
-				[info exists portinfo(revision)]} {
-				set portname $portinfo(name)
-				set portversion $portinfo(version)
-				set revision $portinfo(revision)
-
-				set logfilepath "${logpath}/${portname}.log"
-				if {[file readable ${logfilepath}] && ([file mtime ${logfilepath}] > [file mtime ${portpath}/Portfile])} {
-					puts stderr "->    skipping ${portname}-${portversion}; package failed, but has not changed."
-					set exit_loop true
-				}
-			}
-		}
-		if {${exit_loop}} {
-			continue
-		}
-
-		# Building the port:
-		# - remove /opt/local so it won't pollute the port.
-		# - re-install MacPorts.
-		# - keep distfiles outside /opt/local so we don't have to keep fetching them.
-		# - send out an email to the maintainer if any errors occurred.
-
-		set remove_files ""
-		foreach dir {"/opt/local/src/apple/RPMS" "/usr/src/apple/RPMS" "/darwinports/rpms/RPMS"} {
-			foreach arch {"ppc" "i386" "fat"} {
-				set remove_files "${remove_files} '${dir}/${arch}/'*.rpm"
-			}
-		}
-		system "rpm -q --queryformat='%{name} ' -p ${remove_files} | xargs rpm -e || true"
-
-		ui_msg "->	  Removing /opt/local"
-		#unset ui_options(ports_verbose)
-		if {[catch {system "rm -Rf /opt/local"} error]} {
-			puts stderr "Internal error: $error"
-		}
-		# this is bad on pure darwin  :)
-		#if {[catch {system "rm -Rf /usr/X11R6"} error]} {
-		#	puts stderr "Internal error: $error"
-		#}
-		#if {[catch {system "rm -Rf /etc/X11"} error]} {
-		#	puts stderr "Internal error: $error"
-		#}
-		#if {[catch {system "rm -Rf /etc/fonts"} error]} {
-		#	puts stderr "Internal error: $error"
-		#}
-		ui_msg "->	  Installing MacPorts"
-		if {[catch {system "cd $env(HOME)/darwinports && make && make install"} error]} {
-			puts stderr "Internal error: $error"
-		}
-		if {[catch {system "rmdir /opt/local/var/db/dports/distfiles"} error]} {
-			puts stderr "Internal error: $error"
-		}
-		if {[catch {system "ln -s /darwinports/distfiles /opt/local/var/db/dports/distfiles"} error]} {
-			puts stderr "Internal error: $error"
-		}
-		#set ui_options(ports_verbose) yes
-
-		# If there was a log file left over from the previous pass,
-		# then the port failed with an error.  Send the log in an
-		# email to the maintainers.
-		if {$logfd ne ""} {
-			close $logfd
-			set logfd ""
-		}
-		#if {[file readable $logfilename]} {
-		#	if {[catch {system "<$logfilename /usr/sbin/sendmail -t"} error]} {
-		#		puts stderr "Internal error: $error"
-		#	}
-		#}
-
-		# Open the log file for writing
-		set logfd [open ${logpath}/${name}.log w]
-
-		set valid 1
-
-		set lint_errors {}
-		set portname ""
-		set portversion ""
-		set description ""
-		set category ""
-
-		if {![info exists portinfo(name)]} {
-			lappend lint_errors "missing name key"
-			set valid 0
-		} else {
-			set portname $portinfo(name)
-		}
-
-		if {![info exists portinfo(description)]} {
-			lappend lint_errors "missing description key"
-			set valid 0
-		} else {
-			set description $portinfo(description)
-		}
-
-		if {![info exists portinfo(version)]} {
-			lappend lint_errors "missing version key"
-			set valid 0
-		} else {
-			set portversion $portinfo(version)
-		}
-
-		if {![info exists portinfo(categories)]} {
-			lappend lint_errors "missing categories key"
-			set valid 0
-		} else {
-			set category [lindex $portinfo(categories) 0]
-		}
-
-		if {![info exists portinfo(maintainers)]} {
-			append lint_errors "missing maintainers key"
-			set valid 0
-			set maintainers kevin at opendarwin.org
-		} else {
-			set maintainers $portinfo(maintainers)
-		}
-
-		pkg_ui_log "To: [join $maintainers {, }]"
-		pkg_ui_log "From: donotreply at opendarwin.org"
-		pkg_ui_log "Subject: MacPorts $portinfo(name)-$portinfo(version) build failure"
-		pkg_ui_log ""
-		pkg_ui_log "The following is a transcript produced by the MacPorts automated build		 "
-		pkg_ui_log "system.  You are receiving this email because you are listed as a maintainer	"
-		pkg_ui_log "of this port, which has failed the automated packaging process.  Please update	"
-		pkg_ui_log "the port as soon as possible."
-		pkg_ui_log ""
-		pkg_ui_log ""
-		pkg_ui_log "Thank you,"
-		pkg_ui_log "The MacPorts Team"
-		pkg_ui_log ""
-		pkg_ui_log "================================================================================"
-		pkg_ui_log ""
-
-		if {!$valid} {
-			foreach error $lint_errors {
-				ui_error $error
-			}
-		}
-
-		ui_msg "-->   Packaging ${category}/${portname}-${portversion}"
-
-		foreach prebuild {"ccache" "rpm" "unzip"} {
-			if {![file exists /bin/${prebuild}] && ![file exists /usr/bin/${prebuild}]} {
-				ui_msg "--->  Pre-installing ${prebuild}"
-				if {[catch {set search [mportsearch "^${prebuild}\$"]} error]} {
-					global errorInfo
-					ui_debug "$errorInfo"
-					ui_error "Internal error: port search ${prebuild} failed: $error"
-				}
-				array set prebuildinfo [lindex $search 1]
-				set ui_options(ports_verbose) yes
-				set options(subport) ${prebuild}
-				if {[catch {set workername [mportopen $prebuildinfo(porturl) [array get options] [array get variations] yes]} result] ||
-					$result == 1} {
-					global errorInfo
-					ui_debug "$errorInfo"
-					ui_error "Internal error: unable to install ${prebuild}... exiting"
-					exit 1
-				}
-				if {[catch {set result [mportexec $workername activate]} result] ||
-					$result == 1} {
-					global errorInfo
-					ui_debug "$errorInfo"
-					ui_error "installation of ${prebuild} failed: $result"
-					mportclose $workername
-					exit 1
-				}
-			}
-		}
-
-		# Turn on verbose output for the build
-		set ui_options(ports_verbose) yes
-		set options(subport) $name
-		if {[catch {set workername [mportopen $porturl [array get options] [array get variations]]} result] ||
-			$result == 1} {
-			global errorInfo
-			ui_debug "$errorInfo"
-			ui_error "Internal error: unable to open port: $result"
-			continue
-		}
-		if {[catch {set result [mportexec $workername rpmpackage]} result] ||
-			$result == 1} {
-			global errorInfo
-			ui_debug "$errorInfo"
-			ui_error "port package failed: $result"
-			mportclose $workername
-			continue
-		}
-		set ui_options(ports_verbose) no
-		# Turn verbose output off after the build
-
-		mportclose $workername
-
-		# We made it to the end.  We can delete the log file.
-		close $logfd
-		set logfd ""
-		file delete ${logpath}/${name}.log
-	}
-
-}
-# end foreach pname

Modified: branches/gsoc14-interactive/base/src/cregistry/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/src/cregistry/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/cregistry/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -12,6 +12,9 @@
 
 include ../../Mk/macports.autoconf.mk
 
+# required for strdup(3) on Linux and OS X
+CPPFLAGS+=-D_XOPEN_SOURCE=600
+
 all:: ${STLIB_NAME} ${SQLEXT_NAME}
 
 .c.o:

Modified: branches/gsoc14-interactive/base/src/cregistry/registry.c
===================================================================
--- branches/gsoc14-interactive/base/src/cregistry/registry.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/cregistry/registry.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -54,6 +54,21 @@
  *       alive at any given time.
  */
 
+/*
+ * Error constants. Those need to be constants and cannot be string literals
+ * because we'll use address comparisons for those and compilers don't have to
+ * guarantee string literals always have the same address (they don't have to
+ * guarantee string literals will have an address at all, so comparing the
+ * address of a string with a string literal is undefined behavior).
+ */
+char *const registry_err_not_found      = "registry::not-found";
+char *const registry_err_invalid        = "registry::invalid";
+char *const registry_err_constraint     = "registry::constraint";
+char *const registry_err_sqlite_error   = "registry::sqlite-error";
+char *const registry_err_misuse         = "registry::misuse";
+char *const registry_err_cannot_init    = "registry::cannot-init";
+char *const registry_err_already_active = "registry::already-active";
+
 /**
  * Destroys a `reg_error` object. This should be called on any reg_error when a
  * registry function returns a failure condition; depending on the function,

Modified: branches/gsoc14-interactive/base/src/cregistry/registry.h
===================================================================
--- branches/gsoc14-interactive/base/src/cregistry/registry.h	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/cregistry/registry.h	2014-08-14 18:17:24 UTC (rev 123796)
@@ -37,14 +37,22 @@
 #include <sqlite3.h>
 #include <tcl.h>
 
-#define REG_NOT_FOUND       "registry::not-found"
-#define REG_INVALID         "registry::invalid"
-#define REG_CONSTRAINT      "registry::constraint"
-#define REG_SQLITE_ERROR    "registry::sqlite-error"
-#define REG_MISUSE          "registry::misuse"
-#define REG_CANNOT_INIT     "registry::cannot-init"
-#define REG_ALREADY_ACTIVE  "registry::already-active"
+#define REG_NOT_FOUND       (registry_err_not_found)
+#define REG_INVALID         (registry_err_invalid)
+#define REG_CONSTRAINT      (registry_err_constraint)
+#define REG_SQLITE_ERROR    (registry_err_sqlite_error)
+#define REG_MISUSE          (registry_err_misuse)
+#define REG_CANNOT_INIT     (registry_err_cannot_init)
+#define REG_ALREADY_ACTIVE  (registry_err_already_active)
 
+extern char *const registry_err_not_found;
+extern char *const registry_err_invalid;
+extern char *const registry_err_constraint;
+extern char *const registry_err_sqlite_error;
+extern char *const registry_err_misuse;
+extern char *const registry_err_cannot_init;
+extern char *const registry_err_already_active;
+
 typedef void reg_error_destructor(const char* description);
 
 typedef struct {

Modified: branches/gsoc14-interactive/base/src/darwintracelib1.0/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/src/darwintracelib1.0/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/darwintracelib1.0/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -28,7 +28,7 @@
 	rm -f Makefile
 
 install:: all
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} ${INSTALLDIR}
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 ${SHLIB_NAME} ${INSTALLDIR}
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "${INSTALLDIR}"
+	$(INSTALL)    -o "${DSTUSR}" -g "${DSTGRP}" -m 444 "${SHLIB_NAME}" "${INSTALLDIR}"
 
 test::

Modified: branches/gsoc14-interactive/base/src/machista1.0/libmachista.c
===================================================================
--- branches/gsoc14-interactive/base/src/machista1.0/libmachista.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/machista1.0/libmachista.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -30,8 +30,15 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifdef HAVE_CONFIG_H
 #include <config.h>
+#endif
 
+/* required for asprintf(3) on OS X */
+#define _DARWIN_C_SOURCE
+/* required for asprintf(3) on Linux */
+#define _GNU_SOURCE
+
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -109,14 +116,15 @@
     return result;
 }
 
+#ifdef __MACH__
 const char *macho_get_arch_name (cpu_type_t cputype) {
-#ifdef __MACH__
     const NXArchInfo *archInfo = NXGetArchInfoFromCpuType(cputype, CPU_SUBTYPE_MULTIPLE);	
     if (!archInfo) {
         return NULL;
     }
     return archInfo->name;
 #else
+const char *macho_get_arch_name (cpu_type_t cputype UNUSED) {
     return NULL;
 #endif
 }
@@ -239,8 +247,8 @@
 #endif
 
 /* Parse a Mach-O header */
+#ifdef __MACH__
 static int parse_macho (macho_t *mt, macho_input_t *input) {
-#ifdef __MACH__
     /* Read the file type. */
     const uint32_t *magic = macho_read(input, input->data, sizeof(uint32_t));
     if (magic == NULL)
@@ -437,14 +445,12 @@
     }
 
     return MACHO_SUCCESS;
-#else
-    return 0;
+}
 #endif
-}
 
 /* Parse a (possible Mach-O) file. For a more detailed description, see the header */
+#ifdef __MACH__
 int macho_parse_file(macho_handle_t *handle, const char *filepath, const macho_t **res) {
-#ifdef __MACH__
     int fd;
     struct stat st;
     void *data;
@@ -505,6 +511,7 @@
 
     return ret;
 #else
+int macho_parse_file(macho_handle_t *handle UNUSED, const char *filepath UNUSED, const macho_t **res UNUSED) {
     return 0;
 #endif
 }

Modified: branches/gsoc14-interactive/base/src/macports1.0/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/src/macports1.0/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/macports1.0/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -32,13 +32,13 @@
 	@# creating the directory will fail.
 	if test -L "${INSTALLDIR}"; then rm -rf "${INSTALLDIR}"; fi
 
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} ${INSTALLDIR}
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "${INSTALLDIR}"
 
 	$(SILENT) set -x; for file in ${SRCS}; do \
-		$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 $$file ${INSTALLDIR}/$$file; \
+		$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 "$$file" "${INSTALLDIR}/$$file"; \
 	done
 
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 pkgIndex.tcl ${INSTALLDIR}
+	$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 pkgIndex.tcl "${INSTALLDIR}"
 
 
 include $(srcdir)/../../Mk/macports.tea.mk

Modified: branches/gsoc14-interactive/base/src/macports1.0/get_systemconfiguration_proxies.c
===================================================================
--- branches/gsoc14-interactive/base/src/macports1.0/get_systemconfiguration_proxies.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/macports1.0/get_systemconfiguration_proxies.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -55,7 +55,11 @@
  *
  * Synopsis: array set someArray get_systemconfiguration_proxies
  */
+#ifdef HAVE_FRAMEWORK_SYSTEMCONFIGURATION
 int GetSystemConfigurationProxiesCmd( ClientData clientData UNUSED, Tcl_Interp *interp, int objc UNUSED, Tcl_Obj *CONST objv[] UNUSED )
+#else
+int GetSystemConfigurationProxiesCmd( ClientData clientData UNUSED, Tcl_Interp *interp UNUSED, int objc UNUSED, Tcl_Obj *CONST objv[] UNUSED )
+#endif
 {
     int cmdResult = TCL_OK;
 #ifdef HAVE_FRAMEWORK_SYSTEMCONFIGURATION

Modified: branches/gsoc14-interactive/base/src/macports1.0/macports.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/macports1.0/macports.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/macports1.0/macports.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -267,7 +267,7 @@
     }
     set phases {fetch checksum}
     try {
-        eval ::ui_init $priority $prefix $channels($priority) $args
+        ::ui_init $priority $prefix $channels($priority) {*}$args
     } catch * {
         interp alias {} ui_$priority {} ui_message $priority $prefix {}
         foreach phase $phases {
@@ -1479,7 +1479,7 @@
         } elseif {[info exists macports::ui_options(progress_download)]} {
             set progressflag "--progress ${macports::ui_options(progress_download)}"
         }
-        if {[catch {eval curl fetch $progressflag {$url} {[file join $fetchdir $fetchfile]}} result]} {
+        if {[catch {curl fetch {*}$progressflag $url [file join $fetchdir $fetchfile]} result]} {
             return -code error "Port remote fetch failed: $result"
         }
     }
@@ -1492,9 +1492,9 @@
     set tarcmd [findBinary tar $macports::autoconf::tar_path]
     set tarflags [get_tar_flags [file extension $fetchfile]]
     set qflag $macports::autoconf::tar_q
-    set cmdline "$tarcmd ${tarflags}${qflag}xOf \"$fetchfile\" +CONTENTS"
+    set cmdline [list $tarcmd ${tarflags}${qflag}xOf $fetchfile +CONTENTS]
     ui_debug $cmdline
-    if {![catch {set contents [eval exec $cmdline]}]} {
+    if {![catch {set contents [exec {*}$cmdline]}]} {
         # the file is probably a valid binary archive
         set binary 1
         ui_debug "getting port name from binary archive"
@@ -1520,12 +1520,12 @@
     # extract the portfile (and possibly files dir if not a binary archive)
     ui_debug "extracting port archive to [pwd]"
     if {$binary} {
-        set cmdline "$tarcmd ${tarflags}${qflag}xOf \"../$fetchfile\" +PORTFILE > Portfile"
+        set cmdline [list $tarcmd ${tarflags}${qflag}xOf ../$fetchfile +PORTFILE > Portfile]
     } else {
-        set cmdline "$tarcmd ${tarflags}xf \"$fetchfile\""
+        set cmdline [list $tarcmd ${tarflags}${qflag}xf $fetchfile]
     }
     ui_debug $cmdline
-    if {[catch {eval exec $cmdline} result]} {
+    if {[catch {exec {*}$cmdline} result]} {
         # clean up the archive, we don't need it anymore
         file delete [file join $fetchdir $fetchfile]
 
@@ -2359,7 +2359,7 @@
                     } else {
                         set git_action "pull --rebase"
                     }
-                    set git_commandline "pushd $portdir ; $git_cmd $git_action ; popd"
+                    set git_commandline "cd $portdir && $git_cmd $git_action || true"
                     ui_debug $git_commandline
                     if {
                         [catch {
@@ -2553,12 +2553,14 @@
                 set progressflag {}
                 if {$macports::portverbose eq {yes}} {
                     set progressflag "--progress builtin"
+                    set verboseflag "-v"
                 } elseif {[info exists macports::ui_options(progress_download)]} {
                     set progressflag "--progress ${macports::ui_options(progress_download)}"
+                    set verboseflag ""
                 }
 
                 try {
-                    eval curl fetch $progressflag {$source} {$tarpath}
+                    curl fetch {*}$progressflag $source $tarpath
                 } catch {{POSIX SIG SIGINT} eCode eMessage} {
                     throw
                 } catch {{POSIX SIG SIGTERM} eCode eMessage} {
@@ -3373,10 +3375,7 @@
         dmg -
         mdmg -
         pkg -
-        mpkg -
-        rpm -
-        dpkg -
-        srpm {return 1}
+        mpkg {return 1}
         default {return 0}
     }
 }
@@ -3391,14 +3390,11 @@
         configure   -
         build       {return "depends_fetch depends_extract depends_build depends_lib"}
         test        -
-        srpm        -
         destroot    {return "depends_fetch depends_extract depends_build depends_lib depends_run"}
         dmg         -
         pkg         -
         mdmg        -
-        mpkg        -
-        rpm         -
-        dpkg        {
+        mpkg        {
             if {[global_option_isset ports_binary_only] ||
                 (![global_option_isset ports_source_only] && [$workername eval _archive_available])} {
                 return "depends_lib depends_run"
@@ -3551,7 +3547,7 @@
             }
             ui_debug "Permissions OK"
 
-            set configure_args "--prefix=$prefix --with-install-user=$owner --with-install-group=$group --with-directory-mode=$perms"
+            set configure_args "--prefix=[macports::shellescape $prefix] --with-install-user=[macports::shellescape $owner] --with-install-group=[macports::shellescape $group] --with-directory-mode=[macports::shellescape $perms]"
             # too many users have an incompatible readline in /usr/local, see ticket #10651
             if {$tcl_platform(os) ne {Darwin} || $prefix eq {/usr/local}
                 || ([glob -nocomplain /usr/local/lib/lib{readline,history}*] eq {} && [glob -nocomplain /usr/local/include/readline/*.h] eq {})} {
@@ -4377,16 +4373,58 @@
     return yes
 }
 
+##
+# Execute the rev-upgrade scan and attempt to rebuild all ports found to be
+# broken. Depends on the revupgrade_mode setting from macports.conf.
+#
+# @param opts
+#        A Tcl array serialized into a list using array get containing options
+#        for MacPorts. Options used exclusively by rev-upgrade are
+#        ports_rev-upgrade_id-loadcmd-check, a boolean indicating whether the
+#        ID load command of binaries should be check for sanity. This is mostly
+#        useful for maintainers.
+# @return 0 if report-only mode is enabled, no ports are broken, or the
+#         rebuilds finished successfully. 1 if an exception occured during the
+#         execution of rev-upgrade, 2 if the execution was aborted on user
+#         request.
 proc macports::revupgrade {opts} {
     set run_loop 1
     array set broken_port_counts {}
-    while {$run_loop == 1} {
-        set run_loop [revupgrade_scanandrebuild broken_port_counts $opts]
+    try {
+        while {$run_loop == 1} {
+            set run_loop [revupgrade_scanandrebuild broken_port_counts $opts]
+        }
+        return 0
+    } catch {{POSIX SIG SIGINT} eCode eMessage} {
+        ui_debug "rev-upgrade failed: $::errorInfo"
+        ui_error [msgcat::mc "rev-upgrade aborted: SIGINT received."]
+        return 2
+    } catch {{POSIX SIG SIGTERM} eCode eMessage} {
+        ui_error [msgcat::mc "rev-upgrade aborted: SIGTERM received."]
+        return 2
+    } catch {{*} eCode eMessage} {
+        ui_debug "rev-upgrade failed: $::errorInfo"
+        ui_error [msgcat::mc "rev-upgrade failed: %s" $eMessage]
+        return 1
     }
-    return 0
 }
 
-# returns 1 if ports were rebuilt and revupgrade_scanandrebuild should be called again
+##
+# Helper function for rev-upgrade. Do not consider this to be part of public
+# API. Use macports::revupgrade instead.
+#
+# @param broken_port_counts_name
+#        The name of a Tcl array that's being used to store the number of times
+#        a port has been rebuilt so far.
+# @param opts
+#        A serialized version of a Tcl array that contains options for
+#        MacPorts. Options used by this method are
+#        ports_rev-upgrade_id-loadcmd-check, a boolean indicating whether the
+#        ID loadcommand of binaries should also be checked during rev-upgrade
+#        and ports_dryrun, a boolean indicating whether no action should be
+#        taken.
+# @return 1 if ports were rebuilt and this function should be called again,
+#         0 otherwise.
 proc macports::revupgrade_scanandrebuild {broken_port_counts_name opts} {
     upvar $broken_port_counts_name broken_port_counts
     array set options $opts
@@ -4425,6 +4463,9 @@
                     }
                 }
             } catch {*} {
+                if {${fancy_output}} {
+                    $revupgrade_progress intermission
+                }
                 ui_error "Updating database of binaries failed"
                 throw
             }
@@ -4450,71 +4491,44 @@
             $revupgrade_progress start
         }
 
-        set i 1
-        foreach b $binaries {
-            if {$fancy_output} {
-                if {$binary_count < 10000 || $i % 10 == 1} {
-                    $revupgrade_progress update $i $binary_count
+        try {
+            set i 1
+            foreach b $binaries {
+                if {$fancy_output} {
+                    if {$binary_count < 10000 || $i % 10 == 1} {
+                        $revupgrade_progress update $i $binary_count
+                    }
                 }
-            }
-            set bpath [$b actual_path]
-            #ui_debug "${i}/${binary_count}: $bpath"
-            incr i
+                set bpath [$b actual_path]
+                #ui_debug "${i}/${binary_count}: $bpath"
+                incr i
 
-            set resultlist [machista::parse_file $handle $bpath]
-            set returncode [lindex $resultlist 0]
-            set result     [lindex $resultlist 1]
+                set resultlist [machista::parse_file $handle $bpath]
+                set returncode [lindex $resultlist 0]
+                set result     [lindex $resultlist 1]
 
-            if {$returncode != $machista::SUCCESS} {
-                if {$returncode == $machista::EMAGIC} {
-                    # not a Mach-O file
-                    # ignore silently, these are only static libs anyway
-                    #ui_debug "Error parsing file ${bpath}: [machista::strerror $returncode]"
-                } else {
-                    if {$fancy_output} {
-                        $revupgrade_progress intermission
+                if {$returncode != $machista::SUCCESS} {
+                    if {$returncode == $machista::EMAGIC} {
+                        # not a Mach-O file
+                        # ignore silently, these are only static libs anyway
+                        #ui_debug "Error parsing file ${bpath}: [machista::strerror $returncode]"
+                    } else {
+                        if {$fancy_output} {
+                            $revupgrade_progress intermission
+                        }
+                        ui_warn "Error parsing file ${bpath}: [machista::strerror $returncode]"
                     }
-                    ui_warn "Error parsing file ${bpath}: [machista::strerror $returncode]"
+                    continue;
                 }
-                continue;
-            }
 
-            set architecture [$result cget -mt_archs]
-            while {$architecture ne {NULL}} {
-                if {[info exists options(ports_rev-upgrade_id-loadcmd-check)] && $options(ports_rev-upgrade_id-loadcmd-check) eq {yes}} {
-                    if {[$architecture cget -mat_install_name] ne {NULL} && [$architecture cget -mat_install_name] ne {}} {
-                        # check if this lib's install name actually refers to this file itself
-                        # if this is not the case software linking against this library might have erroneous load commands
-                        if {0 == [catch {set idloadcmdpath [revupgrade_handle_special_paths $bpath [$architecture cget -mat_install_name]]}]} {
-                            if {[string index $idloadcmdpath 0] ne {/}} {
-                                set port [registry::entry owner $bpath]
-                                if {$port ne {}} {
-                                    set portname [$port name]
-                                } else {
-                                    set portname <unknown-port>
-                                }
-                                if {$fancy_output} {
-                                    $revupgrade_progress intermission
-                                }
-                                ui_warn "ID load command in ${bpath}, arch [machista::get_arch_name [$architecture cget -mat_arch]] (belonging to port $portname) contains relative path"
-                            } elseif {![file exists $idloadcmdpath]} {
-                                set port [registry::entry owner $bpath]
-                                if {$port ne {}} {
-                                    set portname [$port name]
-                                } else {
-                                    set portname <unknown-port>
-                                }
-                                if {$fancy_output} {
-                                    $revupgrade_progress intermission
-                                }
-                                ui_warn "ID load command in ${bpath}, arch [machista::get_arch_name [$architecture cget -mat_arch]] refers to non-existant file $idloadcmdpath"
-                                ui_warn "This is probably a bug in the $portname port and might cause problems in libraries linking against this file"
-                            } else {
-
-                                set hash_this [sha256 file $bpath]
-                                set hash_idloadcmd [sha256 file $idloadcmdpath]
-
-                                if {$hash_this ne $hash_idloadcmd} {
+                set architecture [$result cget -mt_archs]
+                while {$architecture ne {NULL}} {
+                    if {[info exists options(ports_rev-upgrade_id-loadcmd-check)] && $options(ports_rev-upgrade_id-loadcmd-check) eq {yes}} {
+                        if {[$architecture cget -mat_install_name] ne {NULL} && [$architecture cget -mat_install_name] ne {}} {
+                            # check if this lib's install name actually refers to this file itself
+                            # if this is not the case software linking against this library might have erroneous load commands
+                            if {0 == [catch {set idloadcmdpath [revupgrade_handle_special_paths $bpath [$architecture cget -mat_install_name]]}]} {
+                                if {[string index $idloadcmdpath 0] ne {/}} {
                                     set port [registry::entry owner $bpath]
                                     if {$port ne {}} {
                                         set portname [$port name]
@@ -4524,85 +4538,121 @@
                                     if {$fancy_output} {
                                         $revupgrade_progress intermission
                                     }
-                                    ui_warn "ID load command in ${bpath}, arch [machista::get_arch_name [$architecture cget -mat_arch]] refers to file ${idloadcmdpath}, which is a different file"
+                                    ui_warn "ID load command in ${bpath}, arch [machista::get_arch_name [$architecture cget -mat_arch]] (belonging to port $portname) contains relative path"
+                                } elseif {![file exists $idloadcmdpath]} {
+                                    set port [registry::entry owner $bpath]
+                                    if {$port ne {}} {
+                                        set portname [$port name]
+                                    } else {
+                                        set portname <unknown-port>
+                                    }
+                                    if {$fancy_output} {
+                                        $revupgrade_progress intermission
+                                    }
+                                    ui_warn "ID load command in ${bpath}, arch [machista::get_arch_name [$architecture cget -mat_arch]] refers to non-existant file $idloadcmdpath"
                                     ui_warn "This is probably a bug in the $portname port and might cause problems in libraries linking against this file"
+                                } else {
+                                    set hash_this [sha256 file $bpath]
+                                    set hash_idloadcmd [sha256 file $idloadcmdpath]
+
+                                    if {$hash_this ne $hash_idloadcmd} {
+                                        set port [registry::entry owner $bpath]
+                                        if {$port ne {}} {
+                                            set portname [$port name]
+                                        } else {
+                                            set portname <unknown-port>
+                                        }
+                                        if {$fancy_output} {
+                                            $revupgrade_progress intermission
+                                        }
+                                        ui_warn "ID load command in ${bpath}, arch [machista::get_arch_name [$architecture cget -mat_arch]] refers to file ${idloadcmdpath}, which is a different file"
+                                        ui_warn "This is probably a bug in the $portname port and might cause problems in libraries linking against this file"
+                                    }
                                 }
                             }
                         }
                     }
-                }
 
-                set archname [machista::get_arch_name [$architecture cget -mat_arch]]
-                if {![arch_runnable $archname]} {
-                    ui_debug "skipping $archname in $bpath since this system can't run it anyway"
-                    set architecture [$architecture cget -next]
-                    continue
-                }
+                    set archname [machista::get_arch_name [$architecture cget -mat_arch]]
+                    if {![arch_runnable $archname]} {
+                        ui_debug "skipping $archname in $bpath since this system can't run it anyway"
+                        set architecture [$architecture cget -next]
+                        continue
+                    }
 
-                set loadcommand [$architecture cget -mat_loadcmds]
+                    set loadcommand [$architecture cget -mat_loadcmds]
 
-                while {$loadcommand ne {NULL}} {
-                    if {0 != [catch {set filepath [revupgrade_handle_special_paths $bpath [$loadcommand cget -mlt_install_name]]}]} {
-                        set loadcommand [$loadcommand cget -next]
-                        continue;
-                    }
+                    while {$loadcommand ne {NULL}} {
+                        if {0 != [catch {set filepath [revupgrade_handle_special_paths $bpath [$loadcommand cget -mlt_install_name]]}]} {
+                            set loadcommand [$loadcommand cget -next]
+                            continue;
+                        }
 
-                    set libresultlist [machista::parse_file $handle $filepath]
-                    set libreturncode [lindex $libresultlist 0]
-                    set libresult     [lindex $libresultlist 1]
+                        set libresultlist [machista::parse_file $handle $filepath]
+                        set libreturncode [lindex $libresultlist 0]
+                        set libresult     [lindex $libresultlist 1]
 
-                    if {$libreturncode != $machista::SUCCESS} {
-                        if {![info exists files_warned_about($filepath)]} {
-                            if {$fancy_output} {
-                                $revupgrade_progress intermission
+                        if {$libreturncode != $machista::SUCCESS} {
+                            if {![info exists files_warned_about($filepath)]} {
+                                if {$fancy_output} {
+                                    $revupgrade_progress intermission
+                                }
+                                ui_info "Could not open ${filepath}: [machista::strerror $libreturncode] (referenced from $bpath)"
+                                if {[string first [file separator] $filepath] == -1} {
+                                    ui_info "${filepath} seems to be referenced using a relative path. This may be a problem with its canonical library name and require the use of install_name_tool(1) to fix."
+                                }
+                                set files_warned_about($filepath) yes
                             }
-                            ui_info "Could not open ${filepath}: [machista::strerror $libreturncode] (referenced from $bpath)"
-                            set files_warned_about($filepath) yes
+                            if {$libreturncode == $machista::EFILE} {
+                                ui_debug "Marking $bpath as broken"
+                                lappend broken_files $bpath
+                            }
+                            set loadcommand [$loadcommand cget -next]
+                            continue;
                         }
-                        if {$libreturncode == $machista::EFILE} {
-                            ui_debug "Marking $bpath as broken"
-                            lappend broken_files $bpath
-                        }
-                        set loadcommand [$loadcommand cget -next]
-                        continue;
-                    }
 
-                    set libarchitecture [$libresult cget -mt_archs]
-                    set libarch_found false;
-                    while {$libarchitecture ne {NULL}} {
-                        if {[$architecture cget -mat_arch] ne [$libarchitecture cget -mat_arch]} {
-                            set libarchitecture [$libarchitecture cget -next]
-                            continue;
+                        set libarchitecture [$libresult cget -mt_archs]
+                        set libarch_found false;
+                        while {$libarchitecture ne {NULL}} {
+                            if {[$architecture cget -mat_arch] ne [$libarchitecture cget -mat_arch]} {
+                                set libarchitecture [$libarchitecture cget -next]
+                                continue;
+                            }
+
+                            if {[$loadcommand cget -mlt_version] ne [$libarchitecture cget -mat_version] && [$loadcommand cget -mlt_comp_version] > [$libarchitecture cget -mat_comp_version]} {
+                                if {$fancy_output} {
+                                    $revupgrade_progress intermission
+                                }
+                                ui_info "Incompatible library version: $bpath requires version [machista::format_dylib_version [$loadcommand cget -mlt_comp_version]] or later, but $filepath provides version [machista::format_dylib_version [$libarchitecture cget -mat_comp_version]]"
+                                ui_debug "Marking $bpath as broken"
+                                lappend broken_files $bpath
+                            }
+
+                            set libarch_found true;
+                            break;
                         }
 
-                        if {[$loadcommand cget -mlt_version] ne [$libarchitecture cget -mat_version] && [$loadcommand cget -mlt_comp_version] > [$libarchitecture cget -mat_comp_version]} {
-                            if {$fancy_output} {
-                                $revupgrade_progress intermission
+                        if {$libarch_found eq "false"} {
+                            ui_debug "Missing architecture [machista::get_arch_name [$architecture cget -mat_arch]] in file $filepath"
+                            if {[path_is_in_prefix $filepath]} {
+                                ui_debug "Marking $bpath as broken"
+                                lappend broken_files $bpath
+                            } else {
+                                ui_debug "Missing architecture [machista::get_arch_name [$architecture cget -mat_arch]] in file outside prefix referenced from $bpath"
+                                # ui_debug "   How did you get that compiled anyway?"
                             }
-                            ui_info "Incompatible library version: $bpath requires version [machista::format_dylib_version [$loadcommand cget -mlt_comp_version]] or later, but $filepath provides version [machista::format_dylib_version [$libarchitecture cget -mat_comp_version]]"
-                            ui_debug "Marking $bpath as broken"
-                            lappend broken_files $bpath
                         }
-
-                        set libarch_found true;
-                        break;
+                        set loadcommand [$loadcommand cget -next]
                     }
 
-                    if {$libarch_found eq "false"} {
-                        ui_debug "Missing architecture [machista::get_arch_name [$architecture cget -mat_arch]] in file $filepath"
-                        if {[path_is_in_prefix $filepath]} {
-                            ui_debug "Marking $bpath as broken"
-                            lappend broken_files $bpath
-                        } else {
-                            ui_debug "Missing architecture [machista::get_arch_name [$architecture cget -mat_arch]] in file outside prefix referenced from $bpath"
-                            # ui_debug "   How did you get that compiled anyway?"
-                        }
-                    }
-                    set loadcommand [$loadcommand cget -next]
+                    set architecture [$architecture cget -next]
                 }
-
-                set architecture [$architecture cget -next]
             }
+        } catch {*} {
+            if {$fancy_output} {
+                $revupgrade_progress intermission
+            }
+            throw
         }
         if {$fancy_output} {
             $revupgrade_progress finish
@@ -4982,3 +5032,25 @@
     }
     return $archive_sites_conf_values
 }
+
+##
+# Escape a string for use in a POSIX shell, e.g., when passing it to the \c system Pextlib extension. This is necessary
+# to handle cases such as group names with backslashes correctly. See #43875 for an example of a problem caused by
+# missing quotes.
+#
+# @param arg The argument that should be escaped for use in a POSIX shell
+# @return A quoted version of the argument
+proc macports::shellescape {arg} {
+    set mapping {}
+    # Replace each backslash by a double backslash. Apparently Bash treats Backslashes in single-quoted strings
+    # differently depending on whether is was invoked as sh or bash: echo 'using \backslashes' preserves the backslash
+    # in bash mode, but interprets it in sh mode. Since the `system' command uses sh, escape backslashes.
+    lappend mapping "\\" "\\\\"
+    # Replace each single quote with a single quote (closing the currently open string), an escaped single quote \'
+    # (additional backslash needed to escape the backslash in Tcl), and another single quote (opening a new quoted
+    # string).
+    lappend mapping "'" "'\\''"
+
+    # Add a single quote at the start, escape all single quotes in the argument, and add a single quote at the end
+    return "'[string map $mapping $arg]'"
+}

Modified: branches/gsoc14-interactive/base/src/macports1.0/macports_autoconf.tcl.in
===================================================================
--- branches/gsoc14-interactive/base/src/macports1.0/macports_autoconf.tcl.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/macports1.0/macports_autoconf.tcl.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -40,6 +40,7 @@
     variable macports_version "@MACPORTS_VERSION@"
     variable macports_user_dir "~/.macports"
     variable macportsuser "@RUNUSR@"
+    variable man_path "@MAN@"
     variable mdfind_path "@MDFIND@"
     variable mdls_path "@MDLS@"
     variable open_path "@OPEN@"

Modified: branches/gsoc14-interactive/base/src/macports1.0/macports_dlist.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/macports1.0/macports_dlist.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/macports1.0/macports_dlist.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -17,7 +17,7 @@
 # 3. Neither the name of Apple Inc. nor the names of its contributors
 #    may be used to endorse or promote products derived from this software
 #    without specific prior written permission.
-# 
+#
 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -55,21 +55,21 @@
 
 # dlist_match_multi
 # Returns all dependency entries for which the entry's value for 'key' exactly matches the given 'value'.
-#	dlist - the dependency list to search
-#	criteria - the key/value pairs to compare
+#   dlist - the dependency list to search
+#   criteria - the key/value pairs to compare
 
 proc dlist_match_multi {dlist criteria} {
 	set result {}
 	foreach ditem $dlist {
-	    set match 1
-	    foreach {key value} $criteria {
-		    if {[ditem_key $ditem $key] != $value} {
-			    set match 0
-			    break
-		    }
+		set match 1
+		foreach {key value} $criteria {
+			if {[ditem_key $ditem $key] != $value} {
+				set match 0
+				break
+			}
 		}
 		if {$match} {
-		    lappend result $ditem
+			lappend result $ditem
 		}
 	}
 	return $result
@@ -77,9 +77,9 @@
 
 # dlist_search
 # Returns all dependency entries whose 'key' contains 'value'.
-#	dlist - the dependency list to search
-#	key   - the key to compare: Requires, Provides, et al.
-#	value - the value to compare
+#   dlist - the dependency list to search
+#   key   - the key to compare: Requires, Provides, et al.
+#   value - the value to compare
 
 proc dlist_search {dlist key value} {
 	set result {}
@@ -93,22 +93,22 @@
 
 # dlist_delete
 # Deletes the specified ditem from the dlist.
-#	dlist - the list to search
-#	ditem - the item to delete
+#   dlist - the list to search
+#   ditem - the item to delete
 proc dlist_delete {dlist ditem} {
-    upvar $dlist uplist
-    set ix [lsearch -exact $uplist $ditem]
-    if {$ix >= 0} {
+	upvar $dlist uplist
+	set ix [lsearch -exact $uplist $ditem]
+	if {$ix >= 0} {
 		set uplist [lreplace $uplist $ix $ix]
-    }
+	}
 }
 
 # dlist_has_pending
 # Returns true if the dlist contains ditems
 # which will provide one of the specified names,
 # and thus are still "pending".
-#	dlist  - the dependency list to search
-#	tokens - the list of pending tokens to check for
+#   dlist  - the dependency list to search
+#   tokens - the list of pending tokens to check for
 
 proc dlist_has_pending {dlist tokens} {
 	foreach token $tokens {
@@ -153,9 +153,9 @@
 
 # ditem_key
 # Sets and returns the given key of the dependency item.
-#	ditem - the dependency item to operate on
-#	key   - the key to set
-#	value - optional value to set the key to
+#   ditem - the dependency item to operate on
+#   key   - the key to set
+#   value - optional value to set the key to
 
 proc ditem_key {ditem args} {
 	set nbargs [llength $args]
@@ -170,40 +170,40 @@
 
 # ditem_append
 # Appends the value to the given key of the dependency item.
-#	ditem - the dependency item to operate on
-#	key   - the key to append to
-#	value - the value to append to the key
+#   ditem - the dependency item to operate on
+#   key   - the key to append to
+#   value - the value to append to the key
 
 proc ditem_append {ditem key args} {
-	eval "return \[macports_dlist::ditem_append $ditem $key $args\]"
+	return [macports_dlist::ditem_append $ditem $key {*}$args]
 }
 
 # ditem_append_unique
 # Appends the value to the given key of the dependency item if
 # they were not there yet.
-#	ditem - the dependency item to operate on
-#	key   - the key to append to
-#	value - the value to append to the key
+#   ditem - the dependency item to operate on
+#   key   - the key to append to
+#   value - the value to append to the key
 
 proc ditem_append_unique {ditem key args} {
-	eval "return \[macports_dlist::ditem_append_unique $ditem $key $args\]"
+	return [macports_dlist::ditem_append_unique $ditem $key {*}$args]
 }
 
 # ditem_contains
 # Tests whether the ditem key contains the specified value;
 # or if the value is omitted, tests whether the key exists.
-#	ditem - the dependency item to test
-#	key   - the key to examine
-#	value - optional value to search for in the key
+#   ditem - the dependency item to test
+#   key   - the key to examine
+#   value - optional value to search for in the key
 proc ditem_contains {ditem key args} {
-	eval "return \[macports_dlist::ditem_contains $ditem $key $args\]"
+	return [macports_dlist::ditem_contains $ditem $key {*}$args]
 }
 
 # dlist_append_dependents
 # Returns the ditems which are dependents of the ditem specified.
-#	dlist - the dependency list to search
-#	ditem - the item which itself, and its dependents should be selected
-#	result - used for recursing, pass empty initially.
+#   dlist - the dependency list to search
+#   ditem - the item which itself, and its dependents should be selected
+#   result - used for recursing, pass empty initially.
 
 proc dlist_append_dependents {dlist ditem result} {
 	# Only append things if the root item is not in the list.
@@ -233,9 +233,9 @@
 # on unfulfilled tokens in the Uses key.  However these items
 # will eventually be returned if there are no alternatives.
 # Soft-dependencies can be implemented in this way.
-#	dlist      - the dependency list to select from
-#	statusdict - the status dictionary describing the history
-#	             of the dependency list.
+#   dlist      - the dependency list to select from
+#   statusdict - the status dictionary describing the history
+#                of the dependency list.
 
 proc dlist_get_next {dlist statusdict} {
 	upvar $statusdict upstatus
@@ -278,14 +278,14 @@
 # ditems are eligible to run (the selector returns {}) then
 # dlist_eval will exit with a list of the remaining ditems,
 # or {} if all ditems were evaluated.
-#	dlist    - the dependency list to evaluate
-#	testcond - test condition to populate the status dictionary
-#	           should return {-1, 0, 1}
-#	handler  - the handler to invoke on each ditem
-#	canfail  - If 1, then progress will not stop when a failure
-#	           occures; if 0, then dlist_eval will return on the
-#	           first failure
-#	selector - the selector for determining eligibility
+#   dlist    - the dependency list to evaluate
+#   testcond - test condition to populate the status dictionary
+#              should return {-1, 0, 1}
+#   handler  - the handler to invoke on each ditem
+#   canfail  - If 1, then progress will not stop when a failure
+#              occures; if 0, then dlist_eval will return on the
+#              first failure
+#   selector - the selector for determining eligibility
 
 proc dlist_eval {dlist testcond handler {canfail "0"} {selector "dlist_get_next"}} {
 	array set statusdict [list]
@@ -294,7 +294,7 @@
 	# can evaluate to true.
 	if {$testcond ne ""} {
 		foreach ditem $dlist {
-			if {[eval "expr \[\$testcond \$ditem\] == 1"]} {
+			if {[$testcond $ditem] == 1} {
 				foreach token [ditem_key $ditem provides] {
 					set statusdict($token) 1
 				}
@@ -308,14 +308,14 @@
 		set ditem [$selector $dlist statusdict]
 
 		if {$ditem == {}} {
-		    if {[llength $dlist] > 0} {
-		        ui_debug "dlist_eval: all entries in dependency list have unsatisfied dependencies; can't process"
-		    }
+			if {[llength $dlist] > 0} {
+				ui_debug "dlist_eval: all entries in dependency list have unsatisfied dependencies; can't process"
+			}
 			break
 		} else {
 			# $handler should return a unix status code, 0 for success.
 			# statusdict notation is 1 for success
-			if {[catch {eval "$handler $ditem"} result]} {
+			if {[catch {{*}$handler $ditem} result]} {
 				puts $result
 				return $dlist
 			}
@@ -388,7 +388,7 @@
 	variable $ditem
 	set x [lindex [array get $ditem $key] 1]
 	if {$x != {}} {
-		eval "lappend x $args"
+		lappend x {*}$args
 	} else {
 		set x $args
 	}
@@ -400,7 +400,7 @@
 	variable $ditem
 	set x [lindex [array get $ditem $key] 1]
 	if {$x != {}} {
-		eval "lappend x $args"
+		lappend x {*}$args
 		set x [lsort -unique $x]
 	} else {
 		set x $args
@@ -412,7 +412,7 @@
 proc ditem_contains {ditem key args} {
 	variable $ditem
 	if {[llength $args] == 0} {
-		eval "return \[info exists ${ditem}($key)\]"
+		return [info exists [set ditem]($key)]
 	} else {
 		set x [lindex [array get $ditem $key] 1]
 		if {[llength $x] > 0 && [lsearch -exact $x [lindex $args 0]] != -1} {
@@ -425,4 +425,3 @@
 
 # End of macports_dlist namespace
 }
-

Modified: branches/gsoc14-interactive/base/src/macports1.0/macports_test_autoconf.tcl.in
===================================================================
--- branches/gsoc14-interactive/base/src/macports1.0/macports_test_autoconf.tcl.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/macports1.0/macports_test_autoconf.tcl.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -33,4 +33,5 @@
 
 namespace eval macports::autoconf {
     variable prefix "@prefix@"
+    variable os_platform "@OS_PLATFORM@"
 }

Modified: branches/gsoc14-interactive/base/src/macports1.0/sysctl.c
===================================================================
--- branches/gsoc14-interactive/base/src/macports1.0/sysctl.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/macports1.0/sysctl.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -49,9 +49,13 @@
 /*
  * Read-only wrapper for sysctlbyname(3). Only works for values of type CTLTYPE_INT and CTLTYPE_QUAD.
  */
+#ifdef HAVE_SYSCTLBYNAME
 int SysctlCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
+#else
+int SysctlCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc UNUSED, Tcl_Obj *CONST objv[] UNUSED)
+#endif
 {
-#if HAVE_SYSCTLBYNAME
+#ifdef HAVE_SYSCTLBYNAME
     const char error_message[] = "sysctl failed: ";
     Tcl_Obj *tcl_result;
     int res;

Modified: branches/gsoc14-interactive/base/src/macports1.0/tests/macports.test
===================================================================
--- branches/gsoc14-interactive/base/src/macports1.0/tests/macports.test	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/macports1.0/tests/macports.test	2014-08-14 18:17:24 UTC (rev 123796)
@@ -2,11 +2,15 @@
 
 package require tcltest 2
 namespace import tcltest::*
-eval ::tcltest::configure $::argv
+::tcltest::configure {*}$::argv
 
 set pwd [file dirname [file normalize $argv0]]
 
 source ../macports_test_autoconf.tcl
+
+# constraint for darwin platform
+testConstraint darwin [expr {$macports::autoconf::os_platform eq "darwin"}]
+
 package require macports 1.0
 
 # clean leftovers from interrupted tests
@@ -420,8 +424,9 @@
 
 test _is_valid_developer_dir {
     Check valid dev dir unit test.
+} -constraints {
+    darwin
 } -body {
-    set macports::set_developer /Applications/Xcode.app/Contents/Developer
     if {[macports::_is_valid_developer_dir $macports::developer_dir] != 1} {
        return "FAIL: valid dir not detected"
     }
@@ -910,4 +915,39 @@
 } -result "Get archive sites conf values successful."
 
 
+set shellescapeTests [list \
+    "using \\backslashes" \
+    " spaces " \
+    "and	tabs" \
+    "quotes need to be \"supported\", too" \
+    "… and not only 'double-quotes'" \
+    "other meta chars such as \$dollar," \
+    "!bang, ;semicolon, :colon," \
+    "\$(subshells) and similar must be kept" \
+    ">redirects <& must be ignored as well as ampersands &"]
+test shellescaping {
+    Check whether shell escaping using macports::shellescape works correctly when passed to Pextlib's system extension.
+} -setup {
+    set outputfile "shellescapetestoutput.txt"
+    makeFile "" $outputfile
+
+} -body {
+    set first "yes"
+    foreach test $shellescapeTests {
+        if {$first eq "yes"} {
+            system "echo [macports::shellescape $test]  >$outputfile"
+            set first "no"
+        } else {
+            system "echo [macports::shellescape $test] >>$outputfile"
+        }
+    }
+
+    set fd [open $outputfile r]
+    set output [read -nonewline $fd]
+    close $fd
+    return $output
+} -cleanup {
+    removeFile $outputfile
+} -result [join $shellescapeTests "\n"]
+
 cleanupTests

Modified: branches/gsoc14-interactive/base/src/macports1.0/tests/test.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/macports1.0/tests/test.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/macports1.0/tests/test.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,5 +1,5 @@
 # Global vars
-set arguments ""
+set arguments {}
 set test_name ""
 set color_out ""
 set tcl ""
@@ -17,8 +17,8 @@
 proc print_help {arg} {
     if { $arg eq "tests" } {
         puts "The list of available tests is:"
-	cd tests
-	set test_suite [glob *.test]
+        cd tests
+        set test_suite [glob *.test]
         foreach test $test_suite {
             puts [puts -nonewline "  "]$test
         }
@@ -41,7 +41,7 @@
         set index [expr {[lsearch $argv $arg] + 1}]
         set level [lindex $argv $index]
         if { $level >= 0 && $level <= 3 } {
-            append arguments "-debug " $level
+            lappend arguments -debug $level
         } else {
             puts "Invalid debug level."
             exit 1
@@ -50,29 +50,29 @@
         set index [expr {[lsearch $argv $arg] + 1}]
         set test_name [lindex $argv $index]
         set no 0
-	cd tests
-	set test_suite [glob *.test]
+        cd tests
+        set test_suite [glob *.test]
         foreach test $test_suite {
-            if { $test_name != $test } {
-                set no [expr {$no + 1}]
+            if {$test_name ne $test} {
+                incr no
             }
         }
-        if { $no == [llength $test_suite] } {
+        if {$no == [llength $test_suite]} {
             print_help tests
             exit 1
         }
-    } elseif { $arg eq "-l" } {
+    } elseif {$arg eq "-l"} {
         print_help tests
         exit 0
-    } elseif { $arg eq "-nocolor" } {
+    } elseif {$arg eq "-nocolor"} {
         set color_out "no"
     }
 }
 
 
 # Run tests
-if { $test_name ne ""} {
-    set result [eval exec $tcl $test_name $arguments 2>@stderr]
+if {$test_name ne ""} {
+    set result [exec -ignorestderr $tcl $test_name {*}$arguments]
     puts $result
 
 } else {
@@ -80,31 +80,33 @@
     set test_suite [glob *.test]
 
     foreach test $test_suite {
-        set result [eval exec $tcl $test $arguments 2>@stderr]
-	set lastline [lindex [split $result "\n"] end]
+        set result [exec -ignorestderr $tcl $test {*}$arguments]
+        set lastline [lindex [split $result "\n"] end]
 
-	if {[lrange [split $lastline "\t"] 1 1] != "Total"} {
-	    set lastline [lindex [split $result "\n"] end-2]
-	    set errmsg [lindex [split $result "\n"] end]
-	}
+        if {[lrange [split $lastline "\t"] 1 1] != "Total"} {
+            set lastline [lindex [split $result "\n"] end-2]
+            set errmsg [lindex [split $result "\n"] end]
+        }
 
-	set splitresult [split $lastline "\t"]
+        set splitresult [split $lastline "\t"]
         set total [lindex $splitresult 2]
         set pass [lindex $splitresult 4]
         set skip [lindex $splitresult 6]
         set fail [lindex $splitresult 8]
 
-	# Format output
-	if {$total < 10} { set total "0${total}"}
-	if {$pass < 10} { set pass "0${pass}"}
-	if {$skip < 10} { set skip "0${skip}"}
-	if {$fail < 10} { set fail "0${fail}"}
+        # Format output
+        if {$total < 10} { set total "0${total}"}
+        if {$pass < 10} { set pass "0${pass}"}
+        if {$skip < 10} { set skip "0${skip}"}
+        if {$fail < 10} { set fail "0${fail}"}
 
         # Check for errors.
-        if { $fail != 0 } { set err "yes" }
+        if {$fail != 0} {
+            set err "yes"
+        }
 
         set out ""
-        if { ($fail != 0 || $skip != 0) && $color_out eq "" } {
+        if {($fail != 0 || $skip != 0) && $color_out eq ""} {
             # Color failed tests.
             append out "\x1b\[1;31mTotal:" $total " Passed:" $pass " Failed:" $fail " Skipped:" $skip "  \x1b\[0m" $test
         } else {
@@ -113,19 +115,21 @@
 
         # Print results and constrints for auto-skipped tests.
         puts $out
-        if { $skip != 0 } {
+        if {$skip != 0} {
             set out "    Constraint: "
             append out [string trim $errmsg "\t {}"]
             puts $out
         }
-	if { $fail != 0 } {
-	    set end [expr {[string first $test $result 0] - 1}]
-	    puts [string range $result 0 $end]
-	}
+        if {$fail != 0} {
+            set end [expr {[string first $test $result 0] - 1}]
+            puts [string range $result 0 $end]
+        }
     }
 }
 
 # Return 1 if errors were found.
-if {$err ne ""} { exit 1 }
+if {$err ne ""} {
+    exit 1
+}
 
 return 0

Modified: branches/gsoc14-interactive/base/src/package1.0/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -6,7 +6,7 @@
 INSTALLDIR=	${DESTDIR}${TCL_PACKAGE_PATH}/package1.0
 
 SRCS=	package.tcl portdmg.tcl portmdmg.tcl portmpkg.tcl portpkg.tcl \
-	portrpm.tcl portsrpm.tcl portdpkg.tcl portunarchive.tcl \
+	portunarchive.tcl \
 	portarchivefetch.tcl
 
 all:: pkgIndex.tcl
@@ -26,8 +26,8 @@
 	$(TCLSH) $(srcdir)/tests/test.tcl -nocolor
 
 install:: all
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} ${INSTALLDIR}
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "${INSTALLDIR}"
 	$(SILENT)set -x; for file in ${SRCS}; do \
-		$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 $(srcdir)/$$file ${INSTALLDIR}; \
+		$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 "$(srcdir)/$$file" "${INSTALLDIR}"; \
 	done
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 pkgIndex.tcl ${INSTALLDIR}
+	$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 pkgIndex.tcl "${INSTALLDIR}"

Modified: branches/gsoc14-interactive/base/src/package1.0/package.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/package.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/package.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -33,12 +33,9 @@
 # standard package load
 package provide mp_package 1.0
 
-package require portrpm 1.0
-package require portsrpm 1.0
 package require portpkg 1.0
 package require portmpkg 1.0
 package require portdmg 1.0
 package require portmdmg 1.0
-package require portdpkg 1.0
 package require portarchivefetch 1.0
 package require portunarchive 1.0

Modified: branches/gsoc14-interactive/base/src/package1.0/portarchivefetch.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/portarchivefetch.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/portarchivefetch.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -227,7 +227,7 @@
                 set file_url [portfetch::assemble_url $site $archive]
                 set effectiveURL ""
                 try {
-                    eval curl fetch --effective-url effectiveURL $fetch_options {$file_url} {"${incoming_path}/${archive}.TMP"}
+                    curl fetch --effective-url effectiveURL {*}$fetch_options $file_url "${incoming_path}/${archive}.TMP"
                     set fetched 1
                     break
                 } catch {{POSIX SIG SIGINT} eCode eMessage} {
@@ -253,7 +253,7 @@
                 set signature "${incoming_path}/${archive}.rmd160"
                 ui_msg "$UI_PREFIX [format [msgcat::mc "Attempting to fetch %s from %s"] ${archive}.rmd160 $site]"
                 # reusing $file_url from the last iteration of the loop above
-                if {[catch {eval curl fetch --effective-url effectiveURL $fetch_options {${file_url}.rmd160} {$signature}} result]} {
+                if {[catch {curl fetch --effective-url effectiveURL {*}$fetch_options ${file_url}.rmd160 $signature} result]} {
                     ui_debug "$::errorInfo"
                     return -code error "Failed to fetch signature for archive: $result"
                 }
@@ -320,6 +320,8 @@
     }
     if {[info exists all_archive_files] && [llength $all_archive_files] > 0} {
         ui_msg "$UI_PREFIX [format [msgcat::mc "Fetching archive for %s"] $subport]"
+    } elseif {[tbool ports_binary_only]} {
+        error "Binary-only mode requested with no usable archive sites configured"
     }
     portfetch::check_dns
 }

Deleted: branches/gsoc14-interactive/base/src/package1.0/portdpkg.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/portdpkg.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/portdpkg.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,206 +0,0 @@
-# et:ts=4
-# portdpkg.tcl
-# $Id$
-#
-# Copyright (c) 2005, 2007, 2009, 2011 The MacPorts Project
-# Copyright (c) 2004 Landon Fuller <landonf at macports.org>
-# Copyright (c) 2002 - 2003 Apple Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Inc. nor the names of its contributors
-#    may be used to endorse or promote products derived from this software
-#    without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-
-package provide portdpkg 1.0
-package require portutil 1.0
-
-set org.macports.dpkg [target_new org.macports.dpkg portdpkg::main]
-target_runtype ${org.macports.dpkg} always
-target_provides ${org.macports.dpkg} dpkg
-target_requires ${org.macports.dpkg} archivefetch unarchive destroot
-
-namespace eval portdpkg {
-}
-
-# Options
-options dpkg.asroot \
-        package.destpath
-
-# Set up defaults
-default dpkg.asroot yes
-
-set_ui_prefix
-
-proc portdpkg::main {args} {
-	global UI_PREFIX destpath os.arch os.platform supported_archs configure.build_arch
-
-	ui_msg "$UI_PREFIX [format [msgcat::mc "Creating dpkg for %s-%s"] [option subport] [option version]]"
-
-	# get deplist
-	set deps [make_dependency_list [option subport]]
-	set deps [lsort -unique $deps]
-	foreach dep $deps {
-		set name [lindex [split $dep /] 0]
-		set vers [lindex [split $dep /] 1]
-		# don't re-package ourself
-		if {$name != [option subport]} {
-			lappend dependencies "${name} (>= ${vers})"
-		}
-	}
-
-	if {[info exists dependencies]} {
-		ui_debug $dependencies
-	}
-
-	set controlpath [file join ${destpath} DEBIAN]
-	if {[file exists ${controlpath}]} {
-		if {![file isdirectory ${controlpath}]} {
-			return -code error [format [msgcat::mc "Can not create dpkg control directory. %s not a directory."] ${controlpath}]
-		} else {
-			ui_info [msgcat::mc "Removing stale dpkg control directory."]
-			delete "${controlpath}"
-		}
-	}
-	file mkdir ${controlpath}
-
-	set controlfd [open [file join ${controlpath} control] w+]
-
-	# Size, in kilobytes, of ${destpath}
-   	set pkg_installed-size [expr {[dirSize ${destpath}] / 1024}]
-
-	# Create debian dependency list
-	if {[info exists dependencies]} {
-		if {[llength ${dependencies}] != 0} {
-			set pkg_depends [join ${dependencies} ", "]
-		}
-	}
-
-	# Create dpkg version number
-	if {[option epoch] != 0} {
-		set pkg_version "[option epoch]:[option version]"
-	} else {
-		set pkg_version "[option version]"
-	}
-	if {[option revision] != 0} {
-		append pkg_version "-[option revision]"
-	}
-
-	# Set dpkg category to first (main) category
-	set pkg_category [lindex [option categories] 0]
-
-	# Format the long description. Add a homepage if possible.
-	if {[exists long_description]} {
-		set pkg_long_description " [option long_description]\n"
-	} elseif {[exists description]} {
-		set pkg_long_description " [option description]\n"
-	} else {
-		set pkg_long_description " [option subport]\n"
-	}
-
-	if {[exists homepage]} {
-		append pkg_long_description " .\n"
-		append pkg_long_description " [option homepage]\n"
-	}
-
-	# Discern correct architecture
-	# From http://www.debian.org/doc/debian-policy/ch-customized-programs.html#fr55:
-	# The following architectures and operating systems are currently recognised
-	# by dpkg-archictecture. The architecture, arch, is one of the following:
-	# alpha, arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sh, sheb,
-	# sparc and sparc64. The operating system, os, is one of: linux, gnu,
-	# freebsd and openbsd. Use of gnu in this string is reserved for the
-	# GNU/Hurd operating system.
-	switch -regex ${configure.build_arch} {
-		i[3-9]86 { set pkg_arch "i386" }
-		x86_64 { set pkg_arch "x86_64" }
-		default { set pkg_arch ${os.arch} }
-	}
-
-	# On systems other than Linux, the Architecture must contain
-	# the operating system name
-	if {${os.platform} != "linux"} {
-		set pkg_arch "${os.platform}-${pkg_arch}"
-	} elseif {${pkg_arch} == "x86_64"} {
-		set pkg_arch "amd64"
-	}
-
-	# An architecture-independent package
-	if {$supported_archs eq "noarch"} {
-		set pkg_arch "all"
-	}
-
-	puts $controlfd "Package: [option subport]"
-	puts $controlfd "Architecture: ${pkg_arch}"
-	puts $controlfd "Version: ${pkg_version}"
-	puts $controlfd "Section: ${pkg_category}"
-	puts $controlfd "Maintainer: [option maintainers]"
-	if {[info exists pkg_depends]} {
-		puts $controlfd "Depends: ${pkg_depends}"
-	}
-	puts $controlfd "Installed-Size: ${pkg_installed-size}"
-
-	puts $controlfd "Description: [option description]"
-	# pkg_long_description is pre-formatted. Do not add a newline
-	puts -nonewline $controlfd "$pkg_long_description"
-	close $controlfd
-
-	# Build debian package in package.destpath
-	system "dpkg-deb -b \"${destpath}\" \"[option package.destpath]\""
-
-	ui_info [msgcat::mc "Removing dpkg control directory."]
-	delete "${controlpath}"
-}
-
-proc portdpkg::make_dependency_list {portname} {
-	set result {}
-	if {[catch {set res [mport_lookup $portname]} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-		ui_error "port lookup failed: $error"
-		return 1
-	}
-	foreach {name array} $res {
-		array set portinfo $array
-
-		if {[info exists portinfo(depends_run)] || [info exists portinfo(depends_lib)]} {
-			# get the union of depends_run and depends_lib
-			# xxx: only examines the portfile component of the depspec
-			set depends {}
-			if {[info exists portinfo(depends_run)]} {
-				eval "lappend depends $portinfo(depends_run)"
-			}
-			if {[info exists portinfo(depends_lib)]} {
-				eval "lappend depends $portinfo(depends_lib)"
-			}
-
-			foreach depspec $depends {
-				set dep [lindex [split $depspec :] end]
-				eval "lappend result [make_dependency_list $dep]"
-			}
-		}
-				lappend result $portinfo(name)/$portinfo(version)
-				unset portinfo
-	}
-	return $result
-}

Modified: branches/gsoc14-interactive/base/src/package1.0/portmpkg.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/portmpkg.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/portmpkg.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -92,7 +92,7 @@
     foreach depspec $depends {
         set dep [_get_dep_port $depspec]
         if {$dep ne ""} {
-            eval "lappend result [make_dependency_list $dep $destination]"
+            lappend result {*}[make_dependency_list $dep $destination]
         }
     }
 

Modified: branches/gsoc14-interactive/base/src/package1.0/portpkg.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/portpkg.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/portpkg.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -134,7 +134,7 @@
         if ([file exists "${destpath}/$dir"]) {
             # certain toplevel directories really are symlinks. leaving them as directories make pax lose the symlinks. that's bad.
             file mkdir "${destpath}/private/${dir}"
-            eval file rename [glob ${destpath}/${dir}/*] "${destpath}/private/${dir}"
+            file rename {*}[glob ${destpath}/${dir}/*] "${destpath}/private/${dir}"
             delete "${destpath}/${dir}"
         }
     }

Deleted: branches/gsoc14-interactive/base/src/package1.0/portrpm.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/portrpm.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/portrpm.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,250 +0,0 @@
-# et:ts=4
-# portrpm.tcl
-# $Id$
-#
-# Copyright (c) 2005 - 2007, 2009 - 2011, 2013 The MacPorts Project
-# Copyright (c) 2002 - 2003 Apple Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Inc. nor the names of its contributors
-#    may be used to endorse or promote products derived from this software
-#    without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-
-package provide portrpm 1.0
-package require portutil 1.0
-
-set org.macports.rpm [target_new org.macports.rpm portrpm::rpm_main]
-target_runtype ${org.macports.rpm} always
-target_provides ${org.macports.rpm} rpm
-target_requires ${org.macports.rpm} archivefetch unarchive destroot
-
-namespace eval portrpm {
-}
-
-# Options
-options rpm.asroot \
-        package.destpath
-
-# Set up defaults
-default rpm.asroot yes
-
-default rpm.srcdir {${prefix}/src/macports}
-default rpm.tmpdir {${prefix}/var/tmp}
-
-set_ui_prefix
-
-proc portrpm::rpm_main {args} {
-    global subport version revision UI_PREFIX
-
-    ui_msg "$UI_PREFIX [format [msgcat::mc "Creating RPM package for %s-%s"] ${subport} ${version}]"
-
-    return [rpm_pkg $subport $version $revision]
-}
-
-proc portrpm::rpm_pkg {portname portversion portrevision} {
-    global UI_PREFIX rpm.asroot package.destpath portdbpath destpath workpath \
-           prefix categories maintainers description long_description \
-           homepage epoch portpath os.platform os.arch os.version os.major \
-           supported_archs configure.build_arch license
-
-    set rpmdestpath ""
-    if {![string equal ${package.destpath} ${workpath}] && ![string equal ${package.destpath} ""]} {
-        set rpm.asroot no
-        set pkgpath ${package.destpath}
-        file mkdir ${pkgpath}/BUILD \
-                   ${pkgpath}/RPMS \
-                   ${pkgpath}/SOURCES \
-                   ${pkgpath}/SPECS \
-                   ${pkgpath}/SRPMS
-        set rpmdestpath "--define '_topdir ${pkgpath}'"
-    }
-
-    set rpmbuildarch ""
-    if {$supported_archs eq "noarch"} {
-        set rpmbuildarch "--target noarch"
-    } elseif {[variant_exists universal] && [variant_isset universal]} {
-        set rpmbuildarch "--target fat"
-    } elseif {${configure.build_arch} != ""} {
-        set rpmbuildarch "--target ${configure.build_arch}"
-    }
-
-    foreach dir [list "${prefix}/src/macports/RPMS" "${prefix}/src/apple/RPMS" "/usr/src/apple/RPMS" "/macports/rpms/RPMS"] {
-        foreach arch [list ${configure.build_arch} ${os.arch} "fat" "noarch"] {
-            set rpmpath "$dir/${arch}/${portname}-${portversion}-${portrevision}.${arch}.rpm"
-	    if {[file readable $rpmpath] && ([file mtime ${rpmpath}] >= [file mtime ${portpath}/Portfile])} {
-                ui_debug "$rpmpath"
-                ui_msg "$UI_PREFIX [format [msgcat::mc "RPM package for %s version %s is up-to-date"] ${portname} ${portversion}]"
-                return 0
-            }
-        }
-    }
-
-    set specpath ${workpath}/${portname}.spec
-    # long_description, description, or homepage may not exist
-    foreach variable {long_description description homepage categories maintainers} {
-        if {![info exists $variable]} {
-            set pkg_$variable ""
-        } else {
-            set pkg_$variable [set $variable]
-        }
-    }
-    set category   [lindex [split $categories " "] 0]
-    set maintainer $maintainers
-
-    set dependencies {}
-    # get deplist
-    set deps [make_dependency_list $portname]
-    set deps [lsort -unique $deps]
-    foreach dep $deps {
-        set name [lindex [split $dep /] 0]
-        set vers [lindex [split $dep /] 1]
-        # don't re-package ourself
-        if {$name != $portname} {
-            lappend dependencies "${name} >= ${vers}"
-        }
-    }
-
-	# depend on system (virtual packages for apple stuff)
-	lappend dependencies "org.macports.${os.platform}${os.major}"
-
-    set listpath ${workpath}/${portname}.filelist
-    system "rm -f '${workpath}/${portname}.filelist' && touch '${workpath}/${portname}.filelist'"
-    #system "cd '${destpath}' && find . -type d | grep -v -E '^.$' | sed -e 's/\"/\\\"/g' -e 's/^./%dir \"/' -e 's/$/\"/' > '${workpath}/${portname}.filelist'"
-    system "cd '${destpath}' && find . ! -type d | grep -v /etc/ | sed -e 's/\"/\\\"/g' -e 's/^./\"/' -e 's/$/\"/' >> '${workpath}/${portname}.filelist'"
-    system "cd '${destpath}' && find . ! -type d | grep /etc/ | sed -e 's/\"/\\\"/g' -e 's/^./%config \"/' -e 's/$/\"/' >> '${workpath}/${portname}.filelist'"
-    write_spec ${specpath} ${destpath} ${listpath} $portname $portversion $portrevision $pkg_description $pkg_long_description $pkg_homepage $category $license $maintainer $dependencies $epoch
-    system "MP_USERECEIPTS='${portdbpath}/receipts' rpmbuild -bb -v ${rpmbuildarch} ${rpmdestpath} ${specpath}"
-
-    return 0
-}
-
-proc portrpm::make_dependency_list {portname} {
-    set result {}
-    if {[catch {set res [mport_lookup $portname]} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-        ui_error "port lookup failed: $error"
-        return 1
-    }
-    foreach {name array} $res {
-        array set portinfo $array
-
-        if {[info exists portinfo(depends_run)] || [info exists portinfo(depends_lib)]} {
-            # get the union of depends_run and depends_lib
-            # xxx: only examines the portfile component of the depspec
-            set depends {}
-            if {[info exists portinfo(depends_run)]} { eval "lappend depends $portinfo(depends_run)" }
-            if {[info exists portinfo(depends_lib)]} { eval "lappend depends $portinfo(depends_lib)" }
-
-            foreach depspec $depends {
-                set dep [lindex [split $depspec :] end]
-
-                # xxx: nasty hack
-                if {$dep != "XFree86"} {
-                    eval "lappend result [make_dependency_list $dep]"
-                }
-            }
-        }
-        lappend result $portinfo(name)/$portinfo(version)
-        unset portinfo
-    }
-    ui_debug "dependencies for ${portname}: $result"
-    return $result
-}
-
-proc portrpm::word_wrap {orig Length} {
-    set pos 0
-    set line ""
-    set text ""
-
-    set words [split $orig]
-    set numWords [llength $words]
-    for {set cnt 0} {$cnt < $numWords} {incr cnt} {
-	set w [lindex $words $cnt]
-	set wLen [string length $w]
-
-	if {($pos+$wLen < $Length)} {
-	    # append word to current line
-	    if {$pos} {append line " "; incr pos}
-	    append line $w
-	    incr pos $wLen
-	} else {
-	    # line full => write buffer and  begin a new line
-	    if {[string length $text]} {append text "\n"}
-	    append text $line
-	    set line $w
-	    set pos $wLen
-	}
-    }
-
-    if {[string length $text]} {append text "\n"}
-    if {[string length $line]} {append text $line}
-    return $text
-}
-
-proc portrpm::write_spec {specfile destroot filelist portname portversion portrevision description long_description homepage category license maintainer dependencies epoch} {
-    set specfd [open ${specfile} w+]
-    set origportname ${portname}
-    regsub -all -- "\-" $portversion "_" portversion
-    regsub -all -- "\-" $portname "_" portname
-    puts $specfd "\#Spec file generated by MacPorts
-%define distribution MacPorts
-%define vendor MacPorts
-%define packager ${maintainer}
-
-%define buildroot ${destroot}
-# Avoid cleaning BuildRoot in the pre-install:
-%define __spec_install_pre     %{___build_pre}
-%define __spec_clean_body      %{nil}
-
-Summary: ${description}
-Name: ${portname}
-Version: ${portversion}
-Release: ${portrevision}
-Group: ${category}
-License: ${license}
-URL: ${homepage}
-BuildRoot: ${destroot}
-AutoReq: no"
-    if {$epoch != 0} {
-	    puts $specfd "Epoch: ${epoch}"
-    }
-    if {[llength ${dependencies}] != 0} {
-	foreach require ${dependencies} {
-	    puts $specfd "Requires: [regsub -all -- "\-" $require "_"]"
-	}
-    }
-    set wrap_description [word_wrap ${long_description} 72]
-    puts $specfd "
-%description
-$wrap_description
-
-%prep
-%build
-%install
-%clean
-
-%files -f ${filelist}"
-    close $specfd
-}

Deleted: branches/gsoc14-interactive/base/src/package1.0/portsrpm.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/portsrpm.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/portsrpm.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,293 +0,0 @@
-# et:ts=4
-# portsrpm.tcl
-# $Id$
-#
-# Copyright (c) 2007, 2009, 2011, 2013 The MacPorts Project
-# Copyright (c) 2002 - 2003 Apple Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Inc. nor the names of its contributors
-#    may be used to endorse or promote products derived from this software
-#    without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-
-package provide portsrpm 1.0
-package require portutil 1.0
-package require portfetch 1.0
-
-set org.macports.srpm [target_new org.macports.srpm portsrpm::srpm_main]
-target_runtype ${org.macports.srpm} always
-target_provides ${org.macports.srpm} srpm
-target_requires ${org.macports.srpm} checksum
-
-namespace eval portsrpm {
-}
-
-options package.destpath
-
-# Set up defaults
-default srpm.asroot yes
-
-set_ui_prefix
-
-proc portsrpm::srpm_main {args} {
-    global subport version revision UI_PREFIX
-
-    ui_msg "$UI_PREFIX [format [msgcat::mc "Creating SRPM package for %s-%s"] ${subport} ${version}]"
-
-    return [srpm_pkg $subport $version $revision]
-}
-
-proc portsrpm::srpm_pkg {portname portversion portrevision} {
-    global UI_PREFIX package.destpath portdbpath destpath workpath distpath \
-           prefix categories maintainers description long_description \
-           homepage epoch portpath distfiles os.platform os.arch os.version \
-           os.major
-
-    set fetch_urls {}
-    portfetch::checkfiles fetch_urls
-
-    set rpmdestpath ""
-    if {![string equal ${package.destpath} ${workpath}] && ![string equal ${package.destpath} ""]} {
-        set pkgpath ${package.destpath}
-        file mkdir ${pkgpath}/BUILD \
-                   ${pkgpath}/RPMS \
-                   ${pkgpath}/SOURCES \
-                   ${pkgpath}/SPECS \
-                   ${pkgpath}/SRPMS
-        set rpmdestpath "--define '_topdir ${pkgpath}'"
-    }
-
-    foreach dir [list "${prefix}/src/macports/SRPMS" "${prefix}/src/apple/SRPMS" "/usr/src/apple/SRPMS" "/macports/rpms/SRPMS"] {
-        foreach arch {"src" "nosrc"} {
-            set rpmpath "$dir/${portname}-${portversion}-${portrevision}.${arch}.rpm"
-	    if {[file readable $rpmpath] && ([file mtime ${rpmpath}] >= [file mtime ${portpath}/Portfile])} {
-                ui_debug "$rpmpath"
-                ui_msg "$UI_PREFIX [format [msgcat::mc "SRPM package for %s version %s is up-to-date"] ${portname} ${portversion}]"
-                return 0
-            }
-        }
-    }
-
-    set specpath ${workpath}/${portname}-port.spec
-    # long_description, description, or homepage may not exist
-    foreach variable {long_description description homepage categories maintainers} {
-        if {![info exists $variable]} {
-            set pkg_$variable ""
-        } else {
-            set pkg_$variable [set $variable]
-        }
-    }
-    set category   [lindex [split $categories " "] 0]
-    set license    "Unknown"
-    set maintainer $maintainers
-
-    set dependencies {}
-    # get deplist
-    set deps [make_dependency_list $portname]
-    set deps [lsort -unique $deps]
-    foreach dep $deps {
-        set name [lindex [split $dep /] 0]
-        set vers [lindex [split $dep /] 1]
-        # don't re-package ourself
-        if {$name != $portname} {
-            lappend dependencies "${name} >= ${vers}"
-        }
-    }
-
-    # true = .src.rpm (with distfiles), false = .nosrc.rpm (without distfiles)
-    set src false
-
-    #set sourcespath ${prefix}/src/macports/SOURCES
-    set sourcespath "`rpm --eval %{_sourcedir}`"
-
-    system "cp -p ${portpath}/Portfile ${sourcespath}/$portname-Portfile"
-    if {[info exists ${portpath}/files]} {
-        system "cd ${portpath} && zip -r -q ${sourcespath}/$portname-files.zip files -x \\*.DS_Store -x files/.svn\\*"
-        set zip $portname-files.zip
-    } else {
-        set zip ""
-    }
-    foreach dist $distfiles {
-        system "cp -p ${distpath}/${dist} ${sourcespath}/${dist}"
-    }
-
-    write_port_spec ${specpath} $portname $portversion $portrevision $pkg_description $pkg_long_description $pkg_homepage $category $license $maintainer $distfiles $fetch_urls $dependencies $epoch $src $zip
-    system "rpmbuild -bs -v --nodeps ${rpmdestpath} ${specpath}"
-
-    return 0
-}
-
-proc portsrpm::make_dependency_list {portname} {
-    set result {}
-    if {[catch {set res [mport_lookup $portname]} error]} {
-		global errorInfo
-		ui_debug "$errorInfo"
-        ui_error "port lookup failed: $error"
-        return 1
-    }
-    foreach {name array} $res {
-        array set portinfo $array
-
-        if {[info exists portinfo(depends_fetch)] || [info exists portinfo(depends_extract)]
-            || [info exists portinfo(depends_build)] || [info exists portinfo(depends_lib)]} {
-            # get the union of depends_fetch, depends_extract, depends_build and depends_lib
-            # xxx: only examines the portfile component of the depspec
-            set depends {}
-            if {[info exists portinfo(depends_fetch)]} { eval "lappend depends $portinfo(depends_fetch)" }
-            if {[info exists portinfo(depends_extract)]} { eval "lappend depends $portinfo(depends_extract)" }
-            if {[info exists portinfo(depends_build)]} { eval "lappend depends $portinfo(depends_build)" }
-            if {[info exists portinfo(depends_lib)]} { eval "lappend depends $portinfo(depends_lib)" }
-
-            foreach depspec $depends {
-                set dep [lindex [split $depspec :] end]
-
-                # xxx: nasty hack
-                if {$dep != "XFree86"} {
-                    eval "lappend result [make_dependency_list $dep]"
-                }
-            }
-        }
-        lappend result $portinfo(name)/$portinfo(version)
-        unset portinfo
-    }
-    ui_debug "dependencies for ${portname}: $result"
-    return $result
-}
-
-proc portsrpm::word_wrap {orig Length} {
-    set pos 0
-    set line ""
-    set text ""
-
-    set words [split $orig]
-    set numWords [llength $words]
-    for {set cnt 0} {$cnt < $numWords} {incr cnt} {
-	set w [lindex $words $cnt]
-	set wLen [string length $w]
-
-	if {($pos+$wLen < $Length)} {
-	    # append word to current line
-	    if {$pos} {append line " "; incr pos}
-	    append line $w
-	    incr pos $wLen
-	} else {
-	    # line full => write buffer and  begin a new line
-	    if {[string length $text]} {append text "\n"}
-	    append text $line
-	    set line $w
-	    set pos $wLen
-	}
-    }
-
-    if {[string length $text]} {append text "\n"}
-    if {[string length $line]} {append text $line}
-    return $text
-}
-
-proc portsrpm::write_port_spec {specfile portname portversion portrevision description long_description homepage category license maintainer distfiles fetch_urls dependencies epoch src zip} {
-    set specfd [open ${specfile} w+]
-    set origportname ${portname}
-    regsub -all -- "\-" $portversion "_" portversion
-    regsub -all -- "\-" $portname "_" portname
-    puts $specfd "\#Spec file generated by MacPorts
-%define distribution MacPorts
-%define vendor MacPorts
-%define packager ${maintainer}
-
-Summary: ${description}
-Name: ${portname}
-Version: ${portversion}
-Release: ${portrevision}
-Group: ${category}
-License: ${license}
-URL: ${homepage}
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-Source0: ${portname}-Portfile"
-    if {$zip ne ""} {
-        puts $specfd "Source1: $zip"
-    }
-    if {$epoch != 0} {
-	    puts $specfd "Epoch: ${epoch}"
-    }
-    set first 2
-    set count $first
-    puts $specfd "#distfiles"
-    foreach file ${distfiles} {
-
-        puts -nonewline $specfd "Source${count}: "
-        if {![info exists $fetch_urls]} {
-        foreach {url_var distfile}  ${fetch_urls} {
-            if {$distfile eq $file} {
-                 global portfetch::$url_var master_sites
-                 set site [lindex [set $url_var] 0]
-                 set file [portfetch::assemble_url $site $distfile]
-                 break
-            }
-        }
-        }
-        puts $specfd $file
-        if (!$src) {
-            puts $specfd "NoSource: $count"
-        }
-        incr count
-    }
-    puts $specfd "AutoReq: no"
-    if {[llength ${dependencies}] != 0} {
-	foreach require ${dependencies} {
-	    puts $specfd "BuildRequires: [regsub -all -- "\-" $require "_"]"
-	}
-    }
-    set wrap_description [word_wrap ${long_description} 72]
-    if {$zip ne ""} {
-        set and "-a 1"
-    } else {
-        set and ""
-    }
-    puts $specfd "
-%description
-$wrap_description
-
-%prep
-%setup -c $and -T
-cp -p %{SOURCE0} Portfile
-#prepare work area
-port fetch
-port checksum
-port extract
-port patch
-
-%build
-port configure
-port build
-
-%install
-rm -rf \$RPM_BUILD_ROOT
-mkdir -p \$RPM_BUILD_ROOT
-port destroot
-port rpm
-
-%clean
-port clean"
-    close $specfd
-}

Modified: branches/gsoc14-interactive/base/src/package1.0/portunarchive.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/portunarchive.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/portunarchive.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -173,7 +173,13 @@
                 if {[regexp {z2?$} ${unarchive.type}]} {
                     set unarchive.args {-}
                     if {[regexp {bz2?$} ${unarchive.type}]} {
-                        set gzip "bzip2"
+                        if {![catch {binaryInPath lbzip2}]} {
+                            set gzip "lbzip2"
+                        } elseif {![catch {binaryInPath pbzip2}]} {
+                            set gzip "pbzip2"
+                        } else {
+                            set gzip "bzip2"
+                        }
                     } elseif {[regexp {lz$} ${unarchive.type}]} {
                         set gzip "lzma"
                     } elseif {[regexp {xz$} ${unarchive.type}]} {

Modified: branches/gsoc14-interactive/base/src/package1.0/tests/Portfile
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/tests/Portfile	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/tests/Portfile	2014-08-14 18:17:24 UTC (rev 123796)
@@ -34,7 +34,7 @@
                         --mandir=${prefix}/share/man
 
 post-destroot {
-    eval xinstall -m 644 [glob ${worksrcpath}/*.1] ${destroot}${prefix}/share/man/man1/
+    xinstall -m 644 {*}[glob ${worksrcpath}/*.1] ${destroot}${prefix}/share/man/man1/
 }
 
 test.run		yes

Modified: branches/gsoc14-interactive/base/src/package1.0/tests/library.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/tests/library.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/tests/library.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -104,3 +104,5 @@
     # We don't need to handle portinterp_deferred_options, they're
     # automatically handled correctly.
 }
+
+testConstraint darwin [expr {$tcl_platform(os) eq "Darwin"}]

Modified: branches/gsoc14-interactive/base/src/package1.0/tests/portdmg.test
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/tests/portdmg.test	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/tests/portdmg.test	2014-08-14 18:17:24 UTC (rev 123796)
@@ -23,6 +23,8 @@
 
 test package_dmg {
     Package dmg unit test.
+} -constraints {
+    darwin
 } -setup {
     set os.major 10
     set os.arch i386

Deleted: branches/gsoc14-interactive/base/src/package1.0/tests/portdpkg.test
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/tests/portdpkg.test	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/tests/portdpkg.test	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,73 +0,0 @@
-# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
-
-package require tcltest 2
-namespace import tcltest::*
-
-set pwd [file dirname [file normalize $argv0]]
-
-source ../package_test_autoconf.tcl
-package require macports 1.0
-
-array set ui_options {}
-#set ui_options(ports_debug)   yes
-#set ui_options(ports_verbose) yes
-mportinit ui_options
-
-package require portdpkg 1.0
-source ./library.tcl
-macports_worker_init
-
-
-test main {
-    Port dpkg main unit test.
-} -constraints { ![catch {exec which dpkg-deb}]
-
-} -setup {
-    set os.platform darwin
-    set os.major 10
-    set os.arch i386
-    set epoch 1
-
-    set destpath $pwd/pkg
-    set configure.build_arch build_arch
-    set package.destpath $pwd/pkg
-
-    set subport fondu
-    set version 060102
-    set revision 1
-    set maintainers {test at macports.org}
-    set description test.description
-    set categories test
-    set supported_archs noarch
-
-
-} -body {
-    if {[catch {portdpkg::main}] != 0} {
-        return "FAIL: cannot create dmg"
-    }
-    if {![file exists $pwd/pkg/fondu_060102-1_all.deb]} {
-        return "FAIL: missing .deb file"
-    }
-    return "Package deb successful."
-
-} -cleanup {
-    file delete -force $pwd/pkg
-
-} -result "Package deb successful."
-
-
-test make_dependency_list {
-    Make dependency list unit test.
-} -setup {
-    set subport fondu
-    set version 060102
-    set revision 1
-} -body {
-    if {[portdpkg::make_dependency_list $subport] != "fondu/060102"} {
-        return "FAIL: could not make dependency list"
-    }
-    return "Make dependency list successful."
-} -result "Make dependency list successful."
-
-
-cleanupTests

Modified: branches/gsoc14-interactive/base/src/package1.0/tests/portmdmg.test
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/tests/portmdmg.test	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/tests/portmdmg.test	2014-08-14 18:17:24 UTC (rev 123796)
@@ -26,6 +26,8 @@
 
 test package_mdmg {
     Package mdmg unit test.
+} -constraints {
+    darwin
 } -setup {
     set os.major 10
     set os.arch i386

Modified: branches/gsoc14-interactive/base/src/package1.0/tests/portmpkg.test
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/tests/portmpkg.test	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/tests/portmpkg.test	2014-08-14 18:17:24 UTC (rev 123796)
@@ -21,6 +21,8 @@
 
 test mpkg_main {
     Port mpkg main unit test.
+} -constraints {
+    darwin
 } -setup {
     global os.platform os.major os.arch epoch destpath package.destpath configure.build_arch
     global subport version revision package.flat maintainers description categories

Modified: branches/gsoc14-interactive/base/src/package1.0/tests/portpkg.test
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/tests/portpkg.test	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/tests/portpkg.test	2014-08-14 18:17:24 UTC (rev 123796)
@@ -22,7 +22,7 @@
 test pkg_main {
     Port pkg main unit test.
 } -constraints {
-    root
+    root darwin
 } -setup {
     global os.platform os.major os.arch epoch destpath package.destpath configure.build_arch
     global subport version revision package.flat maintainers description categories

Modified: branches/gsoc14-interactive/base/src/package1.0/tests/test.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/package1.0/tests/test.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/package1.0/tests/test.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,5 +1,5 @@
 # Global vars
-set arguments ""
+set arguments {}
 set test_name ""
 set color_out ""
 set tcl ""
@@ -17,8 +17,8 @@
 proc print_help {arg} {
     if { $arg eq "tests" } {
         puts "The list of available tests is:"
-	cd tests
-	set test_suite [glob *.test]
+        cd tests
+        set test_suite [glob *.test]
         foreach test $test_suite {
             puts [puts -nonewline "  "]$test
         }
@@ -34,82 +34,91 @@
 
 # Process args
 foreach arg $argv {
-    if { $arg eq "-h" || $arg eq "-help" } {
+    if {$arg eq "-h" || $arg eq "-help"} {
         print_help ""
         exit 0
-    } elseif { $arg eq "-debug" } {
+    } elseif {$arg eq "-debug"} {
         set index [expr {[lsearch $argv $arg] + 1}]
         set level [lindex $argv $index]
-        if { $level >= 0 && $level <= 3 } {
-            append arguments "-debug " $level
+        if {$level >= 0 && $level <= 3} {
+            lappend arguments "-debug" $level
         } else {
             puts "Invalid debug level."
             exit 1
         }
-    } elseif { $arg eq "-t" } {
+    } elseif {$arg eq "-t"} {
         set index [expr {[lsearch $argv $arg] + 1}]
         set test_name [lindex $argv $index]
         set no 0
-	cd tests
-	set test_suite [glob *.test]
+        cd tests
+        set test_suite [glob *.test]
         foreach test $test_suite {
-            if { $test_name != $test } {
+            if {$test_name ne $test} {
                 set no [expr {$no + 1}]
             }
         }
-        if { $no == [llength $test_suite] } {
+        if {$no == [llength $test_suite]} {
             print_help tests
             exit 1
         }
-    } elseif { $arg eq "-l" } {
+    } elseif {$arg eq "-l"} {
         print_help tests
         exit 0
-    } elseif { $arg eq "-nocolor" } {
+    } elseif {$arg eq "-nocolor"} {
         set color_out "no"
     }
 }
 
 
 # Run tests
-if { $test_name ne ""} {
-    set result [eval exec $tcl $test_name $arguments 2>@stderr]
+if {$test_name ne ""} {
+    set result [exec -ignorestderr $tcl $test_name {*}$arguments]
     puts $result
-
 } else {
     cd tests
     set test_suite [glob *.test]
 
     foreach test $test_suite {
-        set result [eval exec $tcl $test $arguments 2>@stderr]
-		set lastline [lindex [split $result "\n"] end]
+        set result [exec -ignorestderr $tcl $test {*}$arguments]
+        set lastline [lindex [split $result "\n"] end]
 
-	if {[lrange [split $lastline "\t"] 1 1] != "Total"} {
-		if {[lrange [split $lastline "\t"] 1 1] == ""} {
-			set lastline [lindex [split $result "\n"] 0]
-	    	set errmsg [lindex [split $result "\n"] 2]
-		} else {
-	    	set lastline [lindex [split $result "\n"] end-2]
-	    	set errmsg [lindex [split $result "\n"] end]
-		}
-	}
+        if {[lrange [split $lastline "\t"] 1 1] ne "Total"} {
+            if {[lrange [split $lastline "\t"] 1 1] eq ""} {
+                set lastline [lindex [split $result "\n"] 0]
+                set errmsg [lindex [split $result "\n"] 2]
+            } else {
+                set lastline [lindex [split $result "\n"] end-2]
+                set errmsg [lindex [split $result "\n"] end]
+            }
+        }
 
-	set splitresult [split $lastline "\t"]
+        set splitresult [split $lastline "\t"]
         set total [lindex $splitresult 2]
         set pass [lindex $splitresult 4]
         set skip [lindex $splitresult 6]
         set fail [lindex $splitresult 8]
 
-	# Format output
-	if {$total < 10} { set total "0${total}"}
-	if {$pass < 10} { set pass "0${pass}"}
-	if {$skip < 10} { set skip "0${skip}"}
-	if {$fail < 10} { set fail "0${fail}"}
+        # Format output
+        if {$total < 10} {
+            set total "0${total}"
+        }
+        if {$pass < 10} {
+            set pass "0${pass}"
+        }
+        if {$skip < 10} {
+            set skip "0${skip}"
+        }
+        if {$fail < 10} {
+            set fail "0${fail}"
+        }
 
         # Check for errors.
-        if { $fail != 0 } { set err "yes" }
+        if {$fail != 0} {
+            set err "yes"
+        }
 
         set out ""
-        if { ($fail != 0 || $skip != 0) && $color_out eq "" } {
+        if {($fail != 0 || $skip != 0) && $color_out eq ""} {
             # Color failed tests.
             append out "\x1b\[1;31mTotal:" $total " Passed:" $pass " Failed:" $fail " Skipped:" $skip "  \x1b\[0m" $test
         } else {
@@ -118,19 +127,21 @@
 
         # Print results and constrints for auto-skipped tests.
         puts $out
-        if { $skip != 0 } {
+        if {$skip != 0} {
             set out "    Constraint: "
             append out [string trim $errmsg "\t {}"]
             puts $out
         }
-	if { $fail != 0 } {
-	    set end [expr {[string first $test $result 0] - 1}]
-	    puts [string range $result 0 $end]
-	}
+        if {$fail != 0} {
+            set end [expr {[string first $test $result 0] - 1}]
+            puts [string range $result 0 $end]
+        }
     }
 }
 
 # Return 1 if errors were found.
-if {$err ne ""} { exit 1 }
+if {$err ne ""} {
+    exit 1
+}
 
 return 0


Property changes on: branches/gsoc14-interactive/base/src/pextlib1.0/Makefile.in
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/gsoc08-privileges/base/src/pextlib1.0/Makefile:37343-46937
/branches/gsoc09-logging/base/src/pextlib1.0/Makefile:51231-60371
/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/Makefile:78828-88375
/branches/gsoc13-tests/src/pextlib1.0/Makefile.in:106692-111324
/branches/universal-sanity/base/src/pextlib1.0/Makefile:51872-52323
/branches/variant-descs-14482/base/src/pextlib1.0/Makefile:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/users/perry/base-bugs_and_notes/src/pextlib1.0/Makefile:45682-46060
/users/perry/base-select/src/pextlib1.0/Makefile:44044-44692
   + /branches/gsoc08-privileges/base/src/pextlib1.0/Makefile:37343-46937
/branches/gsoc08-privileges/base/src/pextlib1.0/Makefile.in:37343-46937
/branches/gsoc09-logging/base/src/pextlib1.0/Makefile:51231-60371
/branches/gsoc09-logging/base/src/pextlib1.0/Makefile.in:51231-60371
/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/Makefile:78828-88375
/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/Makefile.in:78828-88375
/branches/gsoc13-tests/src/pextlib1.0/Makefile.in:106692-111324
/branches/universal-sanity/base/src/pextlib1.0/Makefile:51872-52323
/branches/universal-sanity/base/src/pextlib1.0/Makefile.in:51872-52323
/branches/variant-descs-14482/base/src/pextlib1.0/Makefile:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/branches/variant-descs-14482/base/src/pextlib1.0/Makefile.in:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/trunk/base/src/pextlib1.0/Makefile.in:49341-104698,119514-123795
/users/perry/base-bugs_and_notes/src/pextlib1.0/Makefile:45682-46060
/users/perry/base-bugs_and_notes/src/pextlib1.0/Makefile.in:45682-46060
/users/perry/base-select/src/pextlib1.0/Makefile:44044-44692
/users/perry/base-select/src/pextlib1.0/Makefile.in:44044-44692

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/Pextlib.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/Pextlib.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/Pextlib.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -33,10 +33,17 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#if HAVE_CONFIG_H
+#ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
 
+/* required for strdup(3) on Linux and OS X */
+#define _XOPEN_SOURCE 600L
+/* required for clearenv(3)/setenv(3)/unsetenv(3) on Linux */
+#define _BSD_SOURCE
+/* required for clearenv(3)/setenv(3)/unsetenv(3) on OS X */
+#define _DARWIN_C_SOURCE
+
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
@@ -94,7 +101,7 @@
 extern char **environ;
 #endif
 
-#if !HAVE_SETMODE
+#ifndef HAVE_SETMODE
 #include "setmode.h"
 #endif
 
@@ -361,13 +368,6 @@
 int UnsetEnvCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
     char *name;
-    char **envp;
-    char *equals;
-    size_t len;
-    Tcl_Obj *tclList;
-    int listLength;
-    Tcl_Obj **listArray;
-    int loopCounter;
 
     if (objc != 2) {
         Tcl_WrongNumArgs(interp, 1, objv, "name");
@@ -386,18 +386,21 @@
            clearenv() but that is not yet standardized, instead use Tcl's
            list capability to easily build an array of strings for each
            env name, then loop through that list to unsetenv() each one */
-        tclList = Tcl_NewListObj( 0, NULL );
+        Tcl_Obj *tclList = Tcl_NewListObj( 0, NULL );
         Tcl_IncrRefCount( tclList );
         /* unset all current environment variables */
-        for (envp = environ; *envp != NULL; envp++) {
-            equals = strchr(*envp, '=');
+        for (char **envp = environ; *envp != NULL; envp++) {
+            char *equals = strchr(*envp, '=');
             if (equals != NULL) {
-                len = (size_t)(equals - *envp);
+				size_t len = (size_t)(equals - *envp);
                 Tcl_ListObjAppendElement(interp, tclList, Tcl_NewStringObj(*envp, len));
             }
         }
+
+		int listLength;
+		Tcl_Obj **listArray;
         Tcl_ListObjGetElements(interp, tclList, &listLength, &listArray);
-        for (loopCounter = 0; loopCounter < listLength; loopCounter++) {
+        for (int loopCounter = 0; loopCounter < listLength; loopCounter++) {
             unsetenv(Tcl_GetString(listArray[loopCounter]));
         }
         Tcl_DecrRefCount( tclList );
@@ -617,10 +620,6 @@
 	Tcl_CreateObjCommand(interp, "xinstall", InstallCmd, NULL, NULL);
 	Tcl_CreateObjCommand(interp, "fs-traverse", FsTraverseCmd, NULL, NULL);
 	Tcl_CreateObjCommand(interp, "filemap", FilemapCmd, NULL, NULL);
-#if 1
-	/* the name "rpm-vercomp" is deprecated, use "vercmp" instead */
-	Tcl_CreateObjCommand(interp, "rpm-vercomp", VercompCmd, NULL, NULL);
-#endif
 	Tcl_CreateObjCommand(interp, "vercmp", VercompCmd, NULL, NULL);
 	Tcl_CreateObjCommand(interp, "rmd160", RMD160Cmd, NULL, NULL);
 	Tcl_CreateObjCommand(interp, "sha256", SHA256Cmd, NULL, NULL);

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/curl.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/curl.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/curl.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -62,7 +62,6 @@
 /* ========================================================================= **
  * Definitions
  * ========================================================================= */
-#pragma mark Definitions
 
 /* ------------------------------------------------------------------------- **
  * Global cURL handles
@@ -101,8 +100,6 @@
 /* ========================================================================= **
  * Entry points
  * ========================================================================= */
-#pragma mark -
-#pragma mark Entry points
 
 /**
  * Set the result if a libcurl error occurred return TCL_ERROR.
@@ -514,15 +511,23 @@
 				break;
 			}
 
+			timeout.tv_sec = 1;
+			timeout.tv_usec = 0;
 			/* convert the timeout into a suitable format for select(2) and
 			 * limit the timeout to 500 msecs at most */
-			if (curl_timeout >= 0 && curl_timeout < 500) {
-				timeout.tv_usec = curl_timeout * 1000;
-			} else {
-				timeout.tv_usec = 500 * 1000;
+			if (curl_timeout > 0) {
+				timeout.tv_sec = curl_timeout / 1000;
+				if (timeout.tv_sec > 1) {
+					timeout.tv_sec = 1;
+				}
+
+				timeout.tv_usec = (curl_timeout % 1000) * 1000;
 			}
 
 			/* get the fd sets for select(2) */
+			FD_ZERO(&readfds);
+			FD_ZERO(&writefds);
+			FD_ZERO(&errorfds);
 			theCurlMCode = curl_multi_fdset(theMHandle, &readfds, &writefds, &errorfds, &nfds);
 			if (theCurlMCode != CURLM_OK) {
 				theResult = SetResultFromCurlMErrorCode(interp, theCurlMCode);
@@ -533,6 +538,15 @@
 			 * select(2) makes the case of nfds == -1 a sleep. */
 			rc = select(nfds + 1, &readfds, &writefds, &errorfds, &timeout);
 			if (-1 == rc) {
+				/* check for signals first to avoid breaking our special
+				 * handling of SIGINT and SIGTERM */
+				if (Tcl_AsyncReady()) {
+					theResult = Tcl_AsyncInvoke(interp, theResult);
+					if (theResult != TCL_OK) {
+						break;
+					}
+				}
+
 				/* select error */
 				Tcl_SetResult(interp, strerror(errno), TCL_VOLATILE);
 				theResult = TCL_ERROR;
@@ -1438,8 +1452,6 @@
 /* ========================================================================= **
  * Callback function
  * ========================================================================= */
-#pragma mark -
-#pragma mark Callback function
 static int CurlProgressHandler(
 		tcl_callback_t *callback,
 		double dltotal,

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/filemap.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/filemap.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/filemap.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -30,10 +30,13 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#if HAVE_CONFIG_H
+#ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
 
+/* needed for NAME_MAX and PATH_MAX on Linux */
+#define _XOPEN_SOURCE
+
 #include <sys/stat.h>
 #include <errno.h>
 #include <fcntl.h>
@@ -48,7 +51,6 @@
 /* ========================================================================= **
  * Definitions
  * ========================================================================= */
-#pragma mark Definitions
 
 /* ------------------------------------------------------------------------- **
  * Internal structures
@@ -184,8 +186,6 @@
 /* ========================================================================= **
  * Tree access functions
  * ========================================================================= */
-#pragma mark -
-#pragma mark Access functions
 
 /**
  * Load the database from a file.
@@ -1118,8 +1118,6 @@
 /* ========================================================================= **
  * Tcl object functions
  * ========================================================================= */
-#pragma mark -
-#pragma mark Tcl object functions
 
 /**
  * Free the object.
@@ -1205,8 +1203,6 @@
 /* ========================================================================= **
  * Entry points
  * ========================================================================= */
-#pragma mark -
-#pragma mark Entry points
 
 /**
  * Set the result if an error occurred and return TCL_ERROR.

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/flock.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/flock.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/flock.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -16,7 +16,7 @@
  * 3. Neither the name of The MacPorts Project nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -34,152 +34,223 @@
 #include <config.h>
 #endif
 
+/* needed to get struct sigaction on some platforms */
+#define _XOPEN_SOURCE 500L
+/* the above hides flock on OS X without _DARWIN_C_SOURCE */
+#define _DARWIN_C_SOURCE
+
 #if HAVE_SYS_FILE_H
 #include <sys/file.h>
 #endif
 
 #include <errno.h>
 #include <inttypes.h>
+#include <signal.h>
 #include <string.h>
+#include <unistd.h>
 
 #include <tcl.h>
 
 #include "flock.h"
 
+static volatile int alarmReceived = 0;
+
+static void alarmHandler(int sig UNUSED) {
+    alarmReceived = 1;
+}
+
 int
-FlockCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
-{
-	static const char errorstr[] = "use one of \"-shared\", \"-exclusive\", or \"-unlock\", and optionally \"-noblock\"";
-	int operation = 0, fd, i, ret;
-	int errnoval = 0;
-	int oshared = 0, oexclusive = 0, ounlock = 0, onoblock = 0;
+FlockCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
+    static const char errorstr[] = "use one of \"-shared\", \"-exclusive\", or \"-unlock\", and optionally \"-noblock\"";
+    int operation = 0, fd, i, ret, sigret = TCL_OK;
+    int errnoval = 0;
+    int oshared = 0, oexclusive = 0, ounlock = 0, onoblock = 0, retry = 0;
 #if defined(HAVE_LOCKF) && !defined(HAVE_FLOCK)
-	off_t curpos;
+    off_t curpos;
 #endif
-	char *res;
-	Tcl_Channel channel;
-	ClientData handle;
+    char *res;
+    Tcl_Channel channel;
+    ClientData handle;
+    struct sigaction sa_oldalarm, sa_alarm;
 
-	if (objc < 3 || objc > 4) {
-		Tcl_WrongNumArgs(interp, 1, objv, "channelId switches");
-		return TCL_ERROR;
-	}
+    if (objc < 3 || objc > 4) {
+        Tcl_WrongNumArgs(interp, 1, objv, "channelId switches");
+        return TCL_ERROR;
+    }
 
-    	if ((channel = Tcl_GetChannel(interp, Tcl_GetString(objv[1]), NULL)) == NULL)
-		return TCL_ERROR;
+    if ((channel = Tcl_GetChannel(interp, Tcl_GetString(objv[1]), NULL)) == NULL) {
+        Tcl_SetResult(interp, "error getting channel, result was NULL", TCL_STATIC);
+        return TCL_ERROR;
+    }
 
-	if (Tcl_GetChannelHandle(channel, TCL_READABLE|TCL_WRITABLE, &handle) != TCL_OK) {
-		Tcl_SetResult(interp, "error getting channel handle", TCL_STATIC);
-		return TCL_ERROR;
-	}
-	fd = (int)(intptr_t)handle;
+    if (Tcl_GetChannelHandle(channel, TCL_READABLE | TCL_WRITABLE, &handle) != TCL_OK) {
+        Tcl_SetResult(interp, "error getting channel handle", TCL_STATIC);
+        return TCL_ERROR;
+    }
+    fd = (int)(intptr_t)handle;
 
-	for (i = 2; i < objc; i++) {
-		char *arg = Tcl_GetString(objv[i]);
-		if (!strcmp(arg, "-shared")) {
-		  oshared = 1;
-		} else if (!strcmp(arg, "-exclusive")) {
-		  oexclusive = 1;
-		} else if (!strcmp(arg, "-unlock")) {
-		  ounlock = 1;
-		} else if (!strcmp(arg, "-noblock")) {
-		  onoblock = 1;
-		}
-	}
+    for (i = 2; i < objc; i++) {
+        char *arg = Tcl_GetString(objv[i]);
+        if (!strcmp(arg, "-shared")) {
+            oshared = 1;
+        }
+        else if (!strcmp(arg, "-exclusive")) {
+            oexclusive = 1;
+        }
+        else if (!strcmp(arg, "-unlock")) {
+            ounlock = 1;
+        }
+        else if (!strcmp(arg, "-noblock")) {
+            onoblock = 1;
+        }
+    }
 
-	/* verify the arguments */
+    /* verify the arguments */
 
-	if((oshared + oexclusive + ounlock) != 1) {
-	  /* only one of the options should have been specified */
-	  Tcl_SetResult(interp, (void *) &errorstr, TCL_STATIC);
-	  return TCL_ERROR;
-	}
+    if ((oshared + oexclusive + ounlock) != 1) {
+        /* only one of the options should have been specified */
+        Tcl_SetResult(interp, (void *) &errorstr, TCL_STATIC);
+        return TCL_ERROR;
+    }
 
-	if(onoblock && ounlock) {
-	  /* should not be specified together */
-	  Tcl_SetResult(interp, "-noblock cannot be used with -unlock", TCL_STATIC);
-	  return TCL_ERROR;
-	}
-	  
+    if (onoblock && ounlock) {
+        /* should not be specified together */
+        Tcl_SetResult(interp, "-noblock cannot be used with -unlock", TCL_STATIC);
+        return TCL_ERROR;
+    }
+
+    /* (re-)enable SIGALRM so we can use alarm(3) to specify a timeout for the
+     * locking, do some Tcl signal processing and restart the locking to solve
+     * #43388. */
+    memset(&sa_alarm, 0, sizeof(struct sigaction));
+    sigemptyset(&sa_alarm.sa_mask);
+    sa_alarm.sa_flags = 0; /* explicitly don't specify SA_RESTART, we want the
+                              following alarm(3) to interrupt the locking. */
+    sa_alarm.sa_handler = alarmHandler;
+    sigaction(SIGALRM, &sa_alarm, &sa_oldalarm);
+
+    do {
+        /* use a delay of one second */
+        retry = 0;
+        alarmReceived = 0;
+        alarm(1);
 #if HAVE_FLOCK
-	/* prefer flock if present */
-	if(oshared) operation |= LOCK_SH;
+        /* prefer flock if present */
+        if (oshared) {
+            operation |= LOCK_SH;
+        }
 
-	if(oexclusive) operation |= LOCK_EX;
+        if (oexclusive) {
+            operation |= LOCK_EX;
+        }
 
-	if(ounlock) operation |= LOCK_UN;
+        if (ounlock) {
+            operation |= LOCK_UN;
+        }
 
-	if(onoblock) operation |= LOCK_NB;
+        if (onoblock) {
+            operation |= LOCK_NB;
+        }
 
-	ret = flock(fd, operation);
-	if(ret == -1) {
-	  errnoval = errno;
-	}
+        ret = flock(fd, operation);
+        if (ret == -1) {
+            errnoval = errno;
+        }
 #else
 #if HAVE_LOCKF
-	if(ounlock) operation = F_ULOCK;
+        if (ounlock) {
+            operation = F_ULOCK;
+        }
 
-	/* lockf semantics don't map to shared locks. */
-	if(oshared || oexclusive) {
-	  if(onoblock) {
-	    operation = F_TLOCK;
-	  } else {
-	    operation = F_LOCK;
-	  }
-	}
+        /* lockf semantics don't map to shared locks. */
+        if (oshared || oexclusive) {
+            if (onoblock) {
+                operation = F_TLOCK;
+            }
+            else {
+                operation = F_LOCK;
+            }
+        }
 
-	curpos = lseek(fd, 0, SEEK_CUR);
-	if(curpos == -1) {
-		Tcl_SetResult(interp, (void *) "Seek error", TCL_STATIC);
-		return TCL_ERROR;
-	}
+        curpos = lseek(fd, 0, SEEK_CUR);
+        if (curpos == -1) {
+            Tcl_SetResult(interp, (void *) "Seek error", TCL_STATIC);
+            return TCL_ERROR;
+        }
 
-	ret = lockf(fd, operation, 0); /* lock entire file */
+        ret = lockf(fd, operation, 0); /* lock entire file */
+        if (ret == -1) {
+            errnoval = errno;
+        }
 
-	curpos = lseek(fd, curpos, SEEK_SET);
-	if(curpos == -1) {
-		Tcl_SetResult(interp, (void *) "Seek error", TCL_STATIC);
-		return TCL_ERROR;
-	}
-
-	if(ret == -1) {
-	  errnoval = errno;
-	  if((oshared || oexclusive)) {
-	    /* map the errno val to what we would expect for flock */
-	    if(onoblock && errnoval == EAGAIN) {
-	      /* on some systems, EAGAIN=EWOULDBLOCK, but lets be safe */
-	      errnoval = EWOULDBLOCK;
-	    } else if(errnoval == EINVAL) {
-	      errnoval = EOPNOTSUPP;
-	    }
-	  }
-	}
+        curpos = lseek(fd, curpos, SEEK_SET);
+        if (curpos == -1) {
+            Tcl_SetResult(interp, (void *) "Seek error", TCL_STATIC);
+            return TCL_ERROR;
+        }
 #else
 #error no available locking implementation
 #endif /* HAVE_LOCKF */
 #endif /* HAVE_FLOCK */
+        /* disable the alarm timer */
+        alarm(0);
 
-	if (ret != 0)
-	{
-		switch(errnoval) {
-			case EAGAIN:
-				res = "EAGAIN";
-				break;
-			case EBADF:
-				res = "EBADF";
-				break;
-			case EINVAL:
-				res = "EINVAL";
-				break;
-			case EOPNOTSUPP:
-				res = "EOPNOTSUPP";
-				break;
-			default:
-				res = strerror(errno);
-				break;
-		}
-		Tcl_SetResult(interp, (void *) res, TCL_STATIC);
-		return TCL_ERROR;
-	}
-	return TCL_OK;
+        if (ret == -1) {
+            if (oshared || oexclusive) {
+                if (!onoblock && alarmReceived && errnoval == EINTR) {
+                    /* We were trying to lock, the lock was supposed to block,
+                     * it failed with EINTR and we processed a SIGALRM. This
+                     * probably means the call was interrupted by the timer.
+                     * Call Tcl signal processing functions and try again. */
+                    if (Tcl_AsyncReady()) {
+                        sigret = Tcl_AsyncInvoke(interp, TCL_OK);
+                        if (sigret != TCL_OK) {
+                            break;
+                        }
+                    }
+                    retry = 1;
+                    continue;
+                }
+
+                if (onoblock && errnoval == EAGAIN) {
+                    /* The lock wasn't supposed to block, and the lock wasn't
+                     * successful because the lock is taken. On some systems
+                     * EAGAIN == EWOULDBLOCK, but let's play it safe. */
+                    errnoval = EWOULDBLOCK;
+                }
+            }
+        }
+    } while (retry);
+
+    /* Restore the previous handler for SIGALRM */
+    sigaction(SIGALRM, &sa_oldalarm, NULL);
+
+    if (sigret != TCL_OK) {
+        /* We received a signal that raised an error. The file hasn't been
+         * locked. */
+        return sigret;
+    }
+
+    if (ret != 0) {
+        switch (errnoval) {
+            case EAGAIN:
+                res = "EAGAIN";
+                break;
+            case EBADF:
+                res = "EBADF";
+                break;
+            case EINVAL:
+                res = "EINVAL";
+                break;
+            case EOPNOTSUPP:
+                res = "EOPNOTSUPP";
+                break;
+            default:
+                res = strerror(errno);
+                break;
+        }
+        Tcl_SetResult(interp, (void *) res, TCL_STATIC);
+        return TCL_ERROR;
+    }
+    return TCL_OK;
 }

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/fs-traverse.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/fs-traverse.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/fs-traverse.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -38,6 +38,10 @@
 #include <config.h>
 #endif
 
+/* required for u_short in fts.h on Linux; I think this can be considered a bug
+ * in the system header, though. */
+#define _BSD_SOURCE
+
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <errno.h>

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/mktemp.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/mktemp.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/mktemp.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -34,6 +34,13 @@
 #include <config.h>
 #endif
 
+/* required for strdup(3)/mkdtemp(3) on Linux */
+#define _XOPEN_SOURCE 700L
+/* required for mktemp(3) if _XOPEN_SOURCE >= 600L on Linux */
+#define _BSD_SOURCE
+/* required for mkdtemp(3) on OS X */
+#define _DARWIN_C_SOURCE
+
 #include <errno.h>
 #include <stdlib.h>
 #include <string.h>

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/readline.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/readline.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/readline.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -8,19 +8,22 @@
  *
  */
 
-#if HAVE_CONFIG_H
+#ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
 
+/* required for strdup(3) on Linux and OS X */
+#define _XOPEN_SOURCE 600L
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
-#if HAVE_READLINE_READLINE_H
+#ifdef HAVE_READLINE_READLINE_H
 #include <readline/readline.h>
 #endif
 
-#if HAVE_READLINE_HISTORY_H
+#ifdef HAVE_READLINE_HISTORY_H
 #include <readline/history.h>
 #endif
 
@@ -29,7 +32,7 @@
 #include "readline.h"
 
 /* Globals */
-#if HAVE_READLINE_READLINE_H
+#ifdef HAVE_READLINE_READLINE_H
 Tcl_Interp* completion_interp = NULL;
 Tcl_Obj* attempted_completion_word = NULL;
 Tcl_Obj* generator_word = NULL;
@@ -55,7 +58,7 @@
 #endif
 
 
-#if HAVE_LIBREADLINE
+#ifdef HAVE_LIBREADLINE
 char*
 completion_generator(const char* text, int state)
 {
@@ -156,7 +159,7 @@
 {
 	char* action;
 	Tcl_Obj *tcl_result;
-#if HAVE_LIBREADLINE
+#ifdef HAVE_LIBREADLINE
 	int argbase;
 	int argcnt;
 #endif
@@ -173,7 +176,7 @@
 	
 		int initOk = 0;
 		
-#if HAVE_LIBREADLINE
+#ifdef HAVE_LIBREADLINE
 		/* Set the name of our program, so .inputrc can be conditionalized */
 		if (objc == 3) {
 			rl_readline_name = strdup(Tcl_GetString(objv[2]));
@@ -194,7 +197,7 @@
 		tcl_result = Tcl_NewIntObj(initOk);	
 		Tcl_SetObjResult(interp, tcl_result);
 
-#if HAVE_LIBREADLINE
+#ifdef HAVE_LIBREADLINE
 	} else if (0 == strcmp("read", action)) {
 	
 		char* s;
@@ -272,7 +275,7 @@
 int RLHistoryCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
 	char* action = NULL;
-#if HAVE_LIBREADLINE
+#ifdef HAVE_LIBREADLINE
 	char* s = NULL;
 	int i = 0;
 	Tcl_Obj *tcl_result;
@@ -286,7 +289,7 @@
 
 	/* Case out on action */
 	if (0) {
-#if HAVE_LIBREADLINE
+#ifdef HAVE_LIBREADLINE
 	} else if (0 == strcmp("add", action)) {
 		if (objc != 3) {
 			Tcl_WrongNumArgs(interp, 1, objv, "add line");

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/realpath.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/realpath.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/realpath.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -34,6 +34,9 @@
 #include <config.h>
 #endif
 
+/* required for PATH_MAX and realpath(3) */
+#define _XOPEN_SOURCE 500
+
 #include <tcl.h>
 
 #include <errno.h>

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/rmd160cmd.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/rmd160cmd.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/rmd160cmd.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -35,6 +35,9 @@
 #include <config.h>
 #endif
 
+/* required for u_char on Linux */
+#define _BSD_SOURCE
+
 #include <string.h>
 #include <stdio.h>
 #include <fcntl.h>

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/setmode.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/setmode.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/setmode.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -36,10 +36,8 @@
 
 #include <config.h>
 
-extern int xxx_so_this_isnt_empty;
+#ifndef HAVE_SETMODE
 
-#if !HAVE_SETMODE
-
 #if defined(LIBC_SCCS) && !defined(lint)
 #if 0
 static char sccsid[] = "@(#)setmode.c	8.2 (Berkeley) 3/25/94";
@@ -48,6 +46,11 @@
 #endif
 #endif /* LIBC_SCCS and not lint */
 
+/* required for sigfillset(3)/sigemptyset(3) and S_ISVTX */
+#define _XOPEN_SOURCE 500
+/* required for u_int and u_long */
+#define _BSD_SOURCE
+
 #include <sys/types.h>
 #include <sys/stat.h>
 
@@ -192,7 +195,7 @@
 	BITCMD *set, *saveset, *endset;
 	sigset_t sigset, sigoset;
 	mode_t mask;
-	int equalopdone, permXbits, setlen;
+	int equalopdone = 0, permXbits, setlen;
 	long perml;
 
 	if (!*p)
@@ -380,7 +383,7 @@
 	case '-':
 	case 'X':
 		set->cmd = op;
-		set->bits = (who ? who : mask) & oparg;
+		set->bits = (who ? ((mode_t) who) : ((mode_t) mask)) & oparg;
 		break;
 
 	case 'u':
@@ -479,5 +482,8 @@
 		}
 	}
 }
-#endif
+#else /* !defined(HAVE_SETMODE) */
 
+extern int xxx_so_this_isnt_empty;
+
+#endif /* !defined(HAVE_SETMODE) */


Property changes on: branches/gsoc14-interactive/base/src/pextlib1.0/sha2.c
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/gsoc08-privileges/base/src/pextlib1.0/sha2.c:37343-46937
/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/sha2.c:78828-88375
/branches/gsoc13-tests/src/pextlib1.0/sha2.c:106692-111324
/branches/universal-sanity/base/src/pextlib1.0/sha2.c:51872-52323
/branches/variant-descs-14482/base/src/pextlib1.0/sha2.c:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/users/perry/base-bugs_and_notes/src/pextlib1.0/sha2.c:45682-46060
/users/perry/base-select/src/pextlib1.0/sha2.c:44044-44692
   + /branches/gsoc08-privileges/base/src/pextlib1.0/sha2.c:37343-46937
/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/sha2.c:78828-88375
/branches/gsoc13-tests/src/pextlib1.0/sha2.c:106692-111324
/branches/universal-sanity/base/src/pextlib1.0/sha2.c:51872-52323
/branches/variant-descs-14482/base/src/pextlib1.0/sha2.c:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/trunk/base/src/pextlib1.0/sha2.c:57914-66452,119514-123795
/users/perry/base-bugs_and_notes/src/pextlib1.0/sha2.c:45682-46060
/users/perry/base-select/src/pextlib1.0/sha2.c:44044-44692


Property changes on: branches/gsoc14-interactive/base/src/pextlib1.0/sha2.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/gsoc08-privileges/base/src/pextlib1.0/sha2.h:37343-46937
/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/sha2.h:78828-88375
/branches/gsoc13-tests/src/pextlib1.0/sha2.h:106692-111324
/branches/universal-sanity/base/src/pextlib1.0/sha2.h:51872-52323
/branches/variant-descs-14482/base/src/pextlib1.0/sha2.h:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/users/perry/base-bugs_and_notes/src/pextlib1.0/sha2.h:45682-46060
/users/perry/base-select/src/pextlib1.0/sha2.h:44044-44692
   + /branches/gsoc08-privileges/base/src/pextlib1.0/sha2.h:37343-46937
/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/sha2.h:78828-88375
/branches/gsoc13-tests/src/pextlib1.0/sha2.h:106692-111324
/branches/universal-sanity/base/src/pextlib1.0/sha2.h:51872-52323
/branches/variant-descs-14482/base/src/pextlib1.0/sha2.h:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/trunk/base/src/pextlib1.0/sha2.h:57914-66452,119514-123795
/users/perry/base-bugs_and_notes/src/pextlib1.0/sha2.h:45682-46060
/users/perry/base-select/src/pextlib1.0/sha2.h:44044-44692

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/strcasecmp.h
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/strcasecmp.h	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/strcasecmp.h	2014-08-14 18:17:24 UTC (rev 123796)
@@ -30,13 +30,18 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <string.h>
+#include <strings.h>
 
-#if !HAVE_STRCASECMP
+#ifndef HAVE_STRCASECMP
 	#define strcasecmp xstrcasecmp
 #endif
 
-#if !HAVE_STRNCASECMP
+#ifndef HAVE_STRNCASECMP
 	#define strncasecmp xstrncasecmp
 #endif
 

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/strsed.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/strsed.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/strsed.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -131,6 +131,9 @@
 
 #include "strsed.h"
 
+/* required for strdup(3) on Linux and OS X */
+#define _XOPEN_SOURCE 600L
+
 #include <ctype.h>
 #include <string.h>
 #include <stdlib.h>

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/system.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/system.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/system.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -36,6 +36,11 @@
 #include <config.h>
 #endif
 
+/* required for fdopen(3)/seteuid(2), among others */
+#define _XOPEN_SOURCE 600
+/* required for fgetln(3) on OS X */
+#define _DARWIN_C_SOURCE
+
 #include <tcl.h>
 
 #if HAVE_PATHS_H
@@ -102,7 +107,7 @@
     return 1;
 }
 
-/* usage: system ?-notty? ?-nice value? ?-W path? command */
+/* usage: system ?-notty? ?-nodup? ?-nice value? ?-W path? command */
 int SystemCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
     char *buf;
@@ -111,12 +116,13 @@
     char *args[7];
     char *cmdstring;
     int sandbox = 0;
-    char *sandbox_exec_path;
-    char *profilestr;
+    char *sandbox_exec_path = NULL;
+    char *profilestr = NULL;
     FILE *pdes;
     int fdset[2], nullfd;
     int fline, pos, ret;
     int osetsid = 0;
+    int odup = 1; /* redirect stdin/stdout/stderr by default */
     int oniceval = INT_MAX; /* magic value indicating no change */
     const char *path = NULL;
     pid_t pid;
@@ -136,6 +142,8 @@
         char *arg = Tcl_GetString(objv[i]);
         if (strcmp(arg, "-notty") == 0) {
             osetsid = 1;
+        } else if (strcmp(arg, "-nodup") == 0) {
+            odup = 0;
         } else if (strcmp(arg, "-nice") == 0) {
             i++;
             if (Tcl_GetIntFromObj(interp, objv[i], &oniceval) != TCL_OK) {
@@ -163,9 +171,11 @@
      * Fork a child to run the command, in a popen() like fashion -
      * popen() itself is not used because stderr is also desired.
      */
-    if (pipe(fdset) != 0) {
-        Tcl_SetResult(interp, strerror(errno), TCL_STATIC);
-        return TCL_ERROR;
+    if (odup) {
+        if (pipe(fdset) != 0) {
+            Tcl_SetResult(interp, strerror(errno), TCL_STATIC);
+            return TCL_ERROR;
+        }
     }
 
     pid = fork();
@@ -175,13 +185,15 @@
         return TCL_ERROR;
         /*NOTREACHED*/
     case 0: /* child */
-        close(fdset[0]);
+        if (odup) {
+            close(fdset[0]);
 
-        if ((nullfd = open(_PATH_DEVNULL, O_RDONLY)) == -1)
-            _exit(1);
-        dup2(nullfd, STDIN_FILENO);
-        dup2(fdset[1], STDOUT_FILENO);
-        dup2(fdset[1], STDERR_FILENO);
+            if ((nullfd = open(_PATH_DEVNULL, O_RDONLY)) == -1)
+                _exit(1);
+            dup2(nullfd, STDIN_FILENO);
+            dup2(fdset[1], STDOUT_FILENO);
+            dup2(fdset[1], STDERR_FILENO);
+        }
         /* drop the controlling terminal if requested */
         if (osetsid) {
             if (setsid() == -1)
@@ -231,58 +243,60 @@
         break;
     }
 
-    close(fdset[1]);
+    if (odup) {
+        close(fdset[1]);
 
-    /* read from simulated popen() pipe */
-    read_failed = 0;
-    pos = 0;
-    memset(circbuf, 0, sizeof(circbuf));
-    pdes = fdopen(fdset[0], "r");
-    if (pdes) {
-        while ((buf = fgetln(pdes, &linelen)) != NULL) {
-            char *sbuf;
-            size_t slen;
-    
-            /*
-             * Allocate enough space to insert a terminating
-             * '\0' if the line is not terminated with a '\n'
-             */
-            if (buf[linelen - 1] == '\n')
-                slen = linelen;
-            else
-                slen = linelen + 1;
-    
-            if (circbuf[pos].len == 0)
-                sbuf = malloc(slen);
-            else {
-                sbuf = realloc(circbuf[pos].line, slen);
+        /* read from simulated popen() pipe */
+        read_failed = 0;
+        pos = 0;
+        memset(circbuf, 0, sizeof(circbuf));
+        pdes = fdopen(fdset[0], "r");
+        if (pdes) {
+            while ((buf = fgetln(pdes, &linelen)) != NULL) {
+                char *sbuf;
+                size_t slen;
+
+                /*
+                * Allocate enough space to insert a terminating
+                * '\0' if the line is not terminated with a '\n'
+                */
+                if (buf[linelen - 1] == '\n')
+                    slen = linelen;
+                else
+                    slen = linelen + 1;
+
+                if (circbuf[pos].len == 0)
+                    sbuf = malloc(slen);
+                else {
+                    sbuf = realloc(circbuf[pos].line, slen);
+                }
+
+                if (sbuf == NULL) {
+                    read_failed = 1;
+                    break;
+                }
+
+                memcpy(sbuf, buf, linelen);
+                /* terminate line with '\0',replacing '\n' if it exists */
+                sbuf[slen - 1] = '\0';
+
+                circbuf[pos].line = sbuf;
+                circbuf[pos].len = slen;
+
+                if (pos++ == CBUFSIZ - 1) {
+                    pos = 0;
+                }
+
+                if (ui_info(interp, sbuf) != TCL_OK) {
+                    read_failed = 1;
+                    break;
+                }
             }
-    
-            if (sbuf == NULL) {
-                read_failed = 1;
-                break;
-            }
-    
-            memcpy(sbuf, buf, linelen);
-            /* terminate line with '\0',replacing '\n' if it exists */
-            sbuf[slen - 1] = '\0';
-    
-            circbuf[pos].line = sbuf;
-            circbuf[pos].len = slen;
-    
-            if (pos++ == CBUFSIZ - 1) {
-                pos = 0;
-            }
-    
-            if (ui_info(interp, sbuf) != TCL_OK) {
-                read_failed = 1;
-                break;
-            }
+            fclose(pdes);
+        } else {
+            read_failed = 1;
+            Tcl_SetResult(interp, strerror(errno), TCL_STATIC);
         }
-        fclose(pdes);
-    } else {
-        read_failed = 1;
-        Tcl_SetResult(interp, strerror(errno), TCL_STATIC);
     }
 
     status = TCL_ERROR;
@@ -319,11 +333,13 @@
         }
     }
 
-    /* Cleanup. */
-    close(fdset[0]);
-    for (fline = 0; fline < CBUFSIZ; fline++) {
-        if (circbuf[fline].len != 0) {
-            free(circbuf[fline].line);
+    if (odup) {
+        /* Cleanup. */
+        close(fdset[0]);
+        for (fline = 0; fline < CBUFSIZ; fline++) {
+            if (circbuf[fline].len != 0) {
+                free(circbuf[fline].line);
+            }
         }
     }
 

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/tracelib.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/tracelib.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/tracelib.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -848,6 +848,14 @@
 
 int TracelibCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
     int result = TCL_OK;
+
+    /* There is no args for commands now. */
+    if (objc < 2) {
+        Tcl_WrongNumArgs(interp, 1, objv, "option");
+        return TCL_ERROR;
+    }
+
+#ifdef HAVE_TRACEMODE_SUPPORT
     static const char *options[] = {"setname", "opensocket", "run", "clean", "setsandbox", "closesocket", "setdeps", "enablefence", 0};
     typedef enum {
         kSetName,
@@ -861,13 +869,6 @@
     } EOptions;
     EOptions current_option;
 
-    /* There is no args for commands now. */
-    if (objc < 2) {
-        Tcl_WrongNumArgs(interp, 1, objv, "option");
-        return TCL_ERROR;
-    }
-
-#ifdef HAVE_TRACEMODE_SUPPORT
     result = Tcl_GetIndexFromObj(interp, objv[1], options, "option", 0, (int *)&current_option);
     if (result == TCL_OK) {
         switch (current_option) {

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/tty.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/tty.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/tty.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -38,6 +38,7 @@
 #include <config.h>
 #endif
 
+#include <stdint.h>
 #include <sys/ioctl.h>
 #include <unistd.h>
 

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/uid.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/uid.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/uid.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -12,6 +12,9 @@
 #include <config.h>
 #endif
 
+/* required for seteuid(2)/setegid(2) */
+#define _BSD_SOURCE
+
 #include <sys/types.h>
 #include <grp.h>
 #include <pwd.h>

Modified: branches/gsoc14-interactive/base/src/pextlib1.0/xinstall.c
===================================================================
--- branches/gsoc14-interactive/base/src/pextlib1.0/xinstall.c	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/pextlib1.0/xinstall.c	2014-08-14 18:17:24 UTC (rev 123796)
@@ -41,6 +41,9 @@
 #include <config.h>
 #endif
 
+/* required for u_int and u_long */
+#define _BSD_SOURCE
+
 #if HAVE_SYS_CDEFS_H
 #include <sys/cdefs.h>
 #endif
@@ -104,7 +107,7 @@
 #define ALLPERMS (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
 #endif
 
-#if !HAVE_SETMODE
+#ifndef HAVE_SETMODE
 #include "setmode.h"
 #endif
 
@@ -148,7 +151,7 @@
 	u_long fset = 0;
 	int no_target, rval;
 	u_int iflags;
-	char *flags, *curdir;
+	char *curdir;
 	const char *group, *owner, *cp;
 	Tcl_Obj *to_name;
 	int dodir = 0;
@@ -198,7 +201,7 @@
 				Tcl_WrongNumArgs(interp, 1, objv, "-f");
 				return TCL_ERROR;
 			}
-			flags = Tcl_GetString(*(++objv));
+			char *flags = Tcl_GetString(*(++objv));
 			if (strtofflags(&flags, &fset, NULL)) {
 				Tcl_SetResult(interp, "invalid flags for -f", TCL_STATIC);
 				return TCL_ERROR;
@@ -428,7 +431,11 @@
  *	build a path name and install the file
  */
 static int
+#if defined(UF_NODUMP)
 install(Tcl_Interp *interp, const char *from_name, const char *to_name, u_long fset, u_int flags)
+#else
+install(Tcl_Interp *interp, const char *from_name, const char *to_name, u_long fset UNUSED, u_int flags)
+#endif
 {
 	struct stat from_sb, temp_sb, to_sb;
 	struct timeval tvb[2];
@@ -869,7 +876,11 @@
  *	create a new file, overwriting an existing one if necessary
  */
 static int
+#if defined(UF_IMMUTABLE) && defined(SF_IMMUTABLE)
 create_newfile(Tcl_Interp *interp, const char *path, int target, struct stat *sbp)
+#else
+create_newfile(Tcl_Interp *interp, const char *path, int target, struct stat *sbp UNUSED)
+#endif
 {
 	char backup[MAXPATHLEN];
 	int saved_errno = 0;
@@ -1105,7 +1116,11 @@
  *	return true (1) if mmap should be tried, false (0) if not.
  */
 int
+#ifdef MFSNAMELEN
 trymmap(int fd)
+#else
+trymmap(int fd UNUSED)
+#endif
 {
 /*
  * The ifdef is for bootstrapping - f_fstypename doesn't exist in

Modified: branches/gsoc14-interactive/base/src/port/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/src/port/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -35,14 +35,13 @@
 	rm -f Makefile
 
 install: all mkdirs
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} ${INSTALLDIR}/bin
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} ${INSTALLDIR}/var/macports
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 555 port portindex portmirror ${INSTALLDIR}/bin/
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 $(srcdir)/port-help.tcl  ${INSTALLDIR}/var/macports/
-	cd ${INSTALLDIR}/bin && $(LN_S) -f port portf
-	cd ${INSTALLDIR}/bin && $(LN_S) -f ${TCLSH} port-tclsh
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "${INSTALLDIR}/bin"
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "${INSTALLDIR}/var/macports"
+	$(INSTALL)    -o "${DSTUSR}" -g "${DSTGRP}" -m 555 port portindex portmirror "${INSTALLDIR}/bin/"
+	cd "${INSTALLDIR}/bin" && $(LN_S) -f port portf
+	cd "${INSTALLDIR}/bin" && $(LN_S) -f "${TCLSH}" port-tclsh
 ifneq (,$(findstring darwin, at build_os@))
 ifneq (8, at OS_MAJOR@)
-	chmod -h 555 ${INSTALLDIR}/bin/portf ${INSTALLDIR}/bin/port-tclsh
+	chmod -h 555 "${INSTALLDIR}/bin/portf" "${INSTALLDIR}/bin/port-tclsh"
 endif
 endif

Deleted: branches/gsoc14-interactive/base/src/port/port-help.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port/port-help.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port/port-help.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,391 +0,0 @@
-# This file contains help strings for the various commands/topics in port(1)
-#
-# Many of these strings are place-holders right now.  Replace with genuinely
-# helpful text and then delete this message.
-#
-# port-help.tcl
-# $Id$
-
-
-set porthelp(activate) {
-Activate the given ports
-
---no-exec   Do not execute any stored pre- or post-activate procedures
-}
-
-set porthelp(archive) {
-Archive the given ports, i.e. install the port image but do not activate
-}
-
-set porthelp(archivefetch) {
-Fetch archive for the given ports
-}
-
-set porthelp(build) {
-Build the given ports
-}
-
-set porthelp(cat) {
-Writes the Portfiles of the given ports to stdout
-}
-
-set porthelp(cd) {
-Changes to the directory of the given port
-
-Only in interactive mode.
-}
-
-set porthelp(checksum) {
-Compares the checksums for the downloaded files of the given ports
-}
-
-set porthelp(clean) {
-Removes files associated with the given ports
-
---archive     Removes temporary archives
---dist        Removes downloaded distfiles
---logs        Removes log files
---work        Removes work directory (default)
---all         Removes everything from above
-}
-
-set porthelp(configure) {
-Configure the given ports
-}
-
-set porthelp(contents) {
-Returns a list of files installed by given ports
-}
-
-set porthelp(deactivate) {
-Deactivates the given ports
-
---no-exec   Do not execute any stored pre- or post-deactivate procedures
-}
-
-set porthelp(dependents) {
-Returns a list of installed dependents for each of the given ports
-
-Note: Don't get fooled by the language!
-Dependents are those ports which depend on the given port, not vice-versa!
-}
-
-set porthelp(rdependents) {
-Recursive version of dependents
-
---full          Display all branches of the tree of dependents instead of only
-                showing each port once.
-}
-
-set porthelp(deps) {
-Display a dependency listing for the given ports
-
---index         Do not read the Portfile, instead rely solely on the PortIndex
-                information. Note this option will prevent the dependencies
-                reported from reflecting the effects of any variants specified.
---no-build      Exclude dependencies only required at build time, i.e.
-                depends_fetch, depends_extract, and depends_build.
-}
-
-set porthelp(rdeps) {
-Display a recursive dependency listing for the given ports
-
---full          Display all branches of the dependency tree instead of only
-                showing each port once.
---index         Do not read the Portfile, instead rely solely on the PortIndex
-                information. Note this option will prevent the dependencies
-                reported from reflecting the effects of any variants specified.
---no-build      Exclude dependencies only required at build time, i.e.
-                depends_fetch, depends_extract, and depends_build.
-}
-
-set porthelp(destroot) {
-Destroot the given ports
-}
-
-set porthelp(dir) {
-Returns the directories of the given ports
-
-This can be quite handy to be used in your shell:
-cd $(port dir <portname>)
-}
-
-set porthelp(distcheck) {
-Checks if the given ports can be fetched from all of its master_sites
-}
-
-set porthelp(distfiles) {
-Returns a list of distfiles for the given port
-}
-
-set porthelp(dmg) {
-Creates a dmg for each of the given ports
-}
-
-set porthelp(dpkg) {
-Creates a dpkg for each of the given ports
-}
-
-set porthelp(echo) {
-Returns the list of ports the argument expands to
-
-This can be useful to see what a pseudo-port expression expands to.
-}
-
-set porthelp(edit) {
-Edit given ports
-}
-
-set porthelp(exit) {
-Exit port
-
-Only in interactive mode.
-}
-
-set porthelp(extract) {
-Extract the downloaded files of the given ports
-}
-
-set porthelp(fetch) {
-Downloaded distfiles for the given ports
-}
-
-set porthelp(file) {
-Returns the path to the Portfile for each of the given ports
-}
-
-set porthelp(gohome) {
-Opens the homepages of the given ports in your browser
-}
-
-set porthelp(help) {
-Displays short help texts for the given actions
-}
-
-set porthelp(info) {
-Returns information about the given ports. Most of the options specify a field
-to be included in the resulting report. Multiple fields may be specified, in
-which case all will be included.  If no fields are specified, a useful default
-set will be used.  The other options which do not correspond to fields are:
-   --depends   An abbreviation for all depends_* fields
-   --index     Do not read the Portfile, instead rely solely on the index
-               information. Note this option will prevent the information
-               reported from reflecting the effects of any variants specified.
-   --line      Report on each port on a single line, with fields separated
-               by spaces.  Handy for automatically processing the output of
-               info called on a large number of ports.
-   --pretty    Format the output in a convenient, human-readable fashion. Note
-               that this option is the default when no options are specified to
-               info.
-}
-
-set porthelp(install) {
-Installs the given ports.
-    --no-rev-upgrade    Do not run rev-upgrade after the installation.
-    --unrequested       Do not mark the port as requested.
-}
-
-set porthelp(installed) {
-List installed versions of the given port, or all installed ports if no port is given
-}
-
-set porthelp(lint) {
-Checks if the Portfile is lint-free for each of the given ports
-}
-
-set porthelp(list) {
-List the available version for each of the given ports
-}
-
-set porthelp(livecheck) {
-Checks if a new version of the software is available
-}
-
-set porthelp(load) {
-Interface to launchctl(1) for ports providing startup items
-}
-
-set porthelp(location) {
-Returns the install location for each of the given ports
-}
-
-set porthelp(log) {
-Shows main log for given ports
-
---phase <phase>		Filters by phase (fetch, checksum, extract, patch, configure, build, destroot)
---level <level>	        Filter messages above verbosity level (error, warn, msg, info, debug)
-}
-
-set porthelp(mdmg) {
-Creates a dmg containing an mpkg for each of the given ports and their dependencies
-}
-
-set porthelp(mirror) {
-Fetches distfiles for the given ports
-}
-
-set porthelp(mpkg) {
-Creates an mpkg for each of the given ports and their dependencies
-}
-
-set porthelp(notes) {
-Displays informational notes for each of the given ports
-}
-
-set porthelp(outdated) {
-Returns a list of outdated ports
-}
-
-set porthelp(patch) {
-Applies patches to each of the given ports
-}
-
-set porthelp(pkg) {
-Creates a pkg for each of the given ports
-}
-
-set porthelp(platform) {
-Returns the current platform that port is running on
-}
-
-set porthelp(provides) {
-Return which port provides each of the files given
-}
-
-set porthelp(quit) $porthelp(exit)
-
-set porthelp(rev-upgrade) {
-Scan for broken binaries in the installed ports and rebuild them as needed. Can
-be run with -y to only report broken ports, but not automatically rebuild them.
-
-You normally wouldn't have to run rev-upgrade manually; it is run automatically
-after each install and upgrade by default. Rev-upgrade doesn't honor package
-names, e.g.
-	upgrade outdated
-will not run rev-upgrade only on outdated, because ports not in outdated might
-have been broken by upgrade outdated. Rev-upgrade will always run on all your
-active ports.
-
-See man 1 port, section rev-upgrade, and man 5 macports.conf, directives
-starting with revupgrade_ for configuration and more information.
-}
-
-set porthelp(rpm) {
-Creates a rpm for each of the given ports
-}
-
-set porthelp(search) {
-Search for a port
-
---case-sensitive   match the search string in a case-sensitive manner
---exact   match the literal search string exactly
---glob    treat the given search string as a glob (default)
---line    print each result on a single line
---regex   treat the given search string as a regular expression
---<field> match against <field>, default is '--name --description'
-}
-
-set porthelp(select) {
-Select between multiple versions of a versioned port
-
-This allows you to choose which version, among several installed versions
-of a port, is to be considered primary.  What this means is which version
-becomes the one most would consider the default, e.g. the one run without
-specifying any version.
-
-One example is the set of python ports, where there are (among others)
-python25, python26, and python31.  The select action lets you set which
-of these becomes the version run when you simply use 'python'.
-
-<arguments> must include the group upon which to be acted, and may include
-a version if --set is used. <arguments> can be empty for --summary.
-
---list     List available versions for the group
---set      Select the given version for the group
---show     Show which version is currently selected for the group (default
-           if none given)
---summary  Display a summary of all available select groups and choices as
-           well as the currently selected ports.
-}
-
-set porthelp(selfupdate) {
-Upgrade MacPorts itself and run the sync target
-}
-
-set porthelp(space) {
-Show the disk space used by the given ports
-
---units <units> Specify units to use. Accepted units are: B, kB, KiB, MB, MiB,
-                GB, GiB. The 'B' may be omitted.
---total         Display the grand total only
-}
-
-set porthelp(srpm) {
-Creates a srpm for each of the given ports
-}
-
-set porthelp(setrequested) {
-Marks each of the given ports as requested
-}
-
-set porthelp(unsetrequested) {
-Marks each of the given ports as unrequested
-}
-
-set porthelp(sync) {
-Synchronize the set of Portfiles
-}
-
-set porthelp(test) {
-Run tests on each of the given ports
-}
-
-set porthelp(unarchive) {
-Unarchive the destroot of the given ports from installed images
-}
-
-set porthelp(uninstall) {
-Uninstall the given ports
-
---follow-dependents     Recursively uninstall all ports that depend on the
-                        specified port before uninstalling the port itself.
---follow-dependencies   Also recursively uninstall all ports that the
-                        specified port depended on. This will not uninstall
-                        dependencies that are marked as requested or that
-                        have other dependents.
---no-exec               Do not execute any stored pre- or post-uninstall
-                        procedures.
-}
-
-set porthelp(unload) $porthelp(load)
-
-set porthelp(upgrade) {
-Upgrades the given ports to the latest version. Respects global options
--n, -R, and -u (see the port man page).  Note that in selecting variants
-to use in the upgraded build of the port, the order of precedence is variants
-specified on the command line, then variants active in the latest installed
-version of the port, then the variants.conf file.
-
---force             Ignore circumstances that would normally cause ports to be
-                    skipped (e.g. not outdated).
---enforce-variants  If the installed variants do not match those requested,
-                    upgrade even if the port is not outdated.
---no-replace        Do not replace one port with another according to the
-                    replaced_by field
-}
-
-set porthelp(url) {
-Returns the URL for each of the given ports
-}
-
-set porthelp(usage) {
-Returns basic usage of the port command
-}
-
-set porthelp(variants) {
-Returns a list of variants provided by the given ports, with descriptions if present
-}
-
-set porthelp(version) {
-Returns the version of MacPorts
-}

Modified: branches/gsoc14-interactive/base/src/port/port.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port/port.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port/port.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1820,38 +1820,61 @@
 
 
 proc action_help { action portlist opts } {
-    set helpfile "$macports::prefix/var/macports/port-help.tcl"
-
+    set manext ".gz"
     if {[llength $portlist] == 0} {
-        print_help
-        return 0
-    }
+        set page "man1/port.1$manext"
+    } else {
+        set topic [lindex $portlist 0]
 
-    if {[file exists $helpfile]} {
-        if {[catch {source $helpfile} err]} {
-            puts stderr "Error reading helpfile $helpfile: $err"
-            return 1
+        # Look for an action with the requested argument
+        set actions [find_action $topic]
+        if {[llength $actions] == 1} {
+            set page "man1/port-[lindex $actions 0].1$manext"
+        } else {
+            if {[llength $actions] > 1} {
+                ui_error "\"port help ${action}\" is ambiguous: \n  port help [join $actions "\n  port help "]"
+                return 1
+            }
+
+            # No valid command specified
+            set page ""
         }
-    } else {
-        puts stderr "Unable to open help file $helpfile"
-        return 1
     }
 
-    foreach topic $portlist {
-        if {![info exists porthelp($topic)]} {
-            puts stderr "No help for topic $topic"
-            return 1
+    set pagepath ${macports::prefix}/share/man/$page
+    if {$page == "" || ![file exists $pagepath]} {
+        set page "man7/portundocumented.7$manext"
+        set pagepath ${macports::prefix}/share/man/$page
+    }
+
+    if {$pagepath != ""} {
+        ui_debug "Opening man page '$pagepath'"
+
+        # Restore our entire environment from start time.
+        # man might want to evaluate TERM
+        global env boot_env
+        array unset env_save; array set env_save [array get env]
+        array unset env *
+        if {${macports::macosx_version} == "10.5"} {
+            unsetenv *
         }
+        array set env [array get boot_env]
 
-        set usage [action_get_usage $topic]
-        if {$usage != -1} {
-           puts -nonewline stderr $usage
-        } else {
-            ui_error "No usage for topic $topic"
+        if [catch {system -nodup "${macports::autoconf::man_path} $pagepath"} result] {
+            ui_debug "$::errorInfo"
+            ui_error "Unable to show man page using ${macports::autoconf::man_path}: $result"
             return 1
         }
 
-        puts stderr $porthelp($topic)
+        # Restore internal MacPorts environment
+        array unset env *
+        if {${macports::macosx_version} == "10.5"} {
+            unsetenv *
+        }
+        array set env [array get env_save]
+    } else {
+        ui_error "Sorry, no help for this topic is available."
+        return 1
     }
 
     return 0
@@ -2497,7 +2520,10 @@
 
     # Error out if no group is specified or command is not --summary.
     if {[llength $portlist] < 1 && [string map {ports_select_ ""} [lindex $commands 0]] != "summary"} {
-        ui_error "port select \[--list|--set|--show|--summary] \<group> \[<version>]"
+        ui_error "Incorrect usage. Correct synopsis is one of:"
+        ui_msg   "  port select \[--list|--show\] <group>"
+        ui_msg   "  port select \[--set\] <group> <version>"
+        ui_msg   "  port select --summary"
         return 1
     }
 
@@ -2733,9 +2759,12 @@
 
 proc action_revupgrade { action portlist opts } {
     set status [macports::revupgrade $opts]
-    if {$status != 0} {
-        print_tickets_url
+    switch $status {
+        1 {
+            print_tickets_url
+        }
     }
+
     return $status
 }
 
@@ -3661,7 +3690,7 @@
             # Map from friendly name
             set opt [map_friendly_field_names $opt]
 
-            if {[catch {eval set matches \[mportsearch \$searchstring $filter_case \$matchstyle $opt\]} result]} {
+            if {[catch {set matches [mportsearch $searchstring $filter_case $matchstyle $opt]} result]} {
                 global errorInfo
                 ui_debug "$errorInfo"
                 break_softcontinue "search for name $portname failed: $result" 1 status
@@ -3890,7 +3919,7 @@
                     if { $editor eq "" } { set editor "/usr/bin/vi" }
                     
                     # Invoke the editor
-                    if {[catch {eval exec >@stdout <@stdin 2>@stderr $editor {$portfile}} result]} {
+                    if {[catch {exec -ignorestderr >@stdout <@stdin {*}$editor $portfile} result]} {
                         global errorInfo
                         ui_debug "$errorInfo"
                         break_softcontinue "unable to invoke editor $editor: $result" 1 status
@@ -4221,6 +4250,7 @@
     mirror      [list action_target         [ACTION_ARGS_PORTS]] \
     load        [list action_target         [ACTION_ARGS_PORTS]] \
     unload      [list action_target         [ACTION_ARGS_PORTS]] \
+    reload      [list action_target         [ACTION_ARGS_PORTS]] \
     distfiles   [list action_target         [ACTION_ARGS_PORTS]] \
     \
     archivefetch [list action_target         [ACTION_ARGS_PORTS]] \
@@ -4228,12 +4258,9 @@
     unarchive   [list action_target         [ACTION_ARGS_PORTS]] \
     dmg         [list action_target         [ACTION_ARGS_PORTS]] \
     mdmg        [list action_target         [ACTION_ARGS_PORTS]] \
-    dpkg        [list action_target         [ACTION_ARGS_PORTS]] \
     mpkg        [list action_target         [ACTION_ARGS_PORTS]] \
     pkg         [list action_target         [ACTION_ARGS_PORTS]] \
     portpkg     [list action_target         [ACTION_ARGS_PORTS]] \
-    rpm         [list action_target         [ACTION_ARGS_PORTS]] \
-    srpm        [list action_target         [ACTION_ARGS_PORTS]] \
     \
     quit        [list action_exit           [ACTION_ARGS_NONE]] \
     exit        [list action_exit           [ACTION_ARGS_NONE]] \
@@ -4597,6 +4624,16 @@
         # What kind of arguments does the command expect?
         set expand [action_needs_portlist $action]
 
+        # (Re-)initialize private_options(ports_no_args) to no, because it might still be yes
+        # from the last command in batch mode. If we don't do this, port will fail to
+        # distinguish arguments that expand to empty lists from no arguments at all:
+        # > installed
+        # > list outdated
+        # will then behave like
+        # > list
+        # if outdated expands to the empty list. See #44091, which was filed about this.
+        set private_options(ports_no_args) "no"
+
         # Parse action arguments, setting a special flag if there were none
         # We otherwise can't tell the difference between arguments that evaluate
         # to the empty set, and the empty set itself.
@@ -4604,7 +4641,7 @@
         switch -- [lookahead] {
             ;       -
             _EOF_ {
-                set private_options(ports_no_args) yes
+                set private_options(ports_no_args) "yes"
             }
             default {
                 if {[ACTION_ARGS_NONE] == $expand} {
@@ -4778,7 +4815,7 @@
 
         # Calculate our prompt
         if { $noisy } {
-            set shortdir [eval file join [lrange [file split $current_portdir] end-1 end]]
+            set shortdir [file join {*}[lrange [file split $current_portdir] end-1 end]]
             set prompt "\[$shortdir\] > "
         } else {
             set prompt ""
@@ -5196,7 +5233,8 @@
         # Display notes at the end of the activation phase.
         if {[array size notificationsToPrint] > 0} {
             ui_notice "--->  Some of the ports you installed have notes:"
-            foreach {name notes} [array get notificationsToPrint] {
+            foreach name [lsort [array names notificationsToPrint]] {
+                set notes $notificationsToPrint($name)
                 ui_notice "  $name has the following notes:"
 
                 # If env(COLUMNS) exists, limit each line's width to this width.

Modified: branches/gsoc14-interactive/base/src/port1.0/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -11,7 +11,7 @@
 	portinstall.tcl portuninstall.tcl portdepends.tcl portdestroot.tcl \
 	portlint.tcl portclean.tcl porttest.tcl portactivate.tcl \
 	portdeactivate.tcl portstartupitem.tcl porttrace.tcl portlivecheck.tcl \
-	portdistcheck.tcl portmirror.tcl portload.tcl portunload.tcl \
+	portdistcheck.tcl portmirror.tcl portload.tcl portunload.tcl portreload.tcl \
 	portdistfiles.tcl fetch_common.tcl portsandbox.tcl
 
 include $(srcdir)/../../Mk/macports.subdir.mk
@@ -31,14 +31,14 @@
 	rm -f Makefile
 
 install:: all
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} ${INSTALLDIR}
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "${INSTALLDIR}"
 	$(SILENT)set -x; for file in ${SRCS}; do \
-		$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 $(srcdir)/$$file ${INSTALLDIR}; \
+		$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 "$(srcdir)/$$file" "${INSTALLDIR}"; \
 	done
 	$(SILENT)set -x; for file in ${SRCS_AUTOCONF}; do \
-		$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 $$file ${INSTALLDIR}; \
+		$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 "$$file" "${INSTALLDIR}"; \
 	done
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 pkgIndex.tcl ${INSTALLDIR}
+	$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 pkgIndex.tcl "${INSTALLDIR}"
 
 test::
 	$(TCLSH) $(srcdir)/tests/test.tcl -nocolor

Modified: branches/gsoc14-interactive/base/src/port1.0/fetch_common.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/fetch_common.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/fetch_common.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -135,13 +135,13 @@
             set thesubdir ""
         }
 
-        if {"$tag" != ""} {
-            eval append element "${thesubdir}:${tag}"
+        if {$tag ne ""} {
+            append element "${thesubdir}:${tag}"
         } else {
-            eval append element "${thesubdir}"
+            append element "${thesubdir}"
         }
 
-        eval lappend ret $element
+        lappend ret $element
     }
 
     return $ret

Modified: branches/gsoc14-interactive/base/src/port1.0/port.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/port.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/port.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -82,6 +82,7 @@
 package require portmirror 1.0
 package require portload 1.0
 package require portunload 1.0
+package require portreload 1.0
 
 package require portdistfiles 1.0
 package require portsandbox 1.0

Modified: branches/gsoc14-interactive/base/src/port1.0/portconfigure.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portconfigure.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portconfigure.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -79,7 +79,7 @@
         ([info exists option_defaults(${type}.cmd)] && [set ${type}.cmd] eq $option_defaults(${type}.cmd)) ||
         (![info exists option_defaults(${type}.cmd)] && [set ${type}.cmd] eq ${type})
         )} {
-            eval [linsert $dep 0 depends_build-append]
+            depends_build-append {*}$dep
     }
 }
 
@@ -99,14 +99,14 @@
             autoreconf.cmd  -
             automake.cmd    -
             autoconf.cmd {
-                eval [linsert $configure_map(autoconf) 0 depends_build-delete]
+                depends_build-delete {*}$configure_map(autoconf)
             }
             xmkmf.cmd {
-                eval [linsert $configure_map(xmkmf) 0 depends_build-delete]
+                depends_build-delete {*}$configure_map(xmkmf)
             }
             use_xmkmf {
                 if {[tbool args]} {
-                    eval [linsert $configure_map(xmkmf) 0 depends_build-append]
+                    depends_build-append {*}$configure_map(xmkmf)
                 }
             }
             default {
@@ -232,7 +232,7 @@
     }
     foreach {re fmt} $valid_compilers {
         if {[set matches [regexp -inline $re $compiler]] ne ""} {
-            set compiler_name [eval [linsert [lrange $matches 1 end] 0 format $fmt]]
+            set compiler_name [format $fmt {*}[lrange $matches 1 end]]
             break
         }
     }
@@ -387,7 +387,7 @@
     }
     foreach {re fmt} $valid_compiler_ports {
         if {[set matches [regexp -inline $re $compiler]] ne ""} {
-            return [eval [linsert [lrange $matches 1 end] 0 format $fmt]]
+            return [format $fmt {*}[lrange $matches 1 end]]
         }
     }
     return {}
@@ -430,6 +430,8 @@
         return $default_compilers
     } elseif {$xcodeversion eq "none" || $xcodeversion eq ""} {
         return {cc}
+    } elseif {[vercmp $xcodeversion 6.0] >= 0 && [vercmp $macosx_deployment_target 10.10] >= 0} {
+        return {clang macports-clang-3.4 macports-clang-3.3}
     } elseif {[vercmp $xcodeversion 5.0] >= 0} {
         return {clang macports-clang-3.4 macports-clang-3.3 macports-llvm-gcc-4.2 apple-gcc-4.2}
     } elseif {[vercmp $xcodeversion 4.3] >= 0} {
@@ -702,7 +704,7 @@
             PERL PYTHON RUBY INSTALL AWK BISON PKG_CONFIG PKG_CONFIG_PATH \
         } {
             set value [option configure.[string tolower $env_var]]
-            eval [linsert $value 0 append_to_environment_value configure $env_var]
+            append_to_environment_value configure $env_var {*}$value
         }
 
         # https://trac.macports.org/ticket/34221
@@ -719,16 +721,16 @@
         }
 
         # add extra flags that are conditional on whether we're building universal
-        eval [linsert [get_canonical_archflags cc] 0 append_to_environment_value configure CFLAGS]
+        append_to_environment_value configure CFLAGS {*}[get_canonical_archflags cc]
         foreach tool {cxx objc objcxx cpp f77 f90 fc ld} {
             if {[catch {get_canonical_archflags $tool} flags]} {
                 continue
             }
             set env_var [string toupper $tool]FLAGS
-            eval [linsert $flags 0 append_to_environment_value configure $env_var]
+            append_to_environment_value configure $env_var {*}$flags
         }
         if {[variant_exists universal] && [variant_isset universal]} {
-            eval [linsert ${configure.universal_args} 0 configure.pre_args-append]
+            configure.pre_args-append {*}${configure.universal_args}
         } else {
             foreach env_var {CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS FFLAGS F90FLAGS FCFLAGS LDFLAGS} {
                 if {${configure.march} ne ""} {

Modified: branches/gsoc14-interactive/base/src/port1.0/portdestroot.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portdestroot.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portdestroot.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -171,25 +171,35 @@
 
     # Prevent overlinking due to glibtool .la files: https://trac.macports.org/ticket/38010
     ui_debug "Fixing glibtool .la files in destroot for ${subport}"
+    set la_file_list [list]
     fs-traverse -depth fullpath ${destroot} {
-        if {[file extension $fullpath] eq ".la" && [file type $fullpath] eq "file"} {
+        if {[file extension $fullpath] eq ".la" && ([file type $fullpath] eq "file" || [file type $fullpath] eq "link")} {
+            if {[file type $fullpath] eq "link" && [file pathtype [file link $fullpath]] ne "relative"} {
+                # prepend $destroot to target of absolute symlinks
+                set checkpath ${destroot}[file link $fullpath]
+            } else {
+                set checkpath $fullpath
+            }
             # Make sure it is from glibtool ... "a libtool library file" will appear in the first line
-            if {![catch {set fp [open $fullpath]}]} {
+            if {![catch {set fp [open $checkpath]}]} {
                 if {[gets $fp line] > 0 && [string first "a libtool library file" $line] != -1} {
-                    if {${destroot.delete_la_files}} {
-                        ui_debug "Removing [file tail $fullpath]"
-                        file delete -force ${fullpath}
-                    } else {
-                        ui_debug "Clearing dependency_libs in [file tail $fullpath]"
-                        reinplace "/dependency_libs/ s/'.*'/''/" ${fullpath}
-                    }
+                    lappend la_file_list $fullpath
                 }
             } else {
-                ui_debug "Failed to open $fullpath"
+                ui_debug "Failed to open $checkpath"
             }
             catch {close $fp}
         }
     }
+    foreach fullpath $la_file_list {
+        if {${destroot.delete_la_files}} {
+            ui_debug "Removing [file tail $fullpath]"
+            file delete -force ${fullpath}
+        } elseif {[file type $fullpath] eq "file"} {
+            ui_debug "Clearing dependency_libs in [file tail $fullpath]"
+            reinplace "/dependency_libs/ s/'.*'/''/" ${fullpath}
+        }
+    }
 
     # Prune empty directories in ${destroot}
     foreach path ${destroot.keepdirs} {

Modified: branches/gsoc14-interactive/base/src/port1.0/portdistcheck.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portdistcheck.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portdistcheck.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -85,13 +85,20 @@
                 foreach site $urlmap($url_var) {
                     ui_debug [format [msgcat::mc "Checking %s from %s"] $distfile $site]
                     set file_url [portfetch::assemble_url $site $distfile]
-                    if {[catch {set urlnewer [eval curl isnewer $curl_options {$file_url} $port_moddate]} error]} {
-                        ui_warn "couldn't fetch $file_url for $subport ($error)"
-                    } else {
+                    try {
+                        set urlnewer [curl isnewer {*}$curl_options $file_url $port_moddate]
                         if {$urlnewer} {
                             ui_warn "port $subport: $file_url is newer than Portfile"
                         }
                         incr count
+                    } catch {{POSIX SIG SIGINT} eCode eMessage} {
+                        ui_debug [msgcat::mc "Aborted due to SIGINT"]
+                        throw
+                    } catch {{POSIX SIG SIGTERM} eCode eMessage} {
+                        ui_debug [msgcat::mc "Aborted due to SIGTERM"]
+                        throw
+                    } catch {{*} eCode eMessage} {
+                        ui_debug [msgcat::mc "couldn't fetch %s for %s (%s)" $file_url $subport $eMessage]
                     }
                 }
                 if {$count == 0} {
@@ -102,15 +109,22 @@
                 foreach site $urlmap($url_var) {
                     ui_debug [format [msgcat::mc "Checking %s from %s"] $distfile $site]
                     set file_url [portfetch::assemble_url $site $distfile]
-                    if {[catch {set urlsize [eval curl getsize $curl_options {$file_url}]} error]} {
-                        ui_warn "couldn't fetch $file_url for $subport ($error)"
-                    } else {
+                    try {
+                        set urlsize [curl getsize {*}$curl_options $file_url]
                         incr count
                         if {$urlsize > 0} {
                             ui_info "port $subport: $distfile $urlsize bytes"
                             incr totalsize $urlsize
                             break
                         }
+                    } catch {{POSIX SIG SIGINT} eCode eMessage} {
+                        ui_debug [msgcat::mc "Aborted due to SIGINT"]
+                        throw
+                    } catch {{POSIX SIG SIGTERM} eCode eMessage} {
+                        ui_debug [msgcat::mc "Aborted due to SIGTERM"]
+                        throw
+                    } catch {{*} eCode eMessage} {
+                        ui_debug [msgcat::mc "couldn't fetch %s for %s (%s)" $file_url $subport $eMessage]
                     }
                 }
                 if {$count == 0} {

Modified: branches/gsoc14-interactive/base/src/port1.0/portextract.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portextract.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portextract.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -90,7 +90,11 @@
         set extract.dir ${worksrcpath}
     }
     if {[tbool use_bzip2]} {
-        option extract.cmd [findBinary bzip2 ${portutil::autoconf::bzip2_path}]
+        if {![catch {findBinary lbzip2} result]} {
+            option extract.cmd $result
+        } else {
+            option extract.cmd [findBinary bzip2 ${portutil::autoconf::bzip2_path}]
+        }
     } elseif {[tbool use_lzma]} {
         option extract.cmd [findBinary lzma ${portutil::autoconf::lzma_path}]
     } elseif {[tbool use_xz]} {

Modified: branches/gsoc14-interactive/base/src/port1.0/portfetch.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portfetch.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portfetch.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,8 +1,7 @@
 # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
-# portfetch.tcl
 # $Id$
 #
-# Copyright (c) 2004 - 2012 The MacPorts Project
+# Copyright (c) 2004 - 2014 The MacPorts Project
 # Copyright (c) 2002 - 2003 Apple Inc.
 # All rights reserved.
 #
@@ -188,7 +187,7 @@
                 }
             }
             git {
-                depends_fetch-append bin:git:git-core
+                depends_fetch-append bin:git:git
             }
             hg {
                 depends_fetch-append bin:hg:mercurial
@@ -538,7 +537,7 @@
                 ui_notice "$UI_PREFIX [format [msgcat::mc "Attempting to fetch %s from %s"] $distfile $site]"
                 set file_url [portfetch::assemble_url $site $distfile]
                 try {
-                    eval curl fetch $fetch_options {$file_url} {"${distpath}/${distfile}.TMP"}
+                    curl fetch {*}$fetch_options $file_url "${distpath}/${distfile}.TMP"
                     file rename -force "${distpath}/${distfile}.TMP" "${distpath}/${distfile}"
                     set fetched 1
                     break

Modified: branches/gsoc14-interactive/base/src/port1.0/portinstall.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portinstall.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portinstall.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -122,7 +122,13 @@
                 set archive.pre_args {-cvf}
                 if {[regexp {z2?$} ${archive.type}]} {
                     if {[regexp {bz2?$} ${archive.type}]} {
-                        set gzip "bzip2"
+                        if {![catch {binaryInPath lbzip2}]} {
+                            set gzip "lbzip2"
+                        } elseif {![catch {binaryInPath pbzip2}]} {
+                            set gzip "pbzip2"
+                        } else {
+                            set gzip "bzip2"
+                        }
                         set level 9
                     } elseif {[regexp {lz$} ${archive.type}]} {
                         set gzip "lzma"

Modified: branches/gsoc14-interactive/base/src/port1.0/portlint.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portlint.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portlint.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,6 +1,33 @@
-# et:ts=4
-# portlint.tcl
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4
 # $Id$
+#
+# Copyright (c) 2007 - 2014 The MacPorts Project
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. Neither the name of The MacPorts Project nor the names of its contributors
+#    may be used to endorse or promote products derived from this software
+#    without specific prior written permission.
+# 
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
 
 package provide portlint 1.0
 package require portutil 1.0
@@ -262,6 +289,11 @@
             incr warnings
         }
 
+        if {[regexp {compiler\.blacklist.*\{} $line] && ![info exists portgroups(compiler_blacklist_versions)]} {
+            ui_error "Line $lineno uses compiler.blacklist in a way that requires the compiler_blacklist_versions portgroup, but this portgroup has not been included"
+            incr errors
+        }
+
         # Check for hardcoded version numbers
         if {$nitpick} {
             # Support for skipping checksums lines
@@ -294,6 +326,7 @@
                 && ![regexp {^\s*reinplace} $line]
                 && ![regexp {^\s*system.*\Wsed\W} $line]} {
             ui_error "Line $lineno hardcodes /opt/local, use \${prefix} instead"
+            incr errors
         }
 
         ### TODO: more checks to Portfile syntax
@@ -459,11 +492,21 @@
     }
 
     set all_depends {}
-    if {[info exists depends_fetch]} { eval "lappend all_depends $depends_fetch" }
-    if {[info exists depends_extract]} { eval "lappend all_depends $depends_extract" }
-    if {[info exists depends_lib]} { eval "lappend all_depends $depends_lib" }
-    if {[info exists depends_build]} { eval "lappend all_depends $depends_build" }
-    if {[info exists depends_run]} { eval "lappend all_depends $depends_run" }
+    if {[info exists depends_fetch]} {
+        lappend all_depends {*}$depends_fetch
+    }
+    if {[info exists depends_extract]} {
+        lappend all_depends {*}$depends_extract
+    }
+    if {[info exists depends_lib]} {
+        lappend all_depends {*}$depends_lib
+    }
+    if {[info exists depends_build]} {
+        lappend all_depends {*}$depends_build
+    }
+    if {[info exists depends_run]} {
+        lappend all_depends {*}$depends_run
+    }
     foreach depspec $all_depends {
         set dep [lindex [split $depspec :] end]
         if {[catch {set res [mport_lookup $dep]} error]} {
@@ -536,6 +579,7 @@
             # space instead of hyphen
             if {[string is double -strict $test]} {
                 ui_error "Invalid license '${prev} ${test}': missing hyphen between ${prev} ${test}"
+                incr errors
 
             # missing hyphen
             } elseif {![string equal -nocase "X11" $test]} {
@@ -550,6 +594,7 @@
                         set license_end [string index $subtest end]
                         if {"+" eq $license_end || [string is integer -strict $license_end]} {
                             ui_error "invalid license '${test}': missing hyphen before version"
+                            incr errors
                         }
                     }
                 }
@@ -558,12 +603,15 @@
             if {[string equal -nocase "BSD-2" $test]} {
                 # BSD-2 => BSD
                 ui_error "Invalid license '${test}': use BSD instead"
+                incr errors
             } elseif {[string equal -nocase "BSD-3" $test]} {
                 # BSD-3 => BSD
                 ui_error "Invalid license '${test}': use BSD instead"
+                incr errors
             } elseif {[string equal -nocase "BSD-4" $test]} {
                 # BSD-4 => BSD-old
                 ui_error "Invalid license '${test}': use BSD-old instead"
+                incr errors
             }
 
             set prev $test

Modified: branches/gsoc14-interactive/base/src/port1.0/portlivecheck.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portlivecheck.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portlivecheck.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -146,7 +146,7 @@
         "regexm" {
             # single and multiline regex
             ui_debug "Fetching ${livecheck.url}"
-            if {[catch {eval curl fetch $curl_options {${livecheck.url}} $tempfile} error]} {
+            if {[catch {curl fetch {*}$curl_options ${livecheck.url} $tempfile} error]} {
                 ui_error "cannot check if $subport was updated ($error)"
                 set updated -1
             } else {
@@ -198,7 +198,7 @@
         }
         "md5" {
             ui_debug "Fetching ${livecheck.url}"
-            if {[catch {eval curl fetch $curl_options {${livecheck.url}} $tempfile} error]} {
+            if {[catch {curl fetch {*}$curl_options ${livecheck.url} $tempfile} error]} {
                 ui_error "cannot check if $subport was updated ($error)"
                 set updated -1
             } else {

Modified: branches/gsoc14-interactive/base/src/port1.0/portload.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portload.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portload.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -58,7 +58,7 @@
         } elseif {![file exists $path]} {
             return -code error [format [msgcat::mc "Launchd plist %s was not found"] $path]
         } else {
-            exec $launchctl_path load -w $path 2>@stderr
+            exec -ignorestderr $launchctl_path load -w $path
         }
     }
     

Copied: branches/gsoc14-interactive/base/src/port1.0/portreload.tcl (from rev 123795, trunk/base/src/port1.0/portreload.tcl)
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portreload.tcl	                        (rev 0)
+++ branches/gsoc14-interactive/base/src/port1.0/portreload.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,71 @@
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
+# $Id$
+#
+# Copyright (c) 2007-2014 The MacPorts Project
+# Copyright (c) 2007 James D. Berry
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. Neither the name of The MacPorts Project nor the names of its contributors
+#    may be used to endorse or promote products derived from this software
+#    without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+package provide portreload 1.0
+package require portutil 1.0
+
+set org.macports.reload [target_new org.macports.reload portreload::reload_main]
+target_runtype ${org.macports.reload} always
+target_state ${org.macports.reload} no
+target_provides ${org.macports.reload} reload
+target_requires ${org.macports.reload} main
+
+namespace eval portreload {
+}
+
+options reload.asroot
+default reload.asroot yes
+
+set_ui_prefix
+
+proc portreload::reload_main {args} {
+    global startupitem.type startupitem.name startupitem.location startupitem.plist
+    set launchctl_path ${portutil::autoconf::launchctl_path}
+
+    foreach { path } "/Library/${startupitem.location}/${startupitem.plist}" {
+        if {$launchctl_path eq ""} {
+            return -code error [format [msgcat::mc "launchctl command was not found by configure"]]
+        } elseif {![file exists $path]} {
+            return -code error [format [msgcat::mc "Launchd plist %s was not found"] $path]
+        } else {
+            # Basically run port unload; port load.
+            exec -ignorestderr $launchctl_path unload -w $path
+            # Let's wait a second. #36054 suggests some ports have problems
+            # when they are re-started too quickly, and I hope the second
+            # doesn't hurt too much.
+            after 1000
+            exec -ignorestderr $launchctl_path load -w $path
+        }
+    }
+
+    return
+}

Modified: branches/gsoc14-interactive/base/src/port1.0/portsandbox.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portsandbox.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portsandbox.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -43,7 +43,7 @@
 # sandbox-exec -p '(version 1) (allow default) (deny file-write*) (allow file-write* <filter>)' some-command
 proc portsandbox::set_profile {target} {
     global os.major portsandbox_profile workpath distpath altprefix \
-        package.destpath configure.ccache ccache_dir rpm.srcdir rpm.tmpdir
+        package.destpath configure.ccache ccache_dir
 
     switch $target {
         activate -
@@ -51,7 +51,8 @@
         dmg -
         mdmg -
         load -
-        unload {
+        unload -
+        reload {
             set portsandbox_profile ""
             return
         }
@@ -73,10 +74,6 @@
                 set allow_dirs [list ${package.destpath}]
             }
         }
-        rpm -
-        srpm {
-            set allow_dirs [list ${rpm.srcdir} ${rpm.tmpdir}]
-        }
     }
 
     # TODO: remove altprefix support

Modified: branches/gsoc14-interactive/base/src/port1.0/porttrace.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/porttrace.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/porttrace.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -95,9 +95,13 @@
             /private/var/db/xcode_select_link \
             /var/db/mds \
             /private/var/db/mds \
+            /var/db/launchd.db \
+            /private/var/db/launchd.db \
             [file normalize ~${macportsuser}/Library/Preferences/com.apple.dt.Xcode.plist] \
             "$env(HOME)/Library/Preferences/com.apple.dt.Xcode.plist" \
             /Library/Caches/com.apple.Xcode \
+            /Library/LaunchDaemons \
+            /Library/LaunchAgents \
             /dev \
             /etc/passwd \
             /etc/groups \

Modified: branches/gsoc14-interactive/base/src/port1.0/portunload.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portunload.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portunload.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -58,7 +58,7 @@
         } elseif {![file exists $path]} {
             return -code error [format [msgcat::mc "Launchd plist %s was not found"] $path]
         } else {
-            exec $launchctl_path unload -w $path 2>@stderr
+            exec -ignorestderr $launchctl_path unload -w $path
         }
     }
     

Modified: branches/gsoc14-interactive/base/src/port1.0/portutil.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/portutil.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/portutil.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -4,7 +4,7 @@
 # Copyright (c) 2002-2003 Apple Inc.
 # Copyright (c) 2004 Robert Shaw <rshaw at opendarwin.org>
 # Copyright (c) 2006-2007 Markus W. Weissmann <mww at macports.org>
-# Copyright (c) 2004-2013 The MacPorts Project
+# Copyright (c) 2004-2014 The MacPorts Project
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -180,7 +180,7 @@
         }
         set refcount [lindex $deprecated_options(${option}-replace) 1]
         lset deprecated_options(${option}-replace) 1 [expr {$refcount + 1}]
-        return [eval handle_option-strsed $option $args]
+        return [handle_option-strsed $option {*}$args]
     }
 
     if {![info exists user_options($option)] && [info exists $option]} {
@@ -451,7 +451,7 @@
     # Call the command.
     set fullcmdstring "$command_prefix $cmdstring $command_suffix"
     ui_debug "Executing command line: $fullcmdstring"
-    set code [catch {eval system $notty $nice \$fullcmdstring} result]
+    set code [catch {system {*}$notty {*}$nice $fullcmdstring} result]
     # Save variables in order to re-throw the same error code.
     set errcode $::errorCode
     set errinfo $::errorInfo
@@ -988,7 +988,8 @@
             set tmpfile [join [lrange $tmpfile 1 end]]
         }
 
-        set cmdline $portutil::autoconf::sed_command
+        set cmdline {}
+        lappend cmdline $portutil::autoconf::sed_command
         if {$extended} {
             if {$portutil::autoconf::sed_ext_flag eq "N/A"} {
                 ui_debug "sed extended regexp not available"
@@ -999,13 +1000,13 @@
         if {$suppress} {
             lappend cmdline -n
         }
-        set cmdline [concat $cmdline [list $pattern < $file >@ $tmpfd 2>@stderr]]
+        lappend cmdline $pattern "<$file" ">@$tmpfd"
         if {$locale ne ""} {
             set env(LC_CTYPE) $locale
         }
         ui_info "$UI_PREFIX [format [msgcat::mc "Patching %s: %s"] [file tail $file] $pattern]"
         ui_debug "Executing reinplace: $cmdline"
-        if {[catch {eval exec $cmdline} error]} {
+        if {[catch {exec -ignorestderr -- {*}$cmdline} error]} {
             global errorInfo
             ui_debug "$errorInfo"
             ui_error "reinplace: $error"
@@ -1068,7 +1069,7 @@
 # delete
 # Wrapper for file delete -force
 proc delete {args} {
-    eval file delete -force -- $args
+    file delete -force -- {*}$args
 }
 
 # touch
@@ -1167,7 +1168,7 @@
 # copy
 # Wrapper for file copy
 proc copy {args} {
-    eval file copy $args
+    file copy {*}$args
 }
 
 # move
@@ -1196,7 +1197,7 @@
             return
         }
     }
-    eval file rename $options -- $args
+    file rename {*}$options -- {*}$args
 }
 
 # ln
@@ -1456,9 +1457,6 @@
                         pkg         -
                         portpkg     -
                         mpkg        -
-                        rpm         -
-                        srpm        -
-                        dpkg        -
                         mdmg        -
                         ""          { set deptypes "depends_fetch depends_extract depends_lib depends_build depends_run" }
 
@@ -1506,7 +1504,7 @@
                 if {$result == 0} {
                     foreach pre [ditem_key $ditem pre] {
                         ui_debug "Executing $pre"
-                        set result [catch {eval $pre $targetname} errstr]
+                        set result [catch {$pre $targetname} errstr]
                         # Save variables in order to re-throw the same error code.
                         set errcode $::errorCode
                         set errinfo $::errorInfo
@@ -1516,7 +1514,7 @@
 
                 if {$result == 0} {
                     ui_debug "Executing $targetname ($portname)"
-                    set result [catch {eval $procedure $targetname} errstr]
+                    set result [catch {$procedure $targetname} errstr]
                     # Save variables in order to re-throw the same error code.
                     set errcode $::errorCode
                     set errinfo $::errorInfo
@@ -1525,7 +1523,7 @@
                 if {$result == 0} {
                     foreach post [ditem_key $ditem post] {
                         ui_debug "Executing $post"
-                        set result [catch {eval $post $targetname} errstr]
+                        set result [catch {$post $targetname} errstr]
                         # Save variables in order to re-throw the same error code.
                         set errcode $::errorCode
                         set errinfo $::errorInfo
@@ -1551,7 +1549,7 @@
                 if {[ditem_contains $ditem postrun] && $result == 0} {
                     set postrun [ditem_key $ditem postrun]
                     ui_debug "Executing $postrun"
-                    set result [catch {eval $postrun $targetname} errstr]
+                    set result [catch {$postrun $targetname} errstr]
                     # Save variables in order to re-throw the same error code.
                     set errcode $::errorCode
                     set errinfo $::errorInfo
@@ -2240,39 +2238,39 @@
             makeuserproc userproc-post-${ident}-${target}-\${proc_index} \$args
         "
     }
-    eval ditem_append $ditem provides $args
+    ditem_append $ditem provides {*}$args
 }
 
 proc target_requires {ditem args} {
-    eval ditem_append $ditem requires $args
+    ditem_append $ditem requires {*}$args
 }
 
 proc target_uses {ditem args} {
-    eval ditem_append $ditem uses $args
+    ditem_append $ditem uses {*}$args
 }
 
 proc target_deplist {ditem args} {
-    eval ditem_append $ditem deplist $args
+    ditem_append $ditem deplist {*}$args
 }
 
 proc target_prerun {ditem args} {
-    eval ditem_append $ditem prerun $args
+    ditem_append $ditem prerun {*}$args
 }
 
 proc target_postrun {ditem args} {
-    eval ditem_append $ditem postrun $args
+    ditem_append $ditem postrun {*}$args
 }
 
 proc target_runtype {ditem args} {
-    eval ditem_append $ditem runtype $args
+    ditem_append $ditem runtype {*}$args
 }
 
 proc target_state {ditem args} {
-    eval ditem_append $ditem state $args
+    ditem_append $ditem state {*}$args
 }
 
 proc target_init {ditem args} {
-    eval ditem_append $ditem init $args
+    ditem_append $ditem init {*}$args
 }
 
 ##### variant class #####
@@ -2336,7 +2334,7 @@
         }
     }
     foreach username [array names args] {
-        eval adduser $username $args($username)
+        adduser $username {*}$args($username)
     }
 }
 
@@ -2373,22 +2371,22 @@
         set dscl [findBinary dscl $portutil::autoconf::dscl_path]
         set failed? 0
         try {
-            exec $dscl . -create /Users/${name} UniqueID ${uid} 2>@stderr
+            exec -ignorestderr $dscl . -create /Users/${name} UniqueID ${uid}
 
             # These are implicitly added on Mac OSX Lion.  AuthenticationAuthority
             # causes the user to be visible in the Users & Groups Preference Pane,
             # and the others are just noise, so delete them.
             # https://trac.macports.org/ticket/30168
-            exec $dscl . -delete /Users/${name} AuthenticationAuthority 2>@stderr
-            exec $dscl . -delete /Users/${name} PasswordPolicyOptions 2>@stderr
-            exec $dscl . -delete /Users/${name} dsAttrTypeNative:KerberosKeys 2>@stderr
-            exec $dscl . -delete /Users/${name} dsAttrTypeNative:ShadowHashData 2>@stderr
+            exec -ignorestderr $dscl . -delete /Users/${name} AuthenticationAuthority
+            exec -ignorestderr $dscl . -delete /Users/${name} PasswordPolicyOptions
+            exec -ignorestderr $dscl . -delete /Users/${name} dsAttrTypeNative:KerberosKeys
+            exec -ignorestderr $dscl . -delete /Users/${name} dsAttrTypeNative:ShadowHashData
 
-            exec $dscl . -create /Users/${name} RealName ${realname} 2>@stderr
-            exec $dscl . -create /Users/${name} Password ${passwd} 2>@stderr
-            exec $dscl . -create /Users/${name} PrimaryGroupID ${gid} 2>@stderr
-            exec $dscl . -create /Users/${name} NFSHomeDirectory ${home} 2>@stderr
-            exec $dscl . -create /Users/${name} UserShell ${shell} 2>@stderr
+            exec -ignorestderr $dscl . -create /Users/${name} RealName ${realname}
+            exec -ignorestderr $dscl . -create /Users/${name} Password ${passwd}
+            exec -ignorestderr $dscl . -create /Users/${name} PrimaryGroupID ${gid}
+            exec -ignorestderr $dscl . -create /Users/${name} NFSHomeDirectory ${home}
+            exec -ignorestderr $dscl . -create /Users/${name} UserShell ${shell}
         } catch {{CHILDKILLED *} eCode eMessage} {
             # the foreachs are a simple workaround for Tcl 8.4, which doesn't
             # seem to have lassign
@@ -2419,7 +2417,7 @@
                 # state before the error
                 ui_debug "Attempting to clean up failed creation of user $name"
                 try {
-                    exec $dscl . -delete /Users/${name} 2>@stderr
+                    exec -ignorestderr $dscl . -delete /Users/${name}
                 } catch {{CHILDKILLED *} eCode eMessage} {
                     foreach {- pid sigName msg} {
                         ui_warn "dscl($pid) was killed by $sigName: $msg while trying to clean up failed creation of user $name."
@@ -2481,11 +2479,11 @@
         set dscl [findBinary dscl $portutil::autoconf::dscl_path]
         set failed? 0
         try {
-            exec $dscl . -create /Groups/${name} Password ${passwd}
-            exec $dscl . -create /Groups/${name} RealName ${realname}
-            exec $dscl . -create /Groups/${name} PrimaryGroupID ${gid}
+            exec -ignorestderr $dscl . -create /Groups/${name} Password ${passwd}
+            exec -ignorestderr $dscl . -create /Groups/${name} RealName ${realname}
+            exec -ignorestderr $dscl . -create /Groups/${name} PrimaryGroupID ${gid}
             if {${users} ne ""} {
-                exec $dscl . -create /Groups/${name} GroupMembership ${users}
+                exec -ignorestderr $dscl . -create /Groups/${name} GroupMembership ${users}
             }
         } catch {{CHILDKILLED *} eCode eMessage} {
             # the foreachs are a simple workaround for Tcl 8.4, which doesn't
@@ -2517,7 +2515,7 @@
                 # state before the error
                 ui_debug "Attempting to clean up failed creation of group $name"
                 try {
-                    exec $dscl . -delete /Groups/${name} 2>@stderr
+                    exec -ignorestderr $dscl . -delete /Groups/${name}
                 } catch {{CHILDKILLED *} eCode eMessage} {
                     foreach {- pid sigName msg} {
                         ui_warn "dscl($pid) was killed by $sigName: $msg while trying to clean up failed creation of group $name."
@@ -2823,7 +2821,7 @@
     foreach arch ${archs} {
         lappend exec-lipo -arch ${arch} ${base}/${arch}${file}
     }
-    eval exec ${exec-lipo} [list -create -output ${target}${file}]
+    exec {*}${exec-lipo} -create -output ${target}${file}
 }
 
 # private function
@@ -2978,12 +2976,12 @@
             setegid $egid
             ui_debug "euid/egid changed to: [geteuid]/[getegid]"
             ui_debug "setting attributes on $file"
-            eval file attributes {$file} $attributes
+            file attributes $file {*}$attributes
             setegid [uname_to_gid "$macportsuser"]
             seteuid [name_to_uid "$macportsuser"]
             ui_debug "euid/egid changed to: [geteuid]/[getegid]"
         } else {
-            eval file attributes {$file} $attributes
+            file attributes $file {*}$attributes
         }
     } else {
         # not root, so can't set owner/group

Modified: branches/gsoc14-interactive/base/src/port1.0/tests/portload.test
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/tests/portload.test	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/tests/portload.test	2014-08-14 18:17:24 UTC (rev 123796)
@@ -51,7 +51,7 @@
     return "Load successful."
 
 } -cleanup {
-    exec $launchctl_path unload -w $path 2>@stderr
+    exec -ignorestderr $launchctl_path unload -w $path
     file delete -force /Library/test
 
 } -result "Load successful."

Modified: branches/gsoc14-interactive/base/src/port1.0/tests/test.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/port1.0/tests/test.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/port1.0/tests/test.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,5 +1,5 @@
 # Global vars
-set arguments ""
+set arguments {}
 set test_name ""
 set color_out ""
 set tcl ""
@@ -15,10 +15,10 @@
 }
 
 proc print_help {arg} {
-    if { $arg eq "tests" } {
+    if {$arg eq "tests"} {
         puts "The list of available tests is:"
-	cd tests
-	set test_suite [glob *.test]
+        cd tests
+        set test_suite [glob *.test]
         foreach test $test_suite {
             puts [puts -nonewline "  "]$test
         }
@@ -34,77 +34,86 @@
 
 # Process args
 foreach arg $argv {
-    if { $arg eq "-h" || $arg eq "-help" } {
+    if {$arg eq "-h" || $arg eq "-help"} {
         print_help ""
         exit 0
-    } elseif { $arg eq "-debug" } {
+    } elseif {$arg eq "-debug"} {
         set index [expr {[lsearch $argv $arg] + 1}]
         set level [lindex $argv $index]
-        if { $level >= 0 && $level <= 3 } {
-            append arguments "-debug " $level
+        if {$level >= 0 && $level <= 3} {
+            lappend arguments "-debug" $level
         } else {
             puts "Invalid debug level."
             exit 1
         }
-    } elseif { $arg eq "-t" } {
+    } elseif {$arg eq "-t"} {
         set index [expr {[lsearch $argv $arg] + 1}]
         set test_name [lindex $argv $index]
         set no 0
-	cd tests
-	set test_suite [glob *.test]
+        cd tests
+        set test_suite [glob *.test]
         foreach test $test_suite {
-            if { $test_name != $test } {
+            if {$test_name ne $test} {
                 set no [expr {$no + 1}]
             }
         }
-        if { $no == [llength $test_suite] } {
+        if {$no == [llength $test_suite]} {
             print_help tests
             exit 1
         }
-    } elseif { $arg eq "-l" } {
+    } elseif {$arg eq "-l"} {
         print_help tests
         exit 0
-    } elseif { $arg eq "-nocolor" } {
+    } elseif {$arg eq "-nocolor"} {
         set color_out "no"
     }
 }
 
 
 # Run tests
-if { $test_name ne ""} {
-    set result [eval exec $tcl $test_name $arguments 2>@stderr]
+if {$test_name ne ""} {
+    set result [exec -ignorestderr $tcl $test_name {*}$arguments]
     puts $result
-
 } else {
     cd tests
     set test_suite [glob *.test]
 
     foreach test $test_suite {
-        set result [eval exec $tcl $test $arguments 2>@stderr]
-	set lastline [lindex [split $result "\n"] end]
+        set result [exec -ignorestderr $tcl $test {*}$arguments]
+        set lastline [lindex [split $result "\n"] end]
 
-	if {[lrange [split $lastline "\t"] 1 1] != "Total"} {
-	    set lastline [lindex [split $result "\n"] end-2]
-	    set errmsg [lindex [split $result "\n"] end]
-	}
+        if {[lrange [split $lastline "\t"] 1 1] ne "Total"} {
+            set lastline [lindex [split $result "\n"] end-2]
+            set errmsg [lindex [split $result "\n"] end]
+        }
 
-	set splitresult [split $lastline "\t"]
+        set splitresult [split $lastline "\t"]
         set total [lindex $splitresult 2]
         set pass [lindex $splitresult 4]
         set skip [lindex $splitresult 6]
         set fail [lindex $splitresult 8]
 
-	# Format output
-	if {$total < 10} { set total "0${total}"}
-	if {$pass < 10} { set pass "0${pass}"}
-	if {$skip < 10} { set skip "0${skip}"}
-	if {$fail < 10} { set fail "0${fail}"}
+        # Format output
+        if {$total < 10} {
+            set total "0${total}"
+        }
+        if {$pass < 10} {
+            set pass "0${pass}"
+        }
+        if {$skip < 10} {
+            set skip "0${skip}"
+        }
+        if {$fail < 10} {
+            set fail "0${fail}"
+        }
 
         # Check for errors.
-        if { $fail != 0 } { set err "yes" }
+        if {$fail != 0} {
+            set err "yes"
+        }
 
         set out ""
-        if { ($fail != 0 || $skip != 0) && $color_out eq "" } {
+        if {($fail != 0 || $skip != 0) && $color_out eq ""} {
             # Color failed tests.
             append out "\x1b\[1;31mTotal:" $total " Passed:" $pass " Failed:" $fail " Skipped:" $skip "  \x1b\[0m" $test
         } else {
@@ -113,19 +122,21 @@
 
         # Print results and constrints for auto-skipped tests.
         puts $out
-        if { $skip != 0 } {
+        if {$skip != 0} {
             set out "    Constraint: "
             append out [string trim $errmsg "\t {}"]
             puts $out
         }
-	if { $fail != 0 } {
-	    set end [expr {[string first $test $result 0] - 1}]
-	    puts [string range $result 0 $end]
-	}
+        if {$fail != 0} {
+            set end [expr {[string first $test $result 0] - 1}]
+            puts [string range $result 0 $end]
+        }
     }
 }
 
 # Return 1 if errors were found.
-if {$err ne ""} { exit 1 }
+if {$err ne ""} {
+    exit 1
+}
 
 return 0

Modified: branches/gsoc14-interactive/base/src/programs/daemondo/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/src/programs/daemondo/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/programs/daemondo/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -35,6 +35,6 @@
 	rm -f Makefile
 
 install: daemondo
-	${INSTALL} -o ${DSTUSR} -g ${DSTGRP} -m 555 ${PROGRAM} ${DESTDIR}${bindir}
+	${INSTALL} -o "${DSTUSR}" -g "${DSTGRP}" -m 555 "${PROGRAM}" "${DESTDIR}${bindir}"
 
 test:

Modified: branches/gsoc14-interactive/base/src/registry2.0/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/src/registry2.0/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/registry2.0/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -18,6 +18,8 @@
 
 include $(srcdir)/../../Mk/macports.tea.mk
 
+CPPFLAGS+=-D_XOPEN_SOURCE=600
+
 pkgIndex.tcl: $(SRCS) $(SRCS_AUTOCONF)
 
 CFLAGS+=	${SQLITE3_CFLAGS}
@@ -39,12 +41,12 @@
 	rm -f Makefile
 
 install:: all $(SHLIB_NAME)
-	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} ${INSTALLDIR}
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 ${SHLIB_NAME} ${INSTALLDIR}
+	$(INSTALL) -d -o "${DSTUSR}" -g "${DSTGRP}" -m "${DSTMODE}" "${INSTALLDIR}"
+	$(INSTALL)    -o "${DSTUSR}" -g "${DSTGRP}" -m 444 "${SHLIB_NAME}" "${INSTALLDIR}"
 	$(SILENT) set -x; for file in ${SRCS}; do \
-		$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 $(srcdir)/$$file ${INSTALLDIR}/$$file; \
+		$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 "$(srcdir)/$$file" "${INSTALLDIR}/$$file"; \
 	done
 	$(SILENT) set -x; for file in ${SRCS_AUTOCONF}; do \
-		$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 $$file ${INSTALLDIR}/$$file; \
+		$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 "$$file" "${INSTALLDIR}/$$file"; \
 	done
-	$(INSTALL) -o ${DSTUSR} -g ${DSTGRP} -m 444 pkgIndex.tcl ${INSTALLDIR}
+	$(INSTALL) -o "${DSTUSR}" -g "${DSTGRP}" -m 444 pkgIndex.tcl "${INSTALLDIR}"

Modified: branches/gsoc14-interactive/base/src/registry2.0/portimage.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/registry2.0/portimage.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/registry2.0/portimage.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -220,7 +220,7 @@
             append composite_spec _${revision}${variants}
         }
     }
-    set ilist [eval registry::entry imaged $searchkeys]
+    set ilist [registry::entry imaged {*}$searchkeys]
 
     if { [llength $ilist] > 1 } {
         set portilist {}
@@ -291,10 +291,10 @@
                 ::file mkdir $dstfile
                 # fix attributes on the directory.
                 if {[getuid] == 0} {
-                    eval ::file attributes {$dstfile} [::file attributes $srcfile]
+                    ::file attributes $dstfile {*}[::file attributes $srcfile]
                 } else {
                     # not root, so can't set owner/group
-                    eval ::file attributes {$dstfile} -permissions [::file attributes $srcfile -permissions]
+                    ::file attributes $dstfile -permissions {*}[::file attributes $srcfile -permissions]
                 }
                 # set mtime on installed element
                 ::file mtime $dstfile [::file mtime $srcfile]
@@ -367,7 +367,13 @@
                     if {[regexp {z2?$} ${unarchive.type}]} {
                         set unarchive.args {-}
                         if {[regexp {bz2?$} ${unarchive.type}]} {
-                            set gzip "bzip2"
+                            if {![catch {macports::binaryInPath lbzip2}]} {
+                                set gzip "lbzip2"
+                            } elseif {![catch {macports::binaryInPath pbzip2}]} {
+                                set gzip "pbzip2"
+                            } else {
+                                set gzip "bzip2"
+                            }
                         } elseif {[regexp {lz$} ${unarchive.type}]} {
                             set gzip "lzma"
                         } elseif {[regexp {xz$} ${unarchive.type}]} {

Modified: branches/gsoc14-interactive/base/src/registry2.0/portuninstall.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/registry2.0/portuninstall.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/registry2.0/portuninstall.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -148,7 +148,7 @@
             append composite_spec _${revision}${variants}
         }
     }
-    set ilist [eval registry::entry imaged $searchkeys]
+    set ilist [registry::entry imaged {*}$searchkeys]
     if { [llength $ilist] > 1 } {
         # set portname again since the one we were passed may not have had the correct case
         set portname [[lindex $ilist 0] name]

Modified: branches/gsoc14-interactive/base/src/registry2.0/receipt_sqlite.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/registry2.0/receipt_sqlite.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/registry2.0/receipt_sqlite.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -41,8 +41,16 @@
 # registry2.0 wrapper code that matches old receipt_flat interface
 ##
 namespace eval receipt_sqlite {
-
-# return list of active ports, or active version of port 'name' if specified
+##
+# Return a list of active ports, or the active version of port \a name, if
+# specified.
+#
+# @param name
+#        Empty string to return a list of all ports or the name of a port to
+#        return only the active version of a single port.
+# @return A list of matching ports where each entry is a list of (name,
+#         version, revision, variants, 1 or 0 indicating whether a port's state
+#         is "installed", epoch).
 proc active {name} {
     if {$name ne ""} {
         set ports [registry::entry installed $name]
@@ -57,59 +65,94 @@
 }
 
 ##
-# Open an existing entry and return a reference.
+# Open an existing entry in the registry uniquely identified by name, version,
+# revision, variants and epoch and return a reference.
+#
+# @param name
+#        The name of the port to be opened.
+# @param version
+#        The version of the port to be opened.
+# @param revision
+#        The revision of the port to be opened.
+# @param variants
+#        The canonical variant string of the port to be opened.
+# @param epoch
+#        The epoch of the port to be opened.
+# @return A reference to the requested port on success. Raises an error on
+#         failure (e.g. if the port isn't found or allocating the reference
+#         fails).
 proc open_entry {name version revision variants epoch} {
     return [registry::entry open $name $version $revision $variants $epoch]
 }
 
-# Check to see if an entry exists
+##
+# Check whether a registry entry exists.
+#
+# @param name
+#        The name to be searched in the registry.
+# @param version
+#        The version to be searched in the registry.
+# @param revision
+#        The revision to be searched in the registry. Defaults to 0.
+# @param variants
+#        The canonical variant string to be searched in the registry. Defaults
+#        to an empty string.
+# @return 1, if the port exists, 0 otherwise.
 proc entry_exists {name version {revision 0} {variants ""}} {
     if {![catch {set ports [registry::entry search name $name version $version revision $revision variants $variants]}] && [llength $ports] > 0} {
         return 1
     }
-	return 0
+    return 0
 }
 
-# Check to see if an entry exists
+##
+# Check whether a registry entry with the given name exists.
+#
+# @param name
+#        The name to be searched in the registry.
+# @return 1 if a port with the given name exists in the registry, 0 otherwise.
 proc entry_exists_for_name {name} {
-	if {![catch {set ports [registry::entry search name $name]}] && [llength $ports] > 0} {
-	    return 1
-	}
-	return 0
+    if {![catch {set ports [registry::entry search name $name]}] && [llength $ports] > 0} {
+        return 1
+    }
+    return 0
 }
 
 ##
-# determine if a file is registered in the file map, and if it is,
-# get its port.
+# Determine if a file is registered in the file map, and if it is, get the name
+# of the port it is registered to.
 #
-# - file	the file to test
-# returns 0 if the file is not registered, the name of the port otherwise.
-#
+# @param file
+#        The full path to the file to be tested.
+# @return 0 if the file is not registered to any port. The name of the port
+#         otherwise.
 proc file_registered {file} {
     set port [registry::entry owner $file]
-	if {$port ne ""} {
-		return [$port name]
-	} else {
-		return 0
-	}
+    if {$port ne ""} {
+        return [$port name]
+    } else {
+        return 0
+    }
 }
 
 ##
-# determine if a port is registered in the file map, and if it is,
-# get its installed (activated) files.
+# Determine if a port is registered in the file map, and if it is, get its
+# installed (activated) files.
 #
-# - port	the port to test
-# returns 0 if the port is not registered, the list of its files otherwise.
+# @param name
+#        The name of the port to be tested.
+# @return 0 if no port with the given name is active. An empty string, if no
+#         port with the given name is active, but a port with the given name is
+#         imaged (i.e. installed, but inactive). A list of files if the given
+#         port is installed and active.
 proc port_registered {name} {
-	if {![catch {set ports [registry::entry installed $name]}]
-	    && [llength $ports] > 0} {
-	    # should never return more than one port
-	    set port [lindex $ports 0]
-		return [$port files]
-	} elseif {![catch {set ports [registry::entry imaged $name]}]
-	    && [llength $ports] > 0} {
-	    return ""
-	} else {
+    if {![catch {set ports [registry::entry installed $name]}] && [llength $ports] > 0} {
+        # should never return more than one port
+        set port [lindex $ports 0]
+        return [$port files]
+    } elseif {![catch {set ports [registry::entry imaged $name]}] && [llength $ports] > 0} {
+        return ""
+    } else {
         return 0
     }
 }
@@ -117,8 +160,13 @@
 ##
 # Retrieve a property from a registry entry.
 #
-# ref			reference to the entry.
-# property		key for the property to retrieve.
+# @param ref
+#        Reference to the registry entry.
+# @param property
+#        Name of the property to retrieve.
+# @return Return value depends on the property queried. Returns 0 if an error
+#         occured while trying to access the property (but note that 0 may be
+#         a perfectly valid value for the key you're querying).
 proc property_retrieve {ref property} {
     switch $property {
         active {
@@ -137,9 +185,12 @@
 ##
 # Store a property in a registry entry.
 #
-# ref			reference to the entry.
-# property		key for the property to set.
-# value         value to set it to.
+# @param ref
+#        Reference to the registry entry.
+# @param property
+#        Name of the property to set.
+# @param value
+#        New value for the given key in the reference.
 proc property_store {ref property value} {
     switch $property {
         active {
@@ -155,56 +206,85 @@
     }
 }
 
-# Return installed ports
+##
+# Return all installed ports (active and inactive). Optionally filter by name
+# and version.
 #
-# If version is "", return all ports of that name.
-# Otherwise, return only ports that exactly match this version.
-# What we call version here is version_revision+variants.
-# The syntax for that can be ambiguous if there's an underscore and dash in
-# version for example, so we don't attempt to split up the composite version
-# into its components, we just compare the whole thing.
+# @param name
+#        The name of the port you're looking for. Defaults to an empty string,
+#        which will return all installed ports.
+# @param version
+#        A version string in either of the forms "$version_$revision$variants"
+#        or "$version". Defaults to an empty string, which will return ports
+#        regardless of version constraints.
+# @return A list of ports in the form given by #active.
 proc installed {{name ""} {version ""}} {
-	if { $name eq "" && $version eq "" } {
-	    set ports [registry::entry imaged]
-	} elseif { $name ne "" && $version eq ""} {
-	    set ports [registry::entry imaged $name]
-	} else {
-	    set ports {}
-	    set possible_ports [registry::entry imaged $name]
-	    foreach p $possible_ports {
-	        if {"[$p version]_[$p revision][$p variants]" == $version
-	            || [$p version] == $version} {
-	            lappend ports $p
-	        }
-	    }
-	}
+    # If version is "", return all ports of that name. Otherwise, return only
+    # ports that exactly match this version. What we call version here is
+    # version_revision+variants.
+    # The syntax for that can be ambiguous if there's an underscore and dash in
+    # version for example, so we don't attempt to split up the composite
+    # version into its components, we just compare the whole thing.
+    if {$name eq "" && $version eq ""} {
+        set ports [registry::entry imaged]
+    } elseif {$name ne "" && $version eq ""} {
+        set ports [registry::entry imaged $name]
+    } else {
+        set ports {}
+        set possible_ports [registry::entry imaged $name]
+        foreach p $possible_ports {
+            if {"[$p version]_[$p revision][$p variants]" == $version || [$p version] == $version} {
+                lappend ports $p
+            }
+        }
+    }
 
     set rlist [list]
     foreach port $ports {
         lappend rlist [list [$port name] [$port version] [$port revision] [$port variants] [string equal [$port state] "installed"] [$port epoch]]
     }
-	return $rlist
+    return $rlist
 }
 
+##
+# Does nothing.
 proc close_file_map {args} {
 }
 
+##
+# Does nothing.
 proc open_dep_map {args} {
 }
 
-# List all the ports that this port depends on
+##
+# List all ports that a given port (identified by the parameters) depends on.
+# Each of the parameters can be passed as an empty string to ignore them in the
+# search. You should however at least specify name.
+#
+# @param name
+#        The name of the port of interest.
+# @param version
+#        The version of the port of interest.
+# @param revision
+#        The revision of the port of interest.
+# @param variants
+#        The canonical variants string of the port of interest.
+# @return A sorted list without duplicates where each entry is of the form
+#         (dependency, "port", port), where dependency is the name of the
+#         dependency and port is the name of the port that matched the search
+#         criteria.
 proc list_depends {name version revision variants} {
-	set rlist [list]
-	set searchcmd "registry::entry search"
+    set rlist [list]
+    set searchkeys {}
     foreach key {name version revision} {
         if {[set $key] ne ""} {
-            append searchcmd " $key [set $key]"
+            lappend searchkeys $key [set $key]
         }
     }
     if {$variants != 0} {
-        append searchcmd " variants {$variants}"
+        lappend searchkeys "variants" $variants
     }
-    if {[catch {set ports [eval $searchcmd]}]} {
+    if {[catch {set ports [registry::entry search {*}$searchkeys]}]} {
         set ports [list]
     }
     foreach port $ports {
@@ -212,23 +292,41 @@
             lappend rlist [list [$dep name] port [$port name]]
         }
     }
-	
-	return [lsort -unique $rlist]
+
+    return [lsort -unique $rlist]
 }
 
 # List all the ports that depend on this port
+##
+# List all ports that depend on a given port (identified by the parameters).
+# Each of the parameters can be passed as an empty string to ignore them in the
+# search. In practice, you'll always pass at least the name parameter
+# non-empty.
+#
+# @param name
+#        The name of the port of interest.
+# @param version
+#        The version of the port of interest.
+# @param revision
+#        The revision of the port of interest.
+# @param variants
+#        The canonical variants string of the port of interest.
+# @return A sorted list without duplicates where each entry is of the form
+#         (port, "port", dependent), where dependent is the name of the
+#         dependent port and port is the name of the port that matched the
+#         search criteria.
 proc list_dependents {name version revision variants} {
-	set rlist [list]
-	set searchcmd "registry::entry search"
+    set rlist [list]
+    set searchkeys {}
     foreach key {name version revision} {
         if {[set $key] ne ""} {
-            append searchcmd " $key [set $key]"
+            lappend searchkeys $key [set $key]
         }
     }
     if {$variants != 0} {
-        append searchcmd " variants {$variants}"
+        lappend searchkeys "variants" $variants
     }
-    if {[catch {set ports [eval $searchcmd]}]} {
+    if {[catch {set ports [registry::entry search {*}$searchkeys]}]} {
         set ports [list]
     }
     foreach port $ports {
@@ -237,11 +335,36 @@
             lappend rlist [list [$port name] port [$dependent name]]
         }
     }
-	
-	return [lsort -unique $rlist]
+
+    return [lsort -unique $rlist]
 }
 
-# adds a registry entry from a list of keys and values
+##
+# Add a new registry entry from a given list of keys of values. The list should
+# at least contain the keys
+#  \li \c name The name of the port
+#  \li \c epoch The epoch of the port
+#  \li \c version The version of the port
+#  \li \c revision The revision of the port
+#  \li \c variants The canonical variants string of the port
+#  \li \c date The date of installation of this port, probably the current date
+#      and time
+#  \li \c requested 0 or 1 depending on whether this port is a requested port
+#  \li \c location The absolute path to the binary archive of the port
+#  \li \c state The current state of the port, currently either "imaged" or
+#      "installed"
+#  \li \c installtype The type of installation of this port. For new ports,
+#      always "image"
+#  \li \c imagefiles A list of files installed by this port
+#  \li \c files A list of filenames as which the imagefiles should be activated
+#      if state is "installed"
+#  \li \c negated_variants The canonical representation of the negated variants
+#  \li \c os_platform The platform on which the port was installed
+#  \li \c os_major The major version of the OS on which the port was installed
+#  \li \c archs A list of architectures of this port
+#  \li \c depends A list of ports on which the new port depends
+#  \li \c portfile The Portfile used to install this port (note: actual
+#      contents, not the path!)
 proc create_entry_l {proplist} {
     array set props $proplist
     registry::write {


Property changes on: branches/gsoc14-interactive/base/src/registry2.0/receipt_sqlite.tcl
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/gsoc08-privileges/base/src/registry1.0/receipt_sqlite.tcl:37343-46937
/branches/gsoc09-logging/base/src/registry1.0/receipt_sqlite.tcl:51231-60371
/branches/gsoc11-rev-upgrade/base/src/registry2.0/receipt_sqlite.tcl:78828-88375
/branches/gsoc13-tests/src/registry2.0/receipt_sqlite.tcl:106692-111324
/branches/universal-sanity/base/src/registry1.0/receipt_sqlite.tcl:51872-52323
/branches/variant-descs-14482/base/src/registry1.0/receipt_sqlite.tcl:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/users/perry/base-bugs_and_notes/src/registry1.0/receipt_sqlite.tcl:45682-46060
/users/perry/base-select/src/registry1.0/receipt_sqlite.tcl:44044-44692
   + /branches/gsoc08-privileges/base/src/registry1.0/receipt_sqlite.tcl:37343-46937
/branches/gsoc09-logging/base/src/registry1.0/receipt_sqlite.tcl:51231-60371
/branches/gsoc11-rev-upgrade/base/src/registry2.0/receipt_sqlite.tcl:78828-88375
/branches/gsoc13-tests/src/registry2.0/receipt_sqlite.tcl:106692-111324
/branches/universal-sanity/base/src/registry1.0/receipt_sqlite.tcl:51872-52323
/branches/variant-descs-14482/base/src/registry1.0/receipt_sqlite.tcl:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
/trunk/base/src/registry2.0/receipt_sqlite.tcl:57889-64075,119514-123795
/users/perry/base-bugs_and_notes/src/registry1.0/receipt_sqlite.tcl:45682-46060
/users/perry/base-select/src/registry1.0/receipt_sqlite.tcl:44044-44692

Modified: branches/gsoc14-interactive/base/src/registry2.0/tests/depends.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/registry2.0/tests/depends.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/registry2.0/tests/depends.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -6,7 +6,7 @@
     load $pextlibname
 
     # totally lame that file delete won't do it
-	eval exec rm -f [glob -nocomplain test.db*]
+	exec rm -f {*}[glob -nocomplain test.db*]
 
     registry::open test.db
 

Modified: branches/gsoc14-interactive/base/src/registry2.0/tests/entry.tcl
===================================================================
--- branches/gsoc14-interactive/base/src/registry2.0/tests/entry.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/registry2.0/tests/entry.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -7,7 +7,7 @@
     load $pextlibname
 
     # totally lame that file delete won't do it
-    eval exec rm -f [glob -nocomplain test.db*]
+    exec rm -f {*}[glob -nocomplain test.db*]
 
     # can't create registry in some brain-dead place or in protected place
     test_throws {registry::open /some/brain/dead/place} registry::cannot-init

Modified: branches/gsoc14-interactive/base/src/upgrade_sources_conf_default.tcl.in
===================================================================
--- branches/gsoc14-interactive/base/src/upgrade_sources_conf_default.tcl.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/src/upgrade_sources_conf_default.tcl.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -99,7 +99,7 @@
       file rename -force ${sourcesConf} "${sourcesConf}.mpsaved_[clock seconds]"
    }
    file rename ${tempfile} ${sourcesConf}
-   eval file attributes ${sourcesConf} $attributes
+   file attributes ${sourcesConf} {*}$attributes
 } else {
    file delete ${tempfile}
    if {!$defaultSeen} {

Modified: branches/gsoc14-interactive/base/tests/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/tests/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/tests/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -16,3 +16,6 @@
 
 distclean:: clean
 	rm -f Makefile
+	rm -f test.tcl
+	rm -f test/library.tcl
+	rm -f test/trace/test.tcl


Property changes on: branches/gsoc14-interactive/base/tests/test
___________________________________________________________________
Added: svn:ignore
   + library.tcl


Copied: branches/gsoc14-interactive/base/tests/test/library.tcl.in (from rev 123795, trunk/base/tests/test/library.tcl.in)
===================================================================
--- branches/gsoc14-interactive/base/tests/test/library.tcl.in	                        (rev 0)
+++ branches/gsoc14-interactive/base/tests/test/library.tcl.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,167 @@
+eval ::tcltest::configure $::argv
+
+set output_file "output"
+set work_dir "work"
+
+# constraint for tests that should only run on Darwin
+::tcltest::testConstraint darwin [expr {"@OS_PLATFORM@" eq "darwin"}]
+
+# constraint indicating whether the platform supports trace mode
+::tcltest::testConstraint tracemode_support [expr {@TRACEMODE_SUPPORT@ != 0}]
+
+# Set of procs used for testing.
+
+# Sets $bindir variable from autoconf
+proc load_variables {pwd} {
+    global bindir datadir portsrc cpwd
+
+    set cpwd [file dirname [file dirname $pwd]]
+
+    set prefix "@prefix@"
+    set exec_prefix "@exec_prefix@"
+    set bindir "@bindir@"
+    set datadir "@datarootdir@"
+    set portsrc ${cpwd}/test-macports.conf
+
+}
+
+proc cleanup {} {
+    global cpwd
+
+    file delete -force /tmp/macports-tests
+    file delete -force ${cpwd}/PortIndex ${cpwd}/PortIndex.quick
+}
+
+# Sets initial directories
+proc set_dir {} {
+    global datadir cpwd
+
+    cleanup
+
+    file mkdir /tmp/macports-tests/ports \
+               /tmp/macports-tests/opt/local/etc/macports \
+               /tmp/macports-tests/opt/local/share \
+               /tmp/macports-tests/opt/local/var/macports/receipts \
+               /tmp/macports-tests/opt/local/var/macports/registry \
+               /tmp/macports-tests/opt/local/var/macports/build
+
+    file link -symbolic /tmp/macports-tests/opt/local/share/macports $datadir/macports
+    file link -symbolic /tmp/macports-tests/ports/test $cpwd/test
+}
+
+# Run portindex
+proc port_index {} {
+    global bindir datadir cpwd
+
+    # Move up 2 level to run portindex.
+    set path [pwd]
+    cd ../..
+    # Avoid warning about ports tree being old
+    exec sh -c {touch */*/Portfile}
+
+    exec ${bindir}/portindex 2>@1
+
+    file copy ${cpwd}/sources.conf /tmp/macports-tests/opt/local/etc/macports/
+    file copy ${cpwd}/PortIndex ${cpwd}/PortIndex.quick /tmp/macports-tests/ports/
+
+    cd $path
+}
+
+# Executes port clean.
+proc port_clean {pwd} {
+    global bindir datadir portsrc
+
+    set back [pwd]
+    cd $pwd
+
+    catch {exec env PORTSRC=${portsrc} ${bindir}/port clean 2>@1}
+    cd $back
+}
+
+# Runs the portfile.
+proc port_run {pwd} {
+    global bindir datadir portsrc
+
+    set back [pwd]
+    cd $pwd
+
+    set result [catch {exec env PORTSRC=${portsrc} ${bindir}/port -d test >&output} ]
+    cd $back
+    return $result
+}
+
+# Runs port trace.
+proc port_trace {pwd} {
+    global bindir datadir portsrc
+
+    set back [pwd]
+    cd $pwd
+
+    set result [catch {exec env PORTSRC=${portsrc} ${bindir}/port -t test >&output 2>@1} ]
+    cd $back
+    return $result
+}
+
+# Installs new portfile.
+proc port_install {} {
+    global bindir portsrc
+
+    set result [catch {exec env PORTSRC=${portsrc} ${bindir}/port install > output 2>@1} ]
+}
+
+# Run configure command.
+proc port_config {pwd} {
+    global path bindir portsrc
+
+    set result [catch {exec env PORTSRC=${portsrc} ${bindir}/port configure 2>@1} ]
+}
+
+# Run destroot command.
+proc port_destroot {pwd} {
+    global path bindir portsrc work_dir output_file
+
+    file copy -force ${path}/statefile ${work_dir}/.macports.statefile-unknown-version.state
+    if { [exec id -u] == 0 } {
+        exec chown macports ${work_dir}/.macports.statefile-unknown-version.state
+    }
+    set result [catch {exec env PORTSRC=${portsrc} ${bindir}/port destroot >$output_file 2>@1} ]
+}
+
+# Uninstalls portfile.
+proc port_uninstall {} {
+    global bindir portsrc
+
+    set result [catch {exec env PORTSRC=${portsrc} ${bindir}/port uninstall > output 2>@1} ]
+}
+
+# Returns the line containint a given string
+# from a given file, or -1 if nothing is found.
+proc get_line {filename lookup} {
+    set fp [open $filename r]
+
+    while {[gets $fp line] != -1} {
+        set line [string tolower $line]
+
+        if {[string match $lookup $line] != 0} {
+            close $fp
+            return $line
+        }
+    }
+    return -1
+}
+
+# This proc contains all the steps necesary
+# to install a port and save the output to a file.
+# Needed for the majority of regression tests.
+proc initial_setup {} {
+    global output_file work_dir path
+
+    makeFile "" $output_file
+    makeDirectory $work_dir
+
+    load_variables $path
+    set_dir
+    port_index
+    port_clean $path
+    port_run $path
+}


Property changes on: branches/gsoc14-interactive/base/tests/test/trace
___________________________________________________________________
Modified: svn:ignore
   - output

   + output
test.tcl


Deleted: branches/gsoc14-interactive/base/tests/test/trace/test.tcl
===================================================================
--- branches/gsoc14-interactive/base/tests/test/trace/test.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/tests/test/trace/test.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -1,69 +0,0 @@
-package require tcltest 2
-
-# need pextlib to drop privs
-package require Pextlib 1.0
-
-namespace import tcltest::*
-
-source [file dirname $argv0]/../library.tcl
-
-makeFile "" $output_file
-makeDirectory $work_dir
-set path [file dirname [file normalize $argv0]]
-
-load_variables $path
-
-proc test_trace {} {
-    global path autoconf output_file
-
-    set line [get_line $autoconf "runusr*"]
-    set user [lrange [split $line " "] 1 1]
-
-    set_dir
-    port_index
-    port_clean $path
-
-    file delete -force /tmp/hello-trace
-    file delete -force /tmp/link-trace2
-    file link -symbolic /tmp/link-trace2 /usr/include/unistd.h
-
-    makeDirectory ../tracetesttmp
-    if {[getuid] == 0} {
-        file attributes ../tracetesttmp -owner $user
-        exec chown -h $user /tmp/link-trace2
-    }
-
-    if {[getuid] == 0} {
-        seteuid [name_to_uid $user]
-    }
-    exec touch  ../tracetesttmp/delete-trace
-    exec touch ../tracetesttmp/rename-trace
-    exec mkdir ../tracetesttmp/rmdir-trace
-    if {[getuid] == 0} {
-        seteuid 0
-    }
-
-    port_trace $path
-
-    file delete -force /tmp/link-trace2
-    file delete -force /tmp/hello-trace
-
-    set err "error*"
-    set line [get_line $path/$output_file $err]
-    set unsupported [get_line $path/$output_file "*tracelib not supported on this platform*"]
-    if {$unsupported != -1 || $line == -1} {
-        return "No errors found."
-    } else {
-        return $line
-    }
-}
-
-test trace {
-    Regression test for trace.
-} -body {
-    test_trace
-} -result "No errors found."
-
-
-cleanup
-cleanupTests

Copied: branches/gsoc14-interactive/base/tests/test/trace/test.tcl.in (from rev 123795, trunk/base/tests/test/trace/test.tcl.in)
===================================================================
--- branches/gsoc14-interactive/base/tests/test/trace/test.tcl.in	                        (rev 0)
+++ branches/gsoc14-interactive/base/tests/test/trace/test.tcl.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -0,0 +1,70 @@
+package require tcltest 2
+
+# need pextlib to drop privs
+package require Pextlib 1.0
+
+namespace import tcltest::*
+
+source [file dirname $argv0]/../library.tcl
+
+makeFile "" $output_file
+makeDirectory $work_dir
+set path [file dirname [file normalize $argv0]]
+
+load_variables $path
+
+proc test_trace {} {
+    global path output_file
+
+    set user "@RUNUSR@"
+
+    set_dir
+    port_index
+    port_clean $path
+
+    file delete -force /tmp/hello-trace
+    file delete -force /tmp/link-trace2
+    file link -symbolic /tmp/link-trace2 /usr/include/unistd.h
+
+    makeDirectory ../tracetesttmp
+    if {[getuid] == 0} {
+        file attributes ../tracetesttmp -owner $user
+        exec chown -h $user /tmp/link-trace2
+    }
+
+    if {[getuid] == 0} {
+        seteuid [name_to_uid $user]
+    }
+    exec touch  ../tracetesttmp/delete-trace
+    exec touch ../tracetesttmp/rename-trace
+    exec mkdir ../tracetesttmp/rmdir-trace
+    if {[getuid] == 0} {
+        seteuid 0
+    }
+
+    port_trace $path
+
+    file delete -force /tmp/link-trace2
+    file delete -force /tmp/hello-trace
+
+    set err "error*"
+    set line [get_line $path/$output_file $err]
+    set unsupported [get_line $path/$output_file "*tracelib not supported on this platform*"]
+    if {$unsupported != -1 || $line == -1} {
+        return "No errors found."
+    } else {
+        return $line
+    }
+}
+
+test trace {
+    Regression test for trace.
+} -constraints {
+    tracemode_support
+} -body {
+    test_trace
+} -result "No errors found."
+
+
+cleanup
+cleanupTests

Modified: branches/gsoc14-interactive/base/tests/test/universal/test.tcl
===================================================================
--- branches/gsoc14-interactive/base/tests/test/universal/test.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/tests/test/universal/test.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -38,6 +38,8 @@
 
 test universal {
     Regression test for universal variant.
+} -constraints {
+    darwin
 } -body {
     univ_test "yes"
 } -result "variants: universal"

Modified: branches/gsoc14-interactive/base/tests/test/xcodeversion/Portfile
===================================================================
--- branches/gsoc14-interactive/base/tests/test/xcodeversion/Portfile	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/tests/test/xcodeversion/Portfile	2014-08-14 18:17:24 UTC (rev 123796)
@@ -19,9 +19,6 @@
 }
 
 test {
-    # rpm-vercomp is now deprecated, change it here too when removed
-    # from all ports and base (but keep this test here, meanwhile...)
-    # rpm-vercomp removed from ports r89810, from base r89811
     if {$xcodeversion != "" && [vercmp $xcodeversion 2.1] >= 0} {
         ui_msg "xcodeversion >= 2.1"
     } else {

Modified: branches/gsoc14-interactive/base/tests/test/xcodeversion/test.tcl
===================================================================
--- branches/gsoc14-interactive/base/tests/test/xcodeversion/test.tcl	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/tests/test/xcodeversion/test.tcl	2014-08-14 18:17:24 UTC (rev 123796)
@@ -24,12 +24,16 @@
 
 test envvariables {
     Regression test for XCode version.
+} -constraints {
+    darwin
 } -body {
     xcode_ver
 } -result "xcodeversion >= 2.1"
 
 test xcode_path {
     Regression test for XCode path.
+} -constraints {
+    darwin
 } -body {
     xcode_binpath
 } -result "xcodebuildcmd = /usr/bin/xcodebuild"

Modified: branches/gsoc14-interactive/base/tests/test.tcl.in
===================================================================
--- branches/gsoc14-interactive/base/tests/test.tcl.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/tests/test.tcl.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -15,13 +15,12 @@
     statefile-version2-invalid
     statefile-version2-outdated
     svn-and-patchsites
+    trace
     universal
     variants
     xcodeversion
 }
-if {@TRACEMODE_SUPPORT@ != 0} {
-	lappend test_suite trace
-}
+
 set arguments ""
 set test_name ""
 set color_out ""
@@ -29,13 +28,7 @@
 set err ""
 
 # Get tclsh path.
-set autoconf ../Mk/macports.autoconf.mk
-set fp [open $autoconf r]
-while {[gets $fp line] != -1} {
-    if {[string match "TCLSH*" $line] != 0} {
-        set tcl [lrange [split $line " "] 1 1]
-    }
-}
+set tcl "@TCLSH@"
 
 proc print_help {arg} {
     if { $arg eq "tests" } {

Modified: branches/gsoc14-interactive/base/vendor/Makefile.in
===================================================================
--- branches/gsoc14-interactive/base/vendor/Makefile.in	2014-08-14 17:08:23 UTC (rev 123795)
+++ branches/gsoc14-interactive/base/vendor/Makefile.in	2014-08-14 18:17:24 UTC (rev 123796)
@@ -23,53 +23,59 @@
 
 %-tcl:
 	@echo ===\> making $(@:%-tcl=%) in ${DIRPRFX}@VENDOR_TCL_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCL_SUBDIR@ $(@:%-tcl=%)
+	@umask 0022; $(MAKE) -C @VENDOR_TCL_SUBDIR@ $(@:%-tcl=%)
 
 %-tclthread:
-	@echo ===\> making $(@:%-tclthrad=%) in ${DIRPRFX}@VENDOR_TCLTHREAD_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCLTHREAD_SUBDIR@ $(@:%-tclthread=%)
+	@echo ===\> making $(@:%-tclthread=%) in ${DIRPRFX}@VENDOR_TCLTHREAD_SUBDIR@
+	@umask 0022; $(MAKE) -C @VENDOR_TCLTHREAD_SUBDIR@ $(@:%-tclthread=%)
 
+# thread links against libtclstub
+all-tclthread: all-tcl
+
 %-tclx:
 	@echo ===\> making $(@:%-tclx=%) in ${DIRPRFX}@VENDOR_TCLX_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCLX_SUBDIR@ $(@:%-tclx=%)
+	@umask 0022; $(MAKE) -C @VENDOR_TCLX_SUBDIR@ $(@:%-tclx=%)
 
+# tclx also links against libtclstub
+all-tclx: all-tcl
+
 %-tcllib:
 	@echo ===\> making $(@:%-tcllib=%) in ${DIRPRFX}@VENDOR_TCLLIB_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCLLIB_SUBDIR@ $(@:%-tcllib=%)
+	@umask 0022; $(MAKE) -C @VENDOR_TCLLIB_SUBDIR@ $(@:%-tcllib=%)
 
 destroot: destroot-tcl destroot-tclthread destroot-tclx destroot-tcllib
 destroot-tcl: all-tcl
 	@echo ===\> staging to destroot in ${DIRPRFX}@VENDOR_TCL_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCL_SUBDIR@ DESTDIR=${DESTROOT} @VENDOR_TCL_INSTALL@
+	@umask 0022; $(MAKE) -C @VENDOR_TCL_SUBDIR@ DESTDIR=${DESTROOT} @VENDOR_TCL_INSTALL@
 
 destroot-tclthread: all-tclthread
 	@echo ===\> staging to destroot in ${DIRPRFX}@VENDOR_TCLTHREAD_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCLTHREAD_SUBDIR@ DESTDIR=${DESTROOT} @VENDOR_TCLTHREAD_INSTALL@
+	@umask 0022; $(MAKE) -C @VENDOR_TCLTHREAD_SUBDIR@ DESTDIR=${DESTROOT} @VENDOR_TCLTHREAD_INSTALL@
 
 destroot-tclx: all-tclx
 	@echo ===\> staging to destroot in ${DIRPRFX}@VENDOR_TCLX_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCLX_SUBDIR@ DESTDIR=${DESTROOT} @VENDOR_TCLX_INSTALL@
+	@umask 0022; $(MAKE) -C @VENDOR_TCLX_SUBDIR@ DESTDIR=${DESTROOT} @VENDOR_TCLX_INSTALL@
 
 destroot-tcllib: all-tcllib
 	@echo ===\> staging to destroot in ${DIRPRFX}@VENDOR_TCLLIB_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCLLIB_SUBDIR@ DESTDIR=${DESTROOT} @VENDOR_TCLLIB_INSTALL@
+	@umask 0022; $(MAKE) -C @VENDOR_TCLLIB_SUBDIR@ DESTDIR=${DESTROOT} @VENDOR_TCLLIB_INSTALL@
 
 install: install-tcl install-tclthread install-tclx install-tcllib
 install-tcl:
 	@echo ===\> making $(@:%-tcl=%) in ${DIRPRFX}@VENDOR_TCL_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCL_SUBDIR@ @VENDOR_TCL_INSTALL@
+	@umask 0022; $(MAKE) -C @VENDOR_TCL_SUBDIR@ @VENDOR_TCL_INSTALL@
 
 install-tclthread:
 	@echo ===\> making $(@:%-tclthrad=%) in ${DIRPRFX}@VENDOR_TCLTHREAD_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCLTHREAD_SUBDIR@ @VENDOR_TCLTHREAD_INSTALL@
+	@umask 0022; $(MAKE) -C @VENDOR_TCLTHREAD_SUBDIR@ @VENDOR_TCLTHREAD_INSTALL@
 
 install-tclx:
 	@echo ===\> making $(@:%-tclx=%) in ${DIRPRFX}@VENDOR_TCLX_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCLX_SUBDIR@ @VENDOR_TCLX_INSTALL@
+	@umask 0022; $(MAKE) -C @VENDOR_TCLX_SUBDIR@ @VENDOR_TCLX_INSTALL@
 
 install-tcllib:
 	@echo ===\> making $(@:%-tcllib=%) in ${DIRPRFX}@VENDOR_TCLLIB_SUBDIR@
-	@$(MAKE) -C @VENDOR_TCLLIB_SUBDIR@ @VENDOR_TCLLIB_INSTALL@
+	@umask 0022; $(MAKE) -C @VENDOR_TCLLIB_SUBDIR@ @VENDOR_TCLLIB_INSTALL@
 
 test:
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20140814/1e82677d/attachment-0001.html>


More information about the macports-changes mailing list