Difference between revisions of "Release Process"

From Adobe Open Source Wiki
Jump to: navigation, search
(stlabconnect)
(stlabconnect)
Line 269: Line 269:
 
</pre>
 
</pre>
 
* Update labels for the release (asl, apl, intel_tbb, and boost) (adobe_source_1_0_XX)
 
* Update labels for the release (asl, apl, intel_tbb, and boost) (adobe_source_1_0_XX)
 +
<pre>
 +
  #eg to go from 1.0.35 to 1.0.36:
 +
  p4 label -t adobe_source_1_0_35 adobe_source_1_0_36
 +
  # in the ensuing dialog we add a revision field and insert the head rev, e.g.:
 +
    Revision:
 +
      @4082
 +
</pre>
 +
  Check that it worked by examining the label in P4V, comparing it to the previous label
 
* Update the [[Annotated List of Boost Patches]]
 
* Update the [[Annotated List of Boost Patches]]
 
* Mail an announcement to asl-users@adobe.com
 
* Mail an announcement to asl-users@adobe.com

Revision as of 00:53, 22 March 2008

Contents

setup

# REVISIT (sparent) : Later steps assume that bjam is pre-built and path set - should not assume that.

export ADOBE_ROOT=`p4 where //adobe_platform_libraries/... | perl -MFile::Basename -ane 'print dirname dirname $F[2]'`

bump the version number in //adobe_source_libraries/adobe/config.hpp

CONFIG=adobe_source_libraries/adobe/config.hpp
p4 edit //$CONFIG
$EDITOR $ADOBE_ROOT/$CONFIG
p4 submit

Build and test all mac targets

# win users can ssh into their mac machine
# this step assumes that bjam is installed
export ADOBE_ROOT=`p4 where //adobe_platform_libraries/... | perl -MFile::Basename -ane 'print dirname dirname $F[2]'`
cd $ADOBE_ROOT/adobe_platform_libraries
bjam debug release
cd $ADOBE_ROOT/adobe_platform_libraries/xcode_ide/begin.xcodeproj
xcodebuild -configuration Debug  ##case sensitive! (untested)
xcodebuild -configuration Release  ##case sensitive! (untested)

Build and test all windows targets

 # mac users can ssh into their windows machine
 # this step assumes that bjam is installed, in path, that perl is installed properly
 # and that gcc-4.2.0 is also installed and recognized by bjam
 export ADOBE_ROOT=`p4 where //adobe_platform_libraries/... | perl -MFile::Basename -ane 'print dirname dirname $F[2]'`
 perl $ADOBE_ROOT/adobe_platform_libraries/tools/build_win.pl

 # builds two IDE configurations (debug/release), and 4 bjam configurations: 
 build bjam debug release msvc gcc-4.2.0

Rev codex for Boost

## skip this whole section if boost is unchanged
## edit the next four fields
## REVISIT (mmarcus) : Calculate these from current date and $ADOBE_ROOT/adobe_source_libraries/adobe/config.hpp
## this assumes that perl is working properly and that the required cpan modules have been installed

##BOOST_VERSION should be incremented by one from the previous VersionInfo.xml version_build field
BOOST_VERSION=2
ASL_DATE=20070503
BOOST_CHANGELIST=9999
LDAP_NAME=ldap_username
LDAP_PASSWD=passwd
cd $ADOBE_ROOT/boost_libraries/adobe_information
p4 edit VersionInfo.xml
perl $ADOBE_ROOT/adobe_source_libraries/tools/boost_codex.pl $BOOST_VERSION $BOOST_DATE $BOOST_CHANGELIST
perl $ADOBE_ROOT/adobe_source_libraries/tools/post_boost_build.pl $BOOST_VERSION $LDAP_NAME $LDAP_PASSWD
p4 submit

Output should be two key/value pairs. Check the results at the Boost Codex Page

Rev codex for Intel Thread Building Blocks

## skip this whole section if intel tbb is unchanged
## edit the next four fields
## REVISIT (mmarcus) : Calculate these from current date and $ADOBE_ROOT/adobe_source_libraries/adobe/config.hpp
## this assumes that perl is working properly and that the required cpan modules have been installed

##BOOST_VERSION should be incremented by one from the previous VersionInfo.xml version_build field
INTEL_TBB_VERSION=tbb20_014oss
ASL_DATE=20070503
INTEL_TBB_CHANGELIST=9999
LDAP_NAME=ldap_username
LDAP_PASSWD=passwd
cd $ADOBE_ROOT/intel_tbb_libraries/adobe_information
p4 edit VersionInfo.xml
perl $ADOBE_ROOT/adobe_source_libraries/tools/intel_tbb_codex.pl $INTEL_TBB_VERSION $ASL_DATE $INTEL_TBB_CHANGELIST
perl $ADOBE_ROOT/adobe_source_libraries/tools/post_intel_tbb_build.pl $INTEL_TBB_VERSION $LDAP_NAME $LDAP_PASSWD
p4 submit

Output should be two key/value pairs. Check the results at the Intel Thread Building Block Codex Page

Rev codex for ASL and APL

$ADOBE_ROOT/adobe_platform_libraries/toolsupdate_adobe_codexes.pl date (format: 20080128) ldap-username ldap-password
p4 submit

expected output from the first command:

building codexes for version 1.0.35
executing p4 edit /adobe_root/adobe_source_libraries/tools/VersionInfo.xml in /adobe_root/adobe_source_libraries/tools
//adobe_source_libraries/tools/VersionInfo.xml#5 - currently opened for edit
1executing perl -w asl_codex.pl 1.0.35 20080128 adobe_source_libraries_1.0.35 in /adobe_root/adobe_source_libraries/tools
executing perl -w post_build.pl 1.0.35 mmarcus Brea%m14 in /adobe_root/adobe_source_libraries/tools
key: result, value: 97281.
key: result, value: 97282.
executing p4 edit VersionInfo.xml in /adobe_root/adobe_platform_libraries/tools
//adobe_platform_libraries/tools/VersionInfo.xml#5 - currently opened for edit
executing perl -w apl_codex.pl 1.0.35 20080128 adobe_platform_libraries_1.0.35 in /adobe_root/adobe_platform_libraries/tools
executing perl -w post_build.pl 1.0.35 mmarcus Brea%m14 in /adobe_root/adobe_platform_libraries/tools
key: result, value: 97283.
key: result, value: 97284.

Semi-automated from here

  • rev $ADOBE_ROOT/adobe_source_libraries/read_me.html with current version numbers for "automated build" instructions.
  • Update $ADOBE_ROOT/adobe_source_libraries/tools/patch_boost.sh if a new version of boost has been released. Also update boost version numbers in $ADOBE_ROOT/adobe_source_libraries/documentation/html/asl_readme.html and $ADOBE_ROOT/adobe_platform_libraries/tools/verify.sh. Furthermore, make sure that the boost patch file name is updated, e.g. $ADOBE_ROOT/adobe_source_libraries/tools/boost_1_34_1_patch_01.txt.
  • Update the boost patch file contents e.g. $ADOBE_ROOT/adobe_source_libraries/tools/boost_1_34_1_patch_01.txt . For example, under win32, generation of the patch file might look like:
## given a clean copy of boost in $ADOBE_ROOT/diffable_boost_1_34_1
cd  $ADOBE_ROOT/adobe_source_libraries
diff -wurx '(wrong_line_ends_test.cpp|*.obj|*.o|*.gil*|*.lib|*.bin.v2|*.exe|*.ilk|*.pdb)' \
../diffable_boost_1_34_1 ../boost_libraries \
| grep -iv "only in" > ./tools/boost_1_34_1_patch_01.txt

Note, however, that the diffs for boost filesystem's wrong_line_end test may be spurious (depending on perforce line ending settings). As of 9/2007 that file has *not* been patched.

  • Update the $ADOBE_ROOT/adobe_source_libraries/release_notes.txt with the latest revision information-- p4 changes -l -m N //adobe_source_libraries/... //adobe_platform_libraries/... is helpful
  • Update main news page with new highlights: $ADOBE_ROOT/adobe_source_libraries/documentation/structure/news.dox
  • Update all external docs:
#### editing the news file

### open the release notes

p4 changes -l -m 150 //adobe_source_libraries/... //adobe_platform_libraries| bbedit

RELEASE_NOTES=//adobe_source_libraries/release_notes.txt
p4 edit $RELEASE_NOTES
bbedit `p4 where $RELEASE_NOTES | sed -e 's/[^ ]* [^ ]* //'`

### open and edit the news file

NEWS=//adobe_source_libraries/documentation/structure/news.dox
p4 edit $NEWS
bbedit `p4 where $NEWS | sed -e 's/[^ ]* [^ ]* //'`
	# update the news file based on the release notes.
p4 submit

#### updating the documentation
$ADOBE_ROOT/adobe_platform_libraries/tools/doc_update.pl


### review changes, revert unchanged files, and submit

cd html
explorer index.html

p4 submit
  • Integrate from opensource //adobe_source_libraries to //source_release, and same for platform:
p4 integrate -t -i -Dt -Ds -b source_and_platform_release
p4 resolve -at
p4 submit
  • Upload to SourceForge 8 files (ftp: upload.sourceforge.net using anonymous ftp. remote path: /incoming ... : you won't be able to see /incoming's contents; that's normal. No two files in your entire release library can have the same name.) Create the source tarball/zip using the perl script

perl $ADOBE_ROOT/adobe_platform_libraries/tools/package_distros.pl

on *each* platform (don't forget to sync on secondary platform first) to create the files in the local directory /distros, for uploading to sourceforge. You will need at least the compressed Begin application from your secondary platform. The other files can be uploaded from your primary platform (as long as your perforce client spec uses LineEndings of "share"). The files to be uploaded are

    • Adobe Begin binaries
      • asl_1.0.XX_begin_mac.tgz (includes app, dependencies, and examples folder--see the package_distros.pl script for details.)
      • asl_1.0.XX_begin_win.zip (includes app, dependencies, runtime libs, and examples folder--see the package_distros.pl script for details.)
    • Net setup scripts
      • asl_1.0.XX_net_setup.sh
      • asl_1.0.XX_net_setup.bat
    • Source Distributions
      • Name: asl_1.0.XX.tgz
      • Name: asl_1.0.XX.zip
      • Name: apl_1.0.XX.tgz
      • Name: apl_1.0.XX.zip
  • Go to http://sourceforge.net/project/admin/editpackages.php?group_id=132417
    • Click [Add Release] next to adobe-source
    • Follow basic form to add details to the release (release name: (e.g.) 1.0.31)
      • Copy the most recent release notes from $ADOBE_ROOT/adobe_source_libraries/release_notes.txt to "Changelog" field. Open $ADOBE_ROOT/adobe_source_libraries/read_me.html, save as text, paste text file into the release notes field. Select "preserve my preformatted text"
        • Make sure you hit the "preserve formatting" checkbox at the bottom
      • Add the files from the FTP portion of the form to the release, and update all their types
      • Go to "Notice" section at the bottom, hit "I'm sure", and post it.
  • Update the utility scripts (p4checkout) if need be
  • Update opensource.adobe.com with new documentation: once you have rsynced up the files, by running opensource_rsync.sh, you go to http://webpush.macromedia.com/stlab.adobe.com/ , provide LDAP info, Push the "Check all push boxes" button, then go through the list and uncheck the push boxes for the directories (amg/, gil/ and performance/). When that's ready, hit the "Push and/or Delete!" button at either the top or bottom of the page
  • Test the net setup scrips on both platforms. It's good to choose paths with spaces in them for robustness. Note: sometimes it takes SF a bit of time ot propagate the uploaded files to the mirrors/download areea.
  • Update internal website with new documentation (not necessary most releases, unless changed):
 
  build the internal docs so you have a complete html/ directory. That is,
  cd $ADOBE_ROOT/asl_corp/documentation/
  p4 edit html/...
  rm html/*.html # but not the gifs/pdfs
  doxygen doxyfile
  p4 add html/*
  p4 revert -a html/...
 
  cd html
  explorer index.html
  #if all ok:
  
  p4 submit  

  Make a tarball of $ADOBE_ROOT/asl_corp/documentation/html directory:

   cd $ADOBE_ROOT/asl_corp/documentation
   rm html.tgz
   tar -czf html.tgz html

  FTP that tarball up to the internal doc staging server, with the following information:
  
  ftp ihostunix.corp.adobe.com # use LDAP credentials
  cd /www/isproot/intranet1/corp/stlab
  bin
  put html.tgz
  quit

  Once the file is uploaded, 
  telnet ihostunix.corp.adobe.com # use LDAP credentials
  bash
  ./bin/stlab.sh  #remotely expands the tarball and moves the new docs into place.

Scripts

opensource_rsync.sh

#!/bin/bash

## Setup the argument components
export masterDir="/data/www/sites/stlab-staging.adobe.com/htdocs"
export rsync="/bin/rsync"
export ssh="--rsh=/usr/bin/ssh"
export recursive="--recursive"
export preserve="--times -og --links"
export prog="--progress"
export stats="--stats"
export delete="--delete"
export remoteUser="ldapusername"
export server="webprod.macromedia.com"
export args="$prog $stats $ssh $recursive $preserve"
rsync $args /adobe_root/adobe_source_libraries/documentation/html/ ${remoteUser}@${server}:${masterDir}/

stlab.sh

#!/bin/bash
cd /www/isproot/intranet1/corp/stlab
tar -xzvf html.tgz
echo 'changing permissions...'
chmod -R a+rx html
echo 'relocating directories...' 
mv www www.old
mv html www
rm -rf www.old
echo 'done!'
exit

stlabconnect

rsh -l ldapusername ihostunix.corp.adobe.com

stlab.sh is actually a script that lives on the internal documentation staging server. Once the html tarball has been uploaded to the server, run this script to expand the tarball and swap it into place, removing the old documentation directory upon completion.


  • Notify version tracking websites:
  • Post a news item on our SourceForge home page: log in to our project page with your sf.net username/pass, and you'll get an "Admin" menu on the site -- click the news item in that menu, and in that interface you should see a link that says something like "Post New News". Get the news from $ADOBE_ROOT/adobe_source_libraries/documentation/html/index.html
  • Update the internal perforce server: Push the new releases (from boxer) //source_release/... and //platform_release/... on Perforce
    p4 integrate  -t -i -Dt -Ds -b source_and_platform_release 
    p4 resolve -at
    p4 submit
  • Update labels for the release (asl, apl, intel_tbb, and boost) (adobe_source_1_0_XX)
   #eg to go from 1.0.35 to 1.0.36:
   p4 label -t adobe_source_1_0_35 adobe_source_1_0_36
   # in the ensuing dialog we add a revision field and insert the head rev, e.g.:
     Revision: 
       @4082
 Check that it worked by examining the label in P4V, comparing it to the previous label

Sean's Worksheet For Adobe Internal Release

##### branch spec for integrating adobe portion of submission to source_library

p4 sync

# update the version number
p4 edit ~/development/projects/submission/adobe/config.hpp
bbedit ~/development/projects/submission/adobe/config.hpp

# remove the old documentation
rm -r ~/development/projects/submission/adobe/documentation/external/html/*
rm -r ~/development/projects/submission/adobe/documentation/internal/html/*
p4 delete //submission/adobe/documentation/external/html/...
p4 delete //submission/adobe/documentation/internal/html/...
p4 submit

# build the docs and check them

cd ~/development/projects/submission/adobe/documentation/external
doxygen documentation.doxygen
bbedit ./doxygen_support_files/doxygen_warn_log.txt
open -a Safari html/index.html

cd ~/development/projects/submission/adobe/documentation/internal
doxygen adobe.dox
bbedit doxygen_warn_log.txt
open -a Safari html/index.html

# add the built documentation
p4 add ~/development/projects/submission/adobe/documentation/external/html/*
p4 add ~/development/projects/submission/adobe/documentation/internal/html/*
p4 submit

# check the branch spec
p4 branch adobe_release

p4 integrate -1 -t -d -i -b adobe_release | bbedit
p4 resolve -at | bbedit
p4 submit | bbedit

# update the label

p4 label -t adobe_source_1_0_11 adobe_source_1_0_12
p4 labelsync -l adobe_source_1_0_12 //source_library/... //submission/... | bbedit
p4 label adobe_source_1_0_12 # lock the label

# check the build

rm -r ~/development/projects/source_library/*
p4 sync -f //source_library/...@adobe_source_1_0_11 | bbedit

~/development/projects/source_library/adobe/bin/build.sh