Alan Conway <[EMAIL PROTECTED]> wrote:
> Hi Jim,
>
> I'm still having problems with bootstrap in a fresh checkout:
>
> [EMAIL PROTECTED] cpp]$ ./bootstrap
> /bin/sh: AmqpClass.java: command not found
> /bin/sh: line 1: -cp: command not found
> make: *** [timestamp] Error 127
> automake: cannot open < gen/gen-src.mk: No such file or directory
>
> The problem seems to be the use of an undefined variable $(JAVA) in the
> sh-filtered version of gen/Makefile.am. You mentioned this is set by
> autoconf, but at this point we haven't run autoconf, so I don't see how
> it can be set.
Ahh... "in a fresh checkout". Now I see. Sorry it took so long.
Steven, this ought to solve your problem, too.
Here's a patch for that, along with a small fix for gen/Makefile.am:
2006-12-05 Jim Meyering <[EMAIL PROTECTED]>
* gen/Makefile.am (timestamp): Remove unnecessary "; \",
that could have obscured a failure.
(gen-src.mk): Use echo 'var = '\\, rather than 'var = \'.
Both work, but emacs' font-lock mode mishandles the latter.
* bootstrap: Give JAVA and JAVAC default values, and export them.
Don't define abs_srcdir; no longer needed.
Also filter out gen/Makefile.am's echo warning: ...
Add comments.
Index: gen/Makefile.am
===================================================================
--- gen/Makefile.am (revision 482368)
+++ gen/Makefile.am (working copy)
@@ -15,9 +15,9 @@
timestamp: $(spec) $(java_sources) $(cxx_templates)
if BUILD_IN_MESSAGE_TREE
rm -f $(generated_sources)
- (cd $(gentools_srcdir) && rm -f *.class && $(JAVAC) *.java); \
- $(JAVA) -cp $(gentools_dir)/src org.apache.qpid.gentools.Main \
- -c -o . -t $(gentools_dir)/templ.cpp $(spec)
+ cd $(gentools_srcdir) && rm -f *.class && $(JAVAC) *.java
+ $(JAVA) -cp $(gentools_dir)/src org.apache.qpid.gentools.Main \
+ -c -o . -t $(gentools_dir)/templ.cpp $(spec)
else
echo "warning: failed to regenerate gen/*.{cpp,h}" 1>&2
endif
@@ -28,15 +28,15 @@
DISTCLEANFILES = gen-src.mk
gen-src.mk: timestamp
- ( echo 'generated_sources = \' \
+ ( echo 'generated_sources = '\\ \
&& ls *.cpp *.h | sort -u | sed 's/.*/ & \\/;$$s/ \\//' \
) > [EMAIL PROTECTED]
if BUILD_IN_MESSAGE_TREE
( echo if BUILD_IN_MESSAGE_TREE; \
- echo 'java_sources = \' \
+ echo 'java_sources = '\\ \
&& find $(gentools_srcdir) -name '*.java' \
| sort -u | sed 's/.*/ & \\/;$$s/ \\//'; \
- echo 'cxx_templates = \' \
+ echo 'cxx_templates = '\\ \
&& find $(gentools_dir)/templ.cpp -name '*.tmpl' \
| sort -u | sed 's/.*/ & \\/;$$s/ \\//'; \
echo endif \
Index: bootstrap
===================================================================
--- bootstrap (revision 482368)
+++ bootstrap (working copy)
@@ -4,13 +4,22 @@
autoheader
libtoolize --automake
+# These are needed only if you don't already have the gen/*.{h,cpp} files.
+: ${JAVA=java}
+: ${JAVAC=javac}
+export JAVA JAVAC
+
# If we're building in the qpid tree, we can generate
# some Makefile snippets:
if test -d ../gentools && test -d ../specs; then
+ # Transform gen/Makefile.am, removing automake-constructs and the
+ # contents of the sole automake-else clause (the warning), then
+ # use the result to run the rules that create gen-src.mk, a file
+ # that must be created before we run automake.
(cd gen && rm -f gen-src.mk
- perl -ne '/^(abs_srcdir|if|else|endif|include)\b/ or print' Makefile.am \
- | make -f - abs_srcdir=`pwd` srcdir=. gen-src.mk > /dev/null )
+ perl -ne '/warning:|^(if|else|endif|include)\b/ or print' Makefile.am \
+ | make -f - srcdir=. gen-src.mk > /dev/null )
fi
# Generate (for automake) lots of repetitive parts of tests/Makefile.am.