<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[139552] branches/gsoc15-dependency/base</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="https://trac.macports.org/changeset/139552">139552</a></dd>
<dt>Author</dt> <dd>ijackson@macports.org</dd>
<dt>Date</dt> <dd>2015-08-20 01:24:32 -0700 (Thu, 20 Aug 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Merge macports-trunk/base with branches/gsoc15-dependency/base
Merge revisions <a href="https://trac.macports.org/changeset/137851">r137851</a>-139551. Update the branch with latest
changes to trunk so that chances of merge conflicts would be less.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#branchesgsoc15dependencybaseChangeLog">branches/gsoc15-dependency/base/ChangeLog</a></li>
<li><a href="#branchesgsoc15dependencybaseMakefilein">branches/gsoc15-dependency/base/Makefile.in</a></li>
<li><a href="#branchesgsoc15dependencybaseconfigure">branches/gsoc15-dependency/base/configure</a></li>
<li><a href="#branchesgsoc15dependencybaseconfigureac">branches/gsoc15-dependency/base/configure.ac</a></li>
<li><a href="#branchesgsoc15dependencybasesrcdarwintracelib10darwintracec">branches/gsoc15-dependency/base/src/darwintracelib1.0/darwintrace.c</a></li>
<li><a href="#branchesgsoc15dependencybasesrcdarwintracelib10procc">branches/gsoc15-dependency/base/src/darwintracelib1.0/proc.c</a></li>
<li><a href="#branchesgsoc15dependencybasesrcmachista10Makefilein">branches/gsoc15-dependency/base/src/machista1.0/Makefile.in</a></li>
<li><a href="#branchesgsoc15dependencybasesrcmachista10machista_wrapc">branches/gsoc15-dependency/base/src/machista1.0/machista_wrap.c</a></li>
<li><a href="#branchesgsoc15dependencybasesrcmacports10macportstcl">branches/gsoc15-dependency/base/src/macports1.0/macports.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcmacports10macports_dlisttcl">branches/gsoc15-dependency/base/src/macports1.0/macports_dlist.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcmacports10testsmacportstest">branches/gsoc15-dependency/base/src/macports1.0/tests/macports.test</a></li>
<li><a href="#branchesgsoc15dependencybasesrcmacports10teststesttcl">branches/gsoc15-dependency/base/src/macports1.0/tests/test.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpackage10portarchivefetchtcl">branches/gsoc15-dependency/base/src/package1.0/portarchivefetch.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpackage10teststesttcl">branches/gsoc15-dependency/base/src/package1.0/tests/test.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10Makefilein">branches/gsoc15-dependency/base/src/pextlib1.0/Makefile.in</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10Pextlibc">branches/gsoc15-dependency/base/src/pextlib1.0/Pextlib.c</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10Pextlibh">branches/gsoc15-dependency/base/src/pextlib1.0/Pextlib.h</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10systemc">branches/gsoc15-dependency/base/src/pextlib1.0/system.c</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10tracelibc">branches/gsoc15-dependency/base/src/pextlib1.0/tracelib.c</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10xinstallc">branches/gsoc15-dependency/base/src/pextlib1.0/xinstall.c</a></li>
<li><a href="#branchesgsoc15dependencybasesrcportporttcl">branches/gsoc15-dependency/base/src/port/port.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcport10portchecksumtcl">branches/gsoc15-dependency/base/src/port1.0/portchecksum.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcport10portconfiguretcl">branches/gsoc15-dependency/base/src/port1.0/portconfigure.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcport10portdestroottcl">branches/gsoc15-dependency/base/src/port1.0/portdestroot.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcport10portlinttcl">branches/gsoc15-dependency/base/src/port1.0/portlint.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcport10portlivechecktcl">branches/gsoc15-dependency/base/src/port1.0/portlivecheck.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcport10portmirrortcl">branches/gsoc15-dependency/base/src/port1.0/portmirror.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcport10porttracetcl">branches/gsoc15-dependency/base/src/port1.0/porttrace.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcport10portuninstalltcl">branches/gsoc15-dependency/base/src/port1.0/portuninstall.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcport10portutiltcl">branches/gsoc15-dependency/base/src/port1.0/portutil.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcport10teststesttcl">branches/gsoc15-dependency/base/src/port1.0/tests/test.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcregistry20portimagetcl">branches/gsoc15-dependency/base/src/registry2.0/portimage.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcregistry20portuninstalltcl">branches/gsoc15-dependency/base/src/registry2.0/portuninstall.tcl</a></li>
<li><a href="#branchesgsoc15dependencybasesrcregistry20registrytcl">branches/gsoc15-dependency/base/src/registry2.0/registry.tcl</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10advflockc">branches/gsoc15-dependency/base/src/pextlib1.0/adv-flock.c</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10advflockh">branches/gsoc15-dependency/base/src/pextlib1.0/adv-flock.h</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10flockc">branches/gsoc15-dependency/base/src/pextlib1.0/flock.c</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10flockh">branches/gsoc15-dependency/base/src/pextlib1.0/flock.h</a></li>
</ul>
<h3>Property Changed</h3>
<ul>
<li><a href="#branchesgsoc15dependencybase">branches/gsoc15-dependency/base/</a></li>
<li><a href="#branchesgsoc15dependencybasesrcpextlib10Makefilein">branches/gsoc15-dependency/base/src/pextlib1.0/Makefile.in</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchesgsoc15dependencybase"></a>
<div class="propset"><h4>Property changes: branches/gsoc15-dependency/base</h4>
<pre class="diff"><span>
</span></pre></div>
<a id="svnmergeinfo"></a>
<div class="modfile"><h4>Modified: svn:mergeinfo</h4></div>
<span class="cx">/branches/gsoc09-logging/base:51231-60371
</span><span class="cx">/branches/gsoc11-rev-upgrade/base:78828-88375
</span><span class="cx">/branches/gsoc11-statistics/base:79520,79666
</span><span class="cx">/branches/gsoc13-tests:106692-111324
</span><span class="cx">/branches/gsoc14-cleanup:123738-124046
</span><span class="cx">/branches/gsoc14-interactive/base:119516-124240
</span><span class="cx">/branches/universal-sanity/base:51872-52323
</span><span class="cx">/branches/variant-descs-14482/base:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
</span><span class="cx">/trunk/base:136782-137850
</span><span class="cx">/users/perry/base-bugs_and_notes:45682-46060
</span><span class="cx">/users/perry/base-select:44044-44692
</span><span class="cx"> + /branches/gsoc08-privileges/base:37343-46937
</span><span class="cx">/branches/gsoc09-logging/base:51231-60371
</span><span class="cx">/branches/gsoc11-rev-upgrade/base:78828-88375
</span><span class="cx">/branches/gsoc11-statistics/base:79520,79666
</span><span class="cx">/branches/gsoc13-tests:106692-111324
</span><span class="cx">/branches/gsoc14-cleanup:123738-124046
</span><span class="cx">/branches/gsoc14-interactive/base:119516-124240
</span><span class="cx">/branches/universal-sanity/base:51872-52323
</span><span class="cx">/branches/variant-descs-14482/base:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
</span><span class="cx">/trunk/base:136782-139551
</span><span class="cx">/users/perry/base-bugs_and_notes:45682-46060
</span><span class="cx">/users/perry/base-select:44044-44692
</span><a id="branchesgsoc15dependencybaseChangeLog"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/ChangeLog (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/ChangeLog        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/ChangeLog        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -4,6 +4,14 @@
</span><span class="cx"> ###
</span><span class="cx">
</span><span class="cx"> Release 2.4 (unreleased)
</span><ins>+ - Replaced the strings previously printed by "port help" with much more
+ detailed and current manpages written using asciidoc that open
+ automatically. Added documentation for almost all commands currently
+ implemented by MacPorts.
+ (raimue in branch new-help-system, merge in r123002,
+ manpages written by cal, jmr, raimue, ionic, jeremyhu,
+ #44530, #15467)
+
</ins><span class="cx"> - Added macports_version to the Portfile execution context, to allow
</span><span class="cx"> checking the current MacPorts version in Portfiles.
</span><span class="cx"> (cal in r134511)
</span><span class="lines">@@ -22,7 +30,8 @@
</span><span class="cx">
</span><span class="cx"> - Handle SIGTERM and SIGINT (^C) in MacPorts to prevent inconsistencies in
</span><span class="cx"> the registry database when MacPorts is aborted during a critical
</span><del>- operation. (cal in r118297 and r118298)
</del><ins>+ operation.
+ (cal in r118297 and r118298)
</ins><span class="cx">
</span><span class="cx"> - Remove "support" for rpm and deb packages in MacPorts, leaving pkg/mpkg.
</span><span class="cx"> (afb in r123004)
</span></span></pre></div>
<a id="branchesgsoc15dependencybaseMakefilein"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/Makefile.in (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/Makefile.in        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/Makefile.in        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -19,7 +19,7 @@
</span><span class="cx">
</span><span class="cx"> all:: Mk/macports.autoconf.mk
</span><span class="cx">
</span><del>-Mk/macports.autoconf.mk: Mk/macports.autoconf.mk.in src/config.h.in Makefile.in doc/Makefile.in src/cflib1.0/Makefile.in src/cregistry/Makefile.in src/darwintracelib1.0/Makefile.in src/macports1.0/Makefile.in src/package1.0/Makefile.in src/port/Makefile.in src/port1.0/Makefile.in src/registry2.0/Makefile.in tests/Makefile.in config.status
</del><ins>+Mk/macports.autoconf.mk: Mk/macports.autoconf.mk.in src/config.h.in Makefile.in doc/Makefile.in src/Makefile.in src/cflib1.0/Makefile.in src/cregistry/Makefile.in src/darwintracelib1.0/Makefile.in src/machista1.0/Makefile.in src/macports1.0/Makefile.in src/package1.0/Makefile.in src/pextlib1.0/Makefile.in src/port/Makefile.in src/port1.0/Makefile.in src/programs/Makefile.in src/programs/daemondo/Makefile.in src/registry2.0/Makefile.in tests/Makefile.in config.status
</ins><span class="cx">         ./config.status
</span><span class="cx">         ${MAKE} clean
</span><span class="cx">
</span></span></pre></div>
<a id="branchesgsoc15dependencybaseconfigure"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/configure (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/configure        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/configure        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -3040,7 +3040,7 @@
</span><span class="cx"> as_fn_error $? "This version of Mac OS X is not supported
</span><span class="cx"> Please upgrade at http://store.apple.com/" "$LINENO" 5
</span><span class="cx"> ;;
</span><del>- 10.4.[0-9]|10.4.10|10.5.[0-7]|10.6.[0-7]|10.7.[0-4]|10.8.[0-4]|10.9.[0-4])
</del><ins>+ 10.4.[0-9]|10.4.10|10.5.[0-7]|10.6.[0-7]|10.7.[0-4]|10.8.[0-4]|10.9.[0-4]|10.10.[0-3])
</ins><span class="cx"> { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This version of Mac OS X is out of date" >&5
</span><span class="cx"> $as_echo "$as_me: WARNING: This version of Mac OS X is out of date" >&2;}
</span><span class="cx"> { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please run Software Update to update it" >&5
</span></span></pre></div>
<a id="branchesgsoc15dependencybaseconfigureac"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/configure.ac (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/configure.ac        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/configure.ac        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> AC_MSG_ERROR([This version of Mac OS X is not supported
</span><span class="cx"> Please upgrade at http://store.apple.com/])
</span><span class="cx"> ;;
</span><del>- 10.4.[[0-9]]|10.4.10|10.5.[[0-7]]|10.6.[[0-7]]|10.7.[[0-4]]|10.8.[[0-4]]|10.9.[[0-4]])
</del><ins>+ 10.4.[[0-9]]|10.4.10|10.5.[[0-7]]|10.6.[[0-7]]|10.7.[[0-4]]|10.8.[[0-4]]|10.9.[[0-4]]|10.10.[[0-3]])
</ins><span class="cx"> AC_MSG_WARN([This version of Mac OS X is out of date])
</span><span class="cx"> AC_MSG_WARN([Please run Software Update to update it])
</span><span class="cx"> ;;
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcdarwintracelib10darwintracec"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/darwintracelib1.0/darwintrace.c (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/darwintracelib1.0/darwintrace.c        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/darwintracelib1.0/darwintrace.c        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -44,6 +44,7 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #include <errno.h>
</span><ins>+#include <fcntl.h>
</ins><span class="cx"> #include <inttypes.h>
</span><span class="cx"> #include <pthread.h>
</span><span class="cx"> #include <string.h>
</span><span class="lines">@@ -133,6 +134,13 @@
</span><span class="cx"> */
</span><span class="cx"> static char *filemap;
</span><span class="cx">
</span><ins>+static void __darwintrace_sock_destructor(FILE *dtsock) {
+        __darwintrace_close_sock = fileno(dtsock);
+        fclose(dtsock);
+        __darwintrace_close_sock = -1;
+        __darwintrace_sock_set(NULL);
+}
+
</ins><span class="cx"> /**
</span><span class="cx"> * Setup method called as constructor to set up thread-local storage for the
</span><span class="cx"> * thread id and the darwintrace socket.
</span><span class="lines">@@ -142,7 +150,7 @@
</span><span class="cx">                 perror("darwintrace: pthread_key_create");
</span><span class="cx">                 abort();
</span><span class="cx">         }
</span><del>-        if (0 != (errno = pthread_key_create(&sock_key, NULL))) {
</del><ins>+        if (0 != (errno = pthread_key_create(&sock_key, (void (*)(void *)) __darwintrace_sock_destructor))) {
</ins><span class="cx">                 perror("darwintrace: pthread_key_create");
</span><span class="cx">                 abort();
</span><span class="cx">         }
</span><span class="lines">@@ -333,7 +341,7 @@
</span><span class="cx">                 __darwintrace_close_sock = fileno(dtsock);
</span><span class="cx">                 fclose(dtsock);
</span><span class="cx">                 __darwintrace_close_sock = -1;
</span><del>-                pthread_setspecific(sock_key, NULL);
</del><ins>+                __darwintrace_sock_set(NULL);
</ins><span class="cx">         }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -370,6 +378,7 @@
</span><span class="cx">
</span><span class="cx">         if (__darwintrace_sock() == NULL) {
</span><span class="cx">                 int sock;
</span><ins>+                int sockflags;
</ins><span class="cx">                 FILE *stream;
</span><span class="cx">                 struct sockaddr_un sun;
</span><span class="cx">
</span><span class="lines">@@ -385,6 +394,29 @@
</span><span class="cx">                         abort();
</span><span class="cx">                 }
</span><span class="cx">
</span><ins>+                /* Set the close-on-exec flag as early as possible after the socket
+                 * creation. On OS X, there is no way to do this race-condition free
+                 * unless you synchronize around creation and fork(2) -- however,
+                 * blocking in this function is not acceptable for darwintrace, because
+                 * it could possibly run in a signal handler, leading to a deadlock.
+                 *
+                 * The close-on-exec flag is needed because we're using a thread-local
+                 * variable to hold a reference to this socket, but multi-threaded
+                 * programs that fork will only clone the thread that calls fork(2),
+                 * which leaves us with no reference to the other sockets (which are
+                 * inherited, because FDs are process-wide). Consequently, this can
+                 * lead to a resource leak.
+                 */
+                if (-1 == (sockflags = fcntl(sock, F_GETFD))) {
+                        perror("darwintrace: fcntl(F_GETFD)");
+                        abort();
+                }
+                sockflags |= FD_CLOEXEC;
+                if (-1 == fcntl(sock, F_SETFD, sockflags)) {
+                        perror("darwintrace: fcntl(F_SETFD, flags | FD_CLOEXEC)");
+                        abort();
+                }
+
</ins><span class="cx">                 if (strlen(__env_darwintrace_log) > sizeof(sun.sun_path) - 1) {
</span><span class="cx">                         fprintf(stderr, "darwintrace: Can't connect to socket %s: name too long\n", __env_darwintrace_log);
</span><span class="cx">                         abort();
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcdarwintracelib10procc"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/darwintracelib1.0/proc.c (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/darwintracelib1.0/proc.c        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/darwintracelib1.0/proc.c        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -221,6 +221,8 @@
</span><span class="cx">          * That _does_ save us another ugly loop to get things right. */
</span><span class="cx">         bytes_read = read(fd, buffer, sizeof(buffer) - 1);
</span><span class="cx">         buffer[bytes_read] = '\0';
</span><ins>+        close(fd);
+
</ins><span class="cx">         const char *buffer_end = buffer + bytes_read;
</span><span class="cx">         if (bytes_read > 2 && buffer[0] == '#' && buffer[1] == '!') {
</span><span class="cx">                 char *interp = buffer + 2;
</span><span class="lines">@@ -238,12 +240,10 @@
</span><span class="cx">
</span><span class="cx">                 /* check the iterpreter against the sandbox */
</span><span class="cx">                 if (!__darwintrace_is_in_sandbox(interp, DT_REPORT | DT_ALLOWDIR | DT_FOLLOWSYMS)) {
</span><del>-                        close(fd);
</del><span class="cx">                         return ENOENT;
</span><span class="cx">                 }
</span><span class="cx">         }
</span><span class="cx">
</span><del>-        close(fd);
</del><span class="cx">         return 0;
</span><span class="cx"> #undef open
</span><span class="cx"> #undef close
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcmachista10Makefilein"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/machista1.0/Makefile.in (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/machista1.0/Makefile.in        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/machista1.0/Makefile.in        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> else
</span><span class="cx">         @echo "Building ${SWIG_SRCS} requires swig, which you apparently did not have installed when configuring MacPorts." >&2
</span><span class="cx">         @echo "Please install swig and re-run configure" >&2
</span><del>-        @echo "I recommend installing SWIG 1.x in /opt/swig, because as of this writing SWIG 2.x-generated code does not compile warning-free" >&2
</del><span class="cx">         @echo "To use this SWIG, run configure as follows:" >&2
</span><span class="cx">         @echo " SWIG=/opt/swig/bin/swig ./configure --your-usual-config-flags" >&2
</span><span class="cx">         @echo "If you checked out from svn you can also run svn revert in base/src/machista1.0 to get rid of this error" >&2
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcmachista10machista_wrapc"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/machista1.0/machista_wrap.c (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/machista1.0/machista_wrap.c        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/machista1.0/machista_wrap.c        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+/*
+ * Non-generated MacPorts addition:
+ * Ignore these warnings in the generated SWIG code below.
+ *
+ * Please retain these #pragmas when regenerating the file!
+ */
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#pragma clang diagnostic ignored "-Wmissing-field-initializers"
+
</ins><span class="cx"> /* ----------------------------------------------------------------------------
</span><span class="cx"> * This file was automatically generated by SWIG (http://www.swig.org).
</span><span class="cx"> * Version 3.0.5
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcmacports10macportstcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/macports1.0/macports.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/macports1.0/macports.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/macports1.0/macports.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> package require macports_libsolv 1.0
</span><span class="cx">
</span><span class="cx"> namespace eval macports {
</span><del>- namespace export bootstrap_options user_options portinterp_options open_mports ui_priorities port_phases
</del><ins>+ namespace export bootstrap_options user_options portinterp_options open_mports ui_priorities
</ins><span class="cx"> variable bootstrap_options "\
</span><span class="cx"> portdbpath binpath auto_path extra_env sources_conf prefix portdbformat \
</span><span class="cx"> portarchivetype portautoclean \
</span><span class="lines">@@ -75,7 +75,6 @@
</span><span class="cx"> variable open_mports {}
</span><span class="cx">
</span><span class="cx"> variable ui_priorities "error warn msg notice info debug any"
</span><del>- variable port_phases "any fetch checksum"
</del><span class="cx"> variable current_phase main
</span><span class="cx">
</span><span class="cx"> variable ui_prefix "---> "
</span><span class="lines">@@ -140,10 +139,6 @@
</span><span class="cx"> ui_debug "Logging disabled, error opening log file: $err"
</span><span class="cx"> return 1
</span><span class="cx"> }
</span><del>- # Add our log-channel to all already initialized channels
- foreach key [array names channels] {
- set macports::channels($key) [concat $macports::channels($key) debuglog]
- }
</del><span class="cx"> return 0
</span><span class="cx"> }
</span><span class="cx"> proc macports::ch_logging {mport} {
</span><span class="lines">@@ -215,7 +210,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-proc ui_message {priority prefix phase args} {
</del><ins>+proc ui_message {priority prefix args} {
</ins><span class="cx"> global macports::channels ::debuglog macports::current_phase
</span><span class="cx">
</span><span class="cx"> #
</span><span class="lines">@@ -225,38 +220,40 @@
</span><span class="cx"> 0 - 1 {}
</span><span class="cx"> 2 {
</span><span class="cx"> if {[lindex $args 0] ne "-nonewline"} {
</span><del>- set hint "error: when 5 arguments are given, 2nd last must be \"-newnewline\""
- error "$hint\nusage: ui_message priority prefix phase ?-nonewline? string"
</del><ins>+ set hint "error: when 4 arguments are given, 3rd must be \"-nonewline\""
+ error "$hint\nusage: ui_message priority prefix ?-nonewline? string"
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> default {
</span><span class="cx"> set hint "error: too many arguments specified"
</span><del>- error "$hint\nusage: ui_message priority prefix phase ?-nonewline? string"
</del><ins>+ error "$hint\nusage: ui_message priority prefix ?-nonewline? string"
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> foreach chan $macports::channels($priority) {
</span><del>- if {[info exists ::debuglog] && ($chan eq "debuglog")} {
- set chan $::debuglog
- if {[info exists macports::current_phase]} {
- set phase $macports::current_phase
- }
- set strprefix ":${priority}:$phase "
- if {[lindex $args 0] eq "-nonewline"} {
- puts -nonewline $chan $strprefix[lindex $args 1]
- } else {
- puts $chan $strprefix[lindex $args 0]
- }
</del><ins>+ if {[lindex $args 0] eq "-nonewline"} {
+ puts -nonewline $chan $prefix[lindex $args 1]
+ } else {
+ puts $chan $prefix[lindex $args 0]
+ }
+ }
</ins><span class="cx">
</span><ins>+ if {[info exists ::debuglog]} {
+ set chan $::debuglog
+ if {[info exists macports::current_phase]} {
+ set phase $macports::current_phase
+ }
+ set strprefix ":${priority}:$phase "
+ if {[lindex $args 0] eq "-nonewline"} {
+ puts -nonewline $chan $strprefix[lindex $args 1]
</ins><span class="cx"> } else {
</span><del>- if {[lindex $args 0] eq "-nonewline"} {
- puts -nonewline $chan $prefix[lindex $args 1]
- } else {
- puts $chan $prefix[lindex $args 0]
</del><ins>+ foreach str [split [lindex $args 0] "\n"] {
+ puts $chan $strprefix$str
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> proc macports::ui_init {priority args} {
</span><span class="cx"> global macports::channels ::debuglog
</span><span class="cx"> set default_channel [macports::ui_channels_default $priority]
</span><span class="lines">@@ -267,24 +264,16 @@
</span><span class="cx"> set channels($priority) $default_channel
</span><span class="cx"> }
</span><span class="cx">
</span><del>- # if some priority initialized after log file is being created
- if {[info exists ::debuglog]} {
- set channels($priority) [concat $channels($priority) debuglog]
- }
</del><span class="cx"> # Simplify ui_$priority.
</span><span class="cx"> try {
</span><span class="cx"> set prefix [ui_prefix $priority]
</span><span class="cx"> } catch * {
</span><span class="cx"> set prefix [ui_prefix_default $priority]
</span><span class="cx"> }
</span><del>- set phases {fetch checksum}
</del><span class="cx"> try {
</span><span class="cx"> ::ui_init $priority $prefix $channels($priority) {*}$args
</span><span class="cx"> } catch * {
</span><del>- interp alias {} ui_$priority {} ui_message $priority $prefix {}
- foreach phase $phases {
- interp alias {} ui_${priority}_$phase {} ui_message $priority $prefix $phase
- }
</del><ins>+ interp alias {} ui_$priority {} ui_message $priority $prefix
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -691,7 +680,7 @@
</span><span class="cx"> set fd [open $file r]
</span><span class="cx"> while {[gets $fd line] >= 0} {
</span><span class="cx"> if {[regexp {^(\w+)([ \t]+(.*))?$} $line match option ignore val] == 1} {
</span><del>- if {[lsearch -exact $bootstrap_options $option] >= 0} {
</del><ins>+ if {$option in $bootstrap_options} {
</ins><span class="cx"> set macports::$option [string trim $val]
</span><span class="cx"> global macports::$option
</span><span class="cx"> }
</span><span class="lines">@@ -707,7 +696,7 @@
</span><span class="cx"> set fd [open $per_user r]
</span><span class="cx"> while {[gets $fd line] >= 0} {
</span><span class="cx"> if {[regexp {^(\w+)([ \t]+(.*))?$} $line match option ignore val] == 1} {
</span><del>- if {[lsearch -exact $user_options $option] >= 0} {
</del><ins>+ if {$option in $user_options} {
</ins><span class="cx"> set macports::$option $val
</span><span class="cx"> global macports::$option
</span><span class="cx"> }
</span><span class="lines">@@ -726,7 +715,7 @@
</span><span class="cx"> if {[regexp {^([\w-]+://\S+)(?:\s+\[(\w+(?:,\w+)*)\])?$} $line _ url flags]} {
</span><span class="cx"> set flags [split $flags ,]
</span><span class="cx"> foreach flag $flags {
</span><del>- if {[lsearch -exact [list nosync default] $flag] == -1} {
</del><ins>+ if {$flag ni [list nosync default]} {
</ins><span class="cx"> ui_warn "$sources_conf source '$line' specifies invalid flag '$flag'"
</span><span class="cx"> }
</span><span class="cx"> if {$flag eq "default"} {
</span><span class="lines">@@ -1081,20 +1070,11 @@
</span><span class="cx">
</span><span class="cx"> set env_names [array names env]
</span><span class="cx"> foreach envkey $env_names {
</span><del>- if {[lsearch -exact $keepenvkeys $envkey] == -1} {
</del><ins>+ if {$envkey ni $keepenvkeys} {
</ins><span class="cx"> unset env($envkey)
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- # unset environment an extra time, to work around bugs in Leopard Tcl
- if {$macosx_version eq "10.5"} {
- foreach envkey $env_names {
- if {[lsearch -exact $keepenvkeys $envkey] == -1} {
- unsetenv $envkey
- }
- }
- }
-
</del><span class="cx"> if {![info exists xcodeversion] || ![info exists xcodebuildcmd]} {
</span><span class="cx"> # We'll resolve these later (if needed)
</span><span class="cx"> trace add variable macports::xcodeversion read macports::setxcodeinfo
</span><span class="lines">@@ -1313,9 +1293,6 @@
</span><span class="cx"> # instantiate the UI call-backs
</span><span class="cx"> foreach priority $macports::ui_priorities {
</span><span class="cx"> $workername alias ui_$priority ui_$priority
</span><del>- foreach phase $macports::port_phases {
- $workername alias ui_${priority}_$phase ui_${priority}_$phase
- }
</del><span class="cx"> }
</span><span class="cx"> # add the UI progress call-back
</span><span class="cx"> if {[info exists macports::ui_options(progress_download)]} {
</span><span class="lines">@@ -2247,13 +2224,13 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> if {[llength $missing] > 0} {
</span><del>- if {[info exists dep_portinfo(variants)] && [lsearch -exact $dep_portinfo(variants) universal] != -1} {
</del><ins>+ if {[info exists dep_portinfo(variants)] && "universal" in $dep_portinfo(variants)} {
</ins><span class="cx"> # dep offers a universal variant
</span><span class="cx"> if {[llength $active_archs] == 1} {
</span><span class="cx"> # not installed universal
</span><span class="cx"> set missing {}
</span><span class="cx"> foreach arch $required_archs {
</span><del>- if {[lsearch -exact $macports::universal_archs $arch] == -1} {
</del><ins>+ if {$arch ni $macports::universal_archs} {
</ins><span class="cx"> lappend missing $arch
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -2463,7 +2440,7 @@
</span><span class="cx"> foreach source $sources {
</span><span class="cx"> set flags [lrange $source 1 end]
</span><span class="cx"> set source [lindex $source 0]
</span><del>- if {[lsearch -exact $flags nosync] != -1} {
</del><ins>+ if {"nosync" in $flags} {
</ins><span class="cx"> ui_debug "Skipping $source"
</span><span class="cx"> continue
</span><span class="cx"> }
</span><span class="lines">@@ -3395,7 +3372,7 @@
</span><span class="cx"> return 1
</span><span class="cx"> }
</span><span class="cx"> foreach arch $required_archs {
</span><del>- if {[lsearch -exact $provided_archs $arch] == -1} {
</del><ins>+ if {$arch ni $provided_archs} {
</ins><span class="cx"> return 0
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -3451,7 +3428,7 @@
</span><span class="cx"> if {$supported_archs ne ""} {
</span><span class="cx"> set ss [expr {[llength $supported_archs] == 1 ? "" : "s"}]
</span><span class="cx"> foreach arch $required_archs {
</span><del>- if {[lsearch -exact $supported_archs $arch] == -1} {
</del><ins>+ if {$arch ni $supported_archs} {
</ins><span class="cx"> ui_error "its dependency $dep only supports the arch${ss} '$supported_archs'."
</span><span class="cx"> return
</span><span class="cx"> }
</span><span class="lines">@@ -3459,7 +3436,7 @@
</span><span class="cx"> }
</span><span class="cx"> if {$has_universal} {
</span><span class="cx"> foreach arch $required_archs {
</span><del>- if {[lsearch -exact $universal_archs $arch] == -1} {
</del><ins>+ if {$arch ni $universal_archs} {
</ins><span class="cx"> ui_error "its dependency $dep does not build for the required arch${s} by default"
</span><span class="cx"> ui_error "and the configured universal_archs '$universal_archs' are not sufficient."
</span><span class="cx"> return
</span><span class="lines">@@ -4461,7 +4438,10 @@
</span><span class="cx"> show {
</span><span class="cx"> set selected_version ${conf_path}/current
</span><span class="cx">
</span><del>- if {![file exists $selected_version]} {
</del><ins>+ if {[catch {file type $selected_version} err]} {
+ # this might be okay if nothing was selected yet,
+ # just log the error for debugging purposes
+ ui_debug "cannot determine selected version for $group: $err"
</ins><span class="cx"> return none
</span><span class="cx"> } else {
</span><span class="cx"> return [file readlink $selected_version]
</span><span class="lines">@@ -5142,7 +5122,7 @@
</span><span class="cx"> set fd [open $conf_file r]
</span><span class="cx"> while {[gets $fd line] >= 0} {
</span><span class="cx"> if {[regexp {^(\w+)([ \t]+(.*))?$} $line match option ignore val] == 1} {
</span><del>- if {[lsearch -exact $conf_options $option] >= 0} {
</del><ins>+ if {$option in $conf_options} {
</ins><span class="cx"> if {$option eq "name"} {
</span><span class="cx"> set cur_name $val
</span><span class="cx"> lappend all_names $val
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcmacports10macports_dlisttcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/macports1.0/macports_dlist.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/macports1.0/macports_dlist.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/macports1.0/macports_dlist.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -415,7 +415,7 @@
</span><span class="cx">                 return [info exists [set ditem]($key)]
</span><span class="cx">         } else {
</span><span class="cx">                 set x [lindex [array get $ditem $key] 1]
</span><del>-                if {[llength $x] > 0 && [lsearch -exact $x [lindex $args 0]] != -1} {
</del><ins>+                if {[llength $x] > 0 && [lindex $args 0] in $x} {
</ins><span class="cx">                         return 1
</span><span class="cx">                 } else {
</span><span class="cx">                         return 0
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcmacports10testsmacportstest"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/macports1.0/tests/macports.test (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/macports1.0/tests/macports.test        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/macports1.0/tests/macports.test        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -246,33 +246,46 @@
</span><span class="cx"> test ui_message {
</span><span class="cx"> UI message unit test.
</span><span class="cx"> } -setup {
</span><del>- set fd [open $pwd/message w+]
- set fd2 [open $pwd/log w+]
</del><ins>+ set fd [open $pwd/message w]
+ set fd2 [open $pwd/log w]
</ins><span class="cx"> set macports::channels(0) $fd
</span><del>- set macports::channels(debuglog) $fd2
</del><span class="cx"> set macports::current_phase test
</span><span class="cx"> set ::debuglog $fd2
</span><span class="cx"> } -body {
</span><del>- set res [ui_message 0 prefix phase args]
</del><ins>+ set res [ui_message 0 prefix args]
</ins><span class="cx"> close $fd
</span><span class="cx"> close $fd2
</span><del>- set fd2 [open $pwd/message r]
- set line [read $fd2]
</del><ins>+
+ set fd [open $pwd/message r]
+ set fd2 [open $pwd/log r]
+ set line [read $fd]
</ins><span class="cx"> if {$line ne "prefixargs\n"} {
</span><del>-        return "FAIL: wrong message"
</del><ins>+ return "FAIL: wrong message: $line"
</ins><span class="cx"> }
</span><ins>+ set line [read $fd2]
+ if {$line ne ":0:test args\n"} {
+ return "FAIL: wrong log: $line"
+ }
+ close $fd
</ins><span class="cx"> close $fd2
</span><span class="cx">
</span><del>- set fd [open $pwd/message w+]
- set fd2 [open $pwd/log w+]
- set res [ui_message debuglog prefix phase -nonewline arg]
</del><ins>+ set fd [open $pwd/message w]
+ set fd2 [open $pwd/log w]
+ set res [ui_message 0 prefix -nonewline arg]
</ins><span class="cx"> close $fd
</span><span class="cx"> close $fd2
</span><ins>+
+ set fd [open $pwd/message r]
</ins><span class="cx"> set fd2 [open $pwd/log r]
</span><del>- set line [read $fd2]
</del><ins>+ set line [read $fd]
</ins><span class="cx"> if {$line ne "prefixarg"} {
</span><del>-        return "FAIL: wrong message"
</del><ins>+ return "FAIL: wrong message: $line"
</ins><span class="cx"> }
</span><ins>+ set line [read $fd2]
+ if {$line ne ":0:test arg"} {
+ return "FAIL: wrong log: $line"
+ }
+ close $fd
</ins><span class="cx"> close $fd2
</span><span class="cx">
</span><span class="cx"> return "UI message successful."
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcmacports10teststesttcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/macports1.0/tests/test.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/macports1.0/tests/test.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/macports1.0/tests/test.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> proc print_help {arg} {
</span><del>- if { $arg eq "tests" } {
</del><ins>+ if {$arg eq "tests"} {
</ins><span class="cx"> puts "The list of available tests is:"
</span><span class="cx"> cd tests
</span><span class="cx"> set test_suite [glob *.test]
</span><span class="lines">@@ -34,19 +34,19 @@
</span><span class="cx">
</span><span class="cx"> # Process args
</span><span class="cx"> foreach arg $argv {
</span><del>- if { $arg eq "-h" || $arg eq "-help" } {
</del><ins>+ if {$arg eq "-h" || $arg eq "-help"} {
</ins><span class="cx"> print_help ""
</span><span class="cx"> exit 0
</span><del>- } elseif { $arg eq "-debug" } {
</del><ins>+ } elseif {$arg eq "-debug"} {
</ins><span class="cx"> set index [expr {[lsearch $argv $arg] + 1}]
</span><span class="cx"> set level [lindex $argv $index]
</span><del>- if { $level >= 0 && $level <= 3 } {
- lappend arguments -debug $level
</del><ins>+ if {$level >= 0 && $level <= 3} {
+ lappend arguments "-debug" $level
</ins><span class="cx"> } else {
</span><span class="cx"> puts "Invalid debug level."
</span><span class="cx"> exit 1
</span><span class="cx"> }
</span><del>- } elseif { $arg eq "-t" } {
</del><ins>+ } elseif {$arg eq "-t"} {
</ins><span class="cx"> set index [expr {[lsearch $argv $arg] + 1}]
</span><span class="cx"> set test_name [lindex $argv $index]
</span><span class="cx"> set no 0
</span><span class="lines">@@ -74,7 +74,6 @@
</span><span class="cx"> if {$test_name ne ""} {
</span><span class="cx"> set result [exec -ignorestderr $tcl $test_name {*}$arguments]
</span><span class="cx"> puts $result
</span><del>-
</del><span class="cx"> } else {
</span><span class="cx"> cd tests
</span><span class="cx"> set test_suite [glob *.test]
</span><span class="lines">@@ -84,8 +83,13 @@
</span><span class="cx"> set lastline [lindex [split $result "\n"] end]
</span><span class="cx">
</span><span class="cx"> if {[lrange [split $lastline "\t"] 1 1] ne "Total"} {
</span><del>- set lastline [lindex [split $result "\n"] end-2]
- set errmsg [lindex [split $result "\n"] end]
</del><ins>+ 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]
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> set splitresult [split $lastline "\t"]
</span><span class="lines">@@ -95,10 +99,18 @@
</span><span class="cx"> set fail [lindex $splitresult 8]
</span><span class="cx">
</span><span class="cx"> # Format output
</span><del>- 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}"}
</del><ins>+ 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}"
+ }
</ins><span class="cx">
</span><span class="cx"> # Check for errors.
</span><span class="cx"> if {$fail != 0} {
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpackage10portarchivefetchtcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/package1.0/portarchivefetch.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/package1.0/portarchivefetch.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/package1.0/portarchivefetch.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -294,7 +294,7 @@
</span><span class="cx"> }
</span><span class="cx"> return 0
</span><span class="cx"> }
</span><del>- if {[info exists ports_binary_only] && $ports_binary_only eq "yes"} {
</del><ins>+ if {([info exists ports_binary_only] && $ports_binary_only eq "yes") || [_archive_available]} {
</ins><span class="cx"> if {[info exists lastError] && $lastError ne ""} {
</span><span class="cx"> error [msgcat::mc "version @[option version]_[option revision][option portvariants]: %s" $lastError]
</span><span class="cx"> } else {
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpackage10teststesttcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/package1.0/tests/test.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/package1.0/tests/test.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/package1.0/tests/test.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> proc print_help {arg} {
</span><del>- if { $arg eq "tests" } {
</del><ins>+ if {$arg eq "tests"} {
</ins><span class="cx"> puts "The list of available tests is:"
</span><span class="cx"> cd tests
</span><span class="cx"> set test_suite [glob *.test]
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> set test_suite [glob *.test]
</span><span class="cx"> foreach test $test_suite {
</span><span class="cx"> if {$test_name ne $test} {
</span><del>- set no [expr {$no + 1}]
</del><ins>+ incr no
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> if {$no == [llength $test_suite]} {
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpextlib10Makefilein"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/pextlib1.0/Makefile.in (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/pextlib1.0/Makefile.in        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/pextlib1.0/Makefile.in        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -7,20 +7,20 @@
</span><span class="cx">         Pextlib.o strsed.o fgetln.o md5cmd.o setmode.o xinstall.o \
</span><span class="cx">         fs-traverse.o strcasecmp.o vercomp.o filemap.o base32cmd.o \
</span><span class="cx">         sha1cmd.o curl.o rmd160cmd.o sha256cmd.o readline.o uid.o \
</span><del>-        tracelib.o tty.o readdir.o pipe.o flock.o system.o \
</del><ins>+        tracelib.o tty.o readdir.o pipe.o adv-flock.o system.o \
</ins><span class="cx">         mktemp.o realpath.o
</span><span class="cx"> ifneq (@ac_cv_func_strlcat@,yes)
</span><span class="cx"> OBJS+=strlcat.o
</span><span class="cx"> endif
</span><span class="cx">
</span><del>-# tracelib.o has an additional dependency
-tracelib.o: ../darwintracelib1.0/sandbox_actions.h
-
</del><span class="cx"> SHLIB_NAME= Pextlib${SHLIB_SUFFIX}
</span><span class="cx"> INSTALLDIR= ${DESTDIR}${TCL_PACKAGE_PATH}/pextlib1.0
</span><span class="cx">
</span><span class="cx"> include $(srcdir)/../../Mk/macports.tea.mk
</span><span class="cx">
</span><ins>+# tracelib.o has an additional dependency
+tracelib.o: ../darwintracelib1.0/sandbox_actions.h
+
</ins><span class="cx"> CFLAGS+= ${CURL_CFLAGS} ${MD5_CFLAGS} ${READLINE_CFLAGS}
</span><span class="cx"> LIBS+= ${CURL_LIBS} ${MD5_LIBS} ${READLINE_LIBS}
</span><span class="cx"> ifeq ($(shell uname), Darwin)
</span><span class="cx">Property changes on: branches/gsoc15-dependency/base/src/pextlib1.0/Makefile.in
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnmergeinfo"></a>
<div class="modfile"><h4>Modified: svn:mergeinfo</h4></div>
<span class="cx">/branches/gsoc08-privileges/base/src/pextlib1.0/Makefile.in:37343-46937
</span><span class="cx">/branches/gsoc09-logging/base/src/pextlib1.0/Makefile:51231-60371
</span><span class="cx">/branches/gsoc09-logging/base/src/pextlib1.0/Makefile.in:51231-60371
</span><span class="cx">/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/Makefile:78828-88375
</span><span class="cx">/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/Makefile.in:78828-88375
</span><span class="cx">/branches/gsoc13-tests/src/pextlib1.0/Makefile.in:106692-111324
</span><span class="cx">/branches/gsoc14-interactive/base/src/pextlib1.0/Makefile.in:119516-124240
</span><span class="cx">/branches/universal-sanity/base/src/pextlib1.0/Makefile:51872-52323
</span><span class="cx">/branches/universal-sanity/base/src/pextlib1.0/Makefile.in:51872-52323
</span><span class="cx">/branches/variant-descs-14482/base/src/pextlib1.0/Makefile:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
</span><span class="cx">/branches/variant-descs-14482/base/src/pextlib1.0/Makefile.in:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
</span><span class="cx">/trunk/base/src/pextlib1.0/Makefile.in:49341-104698
</span><span class="cx">/users/perry/base-bugs_and_notes/src/pextlib1.0/Makefile:45682-46060
</span><span class="cx">/users/perry/base-bugs_and_notes/src/pextlib1.0/Makefile.in:45682-46060
</span><span class="cx">/users/perry/base-select/src/pextlib1.0/Makefile:44044-44692
</span><span class="cx">/users/perry/base-select/src/pextlib1.0/Makefile.in:44044-44692
</span><span class="cx"> + /branches/gsoc08-privileges/base/src/pextlib1.0/Makefile:37343-46937
</span><span class="cx">/branches/gsoc08-privileges/base/src/pextlib1.0/Makefile.in:37343-46937
</span><span class="cx">/branches/gsoc09-logging/base/src/pextlib1.0/Makefile:51231-60371
</span><span class="cx">/branches/gsoc09-logging/base/src/pextlib1.0/Makefile.in:51231-60371
</span><span class="cx">/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/Makefile:78828-88375
</span><span class="cx">/branches/gsoc11-rev-upgrade/base/src/pextlib1.0/Makefile.in:78828-88375
</span><span class="cx">/branches/gsoc13-tests/src/pextlib1.0/Makefile.in:106692-111324
</span><span class="cx">/branches/gsoc14-interactive/base/src/pextlib1.0/Makefile.in:119516-124240
</span><span class="cx">/branches/universal-sanity/base/src/pextlib1.0/Makefile:51872-52323
</span><span class="cx">/branches/universal-sanity/base/src/pextlib1.0/Makefile.in:51872-52323
</span><span class="cx">/branches/variant-descs-14482/base/src/pextlib1.0/Makefile:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
</span><span class="cx">/branches/variant-descs-14482/base/src/pextlib1.0/Makefile.in:34469-34855,34900-37508,37511-37512,41040-41463,42575-42626,42640-42659
</span><span class="cx">/trunk/base/src/pextlib1.0/Makefile.in:49341-104698,136782-139551
</span><span class="cx">/users/perry/base-bugs_and_notes/src/pextlib1.0/Makefile:45682-46060
</span><span class="cx">/users/perry/base-bugs_and_notes/src/pextlib1.0/Makefile.in:45682-46060
</span><span class="cx">/users/perry/base-select/src/pextlib1.0/Makefile:44044-44692
</span><span class="cx">/users/perry/base-select/src/pextlib1.0/Makefile.in:44044-44692
</span><a id="branchesgsoc15dependencybasesrcpextlib10Pextlibc"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/pextlib1.0/Pextlib.c (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/pextlib1.0/Pextlib.c        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/pextlib1.0/Pextlib.c        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -43,6 +43,8 @@
</span><span class="cx"> #define _BSD_SOURCE
</span><span class="cx"> /* required for clearenv(3)/setenv(3)/unsetenv(3) on OS X */
</span><span class="cx"> #define _DARWIN_C_SOURCE
</span><ins>+/* required for vasprintf(3) on Linux */
+#define _GNU_SOURCE
</ins><span class="cx">
</span><span class="cx"> #include <sys/types.h>
</span><span class="cx"> #include <sys/socket.h>
</span><span class="lines">@@ -89,7 +91,7 @@
</span><span class="cx"> #include "strsed.h"
</span><span class="cx"> #include "readdir.h"
</span><span class="cx"> #include "pipe.h"
</span><del>-#include "flock.h"
</del><ins>+#include "adv-flock.h"
</ins><span class="cx"> #include "system.h"
</span><span class="cx"> #include "mktemp.h"
</span><span class="cx"> #include "realpath.h"
</span><span class="lines">@@ -105,74 +107,78 @@
</span><span class="cx"> #include "setmode.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-static char *
-ui_escape(const char *source)
-{
- char *d, *dest;
- const char *s;
- size_t dlen;
</del><ins>+__attribute__((format(printf, 3, 0)))
+static void ui_message(Tcl_Interp *interp, const char *severity, const char *format, va_list va) {
+ char tclcmd[32];
+ char *buf;
</ins><span class="cx">
</span><del>- s = source;
- dlen = strlen(source) * 2 + 1;
- d = dest = malloc(dlen);
- if (dest == NULL) {
- return NULL;
</del><ins>+ if (vasprintf(&buf, format, va) < 0) {
+ perror("vasprintf");
+ return;
</ins><span class="cx"> }
</span><del>- while(*s != '\0') {
- switch(*s) {
- case '\\':
- case '}':
- case '{':
- *d = '\\';
- d++;
- *d = *s;
- d++;
- s++;
- break;
- case '\n':
- s++;
- break;
- default:
- *d = *s;
- d++;
- s++;
- break;
- }
</del><ins>+
+ snprintf(tclcmd, sizeof(tclcmd), "ui_%s $warn", severity);
+
+ Tcl_SetVar(interp, "warn", buf, 0);
+ if (TCL_OK != Tcl_Eval(interp, tclcmd)) {
+ fprintf(stderr, "Error evaluating tcl statement `%s': %s\n", tclcmd, Tcl_GetStringResult(interp));
</ins><span class="cx"> }
</span><del>- *d = '\0';
- return dest;
</del><ins>+ Tcl_UnsetVar(interp, "warn", 0);
+ free(buf);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-int
-ui_info(Tcl_Interp *interp, char *mesg)
-{
- const char ui_proc_start[] = "ui_info [subst -nocommands -novariables {";
- const char ui_proc_end[] = "}]";
- char *script, *string;
- size_t scriptlen, len, remaining;
- int rval;
</del><ins>+__attribute__((format(printf, 2, 3)))
+void ui_error(Tcl_Interp *interp, const char *format, ...) {
+ va_list va;
+ va_start(va, format);
+ ui_message(interp, "error", format, va);
+ va_end(va);
+}
</ins><span class="cx">
</span><del>- string = ui_escape(mesg);
- if (string == NULL)
- return TCL_ERROR;
</del><ins>+__attribute__((format(printf, 2, 3)))
+void ui_warn(Tcl_Interp *interp, const char *format, ...) {
+ va_list va;
</ins><span class="cx">
</span><del>- len = strlen(string);
- scriptlen = sizeof(ui_proc_start) + len + sizeof(ui_proc_end) - 1;
- script = malloc(scriptlen);
- if (script == NULL)
- return TCL_ERROR;
</del><ins>+ va_start(va, format);
+ ui_message(interp, "warn", format, va);
+ va_end(va);
+}
</ins><span class="cx">
</span><del>- memcpy(script, ui_proc_start, sizeof(ui_proc_start));
- remaining = scriptlen - sizeof(ui_proc_start);
- strncat(script, string, remaining);
- remaining -= len;
- strncat(script, ui_proc_end, remaining);
- free(string);
- rval = Tcl_EvalEx(interp, script, -1, 0);
- free(script);
- return rval;
</del><ins>+__attribute__((format(printf, 2, 3)))
+void ui_msg(Tcl_Interp *interp, const char *format, ...) {
+ va_list va;
+ va_start(va, format);
+ ui_message(interp, "msg", format, va);
+ va_end(va);
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+__attribute__((format(printf, 2, 3)))
+void ui_notice(Tcl_Interp *interp, const char *format, ...) {
+ va_list va;
+
+ va_start(va, format);
+ ui_message(interp, "notice", format, va);
+ va_end(va);
+}
+
+__attribute__((format(printf, 2, 3)))
+void ui_info(Tcl_Interp *interp, const char *format, ...) {
+ va_list va;
+
+ va_start(va, format);
+ ui_message(interp, "info", format, va);
+ va_end(va);
+}
+
+__attribute__((format(printf, 2, 3)))
+void ui_debug(Tcl_Interp *interp, const char *format, ...) {
+ va_list va;
+
+ va_start(va, format);
+ ui_message(interp, "debug", format, va);
+ va_end(va);
+}
+
</ins><span class="cx"> int StrsedCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
</span><span class="cx"> {
</span><span class="cx"> char *pattern, *string, *res;
</span><span class="lines">@@ -608,7 +614,7 @@
</span><span class="cx"> return TCL_ERROR;
</span><span class="cx">
</span><span class="cx">         Tcl_CreateObjCommand(interp, "system", SystemCmd, NULL, NULL);
</span><del>-        Tcl_CreateObjCommand(interp, "flock", FlockCmd, NULL, NULL);
</del><ins>+        Tcl_CreateObjCommand(interp, "adv-flock", AdvFlockCmd, NULL, NULL);
</ins><span class="cx">         Tcl_CreateObjCommand(interp, "readdir", ReaddirCmd, NULL, NULL);
</span><span class="cx">         Tcl_CreateObjCommand(interp, "strsed", StrsedCmd, NULL, NULL);
</span><span class="cx">         Tcl_CreateObjCommand(interp, "mkstemp", MkstempCmd, NULL, NULL);
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpextlib10Pextlibh"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/pextlib1.0/Pextlib.h (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/pextlib1.0/Pextlib.h        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/pextlib1.0/Pextlib.h        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -30,4 +30,9 @@
</span><span class="cx"> * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx"> */
</span><span class="cx">
</span><del>-int ui_info(Tcl_Interp *, char *);
</del><ins>+void ui_error(Tcl_Interp *interp, const char *format, ...) __attribute__((format(printf, 2, 3)));
+void ui_warn(Tcl_Interp *interp, const char *format, ...) __attribute__((format(printf, 2, 3)));
+void ui_msg(Tcl_Interp *interp, const char *format, ...) __attribute__((format(printf, 2, 3)));
+void ui_notice(Tcl_Interp *interp, const char *format, ...) __attribute__((format(printf, 2, 3)));
+void ui_info(Tcl_Interp *interp, const char *format, ...) __attribute__((format(printf, 2, 3)));
+void ui_debug(Tcl_Interp *interp, const char *format, ...) __attribute__((format(printf, 2, 3)));
</ins></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpextlib10advflockcfromrev139551trunkbasesrcpextlib10advflockc"></a>
<div class="copfile"><h4>Copied: branches/gsoc15-dependency/base/src/pextlib1.0/adv-flock.c (from rev 139551, trunk/base/src/pextlib1.0/adv-flock.c) (0 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/pextlib1.0/adv-flock.c         (rev 0)
+++ branches/gsoc15-dependency/base/src/pextlib1.0/adv-flock.c        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -0,0 +1,256 @@
</span><ins>+/*
+ * adv-flock.c
+ * $Id$
+ *
+ * Copyright (c) 2009 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.
+ */
+
+#if HAVE_CONFIG_H
+#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 "adv-flock.h"
+
+static volatile int alarmReceived = 0;
+
+static void alarmHandler(int sig UNUSED) {
+ alarmReceived = 1;
+}
+
+int
+AdvFlockCmd(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;
+#endif
+ 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 ((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;
+
+ 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 */
+
+ 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;
+ }
+
+ /* (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;
+ }
+
+ if (oexclusive) {
+ operation |= LOCK_EX;
+ }
+
+ if (ounlock) {
+ operation |= LOCK_UN;
+ }
+
+ if (onoblock) {
+ operation |= LOCK_NB;
+ }
+
+ ret = flock(fd, operation);
+ if (ret == -1) {
+ errnoval = errno;
+ }
+#else
+#if HAVE_LOCKF
+ 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;
+ }
+ }
+
+ 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 */
+ 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;
+ }
+#else
+#error no available locking implementation
+#endif /* HAVE_LOCKF */
+#endif /* HAVE_FLOCK */
+ /* disable the alarm timer */
+ alarm(0);
+
+ 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;
+}
</ins></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpextlib10advflockhfromrev139551trunkbasesrcpextlib10advflockh"></a>
<div class="copfile"><h4>Copied: branches/gsoc15-dependency/base/src/pextlib1.0/adv-flock.h (from rev 139551, trunk/base/src/pextlib1.0/adv-flock.h) (0 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/pextlib1.0/adv-flock.h         (rev 0)
+++ branches/gsoc15-dependency/base/src/pextlib1.0/adv-flock.h        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+/*
+ * adv-flock.h
+ * $Id$
+ *
+ * Copyright (c) 2009 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.
+ */
+
+int AdvFlockCmd(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST objv[]);
</ins></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpextlib10flockc"></a>
<div class="delfile"><h4>Deleted: branches/gsoc15-dependency/base/src/pextlib1.0/flock.c (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/pextlib1.0/flock.c        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/pextlib1.0/flock.c        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -1,256 +0,0 @@
</span><del>-/*
- * flock.c
- * $Id$
- *
- * Copyright (c) 2009 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.
- */
-
-#if HAVE_CONFIG_H
-#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, 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;
-#endif
- 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 ((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;
-
- 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 */
-
- 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;
- }
-
- /* (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;
- }
-
- if (oexclusive) {
- operation |= LOCK_EX;
- }
-
- if (ounlock) {
- operation |= LOCK_UN;
- }
-
- if (onoblock) {
- operation |= LOCK_NB;
- }
-
- ret = flock(fd, operation);
- if (ret == -1) {
- errnoval = errno;
- }
-#else
-#if HAVE_LOCKF
- 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;
- }
- }
-
- 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 */
- 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;
- }
-#else
-#error no available locking implementation
-#endif /* HAVE_LOCKF */
-#endif /* HAVE_FLOCK */
- /* disable the alarm timer */
- alarm(0);
-
- 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;
-}
</del></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpextlib10flockh"></a>
<div class="delfile"><h4>Deleted: branches/gsoc15-dependency/base/src/pextlib1.0/flock.h (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/pextlib1.0/flock.h        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/pextlib1.0/flock.h        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -1,33 +0,0 @@
</span><del>-/*
- * flock.h
- * $Id$
- *
- * Copyright (c) 2009 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.
- */
-
-int FlockCmd(ClientData, Tcl_Interp *, int, Tcl_Obj *CONST objv[]);
</del></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpextlib10systemc"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/pextlib1.0/system.c (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/pextlib1.0/system.c        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/pextlib1.0/system.c        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -165,6 +165,13 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ /* print debug command info */
+ if (path) {
+ ui_debug(interp, "system -W %s: %s", path, cmdstring);
+ } else {
+ ui_debug(interp, "system: %s", cmdstring);
+ }
+
</ins><span class="cx"> /* check if and how we should use sandbox-exec */
</span><span class="cx"> sandbox = check_sandboxing(interp, &sandbox_exec_path, &profilestr);
</span><span class="cx">
</span><span class="lines">@@ -288,10 +295,7 @@
</span><span class="cx"> pos = 0;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (ui_info(interp, sbuf) != TCL_OK) {
- read_failed = 1;
- break;
- }
</del><ins>+ ui_info(interp, "%s", sbuf);
</ins><span class="cx"> }
</span><span class="cx"> fclose(pdes);
</span><span class="cx"> } else {
</span><span class="lines">@@ -307,21 +311,11 @@
</span><span class="cx"> if (WEXITSTATUS(ret) == 0) {
</span><span class="cx"> status = TCL_OK;
</span><span class="cx"> } else {
</span><del>- char *errorstr;
- size_t errorstrlen;
</del><span class="cx"> Tcl_Obj* errorCode;
</span><span class="cx">
</span><span class="cx"> /* print error */
</span><del>- /* get buffer large enough for additional message or the error code */
- errorstrlen = strlen(cmdstring) + strlen("Command failed: ") + 12;
- errorstr = malloc(errorstrlen);
- if (errorstr) {
- snprintf(errorstr, errorstrlen, "Command failed: %s", cmdstring);
- ui_info(interp, errorstr);
- snprintf(errorstr, errorstrlen, "Exit code: %d", WEXITSTATUS(ret));
- ui_info(interp, errorstr);
- free(errorstr);
- }
</del><ins>+ ui_info(interp, "Command failed: %s", cmdstring);
+ ui_info(interp, "Exit code: %d", WEXITSTATUS(ret));
</ins><span class="cx">
</span><span class="cx"> /* set errorCode [list CHILDSTATUS <pid> <code>] */
</span><span class="cx"> errorCode = Tcl_NewListObj(0, NULL);
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpextlib10tracelibc"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/pextlib1.0/tracelib.c (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/pextlib1.0/tracelib.c        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/pextlib1.0/tracelib.c        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -63,6 +63,8 @@
</span><span class="cx">
</span><span class="cx"> #include "tracelib.h"
</span><span class="cx">
</span><ins>+#include "Pextlib.h"
+
</ins><span class="cx"> #include "strlcat.h"
</span><span class="cx">
</span><span class="cx"> #ifdef HAVE_TRACEMODE_SUPPORT
</span><span class="lines">@@ -106,12 +108,6 @@
</span><span class="cx"> } sandbox_violation_t;
</span><span class="cx"> static void sandbox_violation(int sock, const char *path, sandbox_violation_t type);
</span><span class="cx">
</span><del>-static void ui_warn(const char *format, ...) __printflike(1, 2);
-#if 0
-static void ui_info(const char *format, ...) __printflike(1, 2);
-#endif
-static void ui_error(const char *format, ...) __printflike(1, 2);
-
</del><span class="cx"> #define MAX_SOCKETS (1024)
</span><span class="cx"> #define BUFSIZE (4096)
</span><span class="cx">
</span><span class="lines">@@ -420,7 +416,7 @@
</span><span class="cx"> reg_error error;
</span><span class="cx">
</span><span class="cx"> if (NULL == (reg = registry_for(interp, reg_attached))) {
</span><del>- ui_error("%s", Tcl_GetStringResult(interp));
</del><ins>+ ui_error(interp, "%s", Tcl_GetStringResult(interp));
</ins><span class="cx"> /* send unexpected output to make the build fail */
</span><span class="cx"> answer(sock, "#");
</span><span class="cx"> }
</span><span class="lines">@@ -438,7 +434,7 @@
</span><span class="cx"> /* find the port's name to compare with out list */
</span><span class="cx"> if (!reg_entry_propget(&entry, "name", &port, &error)) {
</span><span class="cx"> /* send unexpected output to make the build fail */
</span><del>- ui_error("%s", error.description);
</del><ins>+ ui_error(interp, "%s", error.description);
</ins><span class="cx"> answer(sock, "#");
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -455,50 +451,6 @@
</span><span class="cx"> answer(sock, "!");
</span><span class="cx"> }
</span><span class="cx">
</span><del>-__printflike(2, 0)
-static void ui_msg(const char *severity, const char *format, va_list va) {
- char buf[1024], tclcmd[32];
-
- vsnprintf(buf, sizeof(buf), format, va);
-
- snprintf(tclcmd, sizeof(tclcmd), "ui_%s $warn", severity);
-
- Tcl_SetVar(interp, "warn", buf, 0);
- if (TCL_OK != Tcl_Eval(interp, tclcmd)) {
- fprintf(stderr, "Error evaluating tcl statement `%s': %s\n", tclcmd, Tcl_GetStringResult(interp));
- }
- Tcl_UnsetVar(interp, "warn", 0);
-
-}
-
-__printflike(1, 2)
-static void ui_warn(const char *format, ...) {
- va_list va;
-
- va_start(va, format);
- ui_msg("warn", format, va);
- va_end(va);
-}
-
-#if 0
-__printflike(1, 2)
-static void ui_info(const char *format, ...) {
- va_list va;
-
- va_start(va, format);
- ui_msg("info", format, va);
- va_end(va);
-}
-#endif
-
-__printflike(1, 2)
-static void ui_error(const char *format, ...) {
- va_list va;
- va_start(va, format);
- ui_msg("error", format, va);
- va_end(va);
-}
-
</del><span class="cx"> static int TracelibOpenSocketCmd(Tcl_Interp *in) {
</span><span class="cx"> struct sockaddr_un sun;
</span><span class="cx"> struct rlimit rl;
</span><span class="lines">@@ -520,7 +472,7 @@
</span><span class="cx"> /* raise the limit of open files to the maximum from the default soft limit
</span><span class="cx"> * of 256 */
</span><span class="cx"> if (getrlimit(RLIMIT_NOFILE, &rl) == -1) {
</span><del>- ui_warn("getrlimit failed (%d), skipping setrlimit", errno);
</del><ins>+ ui_warn(interp, "getrlimit failed (%d), skipping setrlimit", errno);
</ins><span class="cx"> } else {
</span><span class="cx"> #ifdef OPEN_MAX
</span><span class="cx"> if (rl.rlim_max > OPEN_MAX) {
</span><span class="lines">@@ -529,7 +481,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> rl.rlim_cur = rl.rlim_max;
</span><span class="cx"> if (setrlimit(RLIMIT_NOFILE, &rl) == -1) {
</span><del>- ui_warn("setrlimit failed (%d)", errno);
</del><ins>+ ui_warn(interp, "setrlimit failed (%d)", errno);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -720,7 +672,7 @@
</span><span class="cx">
</span><span class="cx"> flags = fcntl(s, F_GETFL, 0);
</span><span class="cx"> if (-1 == fcntl(s, F_SETFL, flags & ~O_NONBLOCK)) {
</span><del>- ui_warn("tracelib: couldn't mark socket as blocking");
</del><ins>+ ui_warn(interp, "tracelib: couldn't mark socket as blocking");
</ins><span class="cx"> close(s);
</span><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="lines">@@ -728,7 +680,7 @@
</span><span class="cx"> /* register the new socket in the kqueue */
</span><span class="cx"> EV_SET(&kev, s, EVFILT_READ, EV_ADD | EV_RECEIPT, 0, 0, NULL);
</span><span class="cx"> if (1 != kevent(kq, &kev, 1, &kev, 1, NULL)) {
</span><del>- ui_warn("tracelib: error adding socket to kqueue");
</del><ins>+ ui_warn(interp, "tracelib: error adding socket to kqueue");
</ins><span class="cx"> close(s);
</span><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="lines">@@ -736,7 +688,7 @@
</span><span class="cx"> * always be returned. When a filter is successfully added, the data field
</span><span class="cx"> * will be zero. */
</span><span class="cx"> if ((kev.flags & EV_ERROR) == 0 || ((kev.flags & EV_ERROR) > 0 && kev.data != 0)) {
</span><del>- ui_warn("tracelib: error adding socket to kqueue");
</del><ins>+ ui_warn(interp, "tracelib: error adding socket to kqueue");
</ins><span class="cx"> close(s);
</span><span class="cx"> continue;
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcpextlib10xinstallc"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/pextlib1.0/xinstall.c (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/pextlib1.0/xinstall.c        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/pextlib1.0/xinstall.c        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -310,10 +310,7 @@
</span><span class="cx">                         return TCL_ERROR;
</span><span class="cx">                 }
</span><span class="cx">                 else {
</span><del>-                        char msg[255];
-
-                        snprintf(msg, sizeof msg, "%s: chdir(%s)\n", funcname, curdir);
-                        ui_info(interp, msg);
</del><ins>+ ui_info(interp, "%s: chdir(%s)\n", funcname, curdir);
</ins><span class="cx">                 }
</span><span class="cx">         }
</span><span class="cx">
</span><span class="lines">@@ -443,9 +440,6 @@
</span><span class="cx">         int tempcopy, temp_fd, to_fd = 0;
</span><span class="cx">         char backup[MAXPATHLEN], *p, pathbuf[MAXPATHLEN], tempfile[MAXPATHLEN];
</span><span class="cx">
</span><del>- /* message contains function name, two paths and a little bit extra formatting */
- char msg[MAXPATHLEN * 2 + 32];
-
</del><span class="cx">         files_match = 0;
</span><span class="cx">
</span><span class="cx">         /* If try to install NULL file to a directory, fails. */
</span><span class="lines">@@ -547,8 +541,7 @@
</span><span class="cx">                                 Tcl_SetResult(interp, errmsg, TCL_VOLATILE);
</span><span class="cx">                                 return TCL_ERROR;
</span><span class="cx">                         }
</span><del>-                        snprintf(msg, sizeof msg, "%s: %s -> %s\n", funcname, from_name, to_name);
-                        ui_info(interp, msg);
</del><ins>+                        ui_info(interp, "%s: %s -> %s\n", funcname, from_name, to_name);
</ins><span class="cx">                 }
</span><span class="cx">                 if (!devnull) {
</span><span class="cx">                         if (copy(interp, from_fd, from_name, to_fd,
</span><span class="lines">@@ -650,8 +643,7 @@
</span><span class="cx">                                 Tcl_SetResult(interp, errmsg, TCL_VOLATILE);
</span><span class="cx">                                 return TCL_ERROR;
</span><span class="cx">                         }
</span><del>-                        snprintf(msg, sizeof msg, "%s: %s -> %s\n", funcname, to_name, backup);
-                        ui_info(interp, msg);
</del><ins>+ ui_info(interp, "%s: %s -> %s\n", funcname, to_name, backup);
</ins><span class="cx">                         if (rename(to_name, backup) < 0) {
</span><span class="cx">                                 char errmsg[255];
</span><span class="cx">
</span><span class="lines">@@ -664,8 +656,7 @@
</span><span class="cx">                                 return TCL_ERROR;
</span><span class="cx">                         }
</span><span class="cx">                 }
</span><del>-                snprintf(msg, sizeof msg, "%s: %s -> %s\n", funcname, from_name, to_name);
-                ui_info(interp, msg);
</del><ins>+ ui_info(interp, "%s: %s -> %s\n", funcname, from_name, to_name);
</ins><span class="cx">                 if (rename(tempfile, to_name) < 0) {
</span><span class="cx">                         char errmsg[255];
</span><span class="cx">
</span><span class="lines">@@ -885,7 +876,6 @@
</span><span class="cx">         char backup[MAXPATHLEN];
</span><span class="cx">         int saved_errno = 0;
</span><span class="cx">         int newfd;
</span><del>-        char msg[256];
</del><span class="cx">
</span><span class="cx">         if (target) {
</span><span class="cx">                 /*
</span><span class="lines">@@ -909,8 +899,7 @@
</span><span class="cx">                                 return -1;
</span><span class="cx">                         }
</span><span class="cx">                         (void)snprintf(backup, MAXPATHLEN, "%s%s", path, suffix);
</span><del>-                        snprintf(msg, sizeof msg, "%s: %s -> %s\n", funcname, path, backup);
-                        ui_info(interp, msg);
</del><ins>+ ui_info(interp, "%s: %s -> %s\n", funcname, path, backup);
</ins><span class="cx">                         if (rename(path, backup) < 0) {
</span><span class="cx">                                 char errmsg[255];
</span><span class="cx">
</span><span class="lines">@@ -1068,10 +1057,7 @@
</span><span class="cx">                                         return TCL_ERROR;
</span><span class="cx">                                 }
</span><span class="cx">                                 else {
</span><del>-                                        char msg[255];
-
-                                        snprintf(msg, sizeof msg, "%s: mkdir %s\n", funcname, path);
-                                        ui_info(interp, msg);
</del><ins>+ ui_info(interp, "%s: mkdir %s\n", funcname, path);
</ins><span class="cx">                                 }
</span><span class="cx">                         } else if (!S_ISDIR(sb.st_mode)) {
</span><span class="cx">                                 char errmsg[255];
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcportporttcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port/port.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port/port.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port/port.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -1870,9 +1870,6 @@
</span><span class="cx"> global env boot_env
</span><span class="cx"> array unset env_save; array set env_save [array get env]
</span><span class="cx"> array unset env *
</span><del>- if {${macports::macosx_version} == "10.5"} {
- unsetenv *
- }
</del><span class="cx"> array set env [array get boot_env]
</span><span class="cx">
</span><span class="cx"> if [catch {system -nodup [list ${macports::autoconf::man_path} $pagepath]} result] {
</span><span class="lines">@@ -1883,9 +1880,6 @@
</span><span class="cx">
</span><span class="cx"> # Restore internal MacPorts environment
</span><span class="cx"> array unset env *
</span><del>- if {${macports::macosx_version} == "10.5"} {
- unsetenv *
- }
</del><span class="cx"> array set env [array get env_save]
</span><span class="cx"> } else {
</span><span class="cx"> ui_error "Sorry, no help for this topic is available."
</span><span class="lines">@@ -2761,7 +2755,7 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> proc action_upgrade { action portlist opts } {
</span><del>- if {[require_portlist portlist "yes"] || ([prefix_unwritable] && ![macports::global_option_isset ports_dryrun])} {
</del><ins>+ if {[require_portlist portlist "yes"] || (![macports::global_option_isset ports_dryrun] && [prefix_unwritable])} {
</ins><span class="cx"> return 1
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -3172,7 +3166,7 @@
</span><span class="cx"> return 1
</span><span class="cx"> }
</span><span class="cx"> }
</span><del>- if {[prefix_unwritable]} {
</del><ins>+ if {![macports::global_option_isset ports_dryrun] && [prefix_unwritable]} {
</ins><span class="cx"> return 1
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -3927,9 +3921,6 @@
</span><span class="cx"> # may want stuff from it as well, like TERM.
</span><span class="cx"> array unset env_save; array set env_save [array get env]
</span><span class="cx"> array unset env *
</span><del>- if {${macports::macosx_version} eq "10.5"} {
- unsetenv *
- }
</del><span class="cx"> array set env [array get boot_env]
</span><span class="cx">
</span><span class="cx"> # Find an editor to edit the portfile
</span><span class="lines">@@ -3958,9 +3949,6 @@
</span><span class="cx">
</span><span class="cx"> # Restore internal MacPorts environment
</span><span class="cx"> array unset env *
</span><del>- if {${macports::macosx_version} eq "10.5"} {
- unsetenv *
- }
</del><span class="cx"> array set env [array get env_save]
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -4061,7 +4049,7 @@
</span><span class="cx"> if {[require_portlist portlist]} {
</span><span class="cx"> return 1
</span><span class="cx"> }
</span><del>- if {($action eq "install" || $action eq "archive") && [prefix_unwritable] && ![macports::global_option_isset ports_dryrun]} {
</del><ins>+ if {($action eq "install" || $action eq "archive") && ![macports::global_option_isset ports_dryrun] && [prefix_unwritable]} {
</ins><span class="cx"> return 1
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -4172,6 +4160,21 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><ins>+proc action_mirror { action portlist opts } {
+ global macports::portdbpath
+ # handle --new option here so we only delete the db once
+ array set options $opts
+ set mirror_filemap_path [file join $macports::portdbpath distfiles_mirror.db]
+ if {[info exists options(ports_mirror_new)]
+ && [string is true -strict $options(ports_mirror_new)]
+ && [file exists $mirror_filemap_path]} {
+ # Trash the map file if it existed.
+ file delete -force $mirror_filemap_path
+ }
+
+ action_target $action $portlist $opts
+}
+
</ins><span class="cx"> proc action_exit { action portlist opts } {
</span><span class="cx"> # Return a semaphore telling the main loop to quit
</span><span class="cx"> return -999
</span><span class="lines">@@ -4259,6 +4262,8 @@
</span><span class="cx"> \
</span><span class="cx"> uninstall [list action_uninstall [ACTION_ARGS_PORTS]] \
</span><span class="cx"> \
</span><ins>+ mirror [list action_mirror [ACTION_ARGS_PORTS]] \
+ \
</ins><span class="cx"> installed [list action_installed [ACTION_ARGS_PORTS]] \
</span><span class="cx"> outdated [list action_outdated [ACTION_ARGS_PORTS]] \
</span><span class="cx"> contents [list action_contents [ACTION_ARGS_PORTS]] \
</span><span class="lines">@@ -4295,7 +4300,6 @@
</span><span class="cx"> lint [list action_target [ACTION_ARGS_PORTS]] \
</span><span class="cx"> livecheck [list action_target [ACTION_ARGS_PORTS]] \
</span><span class="cx"> distcheck [list action_target [ACTION_ARGS_PORTS]] \
</span><del>- mirror [list action_target [ACTION_ARGS_PORTS]] \
</del><span class="cx"> load [list action_target [ACTION_ARGS_PORTS]] \
</span><span class="cx"> unload [list action_target [ACTION_ARGS_PORTS]] \
</span><span class="cx"> reload [list action_target [ACTION_ARGS_PORTS]] \
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcport10portchecksumtcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port1.0/portchecksum.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port1.0/portchecksum.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port1.0/portchecksum.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx"> if {[llength $all_dist_files] == 1
</span><span class="cx"> && [expr {$nb_checksum % 2}] == 0
</span><span class="cx"> && [expr {$nb_checksum / 2}] <= $checksum_types_count
</span><del>- && [lsearch -exact $checksum_types [lindex $checksums_str 0]] >= 0} {
</del><ins>+ && [lindex $checksums_str 0] in $checksum_types} {
</ins><span class="cx"> # Convert to format #2
</span><span class="cx"> set checksums_str [linsert $checksums_str 0 [lindex $all_dist_files 0]]
</span><span class="cx"> # We increased the size.
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx"> incr ix_checksum
</span><span class="cx"> while {1} {
</span><span class="cx"> set checksum_type [lindex $checksums_str $ix_checksum]
</span><del>- if {[lsearch -exact $checksum_types $checksum_type] >= 0} {
</del><ins>+ if {$checksum_type in $checksum_types} {
</ins><span class="cx"> # append the type and the value.
</span><span class="cx"> incr ix_checksum
</span><span class="cx"> set checksum_value [lindex $checksums_str $ix_checksum]
</span><span class="lines">@@ -281,7 +281,7 @@
</span><span class="cx"> ui_debug "[format [msgcat::mc "Correct (%s) checksum for %s"] $type $distfile]"
</span><span class="cx"> } else {
</span><span class="cx"> ui_error "[format [msgcat::mc "Checksum (%s) mismatch for %s"] $type $distfile]"
</span><del>- ui_info_fetch "[format [msgcat::mc "Portfile checksum: %s %s %s"] $distfile $type $sum]"
</del><ins>+ ui_info "[format [msgcat::mc "Portfile checksum: %s %s %s"] $distfile $type $sum]"
</ins><span class="cx"> ui_info "[format [msgcat::mc "Distfile checksum: %s %s %s"] $distfile $type $calculated_sum]"
</span><span class="cx">
</span><span class="cx"> # Raise the failure flag
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcport10portconfiguretcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port1.0/portconfigure.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port1.0/portconfigure.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port1.0/portconfigure.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -325,16 +325,16 @@
</span><span class="cx"> }
</span><span class="cx"> set ret {}
</span><span class="cx"> foreach arch $archs {
</span><del>- if {[lsearch -exact $supported_archs $arch] != -1} {
</del><ins>+ if {$arch in $supported_archs} {
</ins><span class="cx"> set add_arch $arch
</span><del>- } elseif {$arch eq "x86_64" && [lsearch -exact $supported_archs "i386"] != -1} {
</del><ins>+ } elseif {$arch eq "x86_64" && "i386" in $supported_archs} {
</ins><span class="cx"> set add_arch "i386"
</span><del>- } elseif {$arch eq "ppc64" && [lsearch -exact $supported_archs "ppc"] != -1} {
</del><ins>+ } elseif {$arch eq "ppc64" && "ppc" in $supported_archs} {
</ins><span class="cx"> set add_arch "ppc"
</span><span class="cx"> } else {
</span><span class="cx"> continue
</span><span class="cx"> }
</span><del>- if {[lsearch -exact $ret $add_arch] == -1} {
</del><ins>+ if {$add_arch ni $ret} {
</ins><span class="cx"> lappend ret $add_arch
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -759,7 +759,7 @@
</span><span class="cx"> # add SDK flags if cross-compiling (or universal on ppc tiger)
</span><span class="cx"> if {${configure.sdkroot} ne ""} {
</span><span class="cx"> foreach env_var {CPPFLAGS CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS} {
</span><del>- append_to_environment_value configure $env_var -isysroot ${configure.sdkroot}
</del><ins>+ append_to_environment_value configure $env_var -isysroot${configure.sdkroot}
</ins><span class="cx"> }
</span><span class="cx"> append_to_environment_value configure "LDFLAGS" -Wl,-syslibroot,${configure.sdkroot}
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcport10portdestroottcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port1.0/portdestroot.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port1.0/portdestroot.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port1.0/portdestroot.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -341,7 +341,7 @@
</span><span class="cx"> if {$pfile eq "." || $pfile eq ".."} {
</span><span class="cx"> continue
</span><span class="cx"> }
</span><del>- if {[lsearch -exact $prefixPaths $pfile] == -1} {
</del><ins>+ if {$pfile ni $prefixPaths} {
</ins><span class="cx"> ui_warn "violation by [file join $dfile $pfile]"
</span><span class="cx"> set mtree_violation "yes"
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcport10portlinttcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port1.0/portlint.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port1.0/portlint.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port1.0/portlint.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -341,7 +341,7 @@
</span><span class="cx"> maintainers license homepage master_sites checksums patchfiles \
</span><span class="cx"> depends_fetch depends_extract depends_lib depends_build \
</span><span class="cx"> depends_run distfiles fetch.type lint_portsystem lint_platforms \
</span><del>- lint_required lint_optional
</del><ins>+ lint_required lint_optional replaced_by conflicts
</ins><span class="cx"> set portarch [get_canonical_archs]
</span><span class="cx">
</span><span class="cx"> if (!$seen_portsystem) {
</span><span class="lines">@@ -403,7 +403,7 @@
</span><span class="cx">
</span><span class="cx"> if {[info exists platforms]} {
</span><span class="cx"> foreach platform $platforms {
</span><del>- if {[lsearch -exact $lint_platforms $platform] == -1} {
</del><ins>+ if {$platform ni $lint_platforms} {
</ins><span class="cx"> ui_error "Unknown platform: $platform"
</span><span class="cx"> incr errors
</span><span class="cx"> } else {
</span><span class="lines">@@ -450,7 +450,7 @@
</span><span class="cx">
</span><span class="cx"> if {![info exists variantdesc] || $variantdesc eq ""} {
</span><span class="cx"> # don't warn about missing descriptions for global variants
</span><del>- if {[lsearch -exact $local_variants $variantname] != -1 &&
</del><ins>+ if {$variantname in $local_variants &&
</ins><span class="cx"> [variant_desc $porturl $variantname] eq ""} {
</span><span class="cx"> ui_warn "Variant $variantname does not have a description"
</span><span class="cx"> incr warnings
</span><span class="lines">@@ -538,6 +538,45 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ if {[info exists replaced_by]} {
+ if {[regexp {[^[:alnum:]_.-]} $replaced_by]} {
+ ui_error "replaced_by should be a single port name, invalid value: $replaced_by"
+ incr errors
+ } else {
+ if {[catch {set res [mport_lookup $replaced_by]} error]} {
+ global errorInfo
+ ui_debug "$errorInfo"
+ }
+ if {$res eq ""} {
+ ui_error "replaced_by references unknown port: $replaced_by"
+ incr errors
+ } else {
+ ui_info "OK: replaced_by $replaced_by"
+ }
+ }
+ }
+
+ if {[info exists conflicts]} {
+ foreach cport $conflicts {
+ if {[regexp {[^[:alnum:]_.-]} $cport]} {
+ ui_error "conflicts lists invalid value, should be port name: $cport"
+ incr errors
+ continue
+ }
+ if {[catch {set res [mport_lookup $cport]} error]} {
+ global errorInfo
+ ui_debug "$errorInfo"
+ continue
+ }
+ if {$res eq ""} {
+ ui_error "conflicts references unknown port: $cport"
+ incr errors
+ } else {
+ ui_info "OK: conflicts $cport"
+ }
+ }
+ }
+
</ins><span class="cx"> if {[regexp "^(.+)nomaintainer(@macports.org)?(.+)$" $maintainers] } {
</span><span class="cx"> ui_error "Using nomaintainer together with other maintainer"
</span><span class="cx"> incr errors
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcport10portlivechecktcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port1.0/portlivecheck.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port1.0/portlivecheck.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port1.0/portlivecheck.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span><del>- if {[lsearch -exact [split $available_types "|"] ${livecheck.type}] != -1} {
</del><ins>+ if {${livecheck.type} in [split $available_types "|"]} {
</ins><span class="cx"> # Load the defaults from _resources/port1.0/livecheck/${livecheck.type}.tcl.
</span><span class="cx"> set defaults_file "$types_dir/${livecheck.type}.tcl"
</span><span class="cx"> ui_debug "Loading the defaults from '$defaults_file'"
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcport10portmirrortcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port1.0/portmirror.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port1.0/portmirror.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port1.0/portmirror.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -53,28 +53,19 @@
</span><span class="cx"> # It also records the path in a database.
</span><span class="cx">
</span><span class="cx"> proc portmirror::mirror_main {args} {
</span><del>- global fetch.type mirror_filemap ports_mirror_new portdbpath
</del><ins>+ global fetch.type mirror_filemap portdbpath
</ins><span class="cx">
</span><span class="cx"> set mirror_filemap_path [file join $portdbpath distfiles_mirror.db]
</span><del>- if {![info exists mirror_filemap]
- && [info exists ports_mirror_new]
- && $ports_mirror_new eq "yes"
- && [file exists $mirror_filemap_path]} {
- # Trash the map file if it existed.
- file delete -force $mirror_filemap_path
- }
-
</del><span class="cx"> filemap open mirror_filemap $mirror_filemap_path
</span><span class="cx">
</span><span class="cx"> # Check the distfiles if it's a regular fetch phase.
</span><del>- if {"${fetch.type}" == "standard"} {
</del><ins>+ if {${fetch.type} eq "standard"} {
</ins><span class="cx"> # fetch the files.
</span><span class="cx"> portfetch::fetch_init $args
</span><span class="cx"> portfetch::fetch_start $args
</span><span class="cx"> portfetch::fetch_main $args
</span><span class="cx">
</span><span class="cx"> # checksum the files.
</span><del>- #checksum_start
</del><span class="cx"> if {[catch {portchecksum::checksum_main $args}]} {
</span><span class="cx"> # delete the files.
</span><span class="cx"> portfetch::fetch_deletefiles $args
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcport10porttracetcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port1.0/porttrace.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port1.0/porttrace.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port1.0/porttrace.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -263,9 +263,6 @@
</span><span class="cx">
</span><span class="cx">                 foreach var {DYLD_INSERT_LIBRARIES DARWINTRACE_LOG} {
</span><span class="cx">                         array unset env $var
</span><del>-                        if {$macosx_version eq "10.5"} {
-                                unsetenv $var
-                        }
</del><span class="cx">                 }
</span><span class="cx">
</span><span class="cx">                 # Kill socket
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcport10portuninstalltcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port1.0/portuninstall.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port1.0/portuninstall.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port1.0/portuninstall.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -49,8 +49,8 @@
</span><span class="cx"> default uninstall.asroot no
</span><span class="cx">
</span><span class="cx"> proc portuninstall::uninstall_start {args} {
</span><del>- global prefix
- if {![file writable $prefix] || ([getuid] == 0 && [geteuid] != 0)} {
</del><ins>+ global prefix ports_dryrun
+ if {(![file writable $prefix] && ![tbool ports_dryrun]) || ([getuid] == 0 && [geteuid] != 0)} {
</ins><span class="cx"> # if install location is not writable, need root privileges
</span><span class="cx"> elevateToRoot "uninstall"
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcport10portutiltcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port1.0/portutil.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port1.0/portutil.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port1.0/portutil.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -367,7 +367,6 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- ui_debug "Assembled command: '$cmdstring'"
</del><span class="cx"> return $cmdstring
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -450,7 +449,6 @@
</span><span class="cx"> array set env [array get ${varprefix}.env_array]
</span><span class="cx"> # Call the command.
</span><span class="cx"> set fullcmdstring "$command_prefix $cmdstring $command_suffix"
</span><del>- ui_debug "Executing command line: $fullcmdstring"
</del><span class="cx"> set code [catch {system {*}$notty {*}$nice $fullcmdstring} result]
</span><span class="cx"> # Save variables in order to re-throw the same error code.
</span><span class="cx"> set errcode $::errorCode
</span><span class="lines">@@ -461,9 +459,6 @@
</span><span class="cx">
</span><span class="cx"> # Restore the environment.
</span><span class="cx"> array unset env *
</span><del>- if {$macosx_version eq "10.5"} {
- unsetenv *
- }
</del><span class="cx"> array set env [array get saved_env]
</span><span class="cx">
</span><span class="cx"> # Return as if system had been called directly.
</span><span class="lines">@@ -702,8 +697,7 @@
</span><span class="cx"> # determine if a variant exists.
</span><span class="cx"> proc variant_exists {name} {
</span><span class="cx"> global PortInfo
</span><del>- if {[info exists PortInfo(variants)] &&
- [lsearch -exact $PortInfo(variants) $name] >= 0} {
</del><ins>+ if {[info exists PortInfo(variants)] && $name in $PortInfo(variants)} {
</ins><span class="cx"> return 1
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -814,7 +808,7 @@
</span><span class="cx"> proc subport {subname body} {
</span><span class="cx"> global subport name PortInfo
</span><span class="cx"> if {$subport eq $name && $subname ne $name &&
</span><del>- (![info exists PortInfo(subports)] || [lsearch -exact $PortInfo(subports) $subname] == -1)} {
</del><ins>+ (![info exists PortInfo(subports)] || $subname ni $PortInfo(subports))} {
</ins><span class="cx"> lappend PortInfo(subports) $subname
</span><span class="cx"> }
</span><span class="cx"> if {[string equal -nocase $subname $subport]} {
</span><span class="lines">@@ -893,13 +887,11 @@
</span><span class="cx">
</span><span class="cx"> # tbool (testbool)
</span><span class="cx"> # If the variable exists in the calling procedure's namespace
</span><del>-# and is set to "yes", return 1. Otherwise, return 0
</del><ins>+# and is set to a boolean true value, return 1. Otherwise, return 0
</ins><span class="cx"> proc tbool {key} {
</span><span class="cx"> upvar $key $key
</span><span class="cx"> if {[info exists $key]} {
</span><del>- if {[string equal -nocase [set $key] "yes"]} {
- return 1
- }
</del><ins>+ return [string is true -strict [set $key]]
</ins><span class="cx"> }
</span><span class="cx"> return 0
</span><span class="cx"> }
</span><span class="lines">@@ -1023,9 +1015,6 @@
</span><span class="cx"> set env(LC_CTYPE) $oldlocale
</span><span class="cx"> } else {
</span><span class="cx"> unset env(LC_CTYPE)
</span><del>- if {$macosx_version eq "10.5"} {
- unsetenv LC_CTYPE
- }
</del><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> close $tmpfd
</span><span class="lines">@@ -1037,9 +1026,6 @@
</span><span class="cx"> set env(LC_CTYPE) $oldlocale
</span><span class="cx"> } else {
</span><span class="cx"> unset env(LC_CTYPE)
</span><del>- if {$macosx_version eq "10.5"} {
- unsetenv LC_CTYPE
- }
</del><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> close $tmpfd
</span><span class="lines">@@ -1397,7 +1383,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> # Of course, if this is a dry run, don't do the task:
</span><del>- if {[info exists ports_dryrun] && $ports_dryrun eq "yes" && [lsearch -exact $dryrun_allow_targets $targetname] == -1} {
</del><ins>+ if {[tbool ports_dryrun] && $targetname ni $dryrun_allow_targets} {
</ins><span class="cx"> # only one message per portname
</span><span class="cx"> if {$portname != $ports_dry_last_skipped} {
</span><span class="cx"> ui_notice "For $portname: skipping $targetname (dry run)"
</span><span class="lines">@@ -1428,8 +1414,7 @@
</span><span class="cx">
</span><span class="cx"> #start tracelib
</span><span class="cx"> if {($result ==0
</span><del>- && [info exists ports_trace]
- && $ports_trace eq "yes"
</del><ins>+ && [tbool ports_trace]
</ins><span class="cx"> && $target ne "clean"
</span><span class="cx"> && $target ne "uninstall")} {
</span><span class="cx"> # uninstall will open a portfile from registry and call
</span><span class="lines">@@ -1492,11 +1477,9 @@
</span><span class="cx">
</span><span class="cx"> # If portname is empty, the dependency is already satisfied by other means,
</span><span class="cx"> # for example a bin: dependency on a file not installed by MacPorts
</span><del>- if {$name ne ""} {
- if {[lsearch -exact $deplist $name] == -1} {
- lappend deplist $name
- set deplist [recursive_collect_deps $name $deplist]
- }
</del><ins>+ if {$name ne "" && $name ni $deplist} {
+ lappend deplist $name
+ set deplist [recursive_collect_deps $name $deplist]
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1541,8 +1524,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> # Check dependencies & file creations outside workpath.
</span><del>- if {[info exists ports_trace]
- && $ports_trace eq "yes"
</del><ins>+ if {[tbool ports_trace]
</ins><span class="cx"> && $target ne "clean"
</span><span class="cx"> && $target ne "uninstall"} {
</span><span class="cx">
</span><span class="lines">@@ -1614,9 +1596,6 @@
</span><span class="cx"> set env(HOME) $savedhome
</span><span class="cx"> if {[info exists env(TMPDIR)]} {
</span><span class="cx"> unset env(TMPDIR)
</span><del>- if {$macosx_version eq "10.5"} {
- unsetenv TMPDIR
- }
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return $result
</span><span class="lines">@@ -1633,7 +1612,7 @@
</span><span class="cx">
</span><span class="cx"> foreach item $deplist {
</span><span class="cx"> set name [lindex $item 0]
</span><del>- if {[lsearch -exact $depsfound $name] == -1} {
</del><ins>+ if {$name ni $depsfound} {
</ins><span class="cx"> lappend depsfound $name
</span><span class="cx"> set depsfound [recursive_collect_deps $name $depsfound]
</span><span class="cx"> }
</span><span class="lines">@@ -1836,10 +1815,10 @@
</span><span class="cx">
</span><span class="cx"> set fd [open $statefile a+]
</span><span class="cx"> if {![tbool ports_dryrun]} {
</span><del>- if {[catch {flock $fd -exclusive -noblock} result]} {
</del><ins>+ if {[catch {adv-flock $fd -exclusive -noblock} result]} {
</ins><span class="cx"> if {"$result" == "EAGAIN"} {
</span><span class="cx"> ui_notice "Waiting for lock on $statefile"
</span><del>- flock $fd -exclusive
</del><ins>+ adv-flock $fd -exclusive
</ins><span class="cx"> } elseif {"$result" == "EOPNOTSUPP"} {
</span><span class="cx"> # Locking not supported, just return
</span><span class="cx"> return $fd
</span><span class="lines">@@ -2052,7 +2031,7 @@
</span><span class="cx"> array set requested_variations [array get upvariations]
</span><span class="cx"> foreach key [array names upvariations *] {
</span><span class="cx"> if {![info exists PortInfo(variants)] ||
</span><del>- [lsearch $PortInfo(variants) $key] == -1} {
</del><ins>+ $key ni $PortInfo(variants)} {
</ins><span class="cx"> ui_debug "Requested variant $upvariations($key)$key is not provided by port $portname."
</span><span class="cx"> array unset upvariations $key
</span><span class="cx"> }
</span><span class="lines">@@ -2139,17 +2118,16 @@
</span><span class="cx"> break
</span><span class="cx"> }
</span><span class="cx"> }
</span><del>- if { $statereq &&
- !([info exists ports_force] && $ports_force eq "yes")} {
</del><ins>+ if {$statereq && ![tbool ports_force]} {
</ins><span class="cx">
</span><span class="cx"> set state_fd [open_statefile]
</span><span class="cx">
</span><span class="cx"> array set oldvariations {}
</span><span class="cx"> if {[check_statefile_variants variations oldvariations $state_fd]} {
</span><del>- ui_error "Requested variants \"[canonicalize_variants [array get variations]]\" do not match original selection \"[canonicalize_variants [array get oldvariations]]\"."
- ui_error "Please use the same variants again, perform 'port clean [option subport]' or specify the force option (-f)."
</del><ins>+ ui_error "Requested variants \"[canonicalize_variants [array get variations]]\" do not match those the build was started with: \"[canonicalize_variants [array get oldvariations]]\"."
+ ui_error "Please use the same variants again, or run 'port clean [option subport]' first to remove the existing partially completed build."
</ins><span class="cx"> set result 1
</span><del>- } elseif {!([info exists ports_dryrun] && $ports_dryrun eq "yes")} {
</del><ins>+ } elseif {![tbool ports_dryrun]} {
</ins><span class="cx"> # Write variations out to the statefile
</span><span class="cx"> foreach key [array names variations *] {
</span><span class="cx"> write_statefile variant $variations($key)$key $state_fd
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcport10teststesttcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/port1.0/tests/test.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/port1.0/tests/test.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/port1.0/tests/test.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> set test_suite [glob *.test]
</span><span class="cx"> foreach test $test_suite {
</span><span class="cx"> if {$test_name ne $test} {
</span><del>- set no [expr {$no + 1}]
</del><ins>+ incr no
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> if {$no == [llength $test_suite]} {
</span><span class="lines">@@ -83,8 +83,13 @@
</span><span class="cx"> set lastline [lindex [split $result "\n"] end]
</span><span class="cx">
</span><span class="cx"> if {[lrange [split $lastline "\t"] 1 1] ne "Total"} {
</span><del>- set lastline [lindex [split $result "\n"] end-2]
- set errmsg [lindex [split $result "\n"] end]
</del><ins>+ 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]
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> set splitresult [split $lastline "\t"]
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcregistry20portimagetcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/registry2.0/portimage.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/registry2.0/portimage.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/registry2.0/portimage.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -534,7 +534,7 @@
</span><span class="cx"> # we'll set the directory attributes properly for all
</span><span class="cx"> # directories.
</span><span class="cx"> set directory [::file dirname $file]
</span><del>- while { [lsearch -exact $files $directory] == -1 } {
</del><ins>+ while {$directory ni $files} {
</ins><span class="cx"> lappend files $directory
</span><span class="cx"> set directory [::file dirname $directory]
</span><span class="cx"> }
</span><span class="lines">@@ -688,7 +688,7 @@
</span><span class="cx">
</span><span class="cx"> # Split out the filename's subpaths and add them to the image list
</span><span class="cx"> # as well.
</span><del>- while { [lsearch -exact $files $directory] == -1 } {
</del><ins>+ while {$directory ni $files} {
</ins><span class="cx"> lappend files $directory
</span><span class="cx"> set directory [::file dirname $directory]
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcregistry20portuninstalltcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/registry2.0/portuninstall.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/registry2.0/portuninstall.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/registry2.0/portuninstall.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -249,7 +249,7 @@
</span><span class="cx"> ui_msg "For $portname @${composite_spec}: skipping uninstall (dry run)"
</span><span class="cx"> # allow deps to not be excluded from the list below just because this port is still a dependent
</span><span class="cx"> if {[info exists options(ports_uninstall_follow-dependencies)] && [string is true -strict $options(ports_uninstall_follow-dependencies)]} {
</span><del>- set uports [list $portname]
</del><ins>+ set uports [list [list $portname $version $revision $variants]]
</ins><span class="cx"> }
</span><span class="cx"> } else {
</span><span class="cx"> ui_msg "$UI_PREFIX [format [msgcat::mc "Uninstalling %s @%s"] $portname $composite_spec]"
</span><span class="lines">@@ -307,25 +307,21 @@
</span><span class="cx"> set uninstalling_this_dep 0
</span><span class="cx"> if {![catch {set ilist [registry::installed $dep]}]} {
</span><span class="cx"> foreach i $ilist {
</span><del>- set iversion [lindex $i 1]
- set irevision [lindex $i 2]
- set ivariants [lindex $i 3]
</del><ins>+ lassign $i dep iversion irevision ivariants
+ if {[list $dep $iversion $irevision $ivariants] in $uports} {
+ continue
+ }
</ins><span class="cx"> set regref [registry::open_entry $dep $iversion $irevision $ivariants [lindex $i 5]]
</span><span class="cx"> if {![registry::property_retrieve $regref requested]} {
</span><del>- set dependentlist [registry::list_dependents $dep $iversion $irevision $ivariants]
- set dependents {}
- foreach depdt $dependentlist {
- lappend dependents [lindex $depdt 2]
- }
</del><span class="cx"> set all_dependents_uninstalling 1
</span><del>- foreach depdt $dependents {
- if {[lsearch -exact $uports $depdt] == -1} {
</del><ins>+ foreach depdt [$regref dependents] {
+ if {[list [$depdt name] [$depdt version] [$depdt revision] [$depdt variants]] ni $uports} {
</ins><span class="cx"> set all_dependents_uninstalling 0
</span><span class="cx"> break
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> if {$all_dependents_uninstalling} {
</span><del>- lappend uports $dep
</del><ins>+ lappend uports [list $dep $iversion $irevision $ivariants]
</ins><span class="cx"> lappend portilist $dep@${iversion}_${irevision}${ivariants}
</span><span class="cx"> set uninstalling_this_dep 1
</span><span class="cx"> }
</span><span class="lines">@@ -337,7 +333,7 @@
</span><span class="cx"> foreach depref $deprefs {
</span><span class="cx"> set depdeps [registry_uninstall::generate_deplist $depref $optionslist]
</span><span class="cx"> foreach d $depdeps {
</span><del>- if {[lsearch -exact $alldeps $d] == -1} {
</del><ins>+ if {$d ni [lrange $alldeps $j+1 end]} {
</ins><span class="cx"> lappend alldeps $d
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -354,21 +350,16 @@
</span><span class="cx">
</span><span class="cx"> # uninstall all dependencies in order from uports
</span><span class="cx"> foreach dp $uports {
</span><del>- if {![catch {set ilist [registry::installed $dp]}]} {
- foreach i $ilist {
- set iversion [lindex $i 1]
- set irevision [lindex $i 2]
- set ivariants [lindex $i 3]
- set regref [registry::open_entry $dp $iversion $irevision $ivariants [lindex $i 5]]
- if {[info exists options(ports_dryrun)] && [string is true -strict $options(ports_dryrun)]} {
- if {$dp ne $portname} {
- ui_msg "For $dp @${iversion}_${irevision}${ivariants}: skipping uninstall (dry run)"
- }
- } else {
- if {[info exists options(ports_uninstall_no-exec)] || ![registry::run_target $regref uninstall [array get options]]} {
- registry_uninstall::uninstall $dp $iversion $irevision $ivariants [array get options]
- }
</del><ins>+ lassign $dp iname iversion irevision ivariants
+ if {![catch {registry::open_entry $iname $iversion $irevision $ivariants ""} regref]} {
+ if {[info exists options(ports_dryrun)] && [string is true -strict $options(ports_dryrun)]} {
+ if {$iname ne $portname} {
+ ui_msg "For $iname @${iversion}_${irevision}${ivariants}: skipping uninstall (dry run)"
</ins><span class="cx"> }
</span><ins>+ } else {
+ if {[info exists options(ports_uninstall_no-exec)] || ![registry::run_target $regref uninstall [array get options]]} {
+ registry_uninstall::uninstall $iname $iversion $irevision $ivariants [array get options]
+ }
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesgsoc15dependencybasesrcregistry20registrytcl"></a>
<div class="modfile"><h4>Modified: branches/gsoc15-dependency/base/src/registry2.0/registry.tcl (139551 => 139552)</h4>
<pre class="diff"><span>
<span class="info">--- branches/gsoc15-dependency/base/src/registry2.0/registry.tcl        2015-08-20 07:23:27 UTC (rev 139551)
+++ branches/gsoc15-dependency/base/src/registry2.0/registry.tcl        2015-08-20 08:24:32 UTC (rev 139552)
</span><span class="lines">@@ -395,10 +395,10 @@
</span><span class="cx"> }
</span><span class="cx"> set lockfd [::open $lockpath w]
</span><span class="cx"> }
</span><del>- if {[catch {flock $lockfd -exclusive -noblock} result]} {
</del><ins>+ if {[catch {adv-flock $lockfd -exclusive -noblock} result]} {
</ins><span class="cx"> if {$result eq "EAGAIN"} {
</span><span class="cx"> ui_msg "Waiting for lock on $lockpath"
</span><del>- flock $lockfd -exclusive
</del><ins>+ adv-flock $lockfd -exclusive
</ins><span class="cx"> } elseif {$result eq "EOPNOTSUPP"} {
</span><span class="cx"> # Locking not supported, just return
</span><span class="cx"> ui_debug "flock not supported, not locking registry"
</span><span class="lines">@@ -420,7 +420,7 @@
</span><span class="cx"> }
</span><span class="cx"> if {[info exists lockfd]} {
</span><span class="cx"> # not much point trying to handle errors
</span><del>- catch {flock $lockfd -unlock}
</del><ins>+ catch {adv-flock $lockfd -unlock}
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>