Actions

icon Post
text/html Subscribe
text/html Unsubscribe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vsipl++] PATCH: installation / packaging


  • Subject: Re: [vsipl++] PATCH: installation / packaging
  • From: Jules Bergmann <jules@xxxxxxxxxxxxxxxx>
  • Date: Wed, 04 Jan 2006 11:22:22 -0500

Stefan Seefeld wrote:

The appended patch adds or completes the following targets:

Stefan, this looks good.  Please check it in. -- Jules


To create a source distribution simply do:

configure
make doc maintainer_mode=1
make doc2src
make sdist

Very nice!


(The root directory name is determined from configure.ac to be
 sourceryvsipl++-1.0, but for snapshot packages one could also call

make sdist PACKAGE_VERSION=`date +%Y-%m-%d`
)

A typical command sequence to create a multi-config binary package
would be:

configure --some-optimization-flags
make
make doc maintainer_mode=1
make install DESTDIR=tmp suffix=-opt
configure --some-debug-flags
make
make install DESTDIR=tmp suffix=-debug
make bdist DESTDIR=tmp


IIUC, the DESTDIR is prepended to the different directories objdir, libdir, etc. I think this is the right thing to do, because it lets build a binary package to live in an arbitrary system directory (/opt/csl/vsipl++) without having to have modify that directory on our build machine.

However, there might be a problem when trying to build one copy of the ATLAS/FFTW libraries to be used by all variants. Consider:

# first, build optimized version of VSIPL++, ATLAS, and FFTW
prefix=/opt/vsipl++
configure "opt-flags" --with-fft=builtin --with-lapack=builtin --prefix=$prefix
make
make doc maintainer_mode=1
make install DESTDIR=tmp suffix=-opt

# second, build debug version of VSIPL++,
# Don't build ATLAS and FFTW again, instead use the versions already in /opt/vsipl++
LDFLAGS="-L$prefix/lib"
CPPFLAGS="-L$prefix/include"
configure "debug-flags" --with-fft=fftw3 -with-lapack=atlas
make
make install DESTDIR=tmp suffix=-debug

... make other variants ...
... create alias (vsipl++.pc -> vsipl++-opt.pc)
... make binary package ...


When configuring for the debug build, the libraries for ATLAS and FFTW will not be found, since they are in /tmp/opt/vsipl++, not /opt/vsipl++. Also, when making the debug library, the headers will not be in the right spot either.

A work around is to build the ATLAS and FFTW libraries for each variant (optimized, debug, etc), rely on them to be overwritten so that only one copy of those libraries are in the final package, and make sure to build the version of the external libraries that we want to keep last. However, if we have many variants, this will result in a lot of time spent building ATLAS.

Another idea is to have ATLAS and FFTW installed on our build system so that the bogus paths are not noticed by configure/make. However this makes the build process a little less robust.

A final idea is to tell configure to trust that fftw3 and atlas are present and not test for them. ("--with-fft=trust-fftw3" ?). We would also need to handle the include paths during the make (via INT_CPPFLAGS?)

Any thoughts on how to handle this?




Mark, doc/csl-docbook/GNUmakefile.inc contains two changes:

* I prefixed all installation paths with $(DESTDIR) to make the above
  work for documentation.
* I fixed the %.html target for the case where $(docbook_html) is not set, as that case seems to have slipped through in Carlos' latest adjustments.

Is there an email list that we should send csl-docbook CVS changes to?