'importing' thirdparty sources

Giorgos Keramidas keramida at ceid.upatras.gr
Mon Jul 16 09:49:40 CDT 2007


Hi all,

I've been experimenting with a local 'wrapper' Hg workspace around
autoconf, automake and libtool, but seem to have bumped on something
which I don't know how to resolve.

One of the ideas I was trying to borrow from the way the FreeBSD project
works was:

    1. Keep a workspace/contrib/** tree with the sources which I
       consider 'external'.

    2. Import a clean copy of autoconf-2.61 in that workspace.

    3. Remove it all, and check-out a clean copy.

    4. Build autoconf manually, to test that it still builds.

Now, autoconf-2.61 is a small source tree, and it checks out in less
than a second:

% keramida at kobe:/home/keramida/bld$ /usr/bin/time hg up -C
% 154 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 
% real        0.3
% user        0.2
% sys         0.0
% keramida at kobe:/home/keramida/bld$

All the files in the workspace have the same timestamp:

% $ find * -exec /bin/ls -ld {} + | awk '{print $6,$7,$8}' | sort | uniq -c
%  169 Jul 16 17:41
% $

but then, autoconf fails to build because it expects manpages to have a
modification date larger than or equal to their sources:

% keramida at kobe:/home/keramida/bld$ find * \( -name \*.in -o -name \*.1 \) -exec ls -ld {} +
% [...]
% -rw-r--r--   1 keramida bedc        8189 Jul 16 17:42 autoconf/bin/autoheader.in
% [...]
% -rw-r--r--   1 keramida bedc        2452 Jul 16 17:42 autoconf/man/autoheader.1
% [...]
% keramida at kobe:/home/keramida/bld$ 

The build of autoconf then fails with:

% $ ( cd autoconf && ./configure && make )
% mv -f autoconf.tmp autoconf
% echo "Updating man page autoconf.1"
% Updating man page autoconf.1
% [...]
% /home/keramida/bld/autoconf/build-aux/missing: line 54: help2man: command not found
% WARNING: `help2man' is missing on your system.  You should only need it if
%          you modified a dependency of a manual page.  You may need the
%          `Help2man' package in order for those modifications to take
%          effect.  You can get `Help2man' from any GNU archive site.
% *** Error code 1

Since I'm not really going to modify autoconf-2.61, I don't need
help2man and all the Perl modules it wants to pull in.

Is there _any_ way to track thirdparty source "in the tree", but avoid
breaking their original timestamps?  From my reading of the FAQ entry at
[1] it seems like the answer is "no".

[1] http://www.selenic.com/mercurial/wiki/index.cgi/FAQ#head-1e601b3d2b1e1c8481ebbe9a47d4acbc4d8c3dd3

If the answer is indeed "no", what is an alternative of handling
thirdparty sources with this sort of dependencies to other files in the
same source tree?

- Giorgos



More information about the Mercurial-devel mailing list