Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

No Format
titlelink patch repos into source repos
$ bash patches/make/link-patch-dirs.sh sources patches
+ ln -s ../../../patches/hotspot sources/hotspot/.hg/patches
+ ln -s ../../../patches/jdk sources/jdk/.hg/patches
+ ln -s ../../../patches/langtools sources/langtools/.hg/patches
$ ls -il patches/hotspot/series sources/hotspot/.hg/patches/series
(should be identical files)

...

No Format
titleselect patch guards
$ export davinci=$(pwd) guards="buildable testable $(sh patches/make/current-release.sh)"
$ sh patches/make/each-patch-repo.sh hg qselect --reapply $guards \
        '$(sh $davinci/patches/make/current-release.sh)'

The shell script current-release.sh simply digs out the most recent release tag hash from the source repository; it will be something like jdk7-b25.TO DO: Put the gory details in patches/Makefile, with a simple build target 7836be3e92d0.

For convenience, everything after the fclone operations is packaged up in a makefile, which you can invoke on a variety of targets:

No Format
titlemakefile targets

$ (cd patches/make; gnumake setup) # build links and select guards
$ (cd patches/make; gnumake check) # check for exact patch base revisions
$ (cd patches/make; gnumake force) # force exact patch base revisions
$ (cd patches/make; gnumake unforce) # restore workspaces to tip revisions
$ (cd patches/make; gnumake patch) # actually apply the selected patches
$ (cd patches/make; gnumake build) # run make in each repo's make subdirectory
$ (cd patches/make; gnumake all) # default target is setup check patch build
$ (cd patches/make; gnumake all RELAX_CHECKS=1) # suppress the check
$ (cd patches/make; gnumake all FORCE_VERSIONS=1) # do 'force' instead of 'check'

Things to watch out for in the makefile:

  • The check and force targets are hyper-conservative, assuming the patches are worthless unless the base revision matches exactly.
  • The check target is likely to fail unless the base revision has been forced, but if it passes you can expect the patches to apply cleanly.
  • The build target is probably oversimplified.

Building

Once patches are applied, build as usual. Build instructions are posted with the OpenJDK Build Group.

...