Blame CREATINGARELEASE

Packit cdaae3
Packit cdaae3
This is an checlist of the steps in creating a new release.
Packit cdaae3
In hopes this will prevent omissions.
Packit cdaae3
Packit cdaae3
DavidA. 30 November 2012
Packit cdaae3
Packit cdaae3
Source here means libdwarf/dwarfdump/dwarfgen source (in Git).
Packit cdaae3
Tests  here means the regression tests (in another Git repository).
Packit cdaae3
Packit cdaae3
In the Source:
Packit cdaae3
Packit cdaae3
Update the source and build with your changes.
Packit cdaae3
Update the appropriate ChangeLog file so every 
Packit cdaae3
file in Git which changes (except ChangeLog and NEWS)
Packit cdaae3
are in ChangeLog.
Packit cdaae3
      (at year end, move ChangeLog to ChangeLogyyyy
Packit cdaae3
       where yyyy is the year ending and create a new
Packit cdaae3
       empty ChangeLog)
Packit cdaae3
Packit cdaae3
Use dicheck (also in sourceforge) to verify indentation of
Packit cdaae3
all .h .cc and .c files is consistent.
Packit cdaae3
Packit cdaae3
Ensure all interfaces in libdwarf that are call able by users
Packit cdaae3
are in libdwarf.h and are documented in libdwarf2.1.mm or
Packit cdaae3
libdwarf2p.1.mm and that any changes in the .mm also
Packit cdaae3
mean you inserted a version and date change 
Packit cdaae3
in the date lines near the front of that .mm.
Packit cdaae3
Then regenerate the pdf if any changes.
Packit cdaae3
Packit cdaae3
Run any small preliminary tests that seem applicable.
Packit cdaae3
Packit cdaae3
In the Tests:
Packit cdaae3
Packit cdaae3
Create any new tests that seem applicable. 
Packit cdaae3
Add the appropriate lines to DWARFTEST.sh which
Packit cdaae3
actually does the test running.
Packit cdaae3
Packit cdaae3
RUNALL.sh 
Packit cdaae3
  Runs one test of the new dwarfdump/libdwarf executable
Packit cdaae3
  against the previously saved dwarfdump/libdwarf executable.
Packit cdaae3
Packit cdaae3
The notion of keeping baseline test output and simply
Packit cdaae3
comparing output of a previous release vs the new 
Packit cdaae3
candiate release would involve saving some really large files.
Packit cdaae3
So the present test suite instead runs each test with
Packit cdaae3
two dwarfdump* versions and compares the output.
Packit cdaae3
Packit cdaae3
To run all the tests, most of which
Packit cdaae3
compare the (committed in tests) dwarfdump
Packit cdaae3
against your new source: 
Packit cdaae3
   sh PICKUPBIN   # This picks up latest source and compiles
Packit cdaae3
                  # (for some files multiple times)
Packit cdaae3
                  # It is essential before each test run.
Packit cdaae3
   sh RUNALL.sh   # This runs the tests 3 times with different
Packit cdaae3
                  # dwarfdump[2] and different comparisons
Packit cdaae3
Packit cdaae3
To check for failure:
Packit cdaae3
    grep FAIL  ALL*
Packit cdaae3
    If there are any FAILS decide if they are real failures
Packit cdaae3
    (in which case fix the Source and retest) or are in fact
Packit cdaae3
    the output change that is expected given the Source changes.
Packit cdaae3
Packit cdaae3
In case all tests pass:
Packit cdaae3
    cp dwarfdump dwarfdump.O
Packit cdaae3
    commit the updated .O executables as the new baseline good
Packit cdaae3
    dwarfdump for the next test run.
Packit cdaae3
Packit cdaae3
In the Source:
Packit cdaae3
    sh UPDATEDWARFDUMPVERSION.sh #updates the version string in 4 places
Packit cdaae3
    update dwarfdump[2]/ChangeLog files to reflect the new version.
Packit cdaae3
    commit the new version string. If this has been done recently
Packit cdaae3
    enough that users won't see the current version string 
Packit cdaae3
    it need not be done at this time.
Packit cdaae3
Packit cdaae3
    sh BLD #to verify it still builds
Packit cdaae3
    git push origin master  # Push to sourceforge.
Packit cdaae3
    # We use 20121130 as an example below, use the current date.
Packit cdaae3
    sh CPTOPUBLIC # To copy relevant Source to a temp directory
Packit cdaae3
    sh BLDLIBDWARFTAR 20121130 # (use current date) to create a tar.gz
Packit cdaae3
                               # like libdwarf-20121130.tar.gz
Packit cdaae3
    md5sum libdwarf-20121130.tar.gz
Packit cdaae3
    sha512sum libdwarf-20121130.tar.gz
Packit cdaae3
             # To get unforgeable checksums for the tar.gz file
Packit cdaae3
    git tag -a 20121130  -m 'Release 20121130'
Packit cdaae3
    git push origin 20121130   # push the tag
Packit cdaae3
Packit cdaae3
In the Tests:
Packit cdaae3
    git push origin master
Packit cdaae3
    git tag -a 20121130  -m 'Release 20121130'
Packit cdaae3
    git push origin 20121130   # push the tag
Packit cdaae3
Packit cdaae3
Update web pages so that the new release is visble to users
Packit cdaae3
and copy the tar.gz to the appropriate web site.