Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

From: Bernd Schubert (bernd-schubert_at_[hidden])
Date: 2007-08-26 12:44:18


Hi,

I'm presently trying to add lustre support to open-mpi's romio using this
patch http://ft.ornl.gov/projects/io/src/adio-lustre-mpich2-v02.patch.

It basically applies, only a few C files have been renamed in open-mpi, but
the autotools build system gives me headaches.

Lets look into romio/romio/adio/Makefile.am:

e.g.

if BUILD_XFS
XFS_DIR = ad_xfs
XFS_LIB = ad_xfs/libadio_xfs.la
else
XFS_DIR =
XFS_LIB =
endif

Fine, adding a similar entry for lustre is easy, but now we need to define
BUILD_XFS. So where does this come from?
There is romio/romio/Makefile.in

BUILD_UFS_FALSE = @BUILD_UFS_FALSE@
BUILD_UFS_TRUE = @BUILD_UFS_TRUE@
BUILD_XFS_FALSE = @BUILD_XFS_FALSE@
BUILD_XFS_TRUE = @BUILD_XFS_TRUE@
CC = @CC@

But Makefile.in is auto-generated from Makefile.am, so lets look into
Makefile.am:

# Copyright ...

include $(top_srcdir)/Makefile.options

SUBDIRS = include adio mpi-io
DIST_SUBDIRS = $(SUBDIRS) doc util

EXTRA_DIST = README COPYRIGHT README_OMPI

noinst_LTLIBRARIES = libromio_dist.la
libromio_dist_la_SOURCES =
libromio_dist_la_LIBADD = \
        adio/libadio.la \
        mpi-io/libmpi-io.la \
        mpi-io/glue/openmpi/libglue.la @ROMIO_LIBLIST@
libromio_dist_la_DEPENDENCIES = \
        adio/libadio.la \
        mpi-io/libmpi-io.la \
        mpi-io/glue/openmpi/libglue.la

Not a single line about any file system. Grepping further for
BUILD_XFS_FALSE doesn't return any results. So maybe its in
$(top_srcdir)/Makefile.options.

bernd_at_bathl openmpi-1.2.3>find . -name 'Makefile.options'
./ompi/mca/io/romio/romio/Makefile.options
./config/Makefile.options

./config/Makefile.options hardly doesn't qualify as $(top_srcdir), so it
must be ./ompi/mca/io/romio/romio/Makefile.options:

# Copyright

AUTOMAKE_OPTIONS = foreign dist-bzip2

# $(top_ompi_srcdir) - mca_base_param.h
# $(top_ompi_srcdir)/opal/include - opal_config_bottom.h
# $(top_ompi_builddir)/opal/include - opal_config.h
# $(top_ompi_builddir)/ompi/include - mpi.h
# $(top_srcdir)/include - vpath support
# $(top_srcdir)/adio/include - vpath support

AM_CPPFLAGS = \
        -DOMPI_BUILDING=1 \
        -I$(top_ompi_srcdir) \
        -I$(top_ompi_srcdir)/opal/include \
        -I$(top_ompi_builddir)/opal/include \
        -I$(top_ompi_builddir)/ompi/include \
        -I$(top_srcdir)/include \
        -I$(top_srcdir)/adio/include

Not a single line about filesystems, *grumble*.

Now lets assume I eventually find the proper autotools files to patch lustre
support in, how can I distribute that patch? In principle I would have to
distribute a patch that also patches the auto-generated configure,
automake.in, etc files. But even if romio won't change on the next release
of open-mpi, the autotools files probably will (and even only because they
have been created with a newer autotools version).
You might already assume it, but I really hate this stupid autotools build
system, I'm strongly supporting people who call it autohell.

Any plans for a sane build system?

Thanks,
Bernd