Well, here's some more details, but the timestamps look okay to me.

This is Red Hat Linux 7 on x64. The filesystem is XFS, which is apparently
the default filesystem for this distribution.

I'm using GNU tar 1.26, and GNU make 3.82

Tar reports the timestamps in the tarball like this:

$ tar tvzf chicken-4.11.0.tar.gz |grep build-version
-rw-r--r-- sjamaan/sjamaan    3824 2016-05-28 07:49
chicken-4.11.0/build-version.c
-rw-r--r-- sjamaan/sjamaan    2262 2016-05-28 07:48
chicken-4.11.0/build-version.scm

So, the .scm file is older than the .c file, as reported by the tarball.

Indeed, the timestamps of the extracted files look just like this:

$ ls -l build-version.*
-rw-r--r--. 1 tgphelps tgphelps 3824 May 28 07:49 build-version.c
-rw-r--r--. 1 tgphelps tgphelps 2262 May 28 07:48 build-version.scm

And if I ask for detailed timestamps, it still looks okay:

$ ls -la --time-style=full-iso build-version*
-rw-r--r--. 1 tgphelps tgphelps 3824 2016-05-28 07:49:33.000000000 -0400
build-version.c
-rw-r--r--. 1 tgphelps tgphelps 2262 2016-05-28 07:48:08.000000000 -0400
build-version.scm

If I use the make options to show me WHY he's rebuilding things, it says
the following about build-version.c:

Built for x86_64-redhat-linux-gnu
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html
>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Updating goal targets....
 File `all' does not exist.
   File `libchicken.a' does not exist.
     File `build-version-static.o' does not exist.
           File `identify-me' does not exist.
          Must remake target `identify-me'.
Invoking recipe from rules.make:481 to update target `identify-me'.
          Successfully remade target file `identify-me'.
         Prerequisite `identify-me' of target `buildbranch' does not exist.
        Must remake target `buildbranch'.
        Successfully remade target file `buildbranch'.
         Prerequisite `identify-me' of target `buildid' does not exist.
        Must remake target `buildid'.
        Successfully remade target file `buildid'.
         Prerequisite `identify-me' of target `buildtag.h' does not exist.
        Must remake target `buildtag.h'.
        Successfully remade target file `buildtag.h'.
       Prerequisite `buildid' is newer than target `build-version.c'.
       Prerequisite `buildtag.h' is newer than target `build-version.c'.
      Must remake target `build-version.c'.
Invoking recipe from rules.make:561 to update target `build-version.c'.
chicken  build-version.scm -optimize-level 2 -include-path . -include-path
./ -inline -ignore-repository -feature chicken-bootstrap -no-warnings
-specialize -types ./types.db   -explicit-use -no-trace -output-file
build-version.c

Near the end of the above, it says:
       Prerequisite `buildid' is newer than target `build-version.c'.
       Prerequisite `buildtag.h' is newer than target `build-version.c'.

And those two files are indeed newer than the target, so the problem isn't
that build-version.scm is newer, I think. It is that buildid and buildtag.h
are prereqs, and ARE newer:
$ ls -l buildid buildtag.h
-rw-r--r--. 1 tgphelps tgphelps  8 Oct 17 14:36 buildid
-rw-r--r--. 1 tgphelps tgphelps 76 Oct 18 00:15 buildtag.h

I don't know enough about the mechanics of building chicken to debug this
any further, so I'll stop here.

Your suggested workaround of touching build-version.c DOES work.

I will comment that I did this exact same process on another Linux box
(Ubuntu 16.04), and had no problems at all.


On Mon, Oct 17, 2016 at 4:55 PM, Peter Bex <pe...@more-magic.net> wrote:

> On Mon, Oct 17, 2016 at 02:46:18PM -0400, Terry Phelps wrote:
> > I downloaded the 4.11.0 tarball, edited config.make to set PLATFORM and
> > PREFIX, and typed "make" on an ordinary RHEL 7 Linux box.
> >
> > It did a bunch of gcc compiles, and failed with this:
> >
> > chicken  build-version.scm -optimize-level 2 -include-path .
> -include-path
> > ./ -inline -ignore-repository -feature chicken-bootstrap -no-warnings
> > -specialize -types ./types.db   -explicit-use -no-trace -output-file
> > build-version.c
> > make: chicken: Command not found
> > make: *** [build-version.c] Error 127
>
> Hello Terry,
>
> On what kind of file system did you untar?  Which version of tar did
> you use?
>
> There's a known bug on Haiku with BeFS where subsecond granularity is
> not supported, causing "make" to believe that build-version.scm is newer
> or has same timestamp as build-version.c, so it will try to recreate it.
>
> A simple workaround is to first touch build-version.c, then run make.
> But I'd really like to know what's causing this in the first place.
>
> Cheers,
> Peter
>
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to