Skip to content

Commit 1bfe4c9

Browse files
author
dlsmith
committed
Migrated build script to Subversion; updated developer docs with Subversion instructions; split developer docs into multiple files.
git-svn-id: file:///tmp/test-svn/trunk@3719 fe72c1cf-3628-48e9-8b72-1c46755d3cff
1 parent ccf7cf4 commit 1bfe4c9

File tree

8 files changed

+739
-705
lines changed

8 files changed

+739
-705
lines changed

docs/build.xml

Lines changed: 49 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -252,43 +252,64 @@
252252
</target>
253253

254254

255-
<!-- ***********
256-
CVS Targets
257-
*********** -->
258-
259-
<target name="update" depends="clean" description="Reconcile source with the CVS archive">
260-
<echo message="Running CVS update ('-q' -- you will only see output for files that don't match)" />
261-
<!-- TODO: Experiment with the 'compression' option -->
262-
<cvs command="update -d -P" quiet="true" />
255+
<!-- ******************
256+
Subversion Targets
257+
****************** -->
258+
259+
<target name="update" depends="clean" description="Reconcile source with the Subversion archive">
260+
<echo message="Running Subversion update" />
261+
<exec executable="svn" failonerror="yes">
262+
<arg value="update" />
263+
</exec>
264+
<exec executable="svn" failonerror="yes">
265+
<arg value="status" />
266+
</exec>
263267
</target>
264268

265-
<target name="commit" depends="update, build, do-commit, tag"
266-
description="Commit source to the CVS archive (after building)">
267-
<echo message="New version is committed to CVS" />
268-
</target>
269-
270-
<target name="do-commit">
271-
<antcall target="clean" inheritall="false"> <!-- Clean up after the latest build -->
269+
<target name="commit" depends="update, build"
270+
description="Commit source to the Subversion archive (after building)">
271+
<antcall target="clean"> <!-- Clean up after the latest build -->
272272
<param name="delete-jars" value="no" />
273273
</antcall>
274+
<exec executable="svn" failonerror="yes">
275+
<arg value="status" />
276+
</exec>
274277
<input message="Please enter a log message for the commit: "
275-
addproperty="cvs.commit.message" />
276-
<echo message="Running CVS commit"/>
277-
<cvs quiet="true">
278-
<commandline>
279-
<argument value="commit" />
280-
<argument value="-m" />
281-
<argument value="${cvs.commit.message}" />
282-
</commandline>
283-
</cvs>
278+
addproperty="svn-commit-message" />
279+
<echo message="Running Subversion commit" />
280+
<exec executable="svn" failonerror="yes">
281+
<arg value="commit" />
282+
<arg value="-m" />
283+
<arg value="${svn-commit-message}" />
284+
</exec>
285+
</target>
286+
287+
<target name="tag" depends="resolve-version-tag"
288+
description="Copy the working copy to a new Subversion tag">
289+
<echo message="Creating a new Subversion tag with name ${version-tag}"/>
290+
<exec executable="svn" failonerror="yes">
291+
<arg value="copy" />
292+
<arg value="${basedir}" />
293+
<arg value="${svn-repository}/tags/${version-tag}" />
294+
<arg value="-m" />
295+
<arg value="Created tag ${version-tag}" />
296+
</exec>
284297
</target>
285298

286-
<target name="tag" depends="resolve-version-tag">
287-
<echo message="Running CVS tag with version ${version-tag}"/>
288-
<cvs command="tag -c ${version-tag}" reallyquiet="true" />
299+
<target name="branch" description="Copy the working copy to a new Subversion branch">
300+
<input message="Enter a name for the new branch: "
301+
addproperty="svn-branch-name" />
302+
<echo message="Creating a new Subversion branch ${svn-branch-name}" />
303+
<exec executable="svn" failonerror="yes">
304+
<arg value="copy" />
305+
<arg value="${base-dir}" />
306+
<arg value="${svn-repository}/branches/${svn-branch-name}" />
307+
<arg value="-m" />
308+
<arg value="Created branch ${svn-branch-name}" />
309+
</exec>
289310
</target>
290311

291-
312+
292313
<!-- ********************************
293314
Misc Occasionally-Useful Targets
294315
******************************** -->
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!--
2+
Chapter on best practices for the DrJava Developer Documentation. All
3+
chapters are joined into a single document in devdoc.docbook.
4+
5+
@version $Id: devdoc.docbook 3498 2006-01-17 22:36:31Z dlsmith $
6+
-->
7+
<chapter id="bestPractices">
8+
<title>Development Best Practices</title>
9+
<para>[TODO]</para>
10+
11+
</chapter>

docs/src/developer/devdoc.docbook

Lines changed: 19 additions & 677 deletions
Large diffs are not rendered by default.

docs/src/developer/gettingStarted.docbook

Lines changed: 426 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<!--
2+
Introductory chapter for the DrJava Developer Documentation. All
3+
chapters are joined into a single document in devdoc.docbook.
4+
5+
@version $Id: devdoc.docbook 3498 2006-01-17 22:36:31Z dlsmith $
6+
-->
7+
8+
<chapter id="introduction">
9+
<title>Introduction</title>
10+
11+
<para>This document is primarily intended as an orientation resource and collection of acquired knowledge for Rice students working as DrJava developers. As an open-source project, DrJava's source code is also available for browsing and modification to the general public, and so the following will also serve to provide those interested with the necessary tools to build, fix, and improve the code base. (Although we do not usually provide direct CVS commit access to individuals outside the Rice development team, interested parties are welcome to submit changes via the SourceForge Tracker forums.)</para>
12+
13+
<section>
14+
<title>Overview</title>
15+
16+
<para>We cover the following topics:
17+
18+
<itemizedlist>
19+
<listitem><para><link linkend="introduction">Introduction</link> provides a high-level sense of purpose and history for the DrJava project.</para></listitem>
20+
21+
<listitem><para><link linkend="gettingStarted">Getting Started</link> describes how to set up and use the essential tools required to build and modify the DrJava source code.</para></listitem>
22+
23+
<listitem><para><link linkend="supportingTechnology">Supporting Technology</link> provides a more in-depth guide to a variety of third-party technologies (applications and libraries) used to build and run DrJava.</para></listitem>
24+
25+
<listitem><para><link linkend="systemArchitecture">System Architecture</link> provides a high-level view of the DrJava sources. It describes the code organization and discusses various significant design decisions.</para></listitem>
26+
27+
<listitem><para><link linkend="bestPractices">Development Best Practices</link> describes the coding and testing standards we maintain (or aspire to) in the DrJava code base.</para></listitem>
28+
29+
<listitem><para><link linkend="projectAdministration">Project Administration</link> contains instructions directed at project administrators. It covers, for example, making official DrJava releases and maintaining the project Web site.</para></listitem>
30+
</itemizedlist>
31+
</para>
32+
</section>
33+
34+
35+
<section>
36+
<title>Project Philosophy</title>
37+
<para>DrJava is a lightweight, powerful Java development environment. Its target audience includes both beginning Computer Science students and advanced professional users. Clearly, there is a tension between these goals &mdash; "lightweight" versus "powerful"; "beginning" versus "advanced." This tension is generally resolved by <emphasis>insuring</emphasis> the prior conditions &mdash; that DrJava be easy to use and inobtrusive for beginners &mdash; and adding "advanced" features only if they can be presented in a simple, lightweight (both in terms of system resources and user interface) manner. The interactions pane is an ideal example of a nice marriage between the goals of simplicity and power. It is easy for beginners to understand and use &mdash; in fact, it's where many beginners get their first taste of Java programming. Yet professional developers also find it quite handy, and sometimes lament the lack of something like it in heavier-weight IDEs.</para>
38+
39+
<para>Because DrJava was originally conceived as a teaching tool, and because it has been almost entirely developed by undergraduate and graduate students, it is uniquely positioned to address the needs of students, teachers, and researchers. We hope that this fount of experience will translate into a relevant, useful, and unique product. However, development on the project is at a relative disadvantage due to the lack of a full-time or long-term workforce. These challenges are addressed by maintaining a self-documenting, self-testing code base. Developers should keep in mind that the code they write will be browsed and modified subsequently by many others, and if the reasoning behind the code is not documented by comments and tests, it will probably be lost.</para>
40+
41+
<para>Finally, DrJava is open source software. [TODO: discuss; explain the DrJava license]</para>
42+
</section>
43+
44+
45+
<section>
46+
<title>Project History</title>
47+
<para>[TODO]</para>
48+
</section>
49+
50+
</chapter>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<!--
2+
Project admin chapter for the DrJava Developer Documentation. All
3+
chapters are joined into a single document in devdoc.docbook.
4+
5+
@version $Id: devdoc.docbook 3498 2006-01-17 22:36:31Z dlsmith $
6+
-->
7+
8+
<chapter id="projectAdministration">
9+
<title>Project Administration</title>
10+
<para>[TODO]</para>
11+
12+
<!-- Clipped from the previous docs:
13+
14+
<para>It is important to update the DrJava website after all changes to the documentation. This involves copying the HTML files for the user, quickstart, and developer documentation (and the PDF file for the user documentation) to <filename>drjava.sf.net:/home/groups/d/dr/drjava/htdocs/</filename>. The HTML files should go in the <filename>userdocs/</filename>, <filename>quickstartdocs</filename>, and <filename>devdocs/</filename> directories, respectively, while the PDF should be saved as <filename>drjava-userdoc.pdf</filename> directly in <filename>htdocs/</filename>.</para>
15+
-->
16+
</chapter>
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
<!--
2+
Chapter covering supporting technology in the DrJava Developer
3+
Documentation. All chapters are joined into a single document
4+
in devdoc.docbook.
5+
6+
@version $Id: devdoc.docbook 3498 2006-01-17 22:36:31Z dlsmith $
7+
-->
8+
9+
<chapter id="supportingTechnology">
10+
<title>Supporting Technology</title>
11+
<para>This section is intended as a repository of acquired knowledge with respect to the ins and outs of supporting technology used with DrJava. For each tool or library, a section will address questions like:
12+
13+
<itemizedlist>
14+
<listitem><para>How is this technology used in the DrJava code base or build process?</para></listitem>
15+
16+
<listitem><para>How is the technology distributed; what needs to be done to install it?</para></listitem>
17+
18+
<listitem><para>Do we depend on a specific version of the software?</para></listitem>
19+
20+
<listitem><para>What are the key options or classes that developers should be aware of?</para></listitem>
21+
22+
<listitem><para>Where can more comprehensive documentation be found?</para></listitem>
23+
24+
<listitem><para>Why has this particular technology been chosen? What are the alternatives?</para></listitem>
25+
26+
</itemizedlist>
27+
</para>
28+
29+
<section id="java">
30+
<title>Java Language & APIs</title>
31+
<para>[TODO]</para>
32+
</section>
33+
34+
<section id="javac">
35+
<title><command>javac</command></title>
36+
<para>[TODO]</para>
37+
<!-- We can point to the <link linkend="installJDK">JDK installation instructions</link> for installation details -->
38+
</section>
39+
40+
<section id="javadoc">
41+
<title><command>javadoc</command></title>
42+
<para>[TODO]</para>
43+
<!-- We can point to the <link linkend="installJDK">JDK installation instructions</link> for installation details -->
44+
</section>
45+
46+
<section id="rmi">
47+
<title>RMI</title>
48+
<para>[TODO]</para>
49+
<!-- We can point to the <link linkend="installJDK">JDK installation instructions</link> for installation details -->
50+
</section>
51+
52+
<section id="jpda">
53+
<title>JPDA</title>
54+
<para>[TODO]</para>
55+
<!-- We can point to the <link linkend="installJDK">JDK installation instructions</link> for installation details -->
56+
</section>
57+
58+
<section id="subversion">
59+
<title>Subversion</title>
60+
<para>[TODO]</para>
61+
<!-- We can point to the <link linkend="installSubversion">Subversion installation instructions</link> for installation details -->
62+
<!-- Should include instructions on moving and adding files, and on tagging and branching -->
63+
<!-- Clipped from the previous docs:
64+
<para>If you will be adding new files as part of your commit, you will need to first let the CVS server know that the new files exist. Run "<literal>cvs add [FILE]</literal>" for each new file that you will be adding before running <literal>ant commit</literal>. Also, it is very important that you copy the license comment from another file into your new file. We also prefer that you include a "<literal>@version &#36;Id&#36;</literal>" tag in your class-level Javadoc comment, which helps us note the last time the file was modified.</para>
65+
-->
66+
</section>
67+
68+
<section id="ant">
69+
<title>Ant</title>
70+
<para>[TODO]</para>
71+
<!-- We can point to the <link linkend="installAnt">Ant installation instructions</link> for installation details -->
72+
</section>
73+
74+
<section id="junit">
75+
<title>JUnit</title>
76+
<para>[TODO]</para>
77+
<!-- We can point to the <link linkend="installJUnit">JUnit installation instructions</link> for installation details -->
78+
</section>
79+
80+
<section id="SourceForge">
81+
<title>SourceForge</title>
82+
<para>[TODO]</para>
83+
</section>
84+
85+
<section id="clover">
86+
<title>Clover</title>
87+
<para>[TODO]</para>
88+
</section>
89+
90+
<section id="retroweaver">
91+
<title>Retroweaver</title>
92+
<para>[TODO]</para>
93+
</section>
94+
95+
<section id="docbook">
96+
<title>DocBook</title>
97+
<para>[TODO]</para>
98+
<!-- Clipped from the previous docs:
99+
Beware that some versions of these tools may not work with our build script or may generate HTML files without an <filename>index.html</filename> file. (If this is the case, as it is currently on the greenland server, you'll probably want to copy <filename>book1.html</filename> to <filename>index.html</filename>. Don't just rename it, because other files will link to the old one.)
100+
-->
101+
</section>
102+
103+
<section id="javacc">
104+
<title>JavaCC</title>
105+
<para>[TODO]</para>
106+
</section>
107+
108+
<section id="bcel">
109+
<title>BCEL</title>
110+
<para>[TODO]</para>
111+
</section>
112+
113+
<section id="otherTools">
114+
<title>Other Useful Development Tools</title>
115+
<para>[TODO]</para>
116+
117+
<section id="findbugs">
118+
<title>FindBugs</title>
119+
<para>[TODO]</para>
120+
</section>
121+
122+
<section id="x11">
123+
<title>X11</title>
124+
<para>[TODO]</para>
125+
<!-- This can contain tips and guidance on building remotely using X11 -->
126+
<!-- Clipped from the previous docs:
127+
<para>If you are running the tests on Windows over an SSH connection to a Unix server, you will need to have an X server running (such as X-Win32), and you will need to enable "X11 Tunneling" in the preferences of your SSH client. This is because Swing components will be created in the tests, which require an X server even if they are not explicitly shown.</para>
128+
-->
129+
130+
</section>
131+
132+
<section id="eclipse">
133+
<title>Eclipse</title>
134+
<para>[TODO]</para>
135+
<!-- This can contain tips on how to use some of Eclipse's features - how to use it as the IDE, taking advantage of its extensive compiler warnings, etc. -->
136+
</section>
137+
138+
</section>
139+
140+
</chapter>
141+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<!--
2+
Chapter describing system architecture in the DrJava Developer
3+
Documentation. All chapters are joined into a single document
4+
in devdoc.docbook.
5+
6+
@version $Id: devdoc.docbook 3498 2006-01-17 22:36:31Z dlsmith $
7+
-->
8+
9+
<chapter id="systemArchitecture">
10+
<title>System Architecture</title>
11+
<para>[TODO]</para>
12+
13+
<!-- Clipped from the previous docs (for the description under the "docs" module):
14+
<para>Emacs and modern versions of KDE's KWrite are both good editors for DocBook files. Please try to maintain a consistent style within the documentation, both in tone (eg. somewhat informal &mdash; "you" instead of "the user") and formatting (eg. literal tags for small bits of code, paragraphs on one line, etc).</para>
15+
-->
16+
17+
<!-- Also clipped from the previous docs:
18+
19+
<formalpara>
20+
<title>Use of the Configuration Framework</title>
21+
<para>DrJava's configurable options are managed through a framework in the <literal>edu.rice.cs.drjava.config</literal> package. This framework takes care of loading and saving options from the <filename>.drjava</filename> file, as well as managing listeners to changed configuration options. The main class of interest is <literal>OptionConstants</literal>, which defines all options and their default values. You can get and change settings using the static <literal>DrJava.getConfig()</literal> method.</para>
22+
</formalpara>
23+
<para>It is very important never to use the configuration framework in the Interpreter JVM, since this will instantiate a new copy of the framework inconsistent with the one in the Main JVM. (It also causes the "SlaveJVMRunner" icon to appear in Mac OS X.) It is also very important never to use the configuration framework in the Eclipse plug-in, because it causes Eclipse to crash. (We're not sure why, but it's better for us to use Eclipse's preferences in that world anyway.)</para>
24+
-->
25+
26+
27+
</chapter>

0 commit comments

Comments
 (0)