Skip to content

vlsi/jdk

 
 

Repository files navigation

Typetools fork of the JDK
=========================

This fork of the JDK contains type annotations for pluggable type-checking.

It does *not* contain annotations for certain files (because annotations in
them cause build failures, especially in the interim builds):
 * the jdk.rmic module
 * objectweb/asm files
 * src/java.base/share/classes/java/time/*
 * src/jdk.compiler/share/classes/com/sun/tools/javac/*

Annotations for classes that exist in JDK 8 but were removed in JDK 11 appear
in jdk8.astub files in repository https://github.com/typetools/checker-framework/ .

This fork is not up to date with respect to `openjdk/jdk` (the current OpenJDK version).
This fork contains all commits through the release of JDK 11:
https://github.com/typetools/jdk/commit/da75f3c4ad5bdf25167a3ed80e51f567ab3dbd01
with commit message:
8209806: API docs should be updated to refer to javase11
[TODO: How did I determine that was the right commit to use?]

This fork is an ancestor of JDK release forks such as jdk11u.  This fork
does not compile, because the commit of `openjdk/jdk` on which it is based
no longer compiles, due to changes to tools such as compilers.
Repositories such as jdk11u and jdk12u have been updated and do compile.

This fork's annotations are pulled into those repositories, in order to
build an annotated JDK.  We do not write annotations in (say) jdk11u,
because it has diverged far from other repositories.  It would be even more
painful to write annotations on jdk11u and then try to merge it into a
subsequent version like jdk12u.


Pull request merge conflicts
----------------------------

If a pull request is failing with a merge conflict in `jdk11u`, first
update jdk11u from its upstreams, using the directions in section "The
typetools/jdk11u repository" below.

If that does not resolve the issue, then do the following in a clone of the
branch of `jdk` whose pull request is failing.

```
BRANCH=`git rev-parse --abbrev-ref HEAD`
URL=`git config --get remote.origin.url`
SLUG=${URL#*:}
ORG=${SLUG%/*}
JDK11DIR=../jdk11u-fork-$ORG-branch-$BRANCH
JDK11URL=`echo "$URL" | sed 's/jdk/jdk11u/'`
echo BRANCH=$BRANCH
echo URL=$URL
echo JDK11DIR=$JDK11DIR
echo JDK11URL=$JDK11URL
if [ -d $JDK11DIR ] ; then
  (cd $JDK11DIR && git pull)
else
  git clone $JDK11URL $JDK11DIR && (cd $JDK11DIR && (git checkout $BRANCH || git checkout -b $BRANCH))
fi
cd $JDK11DIR
git pull $URL $BRANCH
```

Manual step: resolve conflicts and complete the merge.

```
git push --set-upstream origin $BRANCH
```

Manual step: restart the pull request CI job.

After the pull request is merged to https://github.com/typetools/jdk,
follow the instructions at https://github.com/typetools/jdk11u to update
jdk11u, taking guidance from the merge done in the fork of jdk11u to
resolve conflicts.  Then, discard the branch in the fork of jdk11u.


Qualifier definitions
---------------------

The java.base module contains a copy of the Checker Framework qualifiers.
To update that copy:

# Get version number from https://checkerframework.org/ .
VER=3.3.0
cd src/java.base/share/classes
rm -rf org/checkerframework
wget https://repo1.maven.org/maven2/org/checkerframework/checker-qual/$VER/checker-qual-$VER-sources.jar
unzip checker-qual-$VER-sources.jar -x 'META-INF*'
chmod -R u+w org/checkerframework
jar tf checker-qual-$VER-sources.jar  | grep '\.java$' | sed 's/\/[^/]*\.java/;/' | sed 's/\//./g' | sed 's/^/    exports /' | sort | uniq
rm -f checker-qual-$VER-sources.jar

Copy the exports lines that were printed by the penultimate command to
src/java.base/share/classes/module-info.java .


The typetools/jdk11u repository
-------------------------------

The typetools/jdk11u repository is a merge of `openjdk/jdk11u` and `typetools/jdk`.
That is, it is a fork of `openjdk/jdk11u`, with Checker Framework type annotations.

**Do not edit the `typetools/jdk11u` repository.**
Make changes in the `typetools/jdk` repository.
(Note that this README file appears in both the `typetools/jdk` and `typetools/jdk11u` repositories!)

To update jdk11u from its upstreams:
```
cd jdk11u
git pull
git pull https://github.com/openjdk/jdk11u.git
git pull https://github.com/typetools/jdk.git
```


Upstream README follows
-----------------------

The remainder of this file is the README from `openjdk/jdk`.


Welcome to the JDK!
===================

For information about building the JDK, including how to retrieve all
of the source code, please see either of these files:

  * doc/building.html   (html version)
  * doc/building.md     (markdown version)

See http://openjdk.java.net/ for more information about the OpenJDK
Community and the JDK.

Packages

No packages published

Languages

  • Java 77.7%
  • C++ 11.7%
  • C 7.2%
  • JavaScript 1.1%
  • Roff 0.8%
  • HTML 0.4%
  • Other 1.1%