Difference between revisions of "DMD Release Building"

From D Wiki
Jump to: navigation, search
(update version number examples, build with latest preceeding major release version)
Line 27: Line 27:
 
* Test building the stable branch
 
* Test building the stable branch
 
** cd installer/create_dmd_release
 
** cd installer/create_dmd_release
** rdmd build_all v2.068.0 stable
+
** rdmd build_all v2.070.2 stable
 
** possibly fix build script, repos, or update patches
 
** possibly fix build script, repos, or update patches
  
Line 38: Line 38:
 
     pushd $proj
 
     pushd $proj
 
     git fetch upstream
 
     git fetch upstream
     git tag -sm 'v2.068.1-b1' v2.068.1-b1 upstream/stable
+
     git tag -sm 'v2.071.2-b4' v2.071.2-b4 upstream/stable
     git push origin v2.068.1-b1
+
     git push origin v2.071.2-b4
 
     popd
 
     popd
 
   done
 
   done
Line 47: Line 47:
 
** cd installer/create_dmd_release
 
** cd installer/create_dmd_release
 
** rm -rf build
 
** rm -rf build
** rdmd build_all v2.068.0 v2.068.1-b1
+
** rdmd build_all v2.070.2 v2.071.2-b4
  
 
* Sign binaries
 
* Sign binaries
Line 84: Line 84:
  
 
* Update LATEST_BETA or LATEST
 
* Update LATEST_BETA or LATEST
** ssh martin@digitalmars.com 'echo -n 2.071.1-b2 > /var/pub/digitalmars.com/LATEST_BETA'
+
** ssh martin@digitalmars.com 'echo -n 2.071.2-b4 > /var/pub/digitalmars.com/LATEST_BETA'
** ssh martin@digitalmars.com 'echo -n 2.069.0 > /var/pub/digitalmars.com/LATEST'
+
** ssh martin@digitalmars.com 'echo -n 2.071.2 > /var/pub/digitalmars.com/LATEST'
 
* Merge stable branches into master
 
* Merge stable branches into master
  

Revision as of 05:23, 12 September 2016

Requirements

Setup boxes

  • See the build script for how to setup the vagrant boxes.

https://github.com/D-Programming-Language/installer/blob/a01d9092a5409e507e1ea1c734f6336b8bfcd2f6/create_dmd_release/build_all.d#L14

Build steps

  • Make sure dmd/VERSION contains the to be build version
  • Combining the changelog
    • copy the changelog.dd parts from the dmd/druntime/phobos stable repos to a new dlang.org/changelog/2.068.1.dd
    • use tools/changed to get the bugzilla changelog list
    • Update prev/next navigation in changelogs
    • Update dlang.org/win32.mak
  • Test building the stable branch
    • cd installer/create_dmd_release
    • rdmd build_all v2.070.2 stable
    • possibly fix build script, repos, or update patches
  • Tag a new version

Push the tags to your private forks (origin) first to test whether the release builds cleanly. Tags on upstream must not be changed ever. To build from your private forks you need to change the base url in cloneSources.

 for proj in dmd druntime phobos tools dlang.org installer; do
   pushd $proj
   git fetch upstream
   git tag -sm 'v2.071.2-b4' v2.071.2-b4 upstream/stable
   git push origin v2.071.2-b4
   popd
 done

  • Build binaries
    • cd installer/create_dmd_release
    • rm -rf build
    • rdmd build_all v2.070.2 v2.071.2-b4
  • Sign binaries

 for file in build/*; do
   gpg2 -b $file
 done

  • Perform additional tests
  • Upload binaries
    • rsync --progress -av --chmod=ug=rw build/ martin@digitalmars.com:/var/pub/digitalmars.com/
    • Upload to releases or pre-releases
      • aws --profile ddo s3 sync build/ s3://downloads.dlang.org/pre-releases/$(date '+%Y')/ --acl public-read --cache-control max-age=604800
      • aws --profile ddo s3 sync build/ s3://downloads.dlang.org/releases/$(date '+%Y')/ --acl public-read --cache-control max-age=604800
      • Make sure to check for errors during upload and probably repeat
  • If everything went right until here, push the tags to upstream

 for proj in dmd druntime phobos tools dlang.org installer; do
   git -C $proj push upstream v2.068.1-b1
 done

  • Update downloads.dlang.org
    • cd downloads.dlang.org (https://github.com/braddr/downloads.dlang.org)
    • ls create_dmd_release/build >> make-links
    • edit 'make-links' and add symlinks for all the new files
    • run ./make-links
    • build make -C src
    • and run ./src/build-gen-index s3_index generate to regenerate the download pages to ./ddo
    • aws --profile ddo s3 sync ./ddo/ s3://downloads.dlang.org/ --acl public-read --cache-control max-age=604800
    • commit and push changes to downloads.dlang.org
  • Update LATEST_BETA or LATEST
    • ssh martin@digitalmars.com 'echo -n 2.071.2-b4 > /var/pub/digitalmars.com/LATEST_BETA'
    • ssh martin@digitalmars.com 'echo -n 2.071.2 > /var/pub/digitalmars.com/LATEST'
  • Merge stable branches into master

 cd dmd # repeat for every repo
 git fetch upstream
 git checkout -b merge_stable upstream/master
 git merge upstream/stable
 # fix any conflicts
 git hub pull new -b master

  • Rebuild and sync dlang.org
  • Use a tool like Check-My-Links to check the download pages
  • Write an announcement to digitalmars.D.announce and/or dmd-beta.
  • Update the version in D's Wikipedia article
  • Publish announcements to Twitter, Reddit, HackerNews, Slashdot (make noise!)
  • Update DMD version in this D wiki