- Loading...
There are building instructions in the workspace itself: http://hg.openjdk.java.net/mlvm/mlvm/file/tip/README.txt
Make a directory which will contain both sets of repositories (patches and full sources), and pull everything there.
The sources repository based at http://hg.openjdk.java.net/hsx/hotspot-comp (This is as of 9/2011; earlier they were based at jdk7/jdk7 and then at bsd-port/bsd-port.)
| No Format | ||
|---|---|---|
| ||
$ mkdir davinci $ cd davinci $ hg fclone http://hg.openjdk.java.net/jdk7hsx/jdk7hotspot-comp sources $ hg fclone http://hg.openjdk.java.net/mlvm/mlvm patches |
...
| No Format | ||
|---|---|---|
| ||
$ 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 | ||
|---|---|---|
| ||
$ 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 | ||
|---|---|---|
| ||
$ (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:
check and force targets are hyper-conservative, assuming the patches are worthless unless the base revision matches exactly.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.build target is probably oversimplified.Once patches are applied, build as usual. Build instructions are posted with the OpenJDK Build Group.
...