Hallo Ralf! Ralf Wildenhues wrote:
This patch is the last of the queue, and the most intertwined. Maybe I should make the effort to rip it apart -- please say so.
Yes please. Unless it is a disproportionate amount of effort, in which case I'd rather spend that effort on rolling 1.9h.
Several open bugs:
Open until these patches are applied I presume?
- aclocal.m4 should be copied, even if all other files are symlinked, because `aclocal' will otherwise overwrite the target (And we should write a bug report against Automake).
ACK.
Note that in the symlink-case, this file *must* retain its old time stamp, hence `cp -p'. Maybe we'd need `tar' instead here?
I'm not sure `cp -p' is portable enough. We've used `tar' previously because of this (among other things).
(Luckily the subsecond problem is not *so* much of an issue here: `cd libltdl && aclocal' still takes a second on a fast machine -- maybe we should put a `sleep 1' into the manual rule even?)
Yes, I think the sleep is a good idea for future proof against ultra fast machines that decide not to upgrade to libtool-3.0 in 2025 ;-)
- in case of `libtoolize --copy', it would actually be wise to have the copied files have *current* time stamps, so that its dependents will be rebuilt. Bob and I noted this some time ago. This patch does `cp -p' and a subsequent `touch', to preserve permission bits.
Again, I'm dubious about the use of `cp -p'.
- To fix both, quite a few other changes are necessary: the `main' part of libtoolize now has to handle all files in the correct order: the .m4 files come before the other libltdl files, so that their timestamps will stay older.
ACK.
- As a consequence, libtoolize output changes a bit, and the corresponding tests need to be adjusted.
ACK.
- As a nice side effect, func_copy_cb has some logic errors removed (previously, it would not fail for every failure situation).
Cool!
Now, we still have the issue that `make dist' will fail for recursive and nonrecursive mode. In these modes, we will simply now always copy Makefile.am or Makefile.inc, respectively. Since we've already had func_fixup_Makefile_inc for the latter, we just generalize that to also cope with the former (in recursive mode only!).
ACK.
The additional functionality of func_fixup_Makefile is that it removes the non-existent files from the EXTRA_DIST lines of the file.
ACK.
As a final bit, we default $tst_dist to `dist' now -- should work. :)
I'd rather not have casual installers be even more likely to get bored and abort the testsuite run. What do you think of my LT_TEST_EXHAUSTIVE idea?
OK to apply?
Not yet... As a general rule, the ChangeLog entry itself should be sufficient documentation for why the changeset is necessary. If you find yourself wanting to add more description to the libtool-patches post, rather add it to the ChangeLog entry instead for future readers. So far, we only use `cp -p' as a fallback for a failed `ln -s' or tar copy... unless we can come up with good evidence that `cp -p' won't fail on any of the host environments we care about, I don't want to divert from that.
* 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'.
Cheers, Gary. -- Gary V. Vaughan ())_. [EMAIL PROTECTED],gnu.org} Research Scientist ( '/ http://tkd.kicks-ass.net GNU Hacker / )= http://www.gnu.org/software/libtool Technical Author `(_~)_ http://sources.redhat.com/autobook
signature.asc
Description: OpenPGP digital signature