Re: openjdk-9-jdk rebuild: Second pass

2017-07-06 Thread Chris West
On Tue, Jul 04, 2017 at 10:28:27AM +0100, Chris West wrote:
> > >  16% are broken due to probably intentional changes in Java 9, e.g.
> > > * modules changing accessiblity of things (~90 packages)
> 
> I now believe that the accessibility checks are being turned off by default.
> This was one of the conditions of the first JCP vote failing. So it's possible
> that many of these will go away with a new (possibly as-yet unreleased) 
> openjdk
> build. I have been unable to find a relevant upstream commit, although
> there's plenty it could be in, e.g.
> http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/f8b19df2115a [two weeks ago]
> 
> Discussion:
> http://mail.openjdk.java.net/pipermail/jigsaw-dev/2017-May/012673.html
> http://openjdk.java.net/projects/jigsaw/spec/minutes/2017-05-22
> 
> https://londonjavacommunity.wordpress.com/2017/06/28/our-yes-vote-on-the-2nd-go-around-for-jsr-376-java-platform-module-system/
> > Agreement on relaxing Strong encapsulation as a default (means fewer
> > apps will break out of the box, but get a warning instead).
> 

http://zulu.org/forum/thread/discussion-on-zulu-9-pre-release-13/ says
that is has landed, so will be picked up by an update of the openjdk-9
package to build >=176 (2017-06-29).



Re: openjdk-9-jdk rebuild: Second pass

2017-07-04 Thread Emmanuel Bourg
Thank a lot for the rebuilds and the detailed analysis Chris! This gives
a clear direction for our transition plan.

Le 2/07/2017 à 22:06, Chris West a écrit :

>  * I totally hacked up[1] maven-compiler-plugin to do the same.

I've updated maven-compiler-plugin to the latest version, so we can now
build projects with Java 9 code. But that didn't solve the language
level issue.

For the source/target tweak I modified plexus-compiler, it might be more
general and fix more packages than the patch you used.


> Of 1261 packages compiled, 57% failed.

Good start, let's do better :)


>  23% think javadoc(1) doesn't exist: http://bugs.debian.org/bug=866929
>I definitely think this should be fixed in the toolchain; as the
>above bug.

This is caused by the removal of the 'jre' directory in Java 9 and the
subsequent modification of the java.home property. This is easy to fix.


>  18% still are trying to use old -source/-target: 
> https://paste.debian.net/974407/
>Perhaps some cases ant doesn't catch it, as it doesn't look
>like a Debian build environment?

It looks like my Ant fix doesn't work for packages defining the
ant.build.javac.source and ant.build.javac.target properties (typically
in debian/ant.properties). I'll look into this.


>  11% (plus probably a lot of the above 23%) are failing doclint after
>otherwise compiling successfully. doclint should be disabled,
>but isn't: http://bugs.debian.org/866908
> 
>Hopefully everyone agrees we should fix this in the toolchain, as the
>above bug.

Yes, doclint must die :)


>  7% are broken because invalid ASCII in the code is now an error;
>it appears that it was only a warning on Java 8.

This is now fixed for the packages built with javahelper and jh_build
(#866845).


> And, on a more positive note:
> 
>  16% are broken due to probably intentional changes in Java 9, e.g.
> * introduction of java.lang.Module
> * modules changing accessiblity of things (~90 packages)
> * _ becoming a keyword (~15 packages)
> * apparent generics changes causing new casting problems(?)

This is the interesting part, I'll dive into this once the obvious
toolchain fixes are done.

Emmanuel Bourg



Re: openjdk-9-jdk rebuild: Second pass

2017-07-04 Thread Chris West
On Tue, Jul 04, 2017 at 09:42:23AM +0200, Emmanuel Bourg wrote:
> >  7% are broken because invalid ASCII in the code is now an error;
> >it appears that it was only a warning on Java 8.
> 
> This is now fixed for the packages built with javahelper and jh_build
> (#866845).

I wonder if these can all be fixed by fiddling the version, and whether
doing so would be a good idea. For -source of 1.8(?), the error is a
warning. It's not to do with the version of javac in use, as I
previously claimed. Doing so is probably harder than fixing the locale
everywhere, though.

Changing the -source argument will also allow us to have libraries use _
as an identifier, for now, so that may be an easier fix?


Also, I've been told that, with future Java releaseses, old -source
values will continue to be dropped; so Java 10 will drop -source 1.6,
and Java 11 will drop -source 1.7, etc.


> >  16% are broken due to probably intentional changes in Java 9, e.g.
> > * modules changing accessiblity of things (~90 packages)

I now believe that the accessibility checks are being turned off by default.
This was one of the conditions of the first JCP vote failing. So it's possible
that many of these will go away with a new (possibly as-yet unreleased) openjdk
build. I have been unable to find a relevant upstream commit, although
there's plenty it could be in, e.g.
http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/f8b19df2115a [two weeks ago]

Discussion:
http://mail.openjdk.java.net/pipermail/jigsaw-dev/2017-May/012673.html
http://openjdk.java.net/projects/jigsaw/spec/minutes/2017-05-22

https://londonjavacommunity.wordpress.com/2017/06/28/our-yes-vote-on-the-2nd-go-around-for-jsr-376-java-platform-module-system/
> Agreement on relaxing Strong encapsulation as a default (means fewer
> apps will break out of the box, but get a warning instead).

Chris.



openjdk-9-jdk rebuild: Second pass

2017-07-02 Thread Chris West
Progress!

 * Better tools[2], better scripts[3], better machine -> more packages.
 * Emmanuel fixed maven/guice (#866411), and hacked ant (1.9.9-4) to fixup
 the -source and -target versions. (Thanks!)
 * I totally hacked up[1] maven-compiler-plugin to do the same.


Of 1261 packages compiled, 57% failed.

Of those failures:

 23% think javadoc(1) doesn't exist: http://bugs.debian.org/bug=866929
   I definitely think this should be fixed in the toolchain; as the
   above bug.

 18% still are trying to use old -source/-target: 
https://paste.debian.net/974407/
   Perhaps some cases ant doesn't catch it, as it doesn't look
   like a Debian build environment? e.g. svnkit:
   https://sources.debian.net/src/svnkit/1.8.14-1/debian/rules/#L9
   https://paste.debian.net/974409/

   If we can't fix enough of these in ant/maven, we might have to fix them
   in javac...

 11% (plus probably a lot of the above 23%) are failing doclint after
   otherwise compiling successfully. doclint should be disabled,
   but isn't: http://bugs.debian.org/866908

   Hopefully everyone agrees we should fix this in the toolchain, as the
   above bug.

 7% are broken because invalid ASCII in the code is now an error;
   it appears that it was only a warning on Java 8.

   e.g. https://reproducible.debian.net/naga has:
   [...] warning: unmappable character for encoding ASCII
   ... which is now:
   [...] error: unmappable character (0xC3) for encoding US-ASCII

   Logs: https://rbuild.fau.xxx/2017-07-02/ascii/

   Maybe many of these may be fixed by defaulting the encoding,
   where not specified, to UTF-8? Not t many to fix otherwise...

And, on a more positive note:

 16% are broken due to probably intentional changes in Java 9, e.g.
* introduction of java.lang.Module
* modules changing accessiblity of things (~90 packages)
* _ becoming a keyword (~15 packages)
* apparent generics changes causing new casting problems(?)

These are in the `modules`, `keyword` and `cast` directories of the
build logs: https://rbuild.fau.xxx/2017-07-02/

  6% are broken due to tests or dependencies missing. I don't know
why these are failing on my build env, but not on jenkins, and I
suggest you ignore them. They are in `deps` and `tests` in
https://rbuild.fau.xxx/2017-07-02/

This leaves just 19% of these packages (135) with random failures for
which I haven't bothered to find a classification:
https://rbuild.fau.xxx/2017-07-02/unknown/


Chris.

 1: https://github.com/FauxFaux/debjdk9/blob/master/compiler-plugin.patch
 2: https://paste.debian.net/974394/
 3: https://github.com/FauxFaux/debjdk9