Skip to content

Commit

Permalink
EISOP Checker Framework 3.42.0-eisop5 release
Browse files Browse the repository at this point in the history
  • Loading branch information
wmdietl committed Dec 21, 2024
1 parent 70a36e2 commit 10462a4
Show file tree
Hide file tree
Showing 4,346 changed files with 664,766 additions and 14,160 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
3 changes: 2 additions & 1 deletion afu/annotation-file-format.html
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@
<body >
<!--HEVEA command line is: hevea -fix -exec xxdate.exe urlhref.hva annotation-file-format.tex -->
<!--CUT STYLE article--><!--CUT DEF section 1 --><table class="title"><tr><td style="padding:1ex"><h1 class="titlemain">Annotation File Format Specification</h1><h3 class="titlerest"><a href="https://checkerframework.org/annotation-file-utilities/"><span style="font-family:monospace">https://checkerframework.org/annotation-file-utilities/</span></a> <br>
July&#X2004;&#X200D;12, 2024</h3></td></tr>
December
&#X2004;&#X200D;20, 2024</h3></td></tr>
</table><!--TOC section id="sec1" Contents-->
<h2 id="sec1" class="section">Contents</h2><!--SEC END --><ul class="toc"><li class="li-toc">
<a href="#purpose">1&#X2003;Purpose: External storage of annotations</a>
Expand Down
Binary file modified afu/annotation-file-format.pdf
Binary file not shown.
4 changes: 2 additions & 2 deletions afu/annotation-file-utilities.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ Installation

The following instructions assume either a Linux or Windows system using a command-line environment.

The current release is Annotation File Utilities version 3.42.0, July 13, 2024.
The current release is Annotation File Utilities version 3.42.0, December 20, 2024.

1. Download [annotation-tools-3.42.0-eisop4.zip](annotation-tools-3.42.0-eisop4.zip).
1. Download [annotation-tools-3.42.0-eisop5.zip](annotation-tools-3.42.0-eisop5.zip).
2. Create a directory named `annotation-tools` by unpacking the distribution zipfile. (You will typically make `annotation-tools/` a sibling of `checker-framework/`.)

unzip annotation-tools-3.42.0.zip
Expand Down
Binary file added afu/annotation-tools-3.42.0-eisop5.zip
Binary file not shown.
32 changes: 32 additions & 0 deletions afu/annotation-tools-3.42.0-eisop5/.build-without-test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/bash

echo Entering "$(cd "$(dirname "$0")" && pwd -P)/$(basename "$0")" in "$(pwd)"

# Fail the whole script if any command fails
set -e

# Print commands as they are executed
set -x

export SHELLOPTS

if [ "$(uname)" = "Darwin" ] ; then
export JAVA_HOME=${JAVA_HOME:-$(/usr/libexec/java_home)}
else
export JAVA_HOME=${JAVA_HOME:-$(dirname "$(dirname "$(readlink -f "$(which javac)")")")}
fi
echo "JAVA_HOME=$JAVA_HOME"
export AFU="${AFU:-$(cd annotation-file-utilities && pwd -P)}"

export PATH=$AFU/scripts:$JAVA_HOME/bin:$PATH

## Download Gradle and its dependencies (retry in case of network lossage).
(cd "${AFU}" && \
TERM=dumb timeout 300 ./gradlew --write-verification-metadata sha256 help --dry-run </dev/null >/dev/null 2>&1 || \
TERM=dumb ./gradlew --write-verification-metadata sha256 help --dry-run </dev/null >/dev/null 2>&1 || \
(sleep 1m && ./gradlew --write-verification-metadata sha256 help --dry-run))

## Compile
(cd "${AFU}" && ./gradlew assemble)

echo Exiting "$(cd "$(dirname "$0")" && pwd -P)/$(basename "$0")" in "$(pwd)"
87 changes: 87 additions & 0 deletions afu/annotation-tools-3.42.0-eisop5/.build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#!/bin/bash
# Uses `bash` rather than `sh` because of use of [[ ... ]] for boolean tests.

echo "Entering $(cd "$(dirname "$0")" && pwd -P)/$(basename "$0") in $(pwd)"

# Optional argument $1 is one of:
# all, test, typecheck, misc, downstream
# It defaults to "all".
export GROUP="$1"
if [[ "${GROUP}" == "" ]]; then
export GROUP=all
fi

if [[ "${GROUP}" != "all" && "${GROUP}" != "test" && "${GROUP}" != "typecheck" && "${GROUP}" != "misc" && "${GROUP}" != "downstream" ]]; then
echo "Bad argument '${GROUP}'; should be omitted or one of: all, test, misc, downstream."
exit 1
fi

# Fail the whole script if any command fails
set -e


## Diagnostic output
# Output lines of this script as they are read.
set -o verbose
# Output expanded lines of this script as they are executed.
set -o xtrace
# Don't use "-d" to debug ant, because that results in a log so long
# that Travis truncates the log and terminates the job.

export SHELLOPTS

./.build-without-test.sh

set -e

if [ -d "/tmp/$USER/git-scripts" ] ; then
(cd "/tmp/$USER/git-scripts" && (git pull -q || true)) > /dev/null 2>&1
else
(mkdir -p "/tmp/$USER" && git -C "/tmp/$USER" clone --filter=blob:none -q https://github.com/eisop-plume-lib/git-scripts.git)
fi

if [[ "${GROUP}" == "test" || "${GROUP}" == "all" ]]; then
(cd annotation-file-utilities && ./gradlew build)
fi

if [[ "${GROUP}" == "typecheck" || "${GROUP}" == "all" ]]; then
if [ -z "${CHECKERFRAMEWORK}" ] ; then
CHECKERFRAMEWORK=$(realpath ../checker-framework)
export CHECKERFRAMEWORK
/tmp/$USER/git-scripts/git-clone-related eisop checker-framework "${CHECKERFRAMEWORK}"
(cd "${CHECKERFRAMEWORK}" && ./.build-without-test.sh downloadjdk)
fi

(cd annotation-file-utilities && ./gradlew checkSignature)
fi

if [[ "${GROUP}" == "misc" || "${GROUP}" == "all" ]]; then
## jdkany tests: miscellaneous tests that shouldn't depend on JDK version.

set -e

# As of version 2.38.0 (2023-04-06), Spotless does not run under JDK 20.
JAVA_VER=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1 | sed 's/-ea//') && \
if [ "$JAVA_VER" = "20" ] ; then
echo "Skipping spotlessCheck on JDK 20"
else
(cd annotation-file-utilities && ./gradlew spotlessCheck)
fi

(cd annotation-file-utilities && ./gradlew htmlValidate)

(cd annotation-file-utilities && ./gradlew javadoc)
fi

if [[ "${GROUP}" == "downstream" || "${GROUP}" == "all" ]]; then
# checker-framework and its downstream tests
# NO-AFU
# /tmp/$USER/git-scripts/git-clone-related eisop checker-framework
# (cd ../checker-framework/framework && (../gradlew --write-verification-metadata sha256 help --dry-run || (sleep 60s && ../gradlew --write-verification-metadata sha256 help --dry-run)))
# (cd ../checker-framework/framework && ../gradlew ainferTest)

# /tmp/$USER/git-scripts/git-clone-related eisop checker-framework-inference
# (cd ../checker-framework-inference && ./.build.sh)
fi

echo "Exiting $(cd "$(dirname "$0")" && pwd -P)/$(basename "$0") in $(pwd)"
42 changes: 42 additions & 0 deletions afu/annotation-tools-3.42.0-eisop5/.git.pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/sh

# This file will be used as .git/hooks/pre-commit .
# However, it should be edited as .git.pre-commit .
# You can install it by running: ./gradlew installGitHooks

# Fail if any command fails
set -e

# Could instead do "spotlessApply", but then the changes don't appear in this commit.
(cd annotation-file-utilities/ && ./gradlew spotlessCheck -q)

CHANGED_JAVA_FILES=$(git diff --staged --name-only --diff-filter=ACM | grep '\.java$' ) || true
## TODO: the below is written for the Checker Framework and needs to be rewritten to work for AFU.
# echo "CHANGED_JAVA_FILES=${CHANGED_JAVA_FILES}"
# if [ -n "$CHANGED_JAVA_FILES" ]; then
#
# BRANCH=$(git rev-parse --abbrev-ref HEAD)
# if [ "$BRANCH" = "master" ]; then
# git diff --staged > /tmp/diff.txt
# ./gradlew getPlumeScripts -q
# (./gradlew requireJavadoc > /tmp/warnings-rjp.txt 2>&1) || true
# checker/bin-devel/.plume-scripts/lint-diff.py --guess-strip /tmp/diff.txt /tmp/warnings-rjp.txt
# (./gradlew javadocDoclintAll > /tmp/warnings-jda.txt 2>&1) || true
# checker/bin-devel/.plume-scripts/lint-diff.py --guess-strip /tmp/diff.txt /tmp/warnings-jda.txt
# fi
# fi

# This is to handle non-.java files, since the above already handled .java files.
# May need to remove files that are allowed to have trailing whitespace or are
# not text files.
CHANGED_FILES=$(git diff --staged --name-only --diff-filter=ACM | grep -v '\.class$' | grep -v '\.gz$' | grep -v '\.jar$' | grep -v '\.pdf$' | grep -v '\.png$' | grep -v '\.xcf$' | grep -v 'gradlew') || true
if [ -n "$CHANGED_FILES" ]; then
## For debugging:
# echo "CHANGED_FILES: ${CHANGED_FILES}"

# shellcheck disable=SC2086
FILES_WITH_TRAILING_SPACES=$(grep -l -s '[[:blank:]]$' ${CHANGED_FILES} 2>&1) || true
if [ -n "$FILES_WITH_TRAILING_SPACES" ]; then
echo "Some files have trailing whitespace: ${FILES_WITH_TRAILING_SPACES}" && exit 1
fi
fi
11 changes: 11 additions & 0 deletions afu/annotation-tools-3.42.0-eisop5/.github/renovate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base",
":automergeAll",
":automergeRequireAllStatusChecks",
"schedule:nonOfficeHours",
":disableDependencyDashboard"
],
"timezone": "America/Los_Angeles"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: "Validate Gradle Wrapper"
on: [push, pull_request]

permissions:
contents: read

jobs:
validation:
name: "Validation"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: gradle/wrapper-validation-action@v1
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

## TODO: Eliminate this script, which exists for backward compatibility.

echo "Don't use .travis-build-without-test.sh; use .build-without-test.sh instead."

source .build-without-test.sh
7 changes: 7 additions & 0 deletions afu/annotation-tools-3.42.0-eisop5/.travis-build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

## TODO: Eliminate this script, which exists for backward compatibility.

echo "Don't use .travis-build.sh; use .build.sh instead."

source .build.sh
106 changes: 106 additions & 0 deletions afu/annotation-tools-3.42.0-eisop5/.travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
language: generic

before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
- $HOME/.m2/

services:
- docker

env:
global:
- THIS_REPO=annotation-tools
- OS=ubuntu
# "matrix" only seems to work if there is more than one item specified!
# But, I don't want to have to put the long script within the jobs:include:
# block. So, always use two jobs (use a dummy if necessary).
matrix:
- JDKVER=jdk11 GROUP=test
- JDKVER=jdk17 GROUP=test
- JDKVER=jdk17-plus GROUP=typecheck
- JDKVER=jdk17-plus GROUP=misc
- JDKVER=jdk17 GROUP=downstream
# TODO: enable once all downstream tests work with JDK 11
# - JDKVER=jdk11 GROUP=downstream

# The "docker run" command will pull if needed.
# Running this first gives two tries in case of network lossage.
before_script:
- timeout 5m docker pull wmdietl/cf-$OS-$JDKVER || true

# Using travis_wait here seems to cause the job to terminate after 1 minute
# with no error (!).
# The git commands are tried twice, in case of temporary network failure.
# The fcntl line works around a bug where Travis truncates logs and fails.
script:
- python -c "import fcntl; fcntl.fcntl(1, fcntl.F_SETFL, 0)"
- REMOTE_ORIGIN_URL=`git config --get remote.origin.url`
- echo "THIS_REPO=${THIS_REPO}"
- echo "JDKVER=${JDKVER}"
- echo "GROUP=${GROUP}"
- echo "TRAVIS_BRANCH=${TRAVIS_BRANCH}"
- echo "REMOTE_ORIGIN_URL=${REMOTE_ORIGIN_URL}"
- echo "TRAVIS_EVENT_TYPE=${TRAVIS_EVENT_TYPE}"
- echo "TRAVIS_COMMIT_RANGE=${TRAVIS_COMMIT_RANGE}"
- echo "TRAVIS_COMMIT=${TRAVIS_COMMIT}"
- echo "TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST}"
- echo "TRAVIS_PULL_REQUEST_BRANCH=${TRAVIS_PULL_REQUEST_BRANCH}"
- echo "TRAVIS_PULL_REQUEST_SHA=${TRAVIS_PULL_REQUEST_SHA}"
- echo "TRAVIS_PULL_REQUEST_SLUG=${TRAVIS_PULL_REQUEST_SLUG}"
- echo "TRAVIS_REPO_SLUG=${TRAVIS_REPO_SLUG}"
- >-
docker run -v $HOME/.gradle:/root/.gradle -v $HOME/.m2:/root/.m2 wmdietl/cf-$OS-$JDKVER /bin/bash -c "true &&
if [ $TRAVIS_EVENT_TYPE = pull_request ] ; then
git clone --quiet $REMOTE_ORIGIN_URL $THIS_REPO || (sleep 1m && git clone --quiet $REMOTE_ORIGIN_URL $THIS_REPO)
cd $THIS_REPO
git fetch origin +refs/pull/$TRAVIS_PULL_REQUEST/merge
git checkout -qf $TRAVIS_PULL_REQUEST_SHA
git config user.email noone@cares.com
git config user.name Noone Cares
git remote add theupstream https://github.com/$TRAVIS_REPO_SLUG.git
git pull theupstream $TRAVIS_BRANCH || (sleep 1m && git pull theupstream $TRAVIS_BRANCH)
else
git clone --quiet -b $TRAVIS_BRANCH $REMOTE_ORIGIN_URL $THIS_REPO || (sleep 1m && git clone --quiet -b $TRAVIS_BRANCH $REMOTE_ORIGIN_URL $THIS_REPO)
cd $THIS_REPO
git checkout -qf $TRAVIS_COMMIT
fi &&
export JAVA_HOME=\`which javac|xargs readlink -f|xargs dirname|xargs dirname\` &&
java -version &&
javac -version &&
export TRAVIS=$TRAVIS &&
export TRAVIS_BRANCH=${TRAVIS_BRANCH} &&
export TRAVIS_BUILD_DIR=$TRAVIS_BUILD_DIR &&
export TRAVIS_COMMIT_RANGE=$TRAVIS_COMMIT_RANGE &&
export TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST} &&
export TRAVIS_PULL_REQUEST_BRANCH=${TRAVIS_PULL_REQUEST_BRANCH} &&
export TRAVIS_PULL_REQUEST_SLUG=${TRAVIS_PULL_REQUEST_SLUG} &&
export TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG &&
./.build.sh $GROUP"
jobs:
include:
- stage: trigger-downstream
script: |
echo "TRAVIS_BRANCH=$TRAVIS_BRANCH TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST"
if [[ ($TRAVIS_BRANCH == master) &&
($TRAVIS_PULL_REQUEST == false) ]] ; then
SLUGOWNER=${TRAVIS_REPO_SLUG%/*}
if [[ "$SLUGOWNER" == "" ]]; then
SLUGOWNER=eisop
fi
curl -LO --retry 3 https://raw.github.com/plume-lib/trigger-travis/master/trigger-travis.sh
git ls-remote https://github.com/${SLUGOWNER}/checker-framework.git &>/dev/null
if [ "$?" -eq 0 ]; then
sh trigger-travis.sh --pro ${SLUGOWNER} checker-framework $TRAVIS_ACCESS_TOKEN
fi
fi
git:
depth: 9
17 changes: 17 additions & 0 deletions afu/annotation-tools-3.42.0-eisop5/LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
13 changes: 13 additions & 0 deletions afu/annotation-tools-3.42.0-eisop5/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# EISOP Annotation File Utilities

This directory contains the Annotation Tools.
When distributed, this is known as the Annotation File Utilities, which is
one of its components; see the annotation-file-utilities subdirectory.

See the [Annotation File Utilities homepage](https://eisop.github.io/afu/).

Key files:
- [homepage](annotation-file-utilities/annotation-file-utilities.html)
- [changelog](annotation-file-utilities/changelog.html)
- [manual](annotation-file-utilities/annotation-file-format.tex)
- [scripts](annotation-file-utilities/scripts/)
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Annotation File Utilities README file

For user documentation, see file annotation-file-utilities.html .

===========================================================================

Contents

The contents of this directory are:

annotation-file-utilities.html
Annotation File Utilities documentation.
Most users should only have to read this file.
annotation-file-format.{html,pdf}
Describes the annotation file format.
scripts/
Contains Unix and Windows programs for transferring annotations among
Java, class, and annotation files.
annotation-file-utilities-all.jar
Java library used by the programs.
build.xml, src/, lib/, tests/
For developers only: buildfile, source code, libraries, tests.
Loading

0 comments on commit 10462a4

Please sign in to comment.