[CMake] ExternalProject feature regenerating the configure script
Ashok Nalkund
ashoknn at qti.qualcomm.com
Wed Jul 24 13:54:32 EDT 2013
On 7/23/2013 8:42 PM, Alan W. Irwin wrote:
> On 2013-07-23 18:09-0700 Ashok Nalkund wrote:
>
>> I noticed the following messages when I ran 'make VERBOSE=1 -d':
>>
>>> <path to package>/build/src/package/Makefile.in'.
>>> Prerequisite `<path to package>/build/src/package/aclocal.m4' is
>>> newer than target `<path to package>/build/src/package/Makefile.in'.
>>> Must remake target `<path to
>>> package>/build/src/package/Makefile.in'.
>>> Putting child 0x0156a7f0 (<path to
>>> package>/build/src/mare/Makefile.in) PID 23029 on the chain.
>>> Live child 0x0156a7f0 (<path to package>/build/src/mare/Makefile.in)
>>> PID 23029
>>> cd <path to package>/build/src/mare && /bin/sh <path to
>>> package>/build/src/mare/autotools/missing --run automake-1.11 --foreign
>>> aclocal.m4:17: warning: this file was generated for autoconf 2.68.
>>
>> I'll dig into this more.
>
> I suggest you try replacing cmake -E touch everywhere it occurs in the
> ExternalPackage module with the equivalent Unix (or MSYS) touch
> command. That's what I was forced to do because the "cmake -E touch
> <filename>" command is not reliable with regard to timing (it
> truncates all times to the nearest second) leading to weird regeneration
> results similar to what you have described.
>
> You could also try the git version of CMake. I have been told that
> the appropriate bug fix for this "cmake -E touch" issue has been done
> in the git version of CMake in response to my bug report, but this fix
> will only be deployed for the forthcoming CMake-2.8.12 release.
>
> If time truncation to the nearest second for "cmake -E touch" in the
> ExternalPackage module is not the issue, then the other possibility is
> the release tarball has not been correctly prepared for autotools
> release so the build-system file dates are not in the right date order
> ==> inappropriate regeneration of the build-system files for the user.
> (This actually happened to me as a release manager many years ago when
> PLplot was still using autotools, and I remember that embarrassment
> very well indeed.) But in this case, you would also get regeneration
> when running configure/make by hand, and you stated that was not the
> case.
>
> Alan
Hi Alan,
Thanks for the response. First I tried to see the times of these
files using stat and it DOESNT indicate that aclocal.m4 is newer than
configure:
> File: `<path to package>/build/src/mare/aclocal.m4'
> Size: 37457 Blocks: 80 IO Block: 4096 regular file
> Device: fd04h/64772d Inode: 52823233 Links: 1
> Access: (0600/-rw-------) Uid: (45401/ ashoknn) Gid: ( 200/ users)
> Access: 2013-07-24 10:50:01.409175844 -0700
> Modify: 2013-07-24 10:49:37.335299410 -0700
> Change: 2013-07-24 10:49:37.335299410 -0700
> File: `<path to package>/build/src/mare/configure'
> Size: 840346 Blocks: 1648 IO Block: 4096 regular file
> Device: fd04h/64772d Inode: 52822857 Links: 1
> Access: (0700/-rwx------) Uid: (45401/ ashoknn) Gid: ( 200/ users)
> Access: 2013-07-24 10:50:02.979883315 -0700
> Modify: 2013-07-24 10:50:02.958882582 -0700
> Change: 2013-07-24 10:50:02.958882582 -0700
>
Also I changed '${CMAKE_COMMAND} -E touch' with 'touch' in the
ExternalProject module but that also didnt seem to make a difference.
I dont think I mentioned that I'm using cmake 2.8.9.
thanks,
ashok
More information about the CMake
mailing list