Hanno Meyer-Thurow wrote:
> Hi list!
> I would like to work on gcj for Gentoo.
> I spoke with Andrew Cowie. He suggested me to send my ideas and
> questions to this list to discuss.
> I know gcj is tricky. It has various issues. Still, it is quite interesting
> to work on gcj. But as gcj is in portage right now it is hard to use for
> an ebuild writer like myself. Just two main issues:
> * dependency tracking
> * JDK-like environment
For JDK-like environment, redhat has done much work on this already. It
is, surprisingly enough, called java-gcj-compat. Take a look at the
jpackage rpm for it . You can find other sites for java-gcj-compat,
but the jpackage rpm seems to have the highest version I was able to find.
> However, I may write my ideas and questions:
> I thought in a gcj-4.1 / ecj combination. Use ecj to bytecompile Java
> source to jar with gcj as backend. Then use gcj to create native
> executables or libraries out of that jar files. Creating a database
> via gcj-dbtool for jar / native code resolution. If possible Java to
java-gcj-compat actually uses ecj internally, along with some other magic.
> The steps to take to get there
> * get gcj-jdk in portage
> * use ecj as gcjs bytecompiler
> * handle it via Gentoos java config
> (gcj bytecompile is broken,
> see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18131)
> * Java to native compilation
> * utilize gcj-dbtool for jar / native code resolution
> (Whatever way it is wanted.)
> To stay sane we want to hack the ant-core dependency out of
> eclipse-ecj package. Just try to compile ant-core with gcj. I have
> ugly hacks (gcc PR19870) for ant-core-1.6.2 to bytecompile with gcj.
This shouldn't be much of a problem. The build.xml is pretty trivial, so
you should be able to replicate it using javac and jar.
> No way.
> Then I have to get ant-core-1.6.5 to bytecompile with gcj / ecj which
> fails right now - did not yet investigate any further. After these steps
> are done we have the base (for interested ones to test gcj).
> I am no Java programmer.
> I do packaging stuff and ugly hacking. ;)
> I will try to integrate gcj into Gentoos next Java config utility.
> Just not to do the work of integration twice.
There really isn't much 'integration' involved per se. You mostly just
have to create an env file that contains information about JAVA_HOME,
PATH, etc. Take a look at existing jdk/jre packages.
> What I did already:
> * tweaked Andrew's gcj-jdk ebuild
> -> ebuild / eclass split
> * gcj-ecj ebuild
> -> Java to native: ecj binary
> The very next steps should be:
> * better gcj-jdk ebuild
> * fix ant-core issue with ecj
> Then, get back to plan.
> Reference - my overlay for these two ebuilds:
> Thanks in advance for help!
A few other things...
I'm not fond of the name gcj-jdk. The ebuild Andrew made was just for
gcj itself, without the Java compatibility stuff, iirc. -jdk suggests
that it provides a usable JDK, which it doesn't as it was.
Speaking of which, I think the added compatibility layer (for javac,
java, etc) should be a separate package. I'm not sure if this was your
intention or not. Either way, it would make sense, since you would most
likely be able to use the same layer for different versions of gcj.
Hope this helps,
firstname.lastname@example.org mailing list