automake-patches
[Top][All Lists]
Advanced

[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
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]