Re: BUG #15525: Build failures when compiling Postgres with Make parallelization
Thomas Munro <thomas.munro@enterprisedb.com>
From: Thomas Munro <thomas.munro@enterprisedb.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: jack@jackkelly.name, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2018-11-29T06:25:50Z
Lists: pgsql-bugs
On Thu, Nov 29, 2018 at 4:25 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Thomas Munro <thomas.munro@enterprisedb.com> writes: > > Nice detective work. Possibly because libtool/ranlib whacks it with > > utime(), which only knows about time_t, here: > > https://github.com/opensource-apple/cctools/blob/master/misc/libtool.c#L2779 > > I suspected as much, but hadn't gone looking for the code. I wonder > why it bothers with any of that... it's certainly not documented > behavior per the man page. As for why Apple make doesn't have the problem, I think it's simply that high resolution timestamp support for Darwin came along ~5 years after Apple forked/froze their make due to the license change. Here's the commit: https://github.com/mirror/make/commit/bfc3e1ca7c0c1504c9873ee1baacce73330b037e As for what could be done about it, it seems like we (or the Nix project, in a local patch) could declare individual targets to have .LOW_RESOLUTION_TIME: https://www.gnu.org/software/make/manual/html_node/Special-Targets.html That doesn't seem any better than using "touch" to make a better mtime though. I'm kinda surprised that the Nix project doesn't have this problem on other projects, though, if they're always using a modern GNU make. What are they doing differently? -- Thomas Munro http://www.enterprisedb.com
Commits
-
Ensure static libraries have correct mod time even if ranlib messes it up.
- fe6ad3bd2c5c 9.5.16 landed
- bac66c6e7cf3 10.7 landed
- 8993d3a10d13 9.6.12 landed
- 826eff57c4c2 12.0 landed
- 0ff56de46eb0 11.2 landed
- 02d310471365 9.4.21 landed