When any argument contains a shell meta-character, it needs to be
quoted when passed around. We already pass parameter lists as
space delimited strings of arguments, and pass the string through
eval to turn it back into a list before re-assigning using `set'.
To prevent the shell from interpreting any meta-characters during
an `eval set dummy $argumentlist', they must be quoted again
inside the quoted argument list.
* build-aux/funclib.sh (func_quote_for_eval): Be careful to keep
a separate tally of quoted and unquoted argument lists, to
conform to the API of the single argument func_quote_for_eval
implementation in build-aux/general.m4sh.
* bulid-aux/options-parser (func_run_hooks): To account for the
doubly quoted meta-character argument lists, we must eval the
parameter reassignment `set' call separately from evaluating the
dynamically named hook results variable.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Moving potentially reusable code into a common file that can
be sourced by clients, and adjusting for impedance mismatch
or necessary renames during integration.
* build-aux/funclib.sh: New file.
* build-aux/options-parser (Shell normalisation)
(User overrideable command paths, Global variables, func_append)
(require_term_colors, func_echo, func_echo_infix_1, func_warn)
(func_error, func_fatal_error, func_quote_for_eval, func_verbose):
Move from here...
* build-aux/funclib.sh (Shell normalisation, User overrideable
command paths, Global variables, func_append)
(require_term_colors, func_echo, func_echo_infix_1)
(func_warn_and_continue, func_error, func_fatal_error)
(func_quote_for_eval, func_verbose): ...to here.
* build-aux/general.m4sh (func_arith, func_basename)
(func_dirname, func_dirname_and_basename, func_echo_all)
(func_grep, func_len, func_mkdir_p, func_mktempdir)
(func_normal_abspath, func_relative_path, func_quote_for_expand)
(func_stripname, func_show_eval, func_tr_sh): Move from here...
* build-aux/funclib.sh(func_arith, func_basename)
(func_dirname, func_dirname_and_basename, func_echo_all)
(func_grep, func_len, func_mkdir_p, func_mktempdir)
(func_normal_abspath, func_relative_path, func_quote_for_expand)
(func_stripname, func_show_eval, func_tr_sh): ...to here.
* bootstrap (usage message): Document `-no-warn' option.
(func_append_u, func_warning): Move from here...
* build-aux/funclib.sh (func_append_uniq, func_warning): ...to
here.
* bootstrap, build-aux/extract-trace: Source build-aux/funclib.sh
before build-aux/options-parser.
* build-aux/options-parser (usage, long_help_message): Set
default values to match what is parsed by the unmodified parser.
* build-aux/extract-trace (usage, long_help_message): Only set
from func_main, so that clients sourcing this file can still use
the correct defaults from build-aux/options-parser.
* bootstrap (bootstrap_options_prep, bootstrap_parse_options):
Move warning option parsing from here...
* build-aux/option-parser (func_options_prep)
(func_parse_options): ...to here, where all clients can benefit.
* Makefile.am (funclib_sh): New macro; path to funclib.sh.
(EXTRA_DIST): Add $(funclib_sh).
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Rather than forking and executing a full $SHELL for each macro
extraction, source the script and its dependencies into our
execution space and use the provided func_extract_trace API.
* libtoolize.m4sh: Source extract-trace from an appropriate
directory determined presently by make.
(func_extract_trace): Remove this wrapper.
* Makefile.am (abs_aux_dir): Absolute path to extract-trace
directory.
(configure_edit): Inject abs_aux_dir into uninstalled libtoolize.
(bin_SCRIPTS): Remove libtoolize.
(uninstall-hook): Manually uninstall libtoolize.
(install-data-local): Inject pkgauxdir into installed libtoolize
during installation.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/options-parser (_G_HAVE_XSI_OPS): Environment
overrideable defaults for bash and zsh, which are known to
support XSI extensions.
(_G_HAVE_PLUSEQ_OP): Similarly for new enough versions of bash,
which are known to have += support.
(func_append): Only perform the shell += probe when state of
support is unknown.
(func_split_equals, func_split_short_opt): Similarly for XSI
probe to select fastest working implementation.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/options-parser (func_parse_options): When there is
more than one non-option argument, "$*" forces all of them into
a single string. Use ${1+"$@"} to set arguments correctly.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Bootstrapping without --gnulib-srcdir creates a shallow gnulib
clone to run gnulib-tool out of, except that the parent package
is almost certainly using a revision of gnulib before just tha
most recent 2 gnulib revisions.
* bootstrap (func_require_gnulib_submodule): Pull the most
recent 365 revisions, which ought to be enough for a well-
maintained parent package.
Don't forget to run 'git submodule update' to select the correct
gnulib revision.
Make is not installed by default in some environments, such as
cygwin... which is slow enough already without having to wait
for gnulib-tool, bootstrap and half of configure to complete
before getting an error.
* bootstrap.conf (buildreq): Add recent GNU make to bootstrap
requirements. Now missing make is diagnosed in the earliest
part of bootstrap.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* bootstrap, build-aux/extract-trace, build-aux/options-parser
(Local variables): Use time-stamp-pattern to set number of
searched lines to 10, and to replace time-stamp-start,
time-stamp-end and time-stamp-format.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
For some systems with PIC as default, the test was inadvertently
skipped. Issue introduced in commit 4440d65.
Report by Roumen Petrov.
* tests/with-pic.at: Skip the test for systems that define
DLL_EXPORT.
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
The previous commit broke Linux->MinGW cross-compiling.
Report by Roumen Petrov.
* tests/mdemo.at: Normalize line endings after $EGREP.
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
In commit 22f5750, one of the hunks actually introduced
line ending problems. Revert that hunk.
* tests/mdemo.at: Use AT_DATA for expected output when the
output from compiled programs is fed through $EGREP.
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
MSVC exits with status 2 instead of the expected 1 when a
real link is attempted.
* tests/libtool.at (check link mode operation): Use a dry run and
expect a clean exit status instead of expecting a fail.
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
Carefully comment the maze of quoting and escaping needed to
pass through M4, $SHELL, and grep before regexp matching.
* tests/libtool.at (quote shell meta-characters in filenames):
Split backslash into a separate test group, because it needs
additional escaping.
Use grep consistently for the entire test group.
Use AT_CHECK rather than LT_AT_CHECK to avoid problems with
escaping literal $ correctly with LT_ESCAPE.
Use the correct number of backslashes for each sub-group.
Escape double-quote literals portably.
Reported by Peter Rosin.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* tests/mdemo.at (configuer.ac): Build an included convenience
libltdl.
(Makefile.am): Add subdir-objects.
Remove override rules from legacy mdemo tests to reuse parent
libltdlc.la.
(LT_AT_CHECK_CONFIG): Add --with-included-ltdl to configure
arguments so that test cases always use the subproject libltdl
in preference to any installed libltdl.
Reported by Peter Rosin.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Due to differences in line-endings between C stdout and Fortran
stdout, as well as unpredictable output ordering between
platforms and runtimes, weaken success criteria to not require
the entire output of fortran programs to match a test case.
* itests/fcdemo.at, tests/f77demo.at (_LT_CHECK_EXECUTE):
Improve comments, and weaken test case to grep for a known line
in the f77 runtime output.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Fixes issues with depdemo.at, f77demo.at and fcdemo.at.
* tests/testsuite.at (LT_AT_HOST_DATA) [MinGW]: Keep leading
and trailing spaces and tabs when converting line endings.
All legacy tests have been fully migrated to Autotest, so
no need to cling to the legacy scaffolding any more.
* tests/defs.m4sh: Delete file.
* configure.ac (AM_INIT_AUTOMAKE): Remove unused color-tests and
parallel-tests options.
* Makefile.am (defs_m4sh, defs_in, defs, TESTS): Remove.
Adjust all dependencies.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* tests/quote.test: Moved from here...
* tests/libtool.at: ...to here, and updated to Autotest.
* Makefile.am (TESTS): Remove tests/quote.test.
(TESTSUITE_AT): Add tests/libtool.at.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* cfg.mk (exclude_file_name_regex--sc_bindtextdomain)
(exclude_file_name_regexp--sc_program_name): Remove. The excluded
directories no longer exist.
(exclude_file_name_regexp--sc_prohibit_strcmp): Remove subexpression
for matching removed demo directories.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Clean up some more unused cruft.
* configure.ac (HAVE_CXX, HAVE_F77, HAVE_FC, HAVE_GCJ, HAVE_RC):
Remove. These were only used by the recently removed legacy
tests.
[order-only prerequisites]: Ditto.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
With all those extra demo directories out of the way, we can
revert to a more canonical bootstrap process, and jettison the
cruft that was only there to work around the pain of
needing to autoreconf 11 directories. Bootstrap is now an order
of magnitude faster.
* bootstrap.conf (require_ltdl_dir): New function. Factored out
of `libtool_build_prerequisites'.
(libtool_build_prerequisites): Adjust.
(func_reconfigure): Use `require_ltdl_dir' to determine the name
of the other directory we need to autoreconf during bootstrap.
(libtool_options_prep, libtool_parse_options)
(libtool_validate_options): Remove.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* tests/pic_flag.at: Use _LT_DEMO_SETUP to generate a demo style
project, rather than relying on $abs_top_srcdir/configure.
* tests/with-pic.at: Likewise.
* Makefile.am (TESTSUITE_AT): Move tests/pic_flag.at and
tests/with-pic.at so that they run immediately following
tests/demo.at.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Along with the demise of the last demo directory, so all the
cruft for re-autotooling and distributing the additional
directories is no longer necessary.
* tests/fcdemo.at: New autotest groups, based on...
* tests/fcdemo-conf.test, tests/fcdemo-exec.test,
tests/fcdemo-make.test, tests/fcdemo-shared-exec.test,
tests/fcdemo-shared-make.test, tests/fcdemo-shared.test,
tests/fcdemo-static-exec.test, tests/fcdemo-static-make.test,
tests/fcdemo-static.test: ...these legacy tests, now removed.
* tests/fcdemo/Makefile.am, tests/fcdemo/README,
tests/fcdemo/configure.ac, tests/fcdemo/cprogram.c,
tests/fcdemo/foo.h, tests/fcdemo/fooc.c, tests/fcdemo/foof.f90,
tests/fcdemo/foof2.f90, tests/fcdemo/foof3.f90,
tests/fcdemo/fprogram.f90: Remove.
* configure.ac (CONF_SUBDIRS, DIST_MAKEFILE_LIST): Remove.
* Makefile.am (DIST_SUBDIRS, FC_TESTS, clean-local-legacy)
(configure-subdirs, distclean-recursive, distdir)
(fake-distclean-legacy, $(DIST_MAKEFILE_LIST)): Remove.
(COMMON_TESTS): Rename from this...
(TESTS): ...to this.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
This test was just a small non-ltdl aware library to load a
library from the legacy mdemo test, which in turn used ltdl to
call functions from modules. No need to create a whole other
test group with copies of everything from mdemo setup - just
tack the additional test on the end of the mdemo group.
* tests/mdemo.at (link with library that loads ltdl modules):
New test, based on...
* tests/mdemo2-conf.test, tests/mdemo-exec.test,
tests/mdemo-make.test: ...these legacy tests, now removed.
* tests/mdemo2/Makefile.am, tests/mdemo2/README,
tests/mdemo2/configure.ac, tests/mdemo2/main.c: Remove.
* configure.ac (CONF_SUBDIRS): Remove tests/mdemo2.
* Makefile.am: Adjust.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
This test was a thinly veiled copy of the basic legacy
demo-conf.test series, with the addition of long file names that
are not unique in the first 17 characters of their name, mashed
up with the cmdline_wrap.at max_cmd_len limits. Migrating to
Autotest means that this test will be automatically rerun with
max_cmd_len=24 as cmdline_wrap.at recurses through the whole
testsuite, so the migrated pdemo test is now simply another test
case in demo.at with longer file names.
* test/demo.at (linking with long file names): New test, based
on...
* tests/pdemo-conf.test, tests/pdemo-exec.test,
tests/pdemo-inst.test, tests/pdemo-make.test: ...these legacy
tests, now removed.
* tests/pdemo/Makefile.am, tests/pdemo/configure.ac,
tests/pdemo/foo.h, tests/pdemo/longer_file_name_dlmain.c,
tests/pdemo/longer_file_name_foo.c,
tests/pdemo/longer_file_name_foo2.c,
tests/pdemo/longer_file_name_hell1.c,
tests/pdemo/longer_file_name_hell2.c,
tests/pdemo/longer_file_name_hello.c,
tests/pdemo/longer_file_name_main.c: Remove.
* configure.ac (CONF_SUBDIRS): Remove tests/pdemo.
* Makefile.am: Adjust.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* ChangeLog.1996, ChangeLog.1997, ChangeLog.1998, ChangeLog.1999,
ChangeLog.2000, ChangeLog.2001, ChangeLog.2002, ChangeLog.2003,
ChangeLog.2004, ChangeLog.2005, ChangeLog.2006, ChangeLog.2007,
ChangeLog.2008, ChangeLog.2009, ChangeLog.2010: Remove. Content
moved from here...
* ChangeLog.old: ...to here.
* Makefile.am (EXTRA_DIST): Update list of ChangeLog files.
(changelog_old): New variable to hold path to ChangeLog.old file.
($(changelog)): Update to concatenate non-distributed
ChangeLog.old file to distributed ChangeLog after git log entries.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
No need for a spurious space before a command ending semi-colon.
* cfg.mk (sc_prohibit_space_semicolon): New test to catch
accidental reintroduction of spurious spaces removed by this
changeset.
* bootstrap, build-aux/general.m4sh, build-aux/ltmain.m4sh,
libltdl/lt__strl.c, m4/libtool.m4, m4/ltdl.m4, tests/bindir.at:
Remove spurious spaces.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
The original manually applied changeset 962aa91 contained several
errors (some corrected by subsequent patches on master, others not)
and many unrelated (although in this case, correct) changes were also
committed in the same changeset.
The merged branch gary/reredo-test-operand-order factors the
unrelated changes out into separate commits, and performs the work
that should have been in 962aa91 with a script, the results of which
were then painstakingly inspected for errors.
This merge moves the corrections for errors made in the original
manual patch from the branch onto master. Please inspect the many
separate changesets on the branch rather than the original patch
when you bisect or otherwise find your way to an error caused by
962aa91.
* build-aux/ltmain.m4sh (func_mode_link): Unroll a hard to
understad nested if statement into a more readable single case
statement.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Save an if statement
with '$skipped_export && { block; }' instead of 'if $skipped_export;
then block; fi'.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Reverse the branch
order for an if statement for readability.
* m4/libtool.m4: Likewise.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Save test invocations
by using 'test x,y = "$a,$b"' instead of 'test x = "$a" && test y
= "$b"'.
* m4/libtool.m4: Likewise.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): For readability, use
'test string = "$var" || { stuff; }' in preference to
'if test string != "$var"; then stuff; fi'.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>