libtool/tests/libtoolize.at
Ralf Wildenhues 8f7eb43a16 Fix several libtoolize-related bugs:
- Do not symlink aclocal.m4, to work around a bug in aclocal
overwriting the linked-to file instead of removing the symlink.
- Have `libtoolize --copy' cause current time stamps, so that
dependents will be rebuilt; for this, install files in order.
- Fix list of distribution files for (non)recursive libltdl.
- Fix some failure cases.

* libtoolize.m4sh (func_copy_cb):
If `$opt_link', still copy `aclocal.m4', so a subsequent
`aclocal' will not overwrite the symlink target.
In `--copy' mode, do `cp -p' and `touch' for each file, so
timestamps are updated but permissions preserved.
(main): Reorder installing of files to match logical order
and timestamp requirements.
(func_fixup_Makefile_inc): Renamed to
(func_fixup_Makefile): this.  Add sed scriptlet to remove
non-existent files from EXTRA_DIST, for either nonrecursive
or recursive mode.
(main): call it to mangle also in recursive mode.
* tests/libtoolize.at (expout): Adjusted.
* tests/testsuite.at (tst_dist): Default to `dist'.
2006-06-12 17:54:15 +00:00

497 lines
16 KiB
Plaintext

# Hand crafted tests for GNU Libtool. -*- Autotest -*-
# Copyright 2005 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
AT_BANNER([Libtoolize operation.])
# _LT_CONFIGURE_AC
# ----------------
m4_define([_LT_CONFIGURE_AC],
[AT_DATA([configure.ac],
[[AC_INIT([libtoolize-demo], ]AT_PACKAGE_VERSION[, ]AT_PACKAGE_BUGREPORT[)
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_MACRO_DIR([m4])
LT_INIT
AC_OUTPUT
]])
])# _LT_CONFIGURE_AC
# _LT_LIBTOOLIZE_SETUP
# --------------------
m4_define([_LT_LIBTOOLIZE_SETUP],
[_LT_CONFIGURE_AC
test -d m4 || { rm -f m4 && mkdir m4; }
rm -f m4/libtool.m4 m4/ltoptions.m4 config/ltmain.sh
# This file should be upgraded.
AT_DATA([m4/libtool.m4], [[
# serial 25 LT_INIT
]])
# This file has a very high serial number, and should be left unchanged
# until --force is passed.
AT_DATA([m4/ltoptions.m4], [[
# serial 99999 ltoptions.m4
]])
test -d config || { rm -f config && mkdir config; }
# This file has a very high serial number, and needs --force to be updated.
AT_DATA([config/ltmain.sh], [[
package_revision=9999.9999
]])
# This file has a very old serial number, but should be left unchanged
# unless the --install flag is invoked.
AT_DATA([config/config.guess], [[
timestamp='1970-01-01'
]])
])# LT_LIBTOOLIZE_SETUP
## ------------------- ##
## Macro installation. ##
## ------------------- ##
AT_SETUP([libtoolize macro installation])
_LT_CONFIGURE_AC
AT_DATA(expout,
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/argz.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
]])
LT_AT_CHECK_LIBTOOLIZE([--copy], 0, expout)
AT_CLEANUP
## -------------- ##
## Serial update. ##
## -------------- ##
AT_SETUP([libtoolize macro serial update])
_LT_LIBTOOLIZE_SETUP
## -------------------------------------------------------------------- ##
## First we try to update with some newer files in the destination dir. ##
## -------------------------------------------------------------------- ##
AT_DATA(expout,
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/argz.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
]])
AT_DATA(experr,
[[libtoolize: `config/ltmain.sh' is newer: use `--force' to overwrite
libtoolize: `m4/ltoptions.m4' is newer: use `--force' to overwrite
]])
LT_AT_CHECK_LIBTOOLIZE([--copy], 0, expout, experr)
## ---------------------------------------------------------- ##
## Next, a second update attempt with everything now updated. ##
## ---------------------------------------------------------- ##
AT_DATA(expout,
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: `m4/libtool.m4' is already up to date.
libtoolize: `m4/argz.m4' is already up to date.
libtoolize: `m4/ltsugar.m4' is already up to date.
libtoolize: `m4/ltversion.m4' is already up to date.
libtoolize: `m4/lt~obsolete.m4' is already up to date.
]])
AT_DATA(experr,
[[libtoolize: `config/ltmain.sh' is newer: use `--force' to overwrite
libtoolize: `m4/ltoptions.m4' is newer: use `--force' to overwrite
]])
LT_AT_CHECK_LIBTOOLIZE([--copy], 0, expout, experr)
## ----------------------------------------------------------- ##
## Now, a forced update to downgrade files with newer serials. ##
## ----------------------------------------------------------- ##
AT_DATA(expout,
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/argz.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
]])
LT_AT_CHECK_LIBTOOLIZE([--copy --force], 0, expout)
## --------------------------------------------------------- ##
## A final update attempt with everything now force updated. ##
## --------------------------------------------------------- ##
AT_DATA(expout,
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: `config/ltmain.sh' is already up to date.
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: `m4/libtool.m4' is already up to date.
libtoolize: `m4/argz.m4' is already up to date.
libtoolize: `m4/ltoptions.m4' is already up to date.
libtoolize: `m4/ltsugar.m4' is already up to date.
libtoolize: `m4/ltversion.m4' is already up to date.
libtoolize: `m4/lt~obsolete.m4' is already up to date.
]])
LT_AT_CHECK_LIBTOOLIZE([--copy], 0, expout)
AT_CLEANUP
## --------------- ##
## --install flag. ##
## --------------- ##
AT_SETUP([libtoolize config files serial update])
_LT_LIBTOOLIZE_SETUP
## -------------------------------------------------------------------- ##
## First we try to update with some newer files in the destination dir. ##
## -------------------------------------------------------------------- ##
AT_DATA(expout,
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/config.guess'
libtoolize: copying file `config/config.sub'
libtoolize: copying file `config/install-sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/argz.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
]])
AT_DATA(experr,
[[libtoolize: `config/ltmain.sh' is newer: use `--force' to overwrite
libtoolize: `m4/ltoptions.m4' is newer: use `--force' to overwrite
]])
LT_AT_CHECK_LIBTOOLIZE([--copy --install], 0, expout, experr)
## ---------------------------------------------------------- ##
## Next, a second update attempt with everything now updated. ##
## ---------------------------------------------------------- ##
AT_DATA(expout,
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: `config/config.guess' is already up to date.
libtoolize: `config/config.sub' is already up to date.
libtoolize: `config/install-sh' is already up to date.
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: `m4/libtool.m4' is already up to date.
libtoolize: `m4/argz.m4' is already up to date.
libtoolize: `m4/ltsugar.m4' is already up to date.
libtoolize: `m4/ltversion.m4' is already up to date.
libtoolize: `m4/lt~obsolete.m4' is already up to date.
]])
AT_DATA(experr,
[[libtoolize: `config/ltmain.sh' is newer: use `--force' to overwrite
libtoolize: `m4/ltoptions.m4' is newer: use `--force' to overwrite
]])
LT_AT_CHECK_LIBTOOLIZE([--copy --install], 0, expout, experr)
## ----------------------------------------------------------- ##
## Now, a forced update to downgrade files with newer serials. ##
## ----------------------------------------------------------- ##
AT_DATA(expout,
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/config.guess'
libtoolize: copying file `config/config.sub'
libtoolize: copying file `config/install-sh'
libtoolize: copying file `config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/argz.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
]])
LT_AT_CHECK_LIBTOOLIZE([--copy --force --install], 0, expout)
## --------------------------------------------------------- ##
## A final update attempt with everything now force updated. ##
## --------------------------------------------------------- ##
AT_DATA(expout,
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: `config/config.guess' is already up to date.
libtoolize: `config/config.sub' is already up to date.
libtoolize: `config/install-sh' is already up to date.
libtoolize: `config/ltmain.sh' is already up to date.
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: `m4/libtool.m4' is already up to date.
libtoolize: `m4/argz.m4' is already up to date.
libtoolize: `m4/ltoptions.m4' is already up to date.
libtoolize: `m4/ltsugar.m4' is already up to date.
libtoolize: `m4/ltversion.m4' is already up to date.
libtoolize: `m4/lt~obsolete.m4' is already up to date.
]])
LT_AT_CHECK_LIBTOOLIZE([--copy --install], 0, expout)
AT_CLEANUP
## ---------------------------- ##
## Make sure ltdl.m4 is copied. ##
## ---------------------------- ##
AT_SETUP([copy ltdl.m4 with shared macro directory])
AT_DATA([configure.ac],
[[AC_INIT([libtoolize-demo], ]AT_PACKAGE_VERSION[, ]AT_PACKAGE_BUGREPORT[)
LT_CONFIG_LTDL_DIR([ltdl])
AC_CONFIG_AUX_DIR([ltdl/config])
AC_CONFIG_MACRO_DIR([ltdl/m4])
LT_INIT
LT_WITH_LTDL
AC_OUTPUT
]])
AT_DATA(expout,
[[libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `ltdl/m4'.
libtoolize: linking file `ltdl/m4/libtool.m4'
libtoolize: linking file `ltdl/m4/ltdl.m4'
libtoolize: linking file `ltdl/m4/argz.m4'
libtoolize: linking file `ltdl/m4/ltoptions.m4'
libtoolize: linking file `ltdl/m4/ltsugar.m4'
libtoolize: linking file `ltdl/m4/ltversion.m4'
libtoolize: linking file `ltdl/m4/lt~obsolete.m4'
libtoolize: linking file `ltdl/COPYING.LIB'
libtoolize: linking file `ltdl/README'
libtoolize: linking file `ltdl/Makefile.am'
libtoolize: linking file `ltdl/configure.ac'
libtoolize: copying file `ltdl/aclocal.m4'
libtoolize: linking file `ltdl/Makefile.in'
libtoolize: linking file `ltdl/config-h.in'
libtoolize: linking file `ltdl/configure'
libtoolize: linking file `ltdl/argz_.h'
libtoolize: linking file `ltdl/argz.c'
libtoolize: linking file `ltdl/loaders/dld_link.c'
libtoolize: linking file `ltdl/loaders/dlopen.c'
libtoolize: linking file `ltdl/loaders/dyld.c'
libtoolize: linking file `ltdl/loaders/load_add_on.c'
libtoolize: linking file `ltdl/loaders/loadlibrary.c'
libtoolize: linking file `ltdl/loaders/shl_load.c'
libtoolize: linking file `ltdl/lt__dirent.c'
libtoolize: linking file `ltdl/lt__strl.c'
libtoolize: linking file `ltdl/libltdl/lt__alloc.h'
libtoolize: linking file `ltdl/libltdl/lt__dirent.h'
libtoolize: linking file `ltdl/libltdl/lt__glibc.h'
libtoolize: linking file `ltdl/libltdl/lt__private.h'
libtoolize: linking file `ltdl/libltdl/lt__strl.h'
libtoolize: linking file `ltdl/libltdl/lt_dlloader.h'
libtoolize: linking file `ltdl/libltdl/lt_error.h'
libtoolize: linking file `ltdl/libltdl/lt_system.h'
libtoolize: linking file `ltdl/libltdl/slist.h'
libtoolize: linking file `ltdl/loaders/preopen.c'
libtoolize: linking file `ltdl/lt__alloc.c'
libtoolize: linking file `ltdl/lt_dlloader.c'
libtoolize: linking file `ltdl/lt_error.c'
libtoolize: linking file `ltdl/ltdl.c'
libtoolize: linking file `ltdl/ltdl.h'
libtoolize: linking file `ltdl/slist.c'
libtoolize: linking file `ltdl/config/compile'
libtoolize: linking file `ltdl/config/config.guess'
libtoolize: linking file `ltdl/config/config.sub'
libtoolize: linking file `ltdl/config/depcomp'
libtoolize: linking file `ltdl/config/install-sh'
libtoolize: linking file `ltdl/config/missing'
libtoolize: linking file `ltdl/config/ltmain.sh'
]])
LT_AT_CHECK_LIBTOOLIZE([--ltdl], 0, expout)
AT_CLEANUP
## ------------------------------------------------------ ##
## Creating an aclocal.m4 without in-tree libtool macros. ##
## ------------------------------------------------------ ##
AT_SETUP([upgrading verbatim style aclocal.m4])
AT_DATA([configure.ac],
[[AC_INIT([libtoolize-demo], ]AT_PACKAGE_VERSION[, ]AT_PACKAGE_BUGREPORT[)
AC_CONFIG_AUX_DIR([config])
LT_INIT
AC_OUTPUT
]])
[cat >expout <<EOF
libtoolize: putting files in AC_CONFIG_AUX_DIR, \`config'.
libtoolize: copying file \`config/ltmain.sh'
libtoolize: You should add the contents of the following files to \`aclocal.m4':
libtoolize: \`$tst_aclocaldir/libtool.m4'
libtoolize: \`$tst_aclocaldir/ltoptions.m4'
libtoolize: \`$tst_aclocaldir/ltversion.m4'
libtoolize: \`$tst_aclocaldir/ltsugar.m4'
libtoolize: \`$tst_aclocaldir/lt~obsolete.m4'
EOF]
LT_AT_CHECK_LIBTOOLIZE([--copy], 0, expout)
## --------------------------------------- ##
## Upgrading a hand maintained aclocal.m4. ##
## --------------------------------------- ##
AT_DATA([configure.ac],
[[AC_INIT([libtoolize-demo], ]AT_PACKAGE_VERSION[, ]AT_PACKAGE_BUGREPORT[)
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_MACRO_DIR([m4])
LT_INIT
AC_OUTPUT
]])
AT_DATA([aclocal.m4],
[[# This should need upgrading:
# serial 25 LT_INIT
AC_DEFUN([LT_INIT],
[blah])
# This is newer than the upgrade version:
# serial 99999 ltoptions.m4
# This is older than the upgrade version:
# serial 1 ltversion.m4
]])
AT_DATA([expout],
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: `config/ltmain.sh' is already up to date.
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/argz.m4'
libtoolize: You should add the contents of `m4/argz.m4' to `aclocal.m4'.
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: You should add the contents of `m4/ltsugar.m4' to `aclocal.m4'.
libtoolize: copying file `m4/ltversion.m4'
libtoolize: You should add the contents of `m4/ltversion.m4' to `aclocal.m4'.
libtoolize: copying file `m4/lt~obsolete.m4'
libtoolize: You should add the contents of `m4/lt~obsolete.m4' to `aclocal.m4'.
]])
LT_AT_CHECK_LIBTOOLIZE([--copy], 0, expout)
## ------------------------------------------- ##
## Upgrading an aclocal maintained aclocal.m4. ##
## ------------------------------------------- ##
LT_AT_ACLOCAL([-I m4])
rm -f m4/libtool.m4 m4/ltoptions.m4
# This file should be upgraded.
AT_DATA([m4/libtool.m4], [[
# serial 25 LT_INIT
AC_DEFUN([LT_INIT])
]])
# This file has a very high serial number, and should be left unchanged.
AT_DATA([m4/ltoptions.m4], [[
# serial 99999 ltoptions.m4
]])
AT_DATA([expout],
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: `config/ltmain.sh' is already up to date.
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: `m4/argz.m4' is already up to date.
libtoolize: You should add the contents of `m4/argz.m4' to `aclocal.m4'.
libtoolize: `m4/ltsugar.m4' is already up to date.
libtoolize: `m4/ltversion.m4' is already up to date.
libtoolize: `m4/lt~obsolete.m4' is already up to date.
libtoolize: You should add the contents of `m4/lt~obsolete.m4' to `aclocal.m4'.
]])
AT_DATA([experr],
[[libtoolize: `m4/ltoptions.m4' is newer: use `--force' to overwrite
]])
LT_AT_CHECK_LIBTOOLIZE([--copy], 0, expout, experr)
## ----------------------------------------------------------- ##
## Now, a forced update to downgrade files with newer serials. ##
## ----------------------------------------------------------- ##
AT_DATA(expout,
[[libtoolize: putting files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/argz.m4'
libtoolize: You should add the contents of `m4/argz.m4' to `aclocal.m4'.
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
libtoolize: You should add the contents of `m4/lt~obsolete.m4' to `aclocal.m4'.
]])
LT_AT_CHECK_LIBTOOLIZE([--copy --force], 0, expout)
AT_CLEANUP