CODETOOLS-7902083: Simplify building jtreg
Jonathan Gibbons
jonathan.gibbons at oracle.com
Sun Dec 17 20:17:13 UTC 2017
Martin,
Thanks for the feedback and suggestions.
I'll look at incorporating the scripting changes, and will separately
investigate moving jtreg onto newer versions of external components.
-- Jon
On 12/16/17 10:51 AM, Martin Buchholz wrote:
> Thanks for working on this. I've written similar scripts to gather up
> all dependencies and build.
>
> I suggest using wget's -q flag.
>
> I suggest creating little shell subroutines to check the checksums
> (which print the actual checksum in case of mismatch) and to download
> maven jars.
>
> Here's some random shell code I've written that could get reused:
>
> def_make_var() {
> typeset -n varref="$1"
> varref="$2"
> MAKE_FLAGS+=("$1=$2")
> }
>
> def_make_file() {
> [[ -f "$2" ]] || die "%s: no such file" "$2"
> def_make_var "$@"
> }
>
> def_make_dir() {
> [[ -d "$2" ]] || die "%s: no such directory" "$2"
> def_make_var "$@"
> }
>
> download_maven_jar() {
> local -r groupId="$1" artifactId="$2" version="$3"
> local -r jarfile="${artifactId}-${version}.jar"
> wget -qO"/tmp/$jarfile" \
>
> "http://search.maven.org/remotecontent?filepath=${groupId}/${artifactId}/${version}/${jarfile}
> <http://search.maven.org/remotecontent?filepath=$%7BgroupId%7D/$%7BartifactId%7D/$%7Bversion%7D/$%7Bjarfile%7D>"
> def_make_file "${artifactId^^}_JAR" "/tmp/$jarfile"
> DOWNLOADED_MAVEN_JARS+=("/tmp/$jarfile")
> }
>
>
>
> On Sat, Dec 16, 2017 at 9:55 AM, Martin Buchholz <martinrb at google.com
> <mailto:martinrb at google.com>> wrote:
>
> testng-6.9.5 was packaged poorly, with jdk8 classfiles.
> testng-6.9.8 had different packaging problems.
> testng-6.9.9 is golden, with jdk7 class files.
> (of course, there are also more recent testng versions)
>
> --- a/make/build-all.sh
> +++ b/make/build-all.sh
> @@ -172,12 +172,12 @@
> TESTNG_DEPS_DIR=${JTREG_DEPS_DIR}/testng
> mkdir ${TESTNG_DEPS_DIR}
> -TESTNG_JAR=${TESTNG_DEPS_DIR}/testng-6.9.5.jar
> -wget ${MAVEN_REPO_URL}/org/testng/testng/6.9.5/testng-6.9.5.jar
> -O ${TESTNG_JAR}
> -printf "5d12ea207fc47c3f341a3f8ecc88a3eac396a777 ${TESTNG_JAR}" |
> shasum -a 1 --check -
> +TESTNG_JAR=${TESTNG_DEPS_DIR}/testng-6.9.9.jar
> +wget ${MAVEN_REPO_URL}/org/testng/testng/6.9.9/testng-6.9.9.jar
> -O ${TESTNG_JAR}
> +printf "8b211c4c5bed389e169a2173da32d07f93ee2fa8 ${TESTNG_JAR}" |
> shasum -a 1 --check -
> TESTNG_LICENSE=${TESTNG_DEPS_DIR}/LICENSE.txt
> -wget
> https://raw.githubusercontent.com/cbeust/testng/testng-6.9.5/LICENSE.txt
> <https://raw.githubusercontent.com/cbeust/testng/testng-6.9.5/LICENSE.txt>
> -O ${TESTNG_LICENSE}
> +wget
> https://raw.githubusercontent.com/cbeust/testng/6.9.9/LICENSE.txt
> <https://raw.githubusercontent.com/cbeust/testng/6.9.9/LICENSE.txt>
> -O ${TESTNG_LICENSE}
> JCOMMANDER_JAR=${TESTNG_DEPS_DIR}/jcommander-1.72.jar
> wget
> ${MAVEN_REPO_URL}/com/beust/jcommander/1.72/jcommander-1.72.jar -O
> ${JCOMMANDER_JAR}
>
>
> On Fri, Dec 15, 2017 at 2:34 PM, Jonathan Gibbons
> <jonathan.gibbons at oracle.com <mailto:jonathan.gibbons at oracle.com>>
> wrote:
>
> I've pushed the changeset containing this new script.
>
> There are two changes since I posted the webrev:
>
> 1. Change to use "shasum -a 1" instead of "sha1sum"
> 2. Update script to download and use jcommander.jar in
> conjunction with TestNG.
>
> With the second change in particular, all the jtreg self-tests
> pass, when the image is built with the build-all.sh script.
>
> -- Jon
>
>
> On 12/13/2017 04:32 PM, Jonathan Gibbons wrote:
>
> This is for folk who are interested in building jtreg from
> source.
>
> As some of you have (rightfully) commented over the past
> years, jtreg has not been an easy tool to build from source.
>
> And, as some of you may have noticed, there has been some
> amount of activity over the past weeks and months to
> address this issue. This work has been led by Erik Helin
> (thanks, Erik!) and we're now getting to the point where
> we can show what we have been working towards.
>
> The core of the work to build jtreg is still the Makefiles
> as before, although as was recently noted, we've been
> simplifying the specification of the dependencies.
>
> Separately, Erik has helped provide updates to the way
> that some of the Code Tools dependencies can be built.
>
> Building on all that work, we can now get to the next
> stage, to provide a script that will download binaries for
> some components (JUnit, TestNG) and will download and
> build source for other components (AsmTools, JCov,
> JTHarness), for which there are no official binaries.
>
> To run the script, you just need to have Ant and a
> suitable "java" on your path, and to specify the location
> of an install of JDK 1.8 as an argument to the script.
> wget is used to download files, which honors proxy
> settings for those that need to use them. The script is
> deliberately fairly simple, and suitable for use in a CI
> system.
>
> You can see a webrev for the script at
> http://cr.openjdk.java.net/~jjg/7902083/webrev.00/
> <http://cr.openjdk.java.net/%7Ejjg/7902083/webrev.00/>
>
> Example of use:
>
> $ which ant
> /opt/ant/1.9.4/bin/ant
> $ which java
> /opt/jdk/1.8.0/bin/java
> $ sh make/build-all.sh /opt/jdk/1.8.0
> ... build output ...
> $ ls build/images/jtreg
> bin COPYRIGHT doc legal lib LICENSE README release
> $
>
>
> Once this settles down a bit, I'll update the public docs
> on the jtreg web pages.
>
> -- Jon
>
>
>
>
>
More information about the jtreg-dev
mailing list