From f0cc465d8b7beced001f6c80ca69a9c3fb25576e Mon Sep 17 00:00:00 2001 From: wisberg Date: Thu, 6 Mar 2003 22:17:13 +0000 Subject: caveats and fixes, mainly for releases --- build/readme-build-and-test-aspectj.html | 100 +++++++++++++++++++++---------- 1 file changed, 68 insertions(+), 32 deletions(-) (limited to 'build/readme-build-and-test-aspectj.html') diff --git a/build/readme-build-and-test-aspectj.html b/build/readme-build-and-test-aspectj.html index 2586f4567..70732d7bf 100644 --- a/build/readme-build-and-test-aspectj.html +++ b/build/readme-build-and-test-aspectj.html @@ -8,11 +8,11 @@ for developers working on source code for AspectJ. It covers building with Ant or Eclipse and testing with JUnit or the harness used for compiler tests. -For information on how the build works and debugging failed builds, -see - readme-build-module.html. - - +For information on how the build works and how to +debug failed builds, see + + readme-build-module.html. +
  1. Quick start
  2. Requirements
  3. @@ -45,6 +45,7 @@ see
  4. Release completion
+
  • Build Problems
  • Quick start

    @@ -55,9 +56,11 @@ This is a minimal introduction to building and testing AspectJ. export CVS_ROOT=":pserver:anonymous@dev.eclipse.org:/home/technology" cvs co org.aspectj/modules If using Eclipse, check out the subdirectories of -org.aspectj/modules as Java projects. -Skip modules aspectj-attic if not tests -and testing-*. +org.aspectj/modules as Java projects. +Skip modules aspectj-attic and (unless running +compiler tests) tests and most testing* +modules. Do not skip testing-utils, +which is used by other modules.

    Build an AspectJ distribution:

    @@ -67,13 +70,18 @@ and testing-*.
     To speed the build, Eclipse users can adopt the Eclipse-produced .class files:
     
      ../lib/ant/bin/ant -f build.xml -Dbuild.config=useEclipseCompiles
    -Install the distribution (e.g., into build/../aspectj-DEVELOPMENT): +Install the distribution (e.g., into build/../aspectj-install):
      java -jar ../aj-build/dist/aspectj-DEVELOPMENT.jar
    +You can skip the GUI by specifying an existing, empty writable +target directory using -to {targDir}: + +
      java -jar ../aj-build/dist/aspectj-DEVELOPMENT.jar -to .
    + Test it by running the build script in the examples directory: -
      cd ../aspectj-DEVELOPMENT/doc/examples
    +
      cd ../aspectj-install/doc/examples
       ../../ant/bin/ant
    This should build and run the spacewar example. @@ -267,7 +275,7 @@ use the -help flag to see available options. For more information, see
    ../tests/readme-tests-module.html. - +


    Releases

    Release builds

    @@ -278,6 +286,9 @@ Release builds differ only in running from a clean, up-to-date tree and with correct build version values in build-properties.xml, which will update org.aspectj.bridge.Version. +Do not run using the build.config value +useEclipseCompiles, +because this will include testing classes in the release libraries. See Version synchronization below for more details on how the version is updated. @@ -285,22 +296,25 @@ for more details on how the version is updated.

    Normally, we do releases only after fixing all high-priority (P1 and P2) bugs in the bug database - (a href="http://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&priority=P1&priority=P2"> - All open AspectJ bugs with P1 and P2). + ( +All open AspectJ bugs with P1 and P2). For bug fixes, associated tests in tests/ajcTestsFailing.xml are fixed and moved to tests/ajcTests.xml. -

    Before a release, run the following tests: -

      +

      Before a release, run the following tests using a Java 1.3 VM +(the minimum required by the AspectJ tools): +

      1. JUnit tests. Run these before the final build using tests/junitModules.xml (which runs all the modules/{module}/testsrc/{module}ModuleTests.java). +

      2. -
      3. All compiler tests in tests/ajcTests.xml. +
      4. All compiler tests in tests/ajcTests.xml + and tests/ajcTestsFailing.xml. Run these before the final build using the test harness, as follows:
        @@ -319,8 +333,8 @@ FAIL another test identifier()
             definition of the -release alias.)
             Run with and without the -emacssym option, 
             saving the output
        -    to the appropriate subdirectory of 
        -      the releases directory.
        +    to the appropriate subdirectory of the
        +      org.aspectj/releases directory
             with the name 
                ajcTests-result-{version}.txt 
             or ajcTests-result-{version}-emacssym.txt.
        @@ -331,48 +345,66 @@ FAIL another test identifier()
           java org.aspectj.testing.util.TestDiffs {first-run}.txt {second-run}.txt
         
        This will generate lists of tests fixed, broken, missing, or - added. For a release, no tests should be broken, and missing - tests (those in the first run absent from the + added. For a release, no tests from ajcTests.xml + should be broken, and missing tests (those in the first run absent from the second run) should be justified (usually the test was removed as invalid). A test will show up as missing from the first run and added to the second run if it is renamed between runs. + For a final release, no test should be FAIL unless it is + deferred (including those from ajcTestsFailing.xml).

        For more information, see the instructions for building and running the test harness and the tests ../tests/readme-tests-module.html. -

      5. -
      6. Examples. Run these on the built/installed release: +

        +

      7. +
      8. Examples. Run these on the built/installed release. +The following should build and run the spacewar example:
             cd {aspectj-install}/doc/examples
        -    ant -f build.xml
        +    {ant 1.5.1} -f build.xml
         
        -This should build and run the spacewar example. -To run all examples, use target all. -To run all the examples that do not require manual operation, -use target nonGui. -This quick test verifies that the aspectjtools.jar and aspectjrt.jar +Also run 2-3 other targets from Ant and some examples directly: +
          +
        • +The target all +runs all examples, and nonGui runs those +that do not require manual operation; +
        • + +
        • The targettracing-bc does bytecode weaving; +
        • +
        • +Run some of the compiled examples in a 1.1 VM + (the minimum required for running AspectJ code). +
        • +
        +

        +This quick test verifies that the +aspectjtools.jar and aspectjrt.jar are installed and have a matching version, that the examples actually compile and run, etc. -

        +

      9. If there are any bugs which are closed with this release but which do not have an automated test case run using JUnit or the harness, those bugs should be manually tested against the release. +

      10. Any other tests warranted by release objectives. E.g., make sure it works as expected for any demos or for any clients (e.g., Emacs, AJDT).
      11. -
    +

    Some failures with past releases to consider checking:

    • debug info not included in .class files
    • Ant variables not filtered into doc files (e.g., ant-tasks.html)
    • +
    • Manual dates not changed in docs or readme
    • Inconsistent version information between runtime and tools classes
    • -
    • Manual dates not changed in documentation.

    Release completion

    @@ -390,7 +422,11 @@ Pushing the release out to the web involves manually updating (and documentation, if it is not a preview release), verifying the downloads and pages, and sending any release notifications. - + Save the release installer, test results, and any notes + about deferred bugs or tests in + org.aspectj/releases/aspectj-{version}/. + +


    Build problems

    Some build problems and fixes encountered in the past: -- cgit v1.2.3