Hash :
f357bed8
Author :
Date :
2012-04-23T15:51:25
tests: cater to systems installing libs in /lib64
See automake bug#11302.
On at least OpenSUSE 12.1, "make install" will install libraries in
the '${prefix}/lib64' directory by default. This is due to the
$CONFIG_SITE set by /etc/profile.d/site.sh, which sets a libdir
that ends in '/lib64' rather than '/lib' if it finds that the compiler
is generating 64-bit code. This behaviour was causing some spurious
failures in our testsuite. Fix them.
* t/posixsubst-libraries.sh: Assume the libraries are installed in
'$(libdir)' rather than in '$(prefix)/lib'.
* t/posixsubst-ltlibraries.sh: Likewise.
* t/posixsubst-scripts.sh: Similarly, don't assume that '$(bindir)',
'$(sbindir)' and '$(libexedir)' always defaults to respectively
'$(prefix)/bin', '$(prefix)/sbin' and '$(prefix)/libexec'.
* t/transform3.test: Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
#! /bin/sh
# Copyright (C) 2010-2012 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Test that POSIX variable expansion '$(var:str=rpl)' works when used
# with the SCRIPTS primary.
. ./defs || Exit 1
cat >> configure.ac << 'END'
AC_OUTPUT
END
# We have to be careful with 'test -x' commands on MinGW/MSYS, because
# the file system does not actually have execute permission information.
# Instead, that is emulated by looking at the file content, and returning
# 0 if the file starts with, e.g., a COFF header or with '#!'.
# So we need to create actual scripts in the make rules and in the file
# creation below.
cat > Makefile.am << 'END'
t1 = foo1 foo2
t2 = bar1x bar2
t3 = quu-baz
bar1 bar2:
(echo '#!/bin/sh' && echo 'exit 0') > $@
quux.pl:
(echo '#!/bin/perl' && echo '1;') > $@
CLEANFILES = bar1 bar2 quux.pl
# Also try an empty match suffix, to ensure that the ':=' in there is
# not confused by the parser with an unportable assignment operator.
dist_sbin_SCRIPTS = $(t1:=.sh)
libexec_SCRIPTS = $(t2:x=)
nodist_bin_SCRIPTS = $(t3:-baz=x.pl)
check-local: test1 test2
.PHONY: test1 test2
test1:
ls -l
test -f bar1
test -f bar2
test -f quux.pl
test2: distdir
ls -l $(distdir)
## The scripts foo1.sh and foo2.sh should be distributed.
test -f $(distdir)/foo1.sh
test -f $(distdir)/foo2.sh
## The scripts bar1, bar2 and quux.pl shouldn't be distributed.
test ! -r $(distdir)/bar1
test ! -r $(distdir)/bar2
test ! -r $(distdir)/quux.pl
installcheck-local:
ls -l $(libexecdir) $(bindir) $(sbindir)
test -f $(sbindir)/foo1.sh
test -x $(sbindir)/foo1.sh
test -f $(sbindir)/foo2.sh
test -x $(sbindir)/foo2.sh
test -f $(libexecdir)/bar1
test -x $(libexecdir)/bar1
test -f $(libexecdir)/bar2
test -x $(libexecdir)/bar2
test -f $(bindir)/quux.pl
test -x $(bindir)/quux.pl
END
cat > foo1.sh <<'END'
#!/bin/sh
exit 0
END
cp foo1.sh foo2.sh
$ACLOCAL
$AUTOCONF
$AUTOMAKE
cwd=`pwd` || Exit 1
./configure --prefix="$cwd/_inst"
$MAKE
$MAKE test1 test2
$MAKE install
$MAKE installcheck
$MAKE distcheck
: