CODETOOLS-7902083: Simplify building jtreg
Volker Simonis
volker.simonis at gmail.com
Sat Dec 23 17:27:45 UTC 2017
Martin Buchholz <martinrb at google.com> schrieb am Fr. 22. Dez. 2017 um 18:58:
> I agree having to fiddle with the build number is a pain point, but it's
> shared with openjdk proper.
>
> You can't rely on mercurial tags; code can get moved out of mercurial (hg
> archive) or into a different source code system.
>
I agree, but this change should at least help the average user who starts
by cloning the Mercurial repo.
That doesn’t mean I’m not open for further improvements ;)
> I would prefer BUILD_NUMBER checked in, and write a little script that
> modified the source and hg tagged it at the same time. And then of course
> check in the script!
>
> On Fri, Dec 22, 2017 at 7:17 AM, Volker Simonis <volker.simonis at gmail.com>
> wrote:
>
>> Hi Jonathan,
>>
>> thanks a lot for improving the build. This is a huge step ahead and it
>> works great. I've just tried it and the build succeeded out of the
>> box!
>>
>> There's however one issue I still see. The default build will set the
>> version and build number to '4-2 dev b00'. Notice that such a build is
>> pretty useless, because such versions of JTreg will be rejected when
>> doing OpenJDK regression tests because the OpenJDK test have minimal
>> JTreg build requirements in their TEST.ROOT file like for example:
>>
>> # Minimum jtreg version
>> requiredVersion=4.2 b08
>>
>> Before the introduction of build-all.sh it was possible to pass
>> BUILD_NUMBER through the environment to make.
>>
>> When using build-all.sh this is not possible any more, because
>> build-all.sh calls make without honoring if BUILD_NUMBER was set in
>> the environment.
>>
>> I've opened "CODETOOLS-7902089: build-all.sh should honor BUILD_NUMBER
>> from environment (and use a reasonable default)"
>> (https://bugs.openjdk.java.net/browse/CODETOOLS-7902089) and came up
>> with the following fix:
>>
>> http://cr.openjdk.java.net/~simonis/webrevs/2017/CODETOOLS-7902089
>>
>> As an extension I propose to set the build number by default to the
>> latest available tag automatically, even if we're building tip because
>> I think that's what users actually want (and need) if they build JTreg
>> for executing the OpenJDK tests. This feature is already realized in
>> my webrev.
>>
>> Finally, we could set the build number to something like "b11+" if
>> "b11" was the latest tagged build, but we're several changes ahead
>> already (this would resemble the "hg id" output which prints a "+"
>> after the actual change hash if the working directory contains
>> additional local changes).
>>
>> I consider this to be the best solution, but in order to work we would
>> also have to update JTReg's build number parsing routine in
>> com.sun.javatest.regtest.tool.Version.getBuild() which currently only
>> accepts a plain build number (i.e. "b[0-9]+"). This feature is
>> currently not in my webrev but I'd be happy to add it if you'd
>> consider it useful.
>>
>> Can you please review and sponsor my change?
>>
>> Thank you and merry Christmas:)
>> Volker
>>
>>
>>
>> On Thu, Dec 21, 2017 at 2:12 AM, Jonathan Gibbons
>> <jonathan.gibbons at oracle.com> wrote:
>> > My previous message was intended for Mani. I'm sorry I did not make that
>> > clearer.
>> >
>> > -- Jon
>> >
>> > On 12/20/2017 05:09 PM, Jonathan Gibbons wrote:
>> >>
>> >> I've posted a new tag (jtreg4.2-b11) on the jtreg repo, so I would
>> expect
>> >> to see a new build on your CI system soon.
>> >>
>> >> If you're using the new make/build-all.sh script, then everything
>> should
>> >> build as intended.
>> >>
>> >> If you're not using build-all.sh, note that you need to build jtreg
>> with
>> >> variables like TESTNG_HOME, JUNIT_HOME, ASMTOOLS_HOME etc defined at
>> the
>> >> time you run "make". It is not enough to copy the corresponding jar
>> files
>> >> into the lib directory; they must also be put in the Class-Path entry
>> of the
>> >> jtreg.jar MANIFEST.MF file (and the makefiles will take care of doing
>> that.)
>> >>
>> >> It occurs to me you might still be using the (old) Ant build.xml
>> file. If
>> >> so, I recommend you convert to using the new build-all.sh script.
>> >>
>> >> -- Jon
>> >>
>> >> On 12/19/2017 03:33 PM, Mani Sarkar wrote:
>> >>>
>> >>> Hi Jon,
>> >>>
>> >>> Amended the scripts to use the latest build-all.sh from the tip, and
>> got
>> >>> this - https://ci.adoptopenjdk.net/view/Dependencies/job/jtreg/.
>> >>>
>> >>> Still using our old script to build from the last tag.
>> >>>
>> >>> Both the artifacts do contain asmtools.jar - let me know if it passes
>> >>> your sanity check.
>> >>>
>> >>> Thanks again.
>> >>>
>> >>> Cheers,
>> >>> Mani
>> >>>
>> >>> On Mon, 18 Dec 2017 at 10:18 Maurizio Cimadamore
>> >>> <maurizio.cimadamore at oracle.com <mailto:
>> maurizio.cimadamore at oracle.com>>
>> >>> wrote:
>> >>>
>> >>>
>> >>>
>> >>> On 18/12/17 01:32, Jonathan Gibbons wrote:
>> >>> > Maurizio,
>> >>> >
>> >>> > If you can do this in a way that makes it optional, that would
>> be
>> >>> > great. Having put effort into pruning the set of dependencies,
>> >>> I've
>> >>> > no desire to see the set creep up again unnecessarily, although
>> I
>> >>> > admit the usefulness of the plugin.
>> >>> Message understood :-)
>> >>>
>> >>> Btw, I'm bringing this up because, currently, the only way to
>> >>> build the
>> >>> plugin is through the IDE itself, which, while not unreasonable
>> >>> (after
>> >>> all you have to have an IDE if you want to use the plugin :-)), it
>> >>> require some configuration and I've seen people getting stuck
>> quite
>> >>> frequently - a build command would probably mitigate some of those
>> >>> concerns.
>> >>>
>> >>> Maurizio
>> >>> >
>> >>> > -- Jon
>> >>> >
>> >>> >
>> >>> > On 12/17/17 1:04 PM, Maurizio Cimadamore wrote:
>> >>> >> Looks great - thanks for doing this.
>> >>> >>
>> >>> >> If there's interest, I could also put some effort in order to
>> >>> >> integrate the plugins build into the system. In principle, it
>> >>> should
>> >>> >> be doable, by adding a bunch of env variables (to point at the
>> >>> IDEA
>> >>> >> runtime jar). Of course that would be an optional part of the
>> >>> build.
>> >>> >>
>> >>> >> Cheers
>> >>> >> Maurizio
>> >>> >>
>> >>> >>
>> >>> >> On 14/12/17 00:32, 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
>> >>> >>>
>> >>> >>>
>> >>> >>
>> >>> >
>> >>>
>> >>> --
>> >>>
>> >>> @theNeomatrix369 <http://twitter.com/theNeomatrix369> | Blog
>> >>> <http://neomatrix369.wordpress.com/> | @adoptopenjdk | Dev
>> communities
>> >>>
>> >>> Meet-a-Project - MutabilityDetector
>> >>> <https://github.com/MutabilityDetector> | Github
>> >>> <https://github.com/neomatrix369> | Slideshare
>> >>> <https://www.slideshare.net/neomatrix369> |LinkedIn
>> >>> <http://uk.linkedin.com/pub/mani-sarkar/71/a77/39b>
>> >>>
>> >>> Come to Devoxx UK 2018:http://www.devoxx.co.uk/
>> >>>
>> >>>
>> >>> Don't chase success, rather aim for "Excellence", and success will
>> come
>> >>> chasing after you!
>> >>>
>> >>
>> >
>>
>
>
More information about the code-tools-dev
mailing list