<!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>[12709] CalendarServer/trunk</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="http://trac.calendarserver.org//changeset/12709">12709</a></dd>
<dt>Author</dt> <dd>dre@apple.com</dd>
<dt>Date</dt> <dd>2014-02-14 16:25:18 -0800 (Fri, 14 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Update docs for changes to run script and new dependency resolution mechanics</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#CalendarServertrunkHACKINGrst">CalendarServer/trunk/HACKING.rst</a></li>
<li><a href="#CalendarServertrunkREADMErst">CalendarServer/trunk/README.rst</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="CalendarServertrunkHACKINGrst"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/HACKING.rst (12708 => 12709)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/HACKING.rst        2014-02-14 22:20:17 UTC (rev 12708)
+++ CalendarServer/trunk/HACKING.rst        2014-02-15 00:25:18 UTC (rev 12709)
</span><span class="lines">@@ -408,7 +408,7 @@
</span><span class="cx"> a possible time sink for other developers, and is not looked upon
</span><span class="cx"> favorably.
</span><span class="cx"> 
</span><del>-Units tests can be run rather easily by executing the ``test`` script
</del><ins>+Units tests can be run rather easily by executing the ``./bin/test`` script
</ins><span class="cx"> at the top of the Calendar and Contacts Server source tree.  By
</span><span class="cx"> default, it will run all of the Calendar and Contacts Server tests
</span><span class="cx"> followed by all of the Twisted tests.  You can run specific tests by
</span><span class="lines">@@ -416,7 +416,7 @@
</span><span class="cx"> 
</span><span class="cx">    ::
</span><span class="cx"> 
</span><del>-    ./test twistedcaldav.static
</del><ins>+    ./bin/test twistedcaldav.static
</ins><span class="cx"> 
</span><span class="cx"> All non-trivial public callables must have unit tests.  (Note we don't
</span><span class="cx"> don't totally comply with this rule; that's a problem we'd like to
</span></span></pre></div>
<a id="CalendarServertrunkREADMErst"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/README.rst (12708 => 12709)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/README.rst        2014-02-14 22:20:17 UTC (rev 12708)
+++ CalendarServer/trunk/README.rst        2014-02-15 00:25:18 UTC (rev 12709)
</span><span class="lines">@@ -1,112 +1,83 @@
</span><ins>+==========================
</ins><span class="cx"> Getting Started
</span><del>-===============
</del><ins>+==========================
</ins><span class="cx"> 
</span><del>-This is the core code base for the Calendar and Contacts Server, which
-is a CalDAV, CardDAV, WebDAV, and HTTP server.
</del><ins>+This is the core code base for the Calendar and Contacts Server, which is a CalDAV, CardDAV, WebDAV, and HTTP server.
</ins><span class="cx"> 
</span><del>-For general information about the server, see:
</del><ins>+For general information about the server, see http://www.calendarserver.org/
</ins><span class="cx"> 
</span><del>-  http://www.calendarserver.org/
</del><span class="cx"> 
</span><del>-
</del><ins>+==========================
</ins><span class="cx"> Copyright and License
</span><del>-=====================
</del><ins>+==========================
</ins><span class="cx"> 
</span><del>-Copyright (c) 2005-2014 Apple Inc.  All rights reserved.
</del><ins>+Copyright (c) 2005-2014 Apple Inc. All rights reserved.
</ins><span class="cx"> 
</span><del>-This software is licensed under the Apache License, Version 2.0.  The
-Apache License is a well-established open source license, enabling
-collaborative open source software development.
</del><ins>+This software is licensed under the Apache License, Version 2.0. The Apache License is a well-established open source license, enabling collaborative open source software development.
</ins><span class="cx"> 
</span><span class="cx"> See the &quot;LICENSE&quot; file for the full text of the license terms.
</span><span class="cx"> 
</span><ins>+==========================
+QuickStart
+==========================
</ins><span class="cx"> 
</span><del>-Quick Start
-===========
</del><ins>+**WARNING**: these instructions are for running a server from the source tree, which is useful for development. These are not the correct steps for running the server in deployment or as part of an OS install. You should not be using the run script in system startup files (eg. /etc/init.d); it does things (like download software) that you don't want to happen in that context.
</ins><span class="cx"> 
</span><del>-**WARNING:** these instructions are for running a server from the
-source tree, which is useful for development. 
-These are not the correct steps for running the server in
-deployment or as part of an OS install. You should **not** be using
-the ``run`` script in system startup files (eg. ``/etc/init.d``); it
-does things (like download software) that you don't want to happen in
-that context.
</del><ins>+Begin by creating a directory to contain Calendar and Contacts Server and all its dependencies::
</ins><span class="cx"> 
</span><del>-Begin by creating a directory to contain Calendar and Contacts Server
-and all its dependencies:
</del><ins>+ mkdir ~/CalendarServer
+ cd CalendarServer
</ins><span class="cx"> 
</span><del>-  ::
</del><ins>+Next, check out the source code from the SVN repository. To check out the latest trunk code::
</ins><span class="cx"> 
</span><del>-    mkdir ~/CalendarServer
-    cd CalendarServer
</del><ins>+ svn co http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk/ trunk
</ins><span class="cx"> 
</span><del>-Next, check out the source code from the SVN repository. To check out
-the latest trunk code:
</del><ins>+The server requires various external libraries in order to operate. The bin/develop script in the sources will retrieve these dependencies and install them to the .develop directory. Note that this behavior is currently also a side-effect of bin/run, but that is likely to change in the future::
</ins><span class="cx"> 
</span><del>-  ::
</del><ins>+    cd trunk
+    ./bin/develop
+    ____________________________________________________________
</ins><span class="cx"> 
</span><del>-    svn co http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk/ CalendarServer
</del><ins>+    Using system version of libffi.
</ins><span class="cx"> 
</span><del>-The server requires a number of libraries in order to operate, which
-will need to be placed as peers of the source directory.  The ``run``
-script in the sources will automatically download or check out the
-appropriate libraries and build them for you:
</del><ins>+    ____________________________________________________________
</ins><span class="cx"> 
</span><del>-  ::
</del><ins>+    Using system version of OpenLDAP.
</ins><span class="cx"> 
</span><del>-    cd CalendarServer
-    ./run -s
</del><ins>+    ____________________________________________________________
</ins><span class="cx"> 
</span><del>-The result will be a set of directories, including the CalendarServer
-source directory in your original empty directory:
</del><ins>+    Using system version of SASL.
</ins><span class="cx"> 
</span><del>-  ::
-
-    % ls -1 ~/CalendarServer
-    CalDAVTester
-    CalendarServer
-    PyGreSQL-4.0
</del><ins>+    ____________________________________________________________
</ins><span class="cx">     ...
</span><span class="cx"> 
</span><del>-Before you can run the server, you need to set up a configuration file
-for development.  There is a provided test configuration that you can
-use to start with, called ``caldavd-test.plist``. Copy this to
-``caldavd-dev.plist``, which the server will use in development:
</del><ins>+Pip is used to retrieve the python dependencies and stage them for use by virtualenv, however if your system does not have pip (and virtualenv), you can use bin/install_pip (or your installation / upgrade method of choice).
</ins><span class="cx"> 
</span><del>- ::
</del><ins>+Before you can run the server, you need to set up a configuration file for development. There is a provided test configuration that you can use to start with, conf/caldavd-test.plist, which can be copied to conf/caldavd-dev.plist (the default config file used by the bin/run script). If conf/caldavd-dev.plist is not present when the server starts, you will be prompted to create a new one from conf/caldavd-test.plist.
</ins><span class="cx"> 
</span><del>-    cp ./conf/caldavd-test.plist ./conf/caldavd-dev.plist
</del><ins>+You will need to choose a directory service to use to populate your server's principals (users, groups, resources, and locations). A directory service provides the Calendar and Contacts Server with information about these principals. The directory services supported by Calendar and Contacts Server are:
</ins><span class="cx"> 
</span><del>-You will need to choose a &quot;directory service&quot; to use to populate your
-server's principals (users, groups and resources).  A directory
-service provides the Calendar and Contacts Server with information
-about these principals.  Some of the directory services which are
-supported by the Calendar and Contacts Server include:
</del><ins>+- XMLDirectoryService: this service is configurable via an XML file that contains principal information. The file conf/auth/accounts.xml provides an example principals configuration.
+- OpenDirectoryService: this service uses Apple's OpenDirectory client, the bulk of the configuration for which is handled external to Calendar and Contacts Server (e.g. System Preferences --&gt; Usersi &amp; Groups --&gt; Login Options --&gt; Network Account Server).
+- LdapDirectoryService: a highly flexible LDAP client that can leverage existing LDAP servers. See `twistedcaldav/stdconfig.py &lt;https://trac.calendarserver.org/browser/CalendarServer/trunk/twistedcaldav/stdconfig.py&gt;`_ for the available LdapDirectoryService options and their defaults. 
</ins><span class="cx"> 
</span><del>- * ``XMLDirectoryService``: this service is configurable via an XML
-   file that contains principal information.  The file
-   ``conf/auth/accounts.xml`` provides an example principals
-   configuration.
</del><ins>+The caldavd-test.plist configuration uses XMLDirectoryService by default, set up to use conf/auth/accounts-test.xml. This is a generally useful configuration for development and testing.
</ins><span class="cx"> 
</span><del>- * ``OpenDirectoryService``: this service uses Apple's OpenDirectory
-   client (which in turn uses LDAP, Active Directory, etc.) to obtain
-   principal information.
</del><ins>+This file contains a user principal, named admin, with password admin, which is set up (in caldavd-test.plist) to have administrative permissions on the server.
</ins><span class="cx"> 
</span><del>-The ``caldavd-test.plist`` configuration uses ``XMLDirectoryService``
-by default, set up to use ``conf/auth/accounts-test.xml``.  This is a
-generally useful configuration for development and testing.
</del><ins>+Start the server using the bin/run script, and use the -n option to bypass dependency setup::
</ins><span class="cx"> 
</span><del>-This file contains a user principal, named ``admin``, with password
-``admin``, which is set up (in ``caldavd-test.plist``) to have
-administrative permissions on the server.
</del><ins>+    bin/run -n 
+    Using /Users/andre/CalendarServer/trunk/.develop/roots/py_modules/bin/python as Python
</ins><span class="cx"> 
</span><del>-You can then run the server as follows:
</del><ins>+    Missing config file: /Users/andre/CalendarServer/trunk/conf/caldavd-dev.plist
+    You might want to start by copying the test configuration:
</ins><span class="cx"> 
</span><del>-  ::
</del><ins>+      cp conf/caldavd-test.plist conf/caldavd-dev.plist
</ins><span class="cx"> 
</span><del>-    ./run
</del><ins>+    Would you like to copy the test configuration now? [y/n]y
+    Copying test cofiguration...
</ins><span class="cx"> 
</span><del>-The server should then start up and bind to port 8008 for HTTP and
-8443 for HTTPS.  You should then be able to connect to the server
-using your web browser (eg. Safari, Firefox) or with a CalDAV client
-(eg. iCal).
</del><ins>+    Starting server...
+
+The server should then start up and bind to port 8008 for HTTP and 8443 for HTTPS. You should then be able to connect to the server using your web browser (eg. Safari, Firefox) or with a CalDAV client (eg. Calendar).
</ins></span></pre>
</div>
</div>

</body>
</html>