Pardon me if this is the wrong place to send reports of this nature.
I've been trying to build Xerces 1.0.3 on a Solaris 2.7 box using GNU make,
and ran into trouble with the Makefile.incl. The problem was that make would
generate an error when the recursive makefiles would finally reach a terminal
directory and actually try to compile some files. Here is an example:
make[6]: Entering directory
`/remote/projects/mws/src/xml/xerces/xerces-1_0_3/src/org/apache/xerces/dom/events'
if [ -n "" ]; \
then for i in ;do \
echo "make -C $i"; make -C $i; \
done; \
fi
/bin/sh: syntax error at line 1: `;' unexpected
make[6]: *** [dirs] Error 2
I am not sure why this is happening, but it appears to center on the fact
that when the following code in Makefile.incl is run in a leaf directory,
dirs::
@if [ -n "$(DIRS)" ]; \
then for i in $(DIRS);do \
echo "$(MAKE) -C $$i"; $(MAKE) -C $$i; \
done; \
fi
the DIRS is empty, and the shell (/bin/sh in this case) tries to parse
if [ -n "" ];
then for i in ;do
^^^^
It looks like the shell isn't stopping when it hits
if [ -n "" ]
but rather keeps going, encountering
for i in ;do
and generating a syntax error. It's been too long since I've done much shell
script hacking, and I don't remember the parsing rules. I would have thought
that it would stop when the conditional failed, but apparently it doesn't
(though maybe it's a quirk of the /bin/sh distributed with Solaris 2.7).
My solution to this involved the following changes to Makefile.incl. There
are probably better solutions, but this seems to work. (The make fails when
it tries to deal with the docs, but that I think is a different problem.)
Could this (or an equivalent fix) please be added to the Xerces source code
base, so that future releases don't suffer from this problem?
-----------------------------------------------------------------------------
diff -c /projects/mws/src/xml/xerces/xerces-1_0_3/src/Makefile.incl
/projects/mws/src/xml/xerces/xerces-1_0_3/src/Makefile.incl.~1~
*** /projects/mws/src/xml/xerces/xerces-1_0_3/src/Makefile.incl Wed Mar 8
21:25:52 2000
--- /projects/mws/src/xml/xerces/xerces-1_0_3/src/Makefile.incl.~1~ Wed Mar
8 21:25:52 2000
***************
*** 1,11 ****
# Decide if we're on unix or DOS
! # ifneq ($(findstring WIN,$(shell uname)),)
# DOS
! # CLPATHSEP := ;
! # else
# UNIX
CLPATHSEP := :
! # endif
#
# Define the environment commands and/or utilities
--- 1,11 ----
# Decide if we're on unix or DOS
! ifneq ($(findstring WIN,$(shell uname)),)
# DOS
! CLPATHSEP := ;
! else
# UNIX
CLPATHSEP := :
! endif
#
# Define the environment commands and/or utilities
***************
*** 88,110 ****
dirs::
@if [ -n "$(DIRS)" ]; \
! then \
! $(MAKE) subdirs; \
! fi; \
! $(MAKE) compile
!
! subdirs::
! @for i in $(DIRS) ; do \
echo "$(MAKE) -C $$i"; $(MAKE) -C $$i; \
! done
cleandirs::
@if [ -n "$(DIRS)" ]; \
! then \
! $(MAKE) subcleandirs; \
! fi; \
!
! subcleandirs::
! @for i in $(DIRS);do \
echo "$(MAKE) -C $$i clean"; $(MAKE) -C $$i clean; \
! done
--- 88,101 ----
dirs::
@if [ -n "$(DIRS)" ]; \
! then for i in $(DIRS);do \
echo "$(MAKE) -C $$i"; $(MAKE) -C $$i; \
! done; \
! fi
cleandirs::
@if [ -n "$(DIRS)" ]; \
! then for i in $(DIRS);do \
echo "$(MAKE) -C $$i clean"; $(MAKE) -C $$i clean; \
! done; \
! fi
-----------------------------------------------------------------------------
Mike Hucka, Ph.D. -- [EMAIL PROTECTED] -- ph: 626.395.6818
Postdoctoral researcher, software developer, systems administrator
GENESIS Development Group, Division of Biology 216-76, Caltech