[39000] branches/gsoc08-privileges/base

pmagrath at macports.org pmagrath at macports.org
Tue Aug 5 13:25:51 PDT 2008


Revision: 39000
          http://trac.macosforge.org/projects/macports/changeset/39000
Author:   pmagrath at macports.org
Date:     2008-08-05 13:25:51 -0700 (Tue, 05 Aug 2008)
Log Message:
-----------
Merged revisions 38683-38684,38753,38756,38765,38835,38883,38940-38942,38960-38961,38973 via svnmerge from 
https://svn.macosforge.org/repository/macports/trunk/base

........
  r38683 | febeling at macports.org | 2008-07-28 22:21:33 +0100 (Mon, 28 Jul 2008) | 9 lines
  
  Support for ruby19 ports in the ruby port group.
  
  The command ruby.setup accepts an new optional
  parameter "implementation", which is ruby18 by
  default, and can also be ruby19. (As more ruby
  implementations appear these may be added as
  well.) Unit tests are in the new sub-directory
  tests/.
........
  r38684 | febeling at macports.org | 2008-07-28 22:32:47 +0100 (Mon, 28 Jul 2008) | 2 lines
  
  ChangeLog for ruby group change, #15912.
........
  r38753 | afb at macports.org | 2008-07-30 08:30:39 +0100 (Wed, 30 Jul 2008) | 2 lines
  
  update changelog for r38577
........
  r38756 | afb at macports.org | 2008-07-30 11:13:23 +0100 (Wed, 30 Jul 2008) | 2 lines
  
  unbreak test case when ruby19 is not installed or not running leopard
........
  r38765 | toby at macports.org | 2008-07-30 20:59:14 +0100 (Wed, 30 Jul 2008) | 2 lines
  
  fix distclean
........
  r38835 | febeling at macports.org | 2008-08-01 09:47:58 +0100 (Fri, 01 Aug 2008) | 2 lines
  
  remove hard-coded mp prefix in test case setup
........
  r38883 | wsiegrist at apple.com | 2008-08-02 00:53:41 +0100 (Sat, 02 Aug 2008) | 2 lines
  
  Make the guide chunkier at <http://guide.macports.org/chunked/>
........
  r38940 | raimue at macports.org | 2008-08-03 09:05:42 +0100 (Sun, 03 Aug 2008) | 4 lines
  
  pextlib1.0:
  Add a wrapper for isatty(3). Add term_get_size to find the size of a connected
  terminal for a channel using ioctl(2).
........
  r38941 | raimue at macports.org | 2008-08-03 09:10:26 +0100 (Sun, 03 Aug 2008) | 4 lines
  
  port/port.tcl:
  Use isatty and term_get_size from pextlib to determine the size of the
  connected terminal. This requires the Pextlib package.
........
  r38942 | raimue at macports.org | 2008-08-03 09:19:05 +0100 (Sun, 03 Aug 2008) | 3 lines
  
  pextlib1.0/tty.c:
  Tabs to spaces
........
  r38960 | afb at macports.org | 2008-08-04 10:23:00 +0100 (Mon, 04 Aug 2008) | 2 lines
  
  add use_lzma for .tar.lzma support
........
  r38961 | afb at macports.org | 2008-08-04 10:29:00 +0100 (Mon, 04 Aug 2008) | 2 lines
  
  fix typo
........
  r38973 | jmr at macports.org | 2008-08-04 17:11:28 +0100 (Mon, 04 Aug 2008) | 2 lines
  
  mirror sites: order sourceforge mirrors more or less geographically
........

Modified Paths:
--------------
    branches/gsoc08-privileges/base/ChangeLog
    branches/gsoc08-privileges/base/Makefile.in
    branches/gsoc08-privileges/base/configure
    branches/gsoc08-privileges/base/configure.ac
    branches/gsoc08-privileges/base/doc/portfile.7
    branches/gsoc08-privileges/base/portmgr/jobs/GuideRegen.sh
    branches/gsoc08-privileges/base/src/pextlib1.0/Makefile
    branches/gsoc08-privileges/base/src/pextlib1.0/Pextlib.c
    branches/gsoc08-privileges/base/src/port/port.tcl
    branches/gsoc08-privileges/base/src/port1.0/portextract.tcl
    branches/gsoc08-privileges/base/src/port1.0/portfetch.tcl
    branches/gsoc08-privileges/base/src/port1.0/resources/fetch/mirror_sites.tcl
    branches/gsoc08-privileges/base/src/port1.0/resources/group/Makefile
    branches/gsoc08-privileges/base/src/port1.0/resources/group/ruby-1.0.tcl

Added Paths:
-----------
    branches/gsoc08-privileges/base/src/pextlib1.0/tty.c
    branches/gsoc08-privileges/base/src/pextlib1.0/tty.h
    branches/gsoc08-privileges/base/src/port1.0/resources/group/tests/
    branches/gsoc08-privileges/base/src/port1.0/resources/group/tests/ruby-1.0.tcl

Removed Paths:
-------------
    branches/gsoc08-privileges/base/src/port1.0/resources/group/tests/ruby-1.0.tcl

Property Changed:
----------------
    branches/gsoc08-privileges/base/


Property changes on: branches/gsoc08-privileges/base
___________________________________________________________________
Name: svnmerge-integrated
   - /trunk/base:1-38640
   + /trunk/base:1-38999

Modified: branches/gsoc08-privileges/base/ChangeLog
===================================================================
--- branches/gsoc08-privileges/base/ChangeLog	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/ChangeLog	2008-08-05 20:25:51 UTC (rev 39000)
@@ -5,6 +5,14 @@
 
 
 Unreleased:
+    - Ruby port group now accepts a new (optional) last parameter for the
+      ruby.setup command, "implementation". It is "ruby" by default, and 
+      can be set to "ruby19". It names the ruby-implementing port, and can
+      possibly support still other rubys in the future. (#15912, febeling 
+      in 38683)
+	
+    - Don't use build.nice for complex build.cmd commands (#16091)
+
     - The buildmakejobs setting now also affects ports using the scons build
       system, so now scons-based ports can be built in parallel too. Previously
       only automake-based ports were supported. (ryandesign in r38556)

Modified: branches/gsoc08-privileges/base/Makefile.in
===================================================================
--- branches/gsoc08-privileges/base/Makefile.in	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/Makefile.in	2008-08-05 20:25:51 UTC (rev 39000)
@@ -57,6 +57,7 @@
 	rm -rf autom4te.cache ${DISTDIR}
 	rm -f Makefile Mk/macports.autoconf.mk portmgr/fedora/macports.spec portmgr/freebsd/Makefile
 	rm -f Doxyfile
+	rm -f setupenv.bash
 
 _gettag:
 	cd ${DISTDIR}; svn co ${SVNURL}/tags/${SVNTAG} ${PKGNAME}-svn

Modified: branches/gsoc08-privileges/base/configure
===================================================================
--- branches/gsoc08-privileges/base/configure	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/configure	2008-08-05 20:25:51 UTC (rev 39000)
@@ -12386,6 +12386,8 @@
 test "x$mpprefix" = "xNONE" && mpprefix=$ac_default_prefix
 if false && test -d /etc/paths.d -a -d /etc/manpaths.d -a "$mpprefix" = "$ac_default_prefix"; then
 	PATHCONF=pathconf
+	ac_config_files="$ac_config_files src/pathconf/Makefile src/pathconf/paths src/pathconf/manpaths"
+
 	{ echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 else
@@ -12474,7 +12476,7 @@
 
 
 # Output
-ac_config_files="$ac_config_files Doxyfile Makefile Mk/macports.autoconf.mk doc/prefix.mtree doc/macosx.mtree doc/macports.conf portmgr/freebsd/Makefile portmgr/fedora/macports.spec src/Makefile src/macports1.0/macports_autoconf.tcl src/tclobjc1.0/Makefile src/pathconf/Makefile src/pathconf/paths src/pathconf/manpaths src/port1.0/port_autoconf.tcl src/registry1.0/registry_autoconf.tcl src/programs/Makefile src/macports1.0/macports_fastload.tcl setupenv.bash"
+ac_config_files="$ac_config_files Doxyfile Makefile Mk/macports.autoconf.mk doc/prefix.mtree doc/macosx.mtree doc/macports.conf portmgr/freebsd/Makefile portmgr/fedora/macports.spec src/Makefile src/macports1.0/macports_autoconf.tcl src/tclobjc1.0/Makefile src/port1.0/port_autoconf.tcl src/registry1.0/registry_autoconf.tcl src/programs/Makefile src/macports1.0/macports_fastload.tcl setupenv.bash"
 
 
 cat >confcache <<\_ACEOF
@@ -13032,6 +13034,9 @@
   case $ac_config_target in
     "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
     "src/programs/daemondo/Makefile") CONFIG_FILES="$CONFIG_FILES src/programs/daemondo/Makefile" ;;
+    "src/pathconf/Makefile") CONFIG_FILES="$CONFIG_FILES src/pathconf/Makefile" ;;
+    "src/pathconf/paths") CONFIG_FILES="$CONFIG_FILES src/pathconf/paths" ;;
+    "src/pathconf/manpaths") CONFIG_FILES="$CONFIG_FILES src/pathconf/manpaths" ;;
     "Doxyfile") CONFIG_FILES="$CONFIG_FILES Doxyfile" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "Mk/macports.autoconf.mk") CONFIG_FILES="$CONFIG_FILES Mk/macports.autoconf.mk" ;;
@@ -13043,9 +13048,6 @@
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
     "src/macports1.0/macports_autoconf.tcl") CONFIG_FILES="$CONFIG_FILES src/macports1.0/macports_autoconf.tcl" ;;
     "src/tclobjc1.0/Makefile") CONFIG_FILES="$CONFIG_FILES src/tclobjc1.0/Makefile" ;;
-    "src/pathconf/Makefile") CONFIG_FILES="$CONFIG_FILES src/pathconf/Makefile" ;;
-    "src/pathconf/paths") CONFIG_FILES="$CONFIG_FILES src/pathconf/paths" ;;
-    "src/pathconf/manpaths") CONFIG_FILES="$CONFIG_FILES src/pathconf/manpaths" ;;
     "src/port1.0/port_autoconf.tcl") CONFIG_FILES="$CONFIG_FILES src/port1.0/port_autoconf.tcl" ;;
     "src/registry1.0/registry_autoconf.tcl") CONFIG_FILES="$CONFIG_FILES src/registry1.0/registry_autoconf.tcl" ;;
     "src/programs/Makefile") CONFIG_FILES="$CONFIG_FILES src/programs/Makefile" ;;

Modified: branches/gsoc08-privileges/base/configure.ac
===================================================================
--- branches/gsoc08-privileges/base/configure.ac	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/configure.ac	2008-08-05 20:25:51 UTC (rev 39000)
@@ -341,6 +341,7 @@
 test "x$mpprefix" = "xNONE" && mpprefix=$ac_default_prefix
 if false && test -d /etc/paths.d -a -d /etc/manpaths.d -a "$mpprefix" = "$ac_default_prefix"; then
 	PATHCONF=pathconf
+	AC_CONFIG_FILES([src/pathconf/Makefile src/pathconf/paths src/pathconf/manpaths])
 	AC_MSG_RESULT([yes])
 else
 	AC_MSG_RESULT([no])
@@ -410,9 +411,6 @@
 	src/Makefile
 	src/macports1.0/macports_autoconf.tcl
 	src/tclobjc1.0/Makefile
-	src/pathconf/Makefile
-	src/pathconf/paths
-	src/pathconf/manpaths
 	src/port1.0/port_autoconf.tcl
 	src/registry1.0/registry_autoconf.tcl
 	src/programs/Makefile

Modified: branches/gsoc08-privileges/base/doc/portfile.7
===================================================================
--- branches/gsoc08-privileges/base/doc/portfile.7	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/doc/portfile.7	2008-08-05 20:25:51 UTC (rev 39000)
@@ -612,7 +612,7 @@
 .It Ic use_bzip2
 Use bzip2.
 .br
-Sets extract.suffix to: .bzip2
+Sets extract.suffix to: .bz2
 .br
 Sets extract.cmd to: bzip2
 .br
@@ -621,6 +621,18 @@
 .br
 .Sy Example:
 .Dl use_bzip2 yes
+.It Ic use_lzma
+Use lzma.
+.br
+Sets extract.suffix to: .lzma
+.br
+Sets extract.cmd to: lzma
+.br
+.Sy Type:
+.Em optional
+.br
+.Sy Example:
+.Dl use_lzma yes
 .It Ic dist_subdir
 Create a sub-directory in
 .Ic distpath

Modified: branches/gsoc08-privileges/base/portmgr/jobs/GuideRegen.sh
===================================================================
--- branches/gsoc08-privileges/base/portmgr/jobs/GuideRegen.sh	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/portmgr/jobs/GuideRegen.sh	2008-08-05 20:25:51 UTC (rev 39000)
@@ -61,9 +61,13 @@
         || { echo "Checking out the doc tree from $REPO_BASE/trunk/doc-new failed." >> $FAILURE_LOG; bail ; }
 fi
 
-# (re)build
+# build single html version
 { cd ${SRCTREE}/doc-new && $MAKE guide > $FAILURE_LOG 2>&1 ; } \
     || { echo "make failed." >> $FAILURE_LOG ; bail ; }
 
+# build chunked version 
+{ cd ${SRCTREE}/doc-new && $MAKE guide-chunked > $FAILURE_LOG 2>&1 ; } \
+    || { echo "make failed." >> $FAILURE_LOG ; bail ; }
+
 # At this point the guide was regen'd successfuly, so we cleanup before we exit.
 cleanup && exit 0

Modified: branches/gsoc08-privileges/base/src/pextlib1.0/Makefile
===================================================================
--- branches/gsoc08-privileges/base/src/pextlib1.0/Makefile	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/src/pextlib1.0/Makefile	2008-08-05 20:25:51 UTC (rev 39000)
@@ -1,7 +1,7 @@
 OBJS=		Pextlib.o strsed.o fgetln.o md5cmd.o setmode.o xinstall.o \
 		fs-traverse.o strcasecmp.o vercomp.o filemap.o \
 		sha1cmd.o compat.o curl.o rmd160cmd.o readline.o uid.o\
-		tracelib.o
+		tracelib.o tty.o
 SHLIB_NAME=	Pextlib${SHLIB_SUFFIX}
 INSTALLDIR= ${DESTDIR}${datadir}/macports/Tcl/pextlib1.0
 export MACOSX_DEPLOYMENT_TARGET=10.3

Modified: branches/gsoc08-privileges/base/src/pextlib1.0/Pextlib.c
===================================================================
--- branches/gsoc08-privileges/base/src/pextlib1.0/Pextlib.c	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/src/pextlib1.0/Pextlib.c	2008-08-05 20:25:51 UTC (rev 39000)
@@ -114,6 +114,7 @@
 #include "readline.h"
 #include "uid.h"
 #include "tracelib.h"
+#include "tty.h"
 
 #if HAVE_CRT_EXTERNS_H
 #include <crt_externs.h>
@@ -1214,6 +1215,8 @@
 	Tcl_CreateObjCommand(interp, "gid_to_name", gid_to_nameCmd, NULL, NULL);
 	
 	Tcl_CreateObjCommand(interp, "tracelib", TracelibCmd, NULL, NULL);
+	Tcl_CreateObjCommand(interp, "isatty", IsattyCmd, NULL, NULL);
+	Tcl_CreateObjCommand(interp, "term_get_size", TermGetSizeCmd, NULL, NULL);
 
 	if (Tcl_PkgProvide(interp, "Pextlib", "1.0") != TCL_OK)
 		return TCL_ERROR;

Copied: branches/gsoc08-privileges/base/src/pextlib1.0/tty.c (from rev 38973, trunk/base/src/pextlib1.0/tty.c)
===================================================================
--- branches/gsoc08-privileges/base/src/pextlib1.0/tty.c	                        (rev 0)
+++ branches/gsoc08-privileges/base/src/pextlib1.0/tty.c	2008-08-05 20:25:51 UTC (rev 39000)
@@ -0,0 +1,124 @@
+/*
+ * tty.c
+ * $Id$
+ * Tcl wrappers for tty control functions
+ *
+ * Author: Rainer Mueller <raimue at macports.org>
+ *
+ * Copyright (c) 2008 Rainer Mueller <raimue at macports.org>
+ * 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 Computer, 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.
+ */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <sys/ioctl.h>
+
+#include <tcl.h>
+
+int IsattyCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
+{
+        Tcl_Obj *tcl_result;
+        Tcl_Channel chan;
+        int dir;
+        int fd;
+        int rval;
+
+        if (objc != 2) {
+            Tcl_WrongNumArgs(interp, 1, objv, "channel");
+            return TCL_ERROR;
+        }
+
+        chan = Tcl_GetChannel(interp, Tcl_GetString(objv[1]), &dir);
+        if (chan == NULL) {
+            Tcl_SetResult(interp, "no such channel", TCL_STATIC);
+            return TCL_ERROR;
+        }
+
+        if (Tcl_GetChannelHandle(chan,
+                dir & TCL_READABLE ? TCL_READABLE : TCL_WRITABLE,
+                (ClientData*) &fd) == TCL_ERROR) {
+            return TCL_ERROR;
+        }
+
+        rval = isatty(fd);
+
+        tcl_result = Tcl_NewIntObj(rval);
+        Tcl_SetObjResult(interp, tcl_result);
+
+        return TCL_OK;
+}
+
+int TermGetSizeCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
+{
+        Tcl_Obj *tcl_result;
+        Tcl_Channel chan;
+        int dir;
+        int fd;
+        Tcl_Obj *robjv[2];
+        struct winsize ws = {0, 0, 0, 0};
+
+        if (objc != 2) {
+                Tcl_WrongNumArgs(interp, 1, objv, "channel");
+                return TCL_ERROR;
+        }
+
+        chan = Tcl_GetChannel(interp, Tcl_GetString(objv[1]), &dir);
+        if (chan == NULL) {
+            Tcl_SetResult(interp, "no such channel", TCL_STATIC);
+            return TCL_ERROR;
+        }
+
+        if (Tcl_GetChannelHandle(chan,
+                dir & TCL_READABLE ? TCL_READABLE : TCL_WRITABLE,
+                (ClientData*) &fd) == TCL_ERROR) {
+            return TCL_ERROR;
+        }
+
+        if (!isatty(fd)) {
+            Tcl_SetResult(interp, "channel is not connected to a tty", TCL_STATIC);
+            return TCL_ERROR;
+        }
+
+        if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == -1) {
+            Tcl_SetResult(interp, "ioctl failed", TCL_STATIC);
+            return TCL_ERROR;
+        }
+
+        robjv[0] = Tcl_NewIntObj(ws.ws_row);
+        robjv[1] = Tcl_NewIntObj(ws.ws_col);
+
+        tcl_result = Tcl_NewListObj(2, robjv);
+        Tcl_SetObjResult(interp, tcl_result);
+
+        return TCL_OK;
+}

Copied: branches/gsoc08-privileges/base/src/pextlib1.0/tty.h (from rev 38973, trunk/base/src/pextlib1.0/tty.h)
===================================================================
--- branches/gsoc08-privileges/base/src/pextlib1.0/tty.h	                        (rev 0)
+++ branches/gsoc08-privileges/base/src/pextlib1.0/tty.h	2008-08-05 20:25:51 UTC (rev 39000)
@@ -0,0 +1,53 @@
+/*
+ * tty.h
+ * $Id$
+ * Tcl wrappers for tty control functions
+ *
+ * Author: Rainer Mueller <raimue at macports.org>
+ *
+ * Copyright (c) 2008 Rainer Mueller <raimue at macports.org>
+ * 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 Computer, 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.
+ */
+
+#ifndef _PEXTLIB_TTY_H
+#define _PEXTLIB_TTY_H
+
+#include <tcl.h>
+
+/**
+ * A wrapper for isatty(3)
+ */
+int IsattyCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
+
+/**
+ * Determines current size of tty
+ *
+ * @returns list with 2 elements, rows and columns
+ */
+int TermGetSizeCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
+
+#endif /* _PEXTLIB_TTY_H */

Modified: branches/gsoc08-privileges/base/src/port/port.tcl
===================================================================
--- branches/gsoc08-privileges/base/src/port/port.tcl	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/src/port/port.tcl	2008-08-05 20:25:51 UTC (rev 39000)
@@ -41,6 +41,7 @@
 catch {source \
     [file join "@TCL_PACKAGE_DIR@" macports1.0 macports_fastload.tcl]}
 package require macports
+package require Pextlib 1.0
 
 
 # Standard procedures
@@ -404,14 +405,20 @@
 
 ##
 # Makes sure we get the current terminal size
-proc set_term_size {} {
+proc term_init_size {} {
     global env
 
     if {![info exists env(COLUMNS)] || ![info exists env(LINES)]} {
-        if {![catch {exec stty size} err]} {
-            regexp {(\d+) (\d+)} $err -> rows cols
-            set env(COLUMNS) $cols
-            set env(LINES) $rows
+        if {[isatty stdout]} {
+            set size [term_get_size stdout]
+
+            if {![info exists env(LINES)]} {
+                set env(LINES) [lindex $size 0]
+            }
+
+            if {![info exists env(COLUMNS)]} {
+                set env(COLUMNS) [lindex $size 1]
+            }
         }
     }
 }
@@ -3161,7 +3168,7 @@
 
 # Make sure we get the size of the terminal
 # We do this here to save it in the boot_env, in case we determined it manually
-set_term_size
+term_init_size
 
 # Save off a copy of the environment before mportinit monkeys with it
 global env boot_env

Modified: branches/gsoc08-privileges/base/src/port1.0/portextract.tcl
===================================================================
--- branches/gsoc08-privileges/base/src/port1.0/portextract.tcl	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/src/port1.0/portextract.tcl	2008-08-05 20:25:51 UTC (rev 39000)
@@ -58,7 +58,7 @@
 set_ui_prefix
 
 proc extract_init {args} {
-    global extract.only extract.dir extract.cmd extract.pre_args extract.post_args extract.mkdir distfiles use_bzip2 use_zip use_dmg workpath
+    global extract.only extract.dir extract.cmd extract.pre_args extract.post_args extract.mkdir distfiles use_bzip2 use_lzma use_zip use_dmg workpath
 
     # should the distfiles be extracted to worksrcpath instead?
     if {[tbool extract.mkdir]} {
@@ -70,6 +70,8 @@
 
     if {[tbool use_bzip2]} {
 	option extract.cmd [binaryInPath "bzip2"]
+    } elseif {[tbool use_lzma]} {
+	option extract.cmd [binaryInPath "lzma"]
     } elseif {[tbool use_zip]} {
 	option extract.cmd [binaryInPath "unzip"]
 	option extract.pre_args -q

Modified: branches/gsoc08-privileges/base/src/port1.0/portfetch.tcl
===================================================================
--- branches/gsoc08-privileges/base/src/port1.0/portfetch.tcl	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/src/port1.0/portfetch.tcl	2008-08-05 20:25:51 UTC (rev 39000)
@@ -100,6 +100,7 @@
 
 # Option-executed procedures
 option_proc use_bzip2 fix_extract_suffix
+option_proc use_lzma fix_extract_suffix
 option_proc use_zip fix_extract_suffix
 option_proc use_dmg fix_extract_suffix
 
@@ -110,6 +111,9 @@
             use_bzip2 {
                 set extract.suffix .tar.bz2
             }
+            use_lzma {
+                set extract.suffix .tar.lzma
+            }
             use_zip {
                 set extract.suffix .zip
             }

Modified: branches/gsoc08-privileges/base/src/port1.0/resources/fetch/mirror_sites.tcl
===================================================================
--- branches/gsoc08-privileges/base/src/port1.0/resources/fetch/mirror_sites.tcl	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/src/port1.0/resources/fetch/mirror_sites.tcl	2008-08-05 20:25:51 UTC (rev 39000)
@@ -258,21 +258,25 @@
 
 set portfetch::mirror_sites::sites(sourceforge) {
     http://downloads.sourceforge.net/
-    http://internode.dl.sourceforge.net/
     http://easynews.dl.sourceforge.net/
+    http://internap.dl.sourceforge.net/
+    http://superb-east.dl.sourceforge.net/
+    http://superb-west.dl.sourceforge.net/
+    http://voxel.dl.sourceforge.net/
     http://ufpr.dl.sourceforge.net/
+    http://dfn.dl.sourceforge.net/
+    http://garr.dl.sourceforge.net/
+    http://heanet.dl.sourceforge.net/
     http://kent.dl.sourceforge.net/
-    http://jaist.dl.sourceforge.net/
-    http://optusnet.dl.sourceforge.net/
-    http://nchc.dl.sourceforge.net/
-    http://switch.dl.sourceforge.net/
+    http://mesh.dl.sourceforge.net/
     http://puzzle.dl.sourceforge.net/
-    http://garr.dl.sourceforge.net/
     http://surfnet.dl.sourceforge.net/
-    http://internap.dl.sourceforge.net/
-    http://superb-east.dl.sourceforge.net/
-    http://superb-west.dl.sourceforge.net/
+    http://switch.dl.sourceforge.net/
+    http://nchc.dl.sourceforge.net/
+    http://jaist.dl.sourceforge.net/
+    http://internode.dl.sourceforge.net/
     http://transact.dl.sourceforge.net/
+    http://optusnet.dl.sourceforge.net/
 }
 
 set portfetch::mirror_sites::sites(sourceforge_jp) {

Modified: branches/gsoc08-privileges/base/src/port1.0/resources/group/Makefile
===================================================================
--- branches/gsoc08-privileges/base/src/port1.0/resources/group/Makefile	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/src/port1.0/resources/group/Makefile	2008-08-05 20:25:51 UTC (rev 39000)
@@ -12,6 +12,7 @@
 distclean:
 
 test:
+	${TCLSH} tests/ruby-1.0.tcl
 
 install:
 	$(INSTALL) -d -o ${DSTUSR} -g ${DSTGRP} -m ${DSTMODE} ${INSTALLDIR}

Modified: branches/gsoc08-privileges/base/src/port1.0/resources/group/ruby-1.0.tcl
===================================================================
--- branches/gsoc08-privileges/base/src/port1.0/resources/group/ruby-1.0.tcl	2008-08-05 20:21:10 UTC (rev 38999)
+++ branches/gsoc08-privileges/base/src/port1.0/resources/group/ruby-1.0.tcl	2008-08-05 20:25:51 UTC (rev 39000)
@@ -31,11 +31,14 @@
 # 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.
-#
-# Set some variables.
-set ruby.bin	${prefix}/bin/ruby
-set ruby.rdoc	${prefix}/bin/rdoc
 
+# Define these variables assuming ruby1.8 to make them accessible in
+# the portfile after port group declaration. They can be modified by
+# ruby.setup, e.g. to use another ruby than 1.8.
+set ruby.bin	        ${prefix}/bin/ruby
+set ruby.rdoc	        ${prefix}/bin/rdoc
+set ruby.gem            ${prefix}/bin/gem
+
 proc ruby.extract_config {var {default ""}} {
 	global ruby.bin
 	if {[catch {set val [exec ${ruby.bin} -e "require 'rbconfig';puts Config::CONFIG\[\"${var}\"\]"]}]} {
@@ -51,19 +54,40 @@
 set ruby.lib		[ruby.extract_config vendorlibdir ${prefix}/lib/ruby/vendor_ruby/${ruby.version}]
 set ruby.archlib	[ruby.extract_config vendorarchdir ${ruby.lib}/${ruby.arch}]
 
-# define these empty initially, they are set by ruby.setup arguments
 set ruby.module		""
 set ruby.filename	""
 set ruby.project	""
 set ruby.docs		{}
 set ruby.srcdir		""
 
-# ruby group setup procedure
-proc ruby.setup {module vers {type "install.rb"} {docs {}} {source "custom"}} {
-	global destroot prefix worksrcpath
-	global ruby.bin ruby.lib
-	global ruby.module ruby.project ruby.filename ruby.docs ruby.srcdir
+# ruby group setup procedure; optional for ruby 1.8 if you want only
+# basic variables, like ruby.lib and ruby.archlib.
+proc ruby.setup {module vers {type "install.rb"} {docs {}} {source "custom"} {implementation "ruby"}} {
+	global destroot prefix worksrcpath os.platform
+	global ruby.bin ruby.rdoc ruby.gem
+	global ruby.version 
+	global ruby.lib ruby.archlib
+	global ruby.module ruby.filename ruby.project ruby.docs ruby.srcdir
 
+	if {${implementation} eq "ruby19"} {
+		set ruby.bin	${prefix}/bin/ruby1.9
+		set ruby.rdoc	${prefix}/bin/rdoc1.9
+		set ruby.gem    ${prefix}/bin/gem1.9
+		set ruby.port_prefix rb19
+	} elseif {${implementation} eq "ruby"} {
+		# ruby.bin, ruby.rdoc, and ruby.gem set to 1.8 by default
+		set ruby.port_prefix rb
+	} else {
+		ui_error "ruby.setup: unknown implementation '${implementation}' specified (ruby, ruby19 possible)"
+		return -code error "ruby.setup failed"
+	}
+
+	# re-define variables to pick up possible implemantation change
+	set ruby.version	[ruby.extract_config ruby_version]
+	set ruby.arch		[ruby.extract_config arch ${os.platform}]
+	set ruby.lib		[ruby.extract_config vendorlibdir ${prefix}/lib/ruby/vendor_ruby/${ruby.version}]
+	set ruby.archlib	[ruby.extract_config vendorarchdir ${ruby.lib}/${ruby.arch}]
+
 	# define ruby global names and lists
 	# check if module is a list or string
 	if {[llength ${module}] > 1} {
@@ -80,7 +104,7 @@
 	}
 	set ruby.docs	${docs}
 
-	name			rb-[string tolower ${ruby.module}]
+	name			${ruby.port_prefix}-[string tolower ${ruby.module}]
 	version			${vers}
 	categories		ruby
 
@@ -131,7 +155,7 @@
 	distname		${ruby.filename}-${vers}
 	dist_subdir		ruby
 
-	depends_lib		path:${ruby.bin}:ruby
+	depends_lib		port:${implementation}
 
 	post-extract {
 		# Create the work directory for gem-based ruby ports.
@@ -275,7 +299,7 @@
 			}
 			
 			destroot {
-			  system "cd ${worksrcpath} && ${prefix}/bin/gem install --local --force --install-dir ${destroot}${prefix}/lib/ruby/gems/${ruby.version} ${distpath}/${distname}"
+			  system "cd ${worksrcpath} && ${ruby.gem} install --local --force --install-dir ${destroot}${prefix}/lib/ruby/gems/${ruby.version} ${distpath}/${distname}"
 			
 				set binDir ${destroot}${prefix}/lib/ruby/gems/${ruby.version}/bin
 				if {[file isdirectory $binDir]} {

Copied: branches/gsoc08-privileges/base/src/port1.0/resources/group/tests (from rev 38973, trunk/base/src/port1.0/resources/group/tests)

Deleted: branches/gsoc08-privileges/base/src/port1.0/resources/group/tests/ruby-1.0.tcl
===================================================================
--- trunk/base/src/port1.0/resources/group/tests/ruby-1.0.tcl	2008-08-04 16:11:28 UTC (rev 38973)
+++ branches/gsoc08-privileges/base/src/port1.0/resources/group/tests/ruby-1.0.tcl	2008-08-05 20:25:51 UTC (rev 39000)
@@ -1,153 +0,0 @@
-#!/bin/sh 
-# This test needs macports to be installed to work
-# start as tcl \
-exec tclsh "$0" "$@"
-
-set prefix                    [file dirname [file dirname [exec which port]]]
-set os.platform               i686-darwin
-
-# mock the commands the ruby group uses
-proc name p0                  {
-	global name.found
-	set name.found $p0
-}
-proc version p0               {
-	global version.found
-	set version.found $p0
-}
-proc categories p0	      {}
-proc distname p0	      {}
-proc dist_subdir p0	      {}
-proc depends_lib p0	      {
-	global depends_lib.found
-	set depends_lib.found $p0
-}
-proc post-extract p0	      {}
-proc configure.cmd {p0 p1 p2} {}
-proc configure.pre_args p0    {}
-proc build.target p0	      {
-	global build.target.found
-	set build.target.found $p0
-}
-proc build.cmd {p0 p1 p2}     {}
-proc pre-destroot p0	      {}
-proc destroot.cmd {p0 p1 p2}  {}
-proc destroot.target p0	      {}
-proc destroot.destdir {}      {}
-proc post-destroot p0	      {}
-
-proc use_configure p0	      {}
-proc extract.suffix p0	      {}
-proc depends_lib-append p0    {}
-proc extract p0		      {}
-proc build p0		      {}
-proc destroot p0	      {}
-
-# directory which contains test file
-set testdir [file dirname ${argv0}]
-
-namespace eval tests {
-	# Backwards compatible behaviour, assumes ruby1.8
-	proc test_rubysetup_ruby18_default {} {
-		global prefix
-		global ruby.bin
-		global ruby.version
-		global ruby.module
-		global ruby.project
-		global ruby.filename 
-		global ruby.docs
-		global ruby.lib ruby.archlib
-
-		global build.target.found
-		global name.found
-		global version.found
-		global depends_lib.found
-
-		ruby.setup {test_module tmod} 9.9 setup.rb {README INSTALL}
-
-		if {![file exists ${ruby.bin}]} { return }
-		if {"1.8" ne ${ruby.version}} { error "ruby.version failed: ${ruby.version}" }
-		if {"test_module" ne ${ruby.module}} { error "ruby.module failed" }
-		if {"tmod" ne ${ruby.project}} { error "ruby.project failed" }
-		if {"tmod" ne ${ruby.filename}} { error "ruby.filename failed" }
-		if {{README INSTALL} ne ${ruby.docs}} { error "ruby.docs failed"}
-		if {"setup" ne ${build.target.found}} { error "type-derived field build.target failed: ${build.target.found}"}
-		if {"rb-test_module" ne ${name.found}} { error "drived name failed: ${name.found}" }
-		if {"9.9" ne ${version.found}} { error "port version set failed" }
-		if {"port:ruby" ne ${depends_lib.found}} { error "depends_lib failed: ${depends_lib.found}" }
-
-		if {"${prefix}/lib/ruby/vendor_ruby/1.8" ne ${ruby.lib}} { error "ruby.lib failed: ${ruby.lib}" }
-		if {!(0 == [string first "${prefix}/lib/ruby/vendor_ruby/1.8/i686-darwin" ${ruby.archlib}])} { error "ruby.archlib failed: ${ruby.archlib}" }
-	}
-
-	proc test_rubysetup_type_gem {} {
-		if {[catch {ruby.setup {test_module tmod} 9.9 gem {README INSTALL}}]} {
-			error "gem type port fails"
-		}
-	}
-
-	proc test_rubysetup_ruby19 {} {
-		global prefix
-		global ruby.version
-		global ruby.module
-		global ruby.project
-		global ruby.filename 
-		global ruby.bin
-		global ruby.docs
-		global ruby.lib ruby.archlib
-
-		global build.target.found
-		global name.found
-		global version.found
-		global depends_lib.found
-
-		ruby.setup {test_module tmod} 9.9 setup.rb {README INSTALL} custom ruby19
-
-		# changed prefix
-		if {![file exists ${ruby.bin}]} { return }
-		if {![string equal "1.9.0" ${ruby.version}]} { error "ruby.version failed: '${ruby.version}'" }
-		if {![string equal "rb19-test_module" ${name.found}]} { error "drived name failed: ${name.found}" }
-
-		if {![string equal "test_module" ${ruby.module}]} { error "ruby.module failed" }
-		if {![string equal "tmod" ${ruby.project}]} { error "ruby.project failed" }
-		if {![string equal "tmod" ${ruby.filename}]} { error "ruby.filename failed" }
-		if {![string equal {README INSTALL} ${ruby.docs}]} { error "ruby.docs failed"}
-		if {![string equal "setup" ${build.target.found}]} { error "type-derived field failed: ${build.target.found}"}
-		if {![string equal "9.9" ${version.found}]} { error "port version set failed" }
-		if {![string equal "port:ruby19" ${depends_lib.found}]} { error "depends_lib failed: ${depends_lib.found}" }
-
-		if {![string equal "${prefix}/lib/ruby/vendor_ruby/1.9.0" ${ruby.lib}]} { error "ruby.lib failed: ${ruby.lib}" }
-		if {!(0 == [string first "${prefix}/lib/ruby/vendor_ruby/1.9.0/i686-darwin" ${ruby.archlib}])} { error "ruby.archlib failed: ${ruby.archlib}" }
-	}
-
-	proc test_setup_implementation_specifics {} {
-		if {![catch {ruby.setup {test_module tmod} 9.9 setup.rb {README INSTALL} custom "rubz"}]} {
-			error "wrong implementation name signals error"
-		}
-	}
-
-	proc test_variables_exported_without_rubysetup_call {} {
-		global prefix
-		global ruby.bin ruby.rdoc ruby.gem
-		global ruby.version ruby.arch ruby.lib ruby.archlib
-		if {"${prefix}/bin/ruby" ne ${ruby.bin}} { error "variable ruby.bin missing" }
-		if {"${prefix}/bin/rdoc" ne ${ruby.rdoc}} { error "variable ruby.rdoc missing" }
-		if {"${prefix}/bin/gem" ne ${ruby.gem}} { error "variable ruby.gem missing" }
-		if {"1.8" ne ${ruby.version}} { error "variable ruby.version missing" }
-		if {"" eq ${ruby.arch}} { error "variable ruby.arch missing" }
-		if {"${prefix}/lib/ruby/vendor_ruby/1.8" ne ${ruby.lib}} { error "variable ruby.lib missing" }
-		if {"" eq ${ruby.archlib}} { error "variable ruby.archlib missing" }
-	}
-	
-	# run all tests
-	if {![file executable $prefix/bin/ruby]} {
-		puts "WARNING: No ruby found, can't run ruby port group tests without installed ruby port; skipping."
-	} else {
-		foreach test [info procs test_*] { 
-			# evaluate port group file in global context 
-			# to reset global variables
-			uplevel {source "${testdir}/../ruby-1.0.tcl"}
-			$test
-		}
-	}
-}

Copied: branches/gsoc08-privileges/base/src/port1.0/resources/group/tests/ruby-1.0.tcl (from rev 38973, trunk/base/src/port1.0/resources/group/tests/ruby-1.0.tcl)
===================================================================
--- branches/gsoc08-privileges/base/src/port1.0/resources/group/tests/ruby-1.0.tcl	                        (rev 0)
+++ branches/gsoc08-privileges/base/src/port1.0/resources/group/tests/ruby-1.0.tcl	2008-08-05 20:25:51 UTC (rev 39000)
@@ -0,0 +1,153 @@
+#!/bin/sh 
+# This test needs macports to be installed to work
+# start as tcl \
+exec tclsh "$0" "$@"
+
+set prefix                    [file dirname [file dirname [exec which port]]]
+set os.platform               i686-darwin
+
+# mock the commands the ruby group uses
+proc name p0                  {
+	global name.found
+	set name.found $p0
+}
+proc version p0               {
+	global version.found
+	set version.found $p0
+}
+proc categories p0	      {}
+proc distname p0	      {}
+proc dist_subdir p0	      {}
+proc depends_lib p0	      {
+	global depends_lib.found
+	set depends_lib.found $p0
+}
+proc post-extract p0	      {}
+proc configure.cmd {p0 p1 p2} {}
+proc configure.pre_args p0    {}
+proc build.target p0	      {
+	global build.target.found
+	set build.target.found $p0
+}
+proc build.cmd {p0 p1 p2}     {}
+proc pre-destroot p0	      {}
+proc destroot.cmd {p0 p1 p2}  {}
+proc destroot.target p0	      {}
+proc destroot.destdir {}      {}
+proc post-destroot p0	      {}
+
+proc use_configure p0	      {}
+proc extract.suffix p0	      {}
+proc depends_lib-append p0    {}
+proc extract p0		      {}
+proc build p0		      {}
+proc destroot p0	      {}
+
+# directory which contains test file
+set testdir [file dirname ${argv0}]
+
+namespace eval tests {
+	# Backwards compatible behaviour, assumes ruby1.8
+	proc test_rubysetup_ruby18_default {} {
+		global prefix
+		global ruby.bin
+		global ruby.version
+		global ruby.module
+		global ruby.project
+		global ruby.filename 
+		global ruby.docs
+		global ruby.lib ruby.archlib
+
+		global build.target.found
+		global name.found
+		global version.found
+		global depends_lib.found
+
+		ruby.setup {test_module tmod} 9.9 setup.rb {README INSTALL}
+
+		if {![file exists ${ruby.bin}]} { return }
+		if {"1.8" ne ${ruby.version}} { error "ruby.version failed: ${ruby.version}" }
+		if {"test_module" ne ${ruby.module}} { error "ruby.module failed" }
+		if {"tmod" ne ${ruby.project}} { error "ruby.project failed" }
+		if {"tmod" ne ${ruby.filename}} { error "ruby.filename failed" }
+		if {{README INSTALL} ne ${ruby.docs}} { error "ruby.docs failed"}
+		if {"setup" ne ${build.target.found}} { error "type-derived field build.target failed: ${build.target.found}"}
+		if {"rb-test_module" ne ${name.found}} { error "drived name failed: ${name.found}" }
+		if {"9.9" ne ${version.found}} { error "port version set failed" }
+		if {"port:ruby" ne ${depends_lib.found}} { error "depends_lib failed: ${depends_lib.found}" }
+
+		if {"${prefix}/lib/ruby/vendor_ruby/1.8" ne ${ruby.lib}} { error "ruby.lib failed: ${ruby.lib}" }
+		if {!(0 == [string first "${prefix}/lib/ruby/vendor_ruby/1.8/i686-darwin" ${ruby.archlib}])} { error "ruby.archlib failed: ${ruby.archlib}" }
+	}
+
+	proc test_rubysetup_type_gem {} {
+		if {[catch {ruby.setup {test_module tmod} 9.9 gem {README INSTALL}}]} {
+			error "gem type port fails"
+		}
+	}
+
+	proc test_rubysetup_ruby19 {} {
+		global prefix
+		global ruby.version
+		global ruby.module
+		global ruby.project
+		global ruby.filename 
+		global ruby.bin
+		global ruby.docs
+		global ruby.lib ruby.archlib
+
+		global build.target.found
+		global name.found
+		global version.found
+		global depends_lib.found
+
+		ruby.setup {test_module tmod} 9.9 setup.rb {README INSTALL} custom ruby19
+
+		# changed prefix
+		if {![file exists ${ruby.bin}]} { return }
+		if {![string equal "1.9.0" ${ruby.version}]} { error "ruby.version failed: '${ruby.version}'" }
+		if {![string equal "rb19-test_module" ${name.found}]} { error "drived name failed: ${name.found}" }
+
+		if {![string equal "test_module" ${ruby.module}]} { error "ruby.module failed" }
+		if {![string equal "tmod" ${ruby.project}]} { error "ruby.project failed" }
+		if {![string equal "tmod" ${ruby.filename}]} { error "ruby.filename failed" }
+		if {![string equal {README INSTALL} ${ruby.docs}]} { error "ruby.docs failed"}
+		if {![string equal "setup" ${build.target.found}]} { error "type-derived field failed: ${build.target.found}"}
+		if {![string equal "9.9" ${version.found}]} { error "port version set failed" }
+		if {![string equal "port:ruby19" ${depends_lib.found}]} { error "depends_lib failed: ${depends_lib.found}" }
+
+		if {![string equal "${prefix}/lib/ruby/vendor_ruby/1.9.0" ${ruby.lib}]} { error "ruby.lib failed: ${ruby.lib}" }
+		if {!(0 == [string first "${prefix}/lib/ruby/vendor_ruby/1.9.0/i686-darwin" ${ruby.archlib}])} { error "ruby.archlib failed: ${ruby.archlib}" }
+	}
+
+	proc test_setup_implementation_specifics {} {
+		if {![catch {ruby.setup {test_module tmod} 9.9 setup.rb {README INSTALL} custom "rubz"}]} {
+			error "wrong implementation name signals error"
+		}
+	}
+
+	proc test_variables_exported_without_rubysetup_call {} {
+		global prefix
+		global ruby.bin ruby.rdoc ruby.gem
+		global ruby.version ruby.arch ruby.lib ruby.archlib
+		if {"${prefix}/bin/ruby" ne ${ruby.bin}} { error "variable ruby.bin missing" }
+		if {"${prefix}/bin/rdoc" ne ${ruby.rdoc}} { error "variable ruby.rdoc missing" }
+		if {"${prefix}/bin/gem" ne ${ruby.gem}} { error "variable ruby.gem missing" }
+		if {"1.8" ne ${ruby.version}} { error "variable ruby.version missing" }
+		if {"" eq ${ruby.arch}} { error "variable ruby.arch missing" }
+		if {"${prefix}/lib/ruby/vendor_ruby/1.8" ne ${ruby.lib}} { error "variable ruby.lib missing" }
+		if {"" eq ${ruby.archlib}} { error "variable ruby.archlib missing" }
+	}
+	
+	# run all tests
+	if {![file executable $prefix/bin/ruby]} {
+		puts "WARNING: No ruby found, can't run ruby port group tests without installed ruby port; skipping."
+	} else {
+		foreach test [info procs test_*] { 
+			# evaluate port group file in global context 
+			# to reset global variables
+			uplevel {source "${testdir}/../ruby-1.0.tcl"}
+			$test
+		}
+	}
+}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20080805/9c7941cc/attachment-0001.html 


More information about the macports-changes mailing list