[svn-r20019] Bug 2019: h5perf or h5perf_serial is removed twice. Some systems like AIX do

not like it as it may get into a racing condition when "gmake -j N" is used--
two "rm" commands were trying to remove the same file.

Solution:
Rearranged the Makefile.am so that h5perf or h5perf_serial are built only
once, that is through bin_PROGRAMS only.

Bug 2135: h5perf_serial is not installed in --enable-parallel build.
It was because in parallel build, h5perf_serial is not was not in the
bin_PROGRAMS list but it was still being built and tested.

Solution:
Rearranged the Makefile.am code so that h5perf_serial is installed too.
(It is easier to make cleaner code to install it than to build and test
h5perf_serial but not test it.)

Tested: Jam, both serial and parallel.
Did not run h5committest because the changes are in perform/ directory only
and I think Jam has given the changes in Makefile a complete test already.
This commit is contained in:
Albert Cheng 2011-01-28 18:58:14 -05:00
parent 0a15d73625
commit ea7073d72a
2 changed files with 30 additions and 20 deletions

View File

@ -23,11 +23,11 @@ include $(top_srcdir)/config/commence.am
INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
# bin_PROGRAMS will be installed.
if BUILD_PARALLEL_CONDITIONAL
bin_PROGRAMS=h5perf
TEST_PROG_PARA=h5perf perf
bin_PROGRAMS=h5perf_serial h5perf
else
bin_PROGRAMS=h5perf_serial
bin_PROGRAMS=h5perf_serial
endif
# Add h5perf and h5perf_serial specific linker flags here
@ -38,16 +38,25 @@ h5perf_serial_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS)
# specifying --enable-build-all at configure time.
# Also, some of these programs should only be built in parallel.
if BUILD_PARALLEL_CONDITIONAL
PARA_BUILD_ALL=benchpar mpi-perf
PARA_BUILD_ALL=benchpar mpi-perf
endif
if BUILD_ALL_CONDITIONAL
BUILD_ALL_PROGS=$(PARA_BUILD_ALL)
BUILD_ALL_PROGS=$(PARA_BUILD_ALL)
endif
# These are the programs that `make all' or `make tests' will build and which
# `make check' will run. List them in the order they should be run.
# Define programs that will be run in 'make check'
# List them in the order they should be run.
# Parallel test programs.
if BUILD_PARALLEL_CONDITIONAL
TEST_PROG_PARA=h5perf perf
endif
# Serial test programs.
TEST_PROG = iopipe chunk overhead zip_perf perf_meta h5perf_serial $(BUILD_ALL_PROGS)
check_PROGRAMS=$(TEST_PROG_PARA) $(TEST_PROG)
# check_PROGRAMS will be built but not installed. Do not any executable
# that is in bin_PROGRAMS already. Otherwise, it will be removed twice in
# "make clean" and some systems, e.g., AIX, do not like it.
check_PROGRAMS= iopipe chunk overhead zip_perf perf_meta $(BUILD_ALL_PROGS) perf
h5perf_SOURCES=pio_perf.c pio_engine.c pio_timer.c
h5perf_serial_SOURCES=sio_perf.c sio_engine.c sio_timer.c

View File

@ -56,8 +56,12 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(top_srcdir)/config/conclude.am COPYING
@BUILD_PARALLEL_CONDITIONAL_FALSE@bin_PROGRAMS = \
@BUILD_PARALLEL_CONDITIONAL_FALSE@ h5perf_serial$(EXEEXT)
@BUILD_PARALLEL_CONDITIONAL_TRUE@bin_PROGRAMS = h5perf$(EXEEXT)
check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_4)
@BUILD_PARALLEL_CONDITIONAL_TRUE@bin_PROGRAMS = \
@BUILD_PARALLEL_CONDITIONAL_TRUE@ h5perf_serial$(EXEEXT) \
@BUILD_PARALLEL_CONDITIONAL_TRUE@ h5perf$(EXEEXT)
check_PROGRAMS = iopipe$(EXEEXT) chunk$(EXEEXT) overhead$(EXEEXT) \
zip_perf$(EXEEXT) perf_meta$(EXEEXT) $(am__EXEEXT_2) \
perf$(EXEEXT)
TESTS = $(check_PROGRAMS)
subdir = perform
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@ -69,14 +73,9 @@ CONFIG_HEADER = $(top_builddir)/src/H5config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
@BUILD_PARALLEL_CONDITIONAL_TRUE@am__EXEEXT_1 = h5perf$(EXEEXT) \
@BUILD_PARALLEL_CONDITIONAL_TRUE@ perf$(EXEEXT)
@BUILD_PARALLEL_CONDITIONAL_TRUE@am__EXEEXT_2 = benchpar$(EXEEXT) \
@BUILD_PARALLEL_CONDITIONAL_TRUE@am__EXEEXT_1 = benchpar$(EXEEXT) \
@BUILD_PARALLEL_CONDITIONAL_TRUE@ mpi-perf$(EXEEXT)
@BUILD_ALL_CONDITIONAL_TRUE@am__EXEEXT_3 = $(am__EXEEXT_2)
am__EXEEXT_4 = iopipe$(EXEEXT) chunk$(EXEEXT) overhead$(EXEEXT) \
zip_perf$(EXEEXT) perf_meta$(EXEEXT) h5perf_serial$(EXEEXT) \
$(am__EXEEXT_3)
@BUILD_ALL_CONDITIONAL_TRUE@am__EXEEXT_2 = $(am__EXEEXT_1)
PROGRAMS = $(bin_PROGRAMS)
benchpar_SOURCES = benchpar.c
benchpar_OBJECTS = benchpar.$(OBJEXT)
@ -417,7 +416,6 @@ TRACE = perl $(top_srcdir)/bin/trace
# *.clog are from the MPE option.
CHECK_CLEANFILES = *.chkexe *.chklog *.clog
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib
@BUILD_PARALLEL_CONDITIONAL_TRUE@TEST_PROG_PARA = h5perf perf
# Add h5perf and h5perf_serial specific linker flags here
h5perf_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS)
@ -429,8 +427,11 @@ h5perf_serial_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS)
@BUILD_PARALLEL_CONDITIONAL_TRUE@PARA_BUILD_ALL = benchpar mpi-perf
@BUILD_ALL_CONDITIONAL_TRUE@BUILD_ALL_PROGS = $(PARA_BUILD_ALL)
# These are the programs that `make all' or `make tests' will build and which
# `make check' will run. List them in the order they should be run.
# Define programs that will be run in 'make check'
# List them in the order they should be run.
# Parallel test programs.
@BUILD_PARALLEL_CONDITIONAL_TRUE@TEST_PROG_PARA = h5perf perf
# Serial test programs.
TEST_PROG = iopipe chunk overhead zip_perf perf_meta h5perf_serial $(BUILD_ALL_PROGS)
h5perf_SOURCES = pio_perf.c pio_engine.c pio_timer.c
h5perf_serial_SOURCES = sio_perf.c sio_engine.c sio_timer.c