On 02/26/2013 11:36 PM, harryxiyou wrote:
On Wed, Feb 27, 2013 at 11:04 AM, Eric Blake
<eblake(a)redhat.com> wrote:
[...]
> You trimmed too much of your make line to tell us what was happening.
> It might also help to run 'make V=1' to get the full command line being
> attempted. I have to wonder if you have an unexpanded '$JAVA_HOME'
> injected somewhere into your configure output, where make is trying to
> compute $J (empty) followed by literal 'AVA_HOME'; maybe you should
> figure out what in your build setup is providing that bad variable value
> (correct would likely be '${JAVA_HOME}'). But I cannot reproduce your
> build failure, so it is something in your environment and not in libvirt
> itself that is causing you grief.
>
Eric, i was dizzy. Actually, i don't know why automake recognized
$JAVA_HOME as $AVA_HOME.
Make is not like shell. In shell, {} is optional, required only if
characters after the variable name being expanded could be part of a
variable name. In make, {} (or ()) is mandatory for any variable whose
name is longer than one byte. Thus, in make, $JAVA_HOME is the same as
${J}AVA_HOME; while in shell, it is the same as ${JAVA_HOME} - quite
different. At any rate, since you didn't define $J in your makefile,
make was expanding ${J} to the empty string, which explains why your
error message then mentions AVA_HOME.
However, i solved the problem like
following.
JVM_DIR=${shell echo ${JAVA_HOME}}
What a waste of resources - that forks a shell to do an echo every time
that you use ${JVM_DIR}. Much simpler to write as:
JVM_DIR=${JAVA_HOME}
I'm still not even sure why you need ${JVM_DIR}, and can't just use
${JAVA_HOME} directly, nor why you are trying to add pieces of Java into
libvirt (libvirt itself is written in C, not Java, for a reason). I
guess I'll just have to wait until I see a patch to understand what this
is all about. Good luck.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org