Installed
	ac_python_devel.m4
	ac_pkg_swig.m4
in ~/JHB/Tree/share/aclocal

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Added
	AC_PROG_SWIG(1.3.17)
	SWIG_MULTI_MODULE_SUPPORT
	SWIG_PYTHON

...	

	AC_CONFIG_FILES(pois.pc Makefile src/Makefile swig/Makefile)
	
to configure.ac

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Need to fix swig autoconf so that the configure chooses the target language[s],
but the same Makefile.am works for both

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Initially running make fails due to:
	  Makefile:261: .deps/libswigrun..Po: No such file or directory
	  make: *** No rule to make target `.deps/libswigrun..Po'.  Stop.
Changing the
include ./$(DEPDIR)/libswigrun.$(SO).Po
in Makefile (not Makefile.am) to
-include ./$(DEPDIR)/libswigrun.$(SO).Po
and running make successfully bootstrapped things.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

cp ~/Pan-STARRS/psLib/cvs/src/parseErrorCodes.pl ~/JHB/Tree/bin

(N.b. this is the RHL version)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

autogen.sh --prefix=$HOME/JHB/Tree 

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Need autoconf for xpa

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Need swig package (1.3.24?)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Need to add Tree/lib to PYTHONPATH (and also PERL5LIB?)

export PYTHONPATH=$PYTHONPATH:$HOME/Pan-STARRS/Price/python:$HOME/Pan-STARRS/Price/swig:$HOME/JHB/Tree/lib

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

How do I make a .so file LOCALLY, without having to do a make install?

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Why do things suddenly get installed as _xpa.0.so??

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

If I try to build pois as well as libpois.a, the compiler fails to find pslib
while building pois.c

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


psBinaryOp isn't implemented for & and |

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

psBinaryOp &/| can be faked with a cast to long, but this will fail for some
unsigned types.  Casting to unsigned will fail on some machines. Sigh.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

psImageSubset SDRS should allow -ve row0/col0 as well as row1/col1

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

psBinaryOp fails if e.g. data1 is U8 and the (scalar) data2 is U32.
Shouldn't it handle promotions?

The SDRS reads:
 Operations between data structures with different types (e.g., psS32
 and psF32) are not allowed and must raise an error (it is the
 responsibility of calling functions to perform type conversions).

but I think that integers should all be handled via the usual C rules
(which are only tricky for unsigned).

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

The file src/libpois.a has to exist

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

psArray* psArrayAlloc(psU32 nalloc)

fails to initialise the array to NULLs (not specified in the SDRS)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

"bool psListAdd(psList *list, int location, void *data);

the first function, psListAdd, adds an entry to the list and returns a
boolean giving the success or failure of the operation."

(SDRS).  It'd be better to define

psList *psListAdd(psList *list, int location, void *data);
and to make
    psListAdd(NULL, location, data);
equivalent to
    psListAlloc(data);

That makes the code to append to a list simpler; instead of

     list = NULL;
     while(foo) {
        ...
	foo = psFooAlloc();
	if(list == NULL) {
	   list = psListAlloc(foo);
	} else {
	   bool ok = psListAdd(list, PS_LIST_TAIL, foo);
	   assert(ok);
	}
	psFree(foo);
     }

I can simply write:

     list = NULL;
     while(foo) {
        ...
	foo = psFooAlloc();
        psListAdd(list, PS_LIST_TAIL, foo);
	psFree(foo);
     }

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

