Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Jun 2013 11:04:48 +0800
From:      Peter Xu <xzpeter@gmail.com>
To:        java@freebsd.org
Cc:        ports@freebsd.org
Subject:   Re: How to build openjdk7 for customized FreeBSD system
Message-ID:  <CAGRNztA2ib9inneH-e25uhwmsj71JTk32%2BoGmAUGqoZoNV9o%2BQ@mail.gmail.com>
In-Reply-To: <51ADA907.1020801@gmail.com>
References:  <51ADA907.1020801@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I did this in a stupid way. I am sending this out in case someone met the
same problem (or to say, you want to build openjdk on an platform that have
no older version of JDK supported).

The main idea is, firstly find a generic FreeBSD 8.2 system, build the
openjdk7 package (well, there is no problem on generic system, as long as
you are using the port collections corresponding to that specific version I
suppose). Then, we can leverage all the Java-built output (includes
*.class, *.jar, and some *.java/*.[ch] if they are auto-generated by the
build system using JVM) in the generic systems, replacing all the
$(JAVAC_CMD) and $(JAVAH_CMD) lines in Makefiles with something like (or we
can try direct copy of the object files, but sometimes we still need to do
this since the dependencies of 'make' are not the JAR files sometimes):

scp $GENERIC_BSD:$JAR_FILE_PATH $PRIVATE_BSD:$JAR_FILE_PATH

Or to say, we do fetch the good 'jar' from the generic systems instead of
invoking a sick JVM and build it until we met error and stop the make
process.

I suppose all these things need some knowledge on the Makefile structure of
openjdk. This is nasty work, but it did work for us.

Another solution I thought about is cross-compile the whole JDK on a
generic system, and copy all the private C libraries on the private system
to the generic one before-hand (this may only be working when the generic
system has cross-toolchain I suppose, or in my case that the two systems
are using the same CPU arch). Just an idea, no need to try currently.

Hope it helps.

Thanks.
Peter


On Tue, Jun 4, 2013 at 4:44 PM, Xu Zhe <xzpeter@gmail.com> wrote:

> Hi, all,
>
> I have posted several mails in the list, asking for different kinds of
> build errors when I met during the process of building openjdk7 on a
> customized FreeBSD 8.2 system.
>
> Today I found the root cause of all the problems. That is, the system
> needs one initial bootstrap Java SDK to build the openjdk7, but the
> tragedy is that, *all* the bootstrap JDKs are binaries. These binaries
> could run on our system, but will met strange issue since the system is
> heavily hacked in the kernel and libc part, and it's never generic at all.
>
> So here is the problem... I will never have a working Java environment
> as the bootstrap JDK on the hacked system. I need another generic system
> to help, who has a good working JDK.
>
> So please ignore all the strange errors I posted. Now I want to ask a
> more generic question, which I suppose is the only way to finish my
> porting work:
>
> How should I build all the C codes in openjdk7 on my hacked system,
> while build the rest Java codes on another system?
>
> Thanks in advance!
>
> Peter
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGRNztA2ib9inneH-e25uhwmsj71JTk32%2BoGmAUGqoZoNV9o%2BQ>