Re: Some 0.36 problems

Dave Cole <[email protected]>
Newsgroups gmane.comp.python.sybase
Message-ID <[email protected]>
> I'm trying to compile 0.36 on FreeBSD with FreeTDS 0.60 with Python
> 2.2.2 (But I suspect this is not a FreeBSD-specific problem).  The
> command I am using is
> 	python setup.py build_ext -D WANT_THREADS,HAVE_FREETDS=60 -U WANT_BULKCOPY

I didn't know that you could coalesce macros like that.  What a
strange thing to do while not allowing values to be assigned.

> but this is breaking:
> 	error: invalid command 'WANT_BULKCOPY' (no module named 'distutils.command.WANT_BULKCOPY')
> 
> Putting the -U before the -D also fails in interesting ways:
> 	python setup.py build_ext -U WANT_BULKCOPY -D WANT_THREADS,HAVE_FREETDS=60
> 	error: option -D requires argument
> 
> It works fine without the "=60", so I suspect a problem with the funky handling
> of the -D<>= in setup.py.

Yup.  It would be really good if there was a way around that
abomination but the FreeTDS people do not put their version identifier
in any useful format that can be used by the C preprocessor.

> A workaround is to make sure the -D HAVE_FREETDS=60 is the LAST argument, and 
> not coalesce the -D arguments(i.e. "-D WANT_FOO -D HAVE_FREETDS=60" rather 
> than "-D WANT_FOO,HAVE_FREETDS=60").
> 
> Or the following patch seems to handle the various permutations of
> -D and -U a bit better:
> 
> (beware whitespace munching from cut-n-paste)
> 
> --- setup.py-dist       Tue Apr 29 11:03:17 2003
> +++ setup.py    Tue Apr 29 11:02:36 2003
> @@ -116,6 +116,11 @@
>          del sys.argv[i - 1]
>      # Now set the TDS level the other other way.
>      syb_macros.append(('HAVE_FREETDS', suffix[1:]))
> +    if prefix:
> +       # Handle -D WANT_X,HAVE_FREETDS=60 case
> +       if prefix[-1] == ',':
> +           prefix = prefix[:-1]
> +       sys.argv[i:i] = [prefix]
>      break
> 
>  for api in ('blk_alloc', 'blk_describe', 'blk_drop', 'blk_rowxfer_mult',

Applied.  Thanks for that.

- Dave

-- 
http://www.object-craft.com.au
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.