================================================================================
               Checklist for Preparing an AspectJ Release
================================================================================

Create a fresh copy of this file, and then record your progress in the file and
save it as part of the release notes on completion.

Before you begin... you will need:
================================================================================

* A JDK v1.4.x        java -fullversion : [                                   ]
* A JDK v1.3.x        java -fullversion : [                                   ]
* A 1.1.8 JRE         version :           [                                   ]
* A Windoze box       OS version :        [                                   ]
* A Linux box         distribution :      [                                   ]
* An iMac (nice-to-have) JDK 1.4.x :      [                                   ]
* Eclipse            version :            [                                   ]
  
* A pair of scissors (get an adult to help you with these)
* Some sticky-backed plastic

OK, so the last three aren't strictly necessary, but they always seem to come in
useful on the telly.

Extraction:
================================================================================

* Full CVS extract of org.aspectj/modules                               [   ]
    date and time of extract :          [                                   ]

Preparation:
================================================================================

* Create a new directory under releases for this release                [   ]
   (e.g. releases/aspectj-1.1rc1)
   
* Save a copy of this file there as package-and-test-notes.txt          [   ]
    
* Edit build/build-properties.xml and set the version properties for this
  release                                                               [   ]
  
  e.g. 
  
      <property name="build.version"       value="1.1rc1"/> 
      <property name="build.version.base"  value="1.1"/> 
      <property name="build.version.long"  value="1.1 release candidate 1"/> 
      <property name="build.version.short" value="1.1rc1"/> 
       
* Edit org.aspectj.ajdt.core/src/org.aspectj.ajdt.ajc/messages.properties and
  set the version properties for this release                           [   ]
  
  e.g. 

  ### AspectJ-specific messages
  configure.version = AspectJ Compiler 1.1rc1
  configure.directoryNotExist = invalid option or directory does not exist: {0}
  ## 3456789012345678901234567890123456789012345678901234567890123456789012345
  ### miscellaneous
  misc.usage = AspectJ Compiler 1.1 release candidate 1\n\
  ...
    
Build:
================================================================================

* Ensure JAVA_HOME is set to point to your 1.3 JDK                      [   ]
     echo $JAVA_HOME       [                                                ]
     
     (even when you "Run Ant..." from eclipse, the value of JAVA_HOME is 
     used rather than the JRE specified in your Eclipse settings).

* When running ant, use the version in modules/lib/ant,
  i.e., modules/lib/ant/bin/ant                                         [   ]

* Run ant on build/build.xml :

    $ cd build
    $ ant clean                                                         [   ]
    $ ant fail-unless-boot-libraries-uptodate                           [   ]
    $ ant                                                               [   ]
    
* Save the build output (console log) as build-<version>.log.txt        [   ]
    (e.g. build-1.1rc1.log.txt)
    
* Save the built jar to the releases directory                          [   ]
  (releases/aspectj-<version>)

* Verify name is aspectj-<version>.jar                                  [   ]


Pre-installation tests:
================================================================================

* run junitModules.xml tests

  - go to modules/tests/ and run 
  
     $ ant -f junitModules.xml {target} \
       -Daspectjrt.path=../aj-build/dist/tools/lib/aspectjrt.jar

     for each target:

     -- target = clean                                                  [   ]
     -- target = default                                                [   ]
     
  - Record any failures here (should be none)     
     
  - Save the test results as junitModules.report.zip                    [   ]
    (zip of eclipse/workspace/tests/bin/junitXmlOutput/html)
    
   
* run Harness tests on the 1.3 vm (ajcTests.xml):
   
    Where {harness} is
    
      $ cd tests
      $ {java-1.3} -jar ../aj-build/jars/testing-drivers-all.jar 

    Do:

      $ {harness} -release -logFail ajcTests.xml                        [   ]
  
    -- save results in ajcTests-result-<version>-JDK13.txt              [   ]
        (e.g. ajcTests-result-1.1rc1-JDK13.txt)
  
      -- record any failures (should be none) inline here.
      
      $ {harness} -release -logFail -emacssym ajcTests.xml              [   ]

    -- save results in ajcTests-result-<version>-emacssym-JDK13.txt     [   ]
        (e.g. ajcTests-result-1.1rc1-emacssym-JDK13.txt)
  
      -- record any failures (should be none) inline here.
                  
* run Harness tests on the 1.4 vm:

    Where {harness} is
    
      $ cd tests
      $ {java-1.4} -jar ../aj-build/jars/testing-drivers-all.jar 

    Do:

      $ {harness} -release -logFail ajcTests.xml                        [   ]
  
    -- save results in ajcTests-result-<version>-JDK14.txt              [   ]
        (e.g. ajcTests-result-1.1rc1-JDK14.txt)
  
      -- record any failures (should be none) inline here.
      
      $ {harness} -release -logFail -emacssym ajcTests.xml              [   ]

    -- save results in ajcTests-result-<version>-emacssym-JDK14.txt     [   ]
        (e.g. ajcTests-result-1.1rc1-emacssym-JDK14.txt)
  
      -- record any failures (should be none) inline here.
                      
* run Harness on ajcTestsFailing.xml

    Where {harness} is
    
      $ cd tests
      $ {java-1.3} -jar ../aj-build/jars/testing-drivers-all.jar 

    Do:

      $ {harness} -release -logFail ajcTestsFailing.xml                 [   ]
  
    -- save results in ajcTestsFailing-result-<version>-JDK13.txt       [   ]
        (e.g. ajcTestsFailing-result-1.1rc1-JDK13.txt)
  
      -- record any failures inline here (should be none. ajcTestsFailing 
         should be empty for a final release.  Known exceptions are
         permissible for a non-final release.)
         
      
Installation & Verification Tests
================================================================================

* install from aspectj-<version>.jar as built above

    - verify version number and build date on splash screen             [   ]
    
    - save screenshot of splash screen (not essential) as               [   ]
        Installer-Splash-Screen.bmp (file format may vary)   
        
* verify directory structure created ok                                 [   ]

* check version in README-AspectJ.html                                  [   ]

* check version in README-11.html (file not required)                   [   ]

* check license present and correct version (currently CPLv1.0)         [   ]

* run "ajc -version", verify version info                               [   ]

* run "ajc", verify version info                                        [   ]

* from doc/examples, run "ant", verify spacewar builds and runs ok      [   ]

* in doc/examples, build ant targets as follows:
    - bean                                                              [   ]
    - intro                                                             [   ]
    - intro-clone                                                       [   ]
    - intro-compare                                                     [   ]
    - intro-hash                                                        [   ]
    - observer                                                          [   ]
    - spacewar                                                          [   ]
    - spacewar-demo                                                     [   ]
    - telecom                                                           [   ]
    - telecom-billing                                                   [   ]
    - telecom-timing                                                    [   ]
    - tjp                                                               [   ]
    - tracing-1                                                         [   ]
    - tracing-2                                                         [   ]
    - tracing-3                                                         [   ]
    - tracing-bc                                                        [   ]
    - tracing-none                                                      [   ]

* With aspectjtools.jar in the ant/lib directory, also build
    - tracing-adapter                                                   [   ]
    - tracing-adapter-ajc                                               [   ]


* run pre-compiled version of spacewar on a 1.1.8 vm                    [   ]

* verify debug info included in class files
    - "javap -l org.aspectj.tools.ajc.Main" under jdk 1.4 or later      [   ]
    
* verify manual dates correct in docs                                   [   ]

* verify api docs present and correct                                   [   ]

Product Testing
================================================================================

These tests are a bit more rigorous and time-consuming. 
Run at your discretion

* Compile AspectJ sources using AspectJ                                 [   ]

  cd tests/product/build-aspectj
  ant

* Perform steps specified in the Development Guide on AJBrowser         [   ]

* Perform steps specified in tests/ajdt/script.html                     [   ]

* Build/run tests/test-other-systems.xml (PARC has other sources)       [   ]


Cross-Platform Testing
================================================================================

(Assuming prior tests were done under windows)

* Install, build and run spacewar on Linux using AJBrowser              [   ]

* Install, build and run spacewar on Mac OS X using AJBrowser           [   ]

* Download from IE, Netscape, and Mozilla, new and old                  [   ]
  if they have not been validated with the current HTML.

Bug database
================================================================================

* No P1 or P2 bugs, and no lower bugs that should be P1/P2              [   ]

* All fixed bugs verified (at least by fixing developer,                [   ]
  though preferably with a test case)

* Please comment if there are compiler fixes without test cases         [   ]


Other Release Objectives
================================================================================

Record any other details or release specific objectives test results here.


Release
================================================================================

Once developer consensus is reached on the build:

* commit all releases/aspectj-<version>/*.* files created during 
  this process                                                          [   ]

* tag /home/technology/org.aspectj as vM_m_r_XX (e.g. v1_1_0_RC1)       [   ]

* post aspectj-<version>.jar to 
    download.eclipse.org/technology/ajdt/aspectj-<version>.jar          [   ]
    
* download from 
  http://download.eclipse.org/technology/ajdt/aspectj-<version>.jar
  and install                                                           [   ]
  
* post news article on project home page                                [   ]

* post link on download page                                            [   ]

* post announce message to aspectj-users, aspectj-announce,
    aosd-discuss, aosd-announce                                         [   ]

* buy beer                                                              [   ]
