[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
java.test: $? and Solaris 2.6 make; IRIX make
From: |
Ralf Wildenhues |
Subject: |
java.test: $? and Solaris 2.6 make; IRIX make |
Date: |
Tue, 2 May 2006 21:25:49 +0200 |
User-agent: |
Mutt/1.5.11+cvs20060403 |
The distcheck part of java.test on Solaris 2.6 fails with
| CLASSPATH=.:../.:$CLASSPATH javac -d . ../a.java b.java
| error: Can't read: b.java
| 1 error
| *** Error code 1
| make: Fatal error: Command failed for target `classdist_java.stamp'
| Current working directory
/tmp/build-sparc-sun-solaris2.6/tests/testSubDir/java-1.0/_build
| *** Error code 1
| make: Fatal error: Command failed for target `distcheck'
| FAIL: ../../automake-1.9a/tests/java.test
This is interesting and gives a clue to the issue:
$ make -n
| if test -n "a.java b.java"; then \
| echo 'CLASSPATH=.:../.:$CLASSPATH javac -d . ../a.java b.java' ; \
| CLASSPATH=.:../.:$CLASSPATH javac -d . \
| ../a.java b.java; \
| else :; fi
| echo timestamp > classdist_java.stamp
make forgets to add the directory for those elements of $? that are
not "plain words", i.e., separated by white space. Luckily, all those
issues have been fixed in Solaris 2.7 make and onwards.
However, IRIX 6.5 make doesn't prepend the VPATH directory part at all.
So, now I have two patches here: a hacky but efficient one that fixes
things for Solaris only, or a longer one that manually adds $(srcdir)
if deemed necessary.
What do you think?
Cheers,
Ralf
* lib/am/java.am (class%DIR%.stamp): Make sure `$?' is always
expanded as a "plain word", i.e., surrounded by white space,
so that Solaris 2.6 make correctly expands the VPATH directory
prefix.
Index: lib/am/java.am
===================================================================
RCS file: /cvs/automake/automake/lib/am/java.am,v
retrieving revision 1.24
diff -u -r1.24 java.am
--- lib/am/java.am 14 May 2005 20:28:53 -0000 1.24
+++ lib/am/java.am 2 May 2006 19:23:36 -0000
@@ -27,9 +27,11 @@
class%DIR%.stamp: $(%DIR%_JAVA)
@if test -n "$?"; then \
- echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS)
$(JAVACFLAGS) $?' ; \
+## The spaces after $? are intentional: they cause Solaris 2.6 make to
+## behave and expand the VPATH directory part of the last entry of $?.
+ echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS)
$(JAVACFLAGS) $? ' ; \
$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) \
- $(AM_JAVACFLAGS) $(JAVACFLAGS) $?; \
+ $(AM_JAVACFLAGS) $(JAVACFLAGS) $? ; \
else :; fi
echo timestamp > class%DIR%.stamp
* lib/am/java.am (class%DIR%.stamp): Do not assume `$?' has
the path of the prerequisite added; IRIX 6.5 make does not add
it, Solaris 2.6 make is inconsistent about adding it. Fixes
java.test failure.
Index: lib/am/java.am
===================================================================
RCS file: /cvs/automake/automake/lib/am/java.am,v
retrieving revision 1.24
diff -u -r1.24 java.am
--- lib/am/java.am 14 May 2005 20:28:53 -0000 1.24
+++ lib/am/java.am 2 May 2006 19:51:29 -0000
@@ -26,10 +26,13 @@
JAVAROOT = $(top_builddir)
class%DIR%.stamp: $(%DIR%_JAVA)
- @if test -n "$?"; then \
- echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS)
$(JAVACFLAGS) $?' ; \
- $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) \
- $(AM_JAVACFLAGS) $(JAVACFLAGS) $?; \
+ @list1='$?'; list2=; if test -n "$$list1"; then \
+ for p in $$list1; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ list2="$$list2 $$d$$p"; \
+ done; \
+ echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS)
$(JAVACFLAGS) '"$$list2"; \
+ $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS)
$(JAVACFLAGS) $$list2; \
else :; fi
echo timestamp > class%DIR%.stamp
- java.test: $? and Solaris 2.6 make; IRIX make,
Ralf Wildenhues <=