You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Ben Collins-Sussman <su...@collab.net> on 2003/02/28 00:31:45 UTC

busted 'make swig-py'...

...if you use a non-GNU system.

That is, 'make swig-py' doesn't work unless make == GNU make.
We're somehow defining "*.i" targets in a way that GNU make
understands, but not conventional BSD make.  If you use BSD make, then
it the -i flag is never passed to swig.

But I know nothing about our swig build system.  Just thought I'd
throw this problem out there, because I wasted a lot of time before I
thought of running 'gmake swig-py'.  :-)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Ben Collins-Sussman <su...@collab.net>.
Matt Kraai <kr...@alumni.cmu.edu> writes:

> Could a BSD user please test the following, then?

Yup, your ammended patch works perfectly for me on FreeBSD.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Matt Kraai <kr...@alumni.cmu.edu>.
On Fri, Feb 28, 2003 at 03:58:10PM -0800, Greg Stein wrote:
> On Fri, Feb 28, 2003 at 03:11:16PM -0800, Matt Kraai wrote:
> >...
> > +++ build/gen_make.py	(working copy)
> > @@ -208,14 +208,16 @@
> >  
> >      for objname, sources in self.graph.get_deps(gen_base.DT_SWIG_C):
> >        deps = string.join(sources)
> > -      self.ofile.write('%s: %s\n\t$(RUN_SWIG_%s)\n'
> > -                       % (objname, deps, string.upper(objname.lang_abbrev)))
> > +      self.ofile.write('%s: %s\n\t$(RUN_SWIG_%s) %s\n'
> > +                       % (objname, deps, string.upper(objname.lang_abbrev),
> > +                          deps))
> 
> We don't want all of the deps. Just the first one, which is sources[0].
> 
> >      for objname, sources in self.graph.get_deps(gen_base.DT_OBJECT):
> >        deps = string.join(sources)
> >        cmd = getattr(objname, 'build_cmd', '')
> >        if cmd:
> > -        self.ofile.write('%s: %s\n\t%s\n' % (objname, deps, cmd))
> > +        self.ofile.write('%s: %s\n\t%s %s\n'
> > +                         % (objname, deps, cmd, deps.split()[0]))
> 
> No need to split. Just use sources[0].

Could a BSD user please test the following, then?

Matt
-- 
Oink!

Index: Makefile.in
===================================================================
--- Makefile.in	(revision 5141)
+++ Makefile.in	(working copy)
@@ -117,11 +117,11 @@
 LT_COMPILE = $(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE)
 
 # special compilation for files destined for mod_dav_svn
-COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c $<
+COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c
 
 # special compilation for files destined for libsvn_swig_* (e.g. swigutil_*.c)
-COMPILE_SWIG_PY = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) -DSWIGPYTHON $(CFLAGS) $(SWIG_PY_INCLUDES) $(INCLUDES) -o $@ -c $<
-COMPILE_SWIG_JAVA = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(SWIG_JAVA_INCLUDES) $(INCLUDES) -o $@ -c $<
+COMPILE_SWIG_PY = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) -DSWIGPYTHON $(CFLAGS) $(SWIG_PY_INCLUDES) $(INCLUDES) -o $@ -c
+COMPILE_SWIG_JAVA = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(SWIG_JAVA_INCLUDES) $(INCLUDES) -o $@ -c
 
 LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(libdir)
 
@@ -130,12 +130,12 @@
 
 # these commands run SWIG to generate wrapper source files (*.c)
 ### should we protect against swig not being available?
-RUN_SWIG_PY = $(SWIG) -c -python -noproxy $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -o $@ $<
-RUN_SWIG_JAVA = cd ${SWIG_SRC_DIR}/java/org/tigris/subversion/swig && $(SWIG) -c -java -noproxy -package 'org.tigris.subversion.swig' $(SWIG_INCLUDES) -o ${abs_builddir}/$@ ${abs_builddir}/$<
+RUN_SWIG_PY = $(SWIG) -c -python -noproxy $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -o $@
+RUN_SWIG_JAVA = cd ${SWIG_SRC_DIR}/java/org/tigris/subversion/swig && $(SWIG) -c -java -noproxy -package 'org.tigris.subversion.swig' $(SWIG_INCLUDES) -o ${abs_builddir}/$@
 
 # Compilation of SWIG-generated C source code
-COMPILE_PY_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_PY_COMPILE) $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -prefer-pic -c -o $@ $<
-COMPILE_JAVA_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_JAVA_COMPILE) -DSWIGJAVA $(SWIG_INCLUDES) $(SWIG_JAVA_INCLUDES) -prefer-pic -c -o $@ $<
+COMPILE_PY_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_PY_COMPILE) $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -prefer-pic -c -o $@
+COMPILE_JAVA_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_JAVA_COMPILE) -DSWIGJAVA $(SWIG_INCLUDES) $(SWIG_JAVA_INCLUDES) -prefer-pic -c -o $@
 
 # these commands link the wrapper objects into an extension library/module
 LINK_PY_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=link $(SWIG_PY_LINK) $(SWIG_LDFLAGS) -rpath $(swig_pydir) -avoid-version -module
Index: build/gen_make.py
===================================================================
--- build/gen_make.py	(revision 5141)
+++ build/gen_make.py	(working copy)
@@ -208,14 +208,15 @@
 
     for objname, sources in self.graph.get_deps(gen_base.DT_SWIG_C):
       deps = string.join(sources)
-      self.ofile.write('%s: %s\n\t$(RUN_SWIG_%s)\n'
-                       % (objname, deps, string.upper(objname.lang_abbrev)))
+      self.ofile.write('%s: %s\n\t$(RUN_SWIG_%s) %s\n'
+                       % (objname, deps, string.upper(objname.lang_abbrev),
+                          sources[0]))
 
     for objname, sources in self.graph.get_deps(gen_base.DT_OBJECT):
       deps = string.join(sources)
       cmd = getattr(objname, 'build_cmd', '')
       if cmd:
-        self.ofile.write('%s: %s\n\t%s\n' % (objname, deps, cmd))
+        self.ofile.write('%s: %s\n\t%s %s\n' % (objname, deps, cmd, sources[0]))
       else:
         self.ofile.write('%s: %s\n' % (objname, deps))
 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Greg Stein <gs...@lyra.org>.
On Fri, Feb 28, 2003 at 03:11:16PM -0800, Matt Kraai wrote:
> On Fri, Feb 28, 2003 at 10:41:47PM +0000, Joe Orton wrote:
>...
> > This is a common mistake - you can only use $< in inference rules (.c.o
> > style) to be portable.

Grr...

>...
> >                         In the BSD make Ben uses $< will expand to
> > nothing in this case - in GNU make it will expand to the left-most
> > dependency (or all of them, I can't remember).

Just the left-most.

>...
> +++ build/gen_make.py	(working copy)
> @@ -208,14 +208,16 @@
>  
>      for objname, sources in self.graph.get_deps(gen_base.DT_SWIG_C):
>        deps = string.join(sources)
> -      self.ofile.write('%s: %s\n\t$(RUN_SWIG_%s)\n'
> -                       % (objname, deps, string.upper(objname.lang_abbrev)))
> +      self.ofile.write('%s: %s\n\t$(RUN_SWIG_%s) %s\n'
> +                       % (objname, deps, string.upper(objname.lang_abbrev),
> +                          deps))

We don't want all of the deps. Just the first one, which is sources[0].

>      for objname, sources in self.graph.get_deps(gen_base.DT_OBJECT):
>        deps = string.join(sources)
>        cmd = getattr(objname, 'build_cmd', '')
>        if cmd:
> -        self.ofile.write('%s: %s\n\t%s\n' % (objname, deps, cmd))
> +        self.ofile.write('%s: %s\n\t%s %s\n'
> +                         % (objname, deps, cmd, deps.split()[0]))

No need to split. Just use sources[0].

[ btw, note that STRING.split is Python 2.x specific; gen-make and its
  support modules are designed for Python 1.5.2 ]

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Matt Kraai <kr...@alumni.cmu.edu>.
On Fri, Feb 28, 2003 at 10:41:47PM +0000, Joe Orton wrote:
> On Fri, Feb 28, 2003 at 09:16:02AM -0800, Matt Kraai wrote:
> ...
> > I have
> > 
> >  subversion/bindings/swig/python/svn_client.c: subversion/bindings/swig/svn_client.i
> >  	$(RUN_SWIG_PY)
> > 
> > in my build-outputs.mk and
> > 
> >  RUN_SWIG_PY = $(SWIG) -c -python -noproxy $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -o $@ $<
> > 
> > in my Makefile, so we are telling it how to create the .c for the
> > .i.  Furthermore, the command line you sent shows it running the
> > command (except for the $<).
> 
> This is a common mistake - you can only use $< in inference rules (.c.o
> style) to be portable.

In that case, the following patch should fix it (and the other
similarly broken rules).  Could someone with a BSD system please
test it?

>                         In the BSD make Ben uses $< will expand to
> nothing in this case - in GNU make it will expand to the left-most
> dependency (or all of them, I can't remember).

Re: busted 'make swig-py'...

Posted by Greg Stein <gs...@lyra.org>.
On Fri, Feb 28, 2003 at 06:09:32PM -0800, Ben Collins-Sussman wrote:
> Joe Orton <jo...@manyfish.co.uk> writes:
>...
> > This is a common mistake - you can only use $< in inference rules (.c.o
> > style) to be portable.  In the BSD make Ben uses $< will expand to
> > nothing in this case - in GNU make it will expand to the left-most
> > dependency (or all of them, I can't remember).
> 
> Interesting.  But we use $< in other similar places in Makefile.in.
> For example:
> 
> # special compilation for files destined for mod_dav_svn
> COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile \
> $(CC) $(CPPFLAGS) $(CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c $<
> 
> And I have no problem building mod_dav_svn at all.... ?

Maybe it is because there is a .c.lo rule, so Make gets a bit confused and
does the expansion anyways. But there is no .c.i rule.

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Ben Collins-Sussman <su...@collab.net>.
Joe Orton <jo...@manyfish.co.uk> writes:

> >  RUN_SWIG_PY = $(SWIG) -c -python -noproxy $(SWIG_INCLUDES)
> >  $(SWIG_PY_INCLUDES) -o $@ $<
> > 
> > in my Makefile, so we are telling it how to create the .c for the
> > .i.  Furthermore, the command line you sent shows it running the
> > command (except for the $<).
> 
> This is a common mistake - you can only use $< in inference rules (.c.o
> style) to be portable.  In the BSD make Ben uses $< will expand to
> nothing in this case - in GNU make it will expand to the left-most
> dependency (or all of them, I can't remember).

Interesting.  But we use $< in other similar places in Makefile.in.
For example:

# special compilation for files destined for mod_dav_svn
COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile \
$(CC) $(CPPFLAGS) $(CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c $<

And I have no problem building mod_dav_svn at all.... ?


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Joe Orton <jo...@manyfish.co.uk>.
On Fri, Feb 28, 2003 at 09:16:02AM -0800, Matt Kraai wrote:
...
> I have
> 
>  subversion/bindings/swig/python/svn_client.c: subversion/bindings/swig/svn_client.i
>  	$(RUN_SWIG_PY)
> 
> in my build-outputs.mk and
> 
>  RUN_SWIG_PY = $(SWIG) -c -python -noproxy $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -o $@ $<
> 
> in my Makefile, so we are telling it how to create the .c for the
> .i.  Furthermore, the command line you sent shows it running the
> command (except for the $<).

This is a common mistake - you can only use $< in inference rules (.c.o
style) to be portable.  In the BSD make Ben uses $< will expand to
nothing in this case - in GNU make it will expand to the left-most
dependency (or all of them, I can't remember).

joe

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Matt Kraai <kr...@alumni.cmu.edu>.
On Fri, Feb 28, 2003 at 10:57:45AM -0800, Ben Collins-Sussman wrote:
> Matt Kraai <kr...@alumni.cmu.edu> writes:
> 
> > > $ make swig-py
> > > /usr/local/bin/swig -c -python -noproxy -I/home/sussman/projects/svn2/subversion/bindings/swig  -I/home/sussman/projects/svn2/subversion/include  -I/usr/local/apache2/include -I/usr/local/include/python2.2 -o subversion/bindings/swig/python/svn_client.c 
> > > Must specify an input file. Use -help for available options.
> > > *** Error code 1
> > > 
> > > And here's what I discovered: if I now run 'gmake swig-py', everything
> > > works.  And then *afterwards*, plain old 'make swig-py' works for me!
> > > 
> > > Anyone have any ideas?  Wanna see my generated build files?
> > 
> > Since it's dropping the last part of the command, could you be
> > running into a maximum line length restriction?
> 
> No way.  The build system runs commands like this all the time:
> 
> cd subversion/clients/cmdline && /usr/local/bin/bash /home/sussman/projects/svn2/libtool --silent --mode=link gcc  -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -pthread -DNEON_ZLIB -Wpointer-arith -Wwrite-strings -Wshadow -DSVN_DEBUG -DAP_DEBUG   -L/usr/local/lib  -rpath /usr/local/lib -o svn add-cmd.o cat-cmd.o checkout-cmd.o cleanup-cmd.o commit-cmd.o copy-cmd.o delete-cmd.o diff-cmd.o export-cmd.o feedback.o help-cmd.o import-cmd.o info-cmd.o log-cmd.o ls-cmd.o main.o merge-cmd.o mkdir-cmd.o move-cmd.o prompt.o propdel-cmd.o propedit-cmd.o propget-cmd.o proplist-cmd.o props.o propset-cmd.o resolve-cmd.o revert-cmd.o status-cmd.o status.o switch-cmd.o update-cmd.o util.o ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la ../../../subversion/libsvn_auth/libs!
>  vn_auth-1.la /usr/local/apache2/lib/libaprutil-0.la -lexpat /usr/local/apache2/lib/libapr-0.la -lm -lcrypt -L/usr/local/lib -lneon -lz -L/usr/local/lib -lxml2 -lz -L/usr/local/lib -liconv -lm -L/usr/local/lib 
> 
> I think Mike is right.  BSD make doesn't know how to create a .c from
> a .i file, but GNU make does.

I have

 subversion/bindings/swig/python/svn_client.c: subversion/bindings/swig/svn_client.i
 	$(RUN_SWIG_PY)

in my build-outputs.mk and

 RUN_SWIG_PY = $(SWIG) -c -python -noproxy $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -o $@ $<

in my Makefile, so we are telling it how to create the .c for the
.i.  Furthermore, the command line you sent shows it running the
command (except for the $<).

Matt
-- 
Oink!

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Ben Collins-Sussman <su...@collab.net>.
Matt Kraai <kr...@alumni.cmu.edu> writes:

> > $ make swig-py
> > /usr/local/bin/swig -c -python -noproxy -I/home/sussman/projects/svn2/subversion/bindings/swig  -I/home/sussman/projects/svn2/subversion/include  -I/usr/local/apache2/include -I/usr/local/include/python2.2 -o subversion/bindings/swig/python/svn_client.c 
> > Must specify an input file. Use -help for available options.
> > *** Error code 1
> > 
> > And here's what I discovered: if I now run 'gmake swig-py', everything
> > works.  And then *afterwards*, plain old 'make swig-py' works for me!
> > 
> > Anyone have any ideas?  Wanna see my generated build files?
> 
> Since it's dropping the last part of the command, could you be
> running into a maximum line length restriction?

No way.  The build system runs commands like this all the time:

cd subversion/clients/cmdline && /usr/local/bin/bash /home/sussman/projects/svn2/libtool --silent --mode=link gcc  -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -pthread -DNEON_ZLIB -Wpointer-arith -Wwrite-strings -Wshadow -DSVN_DEBUG -DAP_DEBUG   -L/usr/local/lib  -rpath /usr/local/lib -o svn add-cmd.o cat-cmd.o checkout-cmd.o cleanup-cmd.o commit-cmd.o copy-cmd.o delete-cmd.o diff-cmd.o export-cmd.o feedback.o help-cmd.o import-cmd.o info-cmd.o log-cmd.o ls-cmd.o main.o merge-cmd.o mkdir-cmd.o move-cmd.o prompt.o propdel-cmd.o propedit-cmd.o propget-cmd.o proplist-cmd.o props.o propset-cmd.o resolve-cmd.o revert-cmd.o status-cmd.o status.o switch-cmd.o update-cmd.o util.o ../../../subversion/libsvn_client/libsvn_client-1.la ../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../subversion/libsvn_ra/libsvn_ra-1.la ../../../subversion/libsvn_delta/libsvn_delta-1.la ../../../subversion/libsvn_subr/libsvn_subr-1.la ../../../subversion/libsvn_auth/libs!
 vn_auth-1.la /usr/local/apache2/lib/libaprutil-0.la -lexpat /usr/local/apache2/lib/libapr-0.la -lm -lcrypt -L/usr/local/lib -lneon -lz -L/usr/local/lib -lxml2 -lz -L/usr/local/lib -liconv -lm -L/usr/local/lib 

I think Mike is right.  BSD make doesn't know how to create a .c from
a .i file, but GNU make does.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by cm...@collab.net.
Matt Kraai <kr...@alumni.cmu.edu> writes:

> > And here's what I discovered: if I now run 'gmake swig-py', everything
> > works.  And then *afterwards*, plain old 'make swig-py' works for me!
> > 
> > Anyone have any ideas?  Wanna see my generated build files?
> 
> Since it's dropping the last part of the command, could you be
> running into a maximum line length restriction?

I told Ben that I think his scenario has the following two truths:

(1) 'make swig-py' simply isn't generating .c from .i; 'gmake swig-py' is.

(2) the reason his 'make swig-py' works after a successful 'gmake
    swig-py' is because the gmake already did the .i -> .c part, so
    make skips that step.  This is all part of the regular dependency
    checking that is, after all, the whole point of Makefile systems. :-)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Matt Kraai <kr...@alumni.cmu.edu>.
On Fri, Feb 28, 2003 at 10:10:11AM -0800, Ben Collins-Sussman wrote:
> Greg Stein <gs...@lyra.org> writes:
> 
> > > But I know nothing about our swig build system.  Just thought I'd
> > > throw this problem out there, because I wasted a lot of time before I
> > > thought of running 'gmake swig-py'.  :-)
> > 
> > You've got something funny going on, because I certainly don't see any
> > thing in our rules that would be gmake specific.
> 
> Ah, but there really is a build-system bug here somewhere.  Here's my
> reproduction recipe.  I wonder if Garrett or other FreeBSD users can
> reproduce as well:
> 
> I have a FreeBSD 4.7 system with autoconf 2.53, libtool 1.4.3, and the
> httpd/apr/apr-util 2.0.44 release installed.
> 
> $ svn co http://svn.collab.net/repos/svn/trunk svn
> [...checked out revision 5153]
> $ cd svn
> $ ./autogen.sh;  ./configure --enable-maintainer-mode
> $ make && make install
> $ make swig-py
> /usr/local/bin/swig -c -python -noproxy -I/home/sussman/projects/svn2/subversion/bindings/swig  -I/home/sussman/projects/svn2/subversion/include  -I/usr/local/apache2/include -I/usr/local/include/python2.2 -o subversion/bindings/swig/python/svn_client.c 
> Must specify an input file. Use -help for available options.
> *** Error code 1
> 
> And here's what I discovered: if I now run 'gmake swig-py', everything
> works.  And then *afterwards*, plain old 'make swig-py' works for me!
> 
> Anyone have any ideas?  Wanna see my generated build files?

Since it's dropping the last part of the command, could you be
running into a maximum line length restriction?

Matt
-- 
Oink!

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Ben Collins-Sussman <su...@collab.net>.
Greg Stein <gs...@lyra.org> writes:

> > But I know nothing about our swig build system.  Just thought I'd
> > throw this problem out there, because I wasted a lot of time before I
> > thought of running 'gmake swig-py'.  :-)
> 
> You've got something funny going on, because I certainly don't see any
> thing in our rules that would be gmake specific.

Ah, but there really is a build-system bug here somewhere.  Here's my
reproduction recipe.  I wonder if Garrett or other FreeBSD users can
reproduce as well:

I have a FreeBSD 4.7 system with autoconf 2.53, libtool 1.4.3, and the
httpd/apr/apr-util 2.0.44 release installed.

$ svn co http://svn.collab.net/repos/svn/trunk svn
[...checked out revision 5153]
$ cd svn
$ ./autogen.sh;  ./configure --enable-maintainer-mode
$ make && make install
$ make swig-py
/usr/local/bin/swig -c -python -noproxy -I/home/sussman/projects/svn2/subversion/bindings/swig  -I/home/sussman/projects/svn2/subversion/include  -I/usr/local/apache2/include -I/usr/local/include/python2.2 -o subversion/bindings/swig/python/svn_client.c 
Must specify an input file. Use -help for available options.
*** Error code 1

And here's what I discovered: if I now run 'gmake swig-py', everything
works.  And then *afterwards*, plain old 'make swig-py' works for me!

Anyone have any ideas?  Wanna see my generated build files?

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: busted 'make swig-py'...

Posted by Greg Stein <gs...@lyra.org>.
On Thu, Feb 27, 2003 at 04:31:45PM -0800, Ben Collins-Sussman wrote:
> 
> ...if you use a non-GNU system.
> 
> That is, 'make swig-py' doesn't work unless make == GNU make.
> We're somehow defining "*.i" targets in a way that GNU make
> understands, but not conventional BSD make.

Huh? We never declare .i targets. We have .c targets which depend upon a .i
input, though:

subversion/bindings/swig/java/svn_fs.c: subversion/bindings/swig/svn_fs.i
	$(RUN_SWIG_JAVA)

I'm not sure how that could be OS specific :-(

> If you use BSD make, then
> it the -i flag is never passed to swig.

Hmm? I don't recall *any* passing of -i. Do you mean -I (capital) ?

> But I know nothing about our swig build system.  Just thought I'd
> throw this problem out there, because I wasted a lot of time before I
> thought of running 'gmake swig-py'.  :-)

You've got something funny going on, because I certainly don't see any
thing in our rules that would be gmake specific.

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org