Jan 162002

Your Makefile has been rebuilt.

Yes, I’ve been butt-ass stupid. But at least you get to hear about it. I don’t worry about admitting my mistakes.

I’ve been trying to track down the cause of a build world problem for a couple of days. I’ve been suspecting hardware errors, -stable errors, etc. I have swapped more ram sticks in and out of this box than you’ve had installs. I didn’t find any solutions on google

The manifestation

Here is the build error I was encountering:

Writing Makefile for DynaLoader
==> Your Makefile has been rebuilt. <==
==> Please rerun the make command.  <==
*** Error code 1

Stop in /usr/obj/usr/src/gnu/usr.bin/perl/perl/ext/DynaLoader.
*** Error code 1

Stop in /usr/src/gnu/usr.bin/perl/perl.
*** Error code 1

Stop in /usr/src/gnu/usr.bin/perl.
*** Error code 1

Stop in /usr/src/gnu/usr.bin.
*** Error code 1

Stop in /usr/src/gnu.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.

A slightly larger log is available here (8KB).

The failed solutions

This box had had problems for about a week. It was a brand new box with 4.4-STABLE on it. It had successfully built world, installed XFree86-4, and been used for some time. Granted, the box did fall over when trying trying to export the slides from Star Office. But I put that down to a buggy Star Office, not X, and not FreeBSD. Then I bought a second box, which would not build world. It started coring, sig 11, etc. That is a classic sign of bad RAM. I was directed to Memtest86 - A Stand-alone Memory Diagnostic. This neat little product will install from either windows or *nix. I actually downloaded the version installable from Windows and DOS. It fits on a floppy. You just boot from it and away it goes. Very nice!

MemTest86 consistently found problems with one stick of ram. So I exchanged that with my local store, and tried again. It was fine. But now the box I had had for some started giving memory failures. Intermittently. And then it started failing build world. It would build with 128MB but not with 256MB (either 1 stick or two sticks). And it didn't matter what memory slots I used. It would fail with 256MB of RAM. That was very suspect. After consulting with the shop, they agreed to replace the motherboard. That's when I started getting the errors which prompted this article.

Once the Writing Makefile for DynaLoader errors started to occur, I started to ask around on IRC. Kris figured it was hardware problems. He has seen that error before, and it was hardware. I was perplexed. Two bad motherboards in a row? It was possible. So I tried swapping the memory around. I had three sticks (2x128MB and 1x256MB) so I started using all combinations of those. I ran out of options. The build failed repeatedly.

mux started me looking at times on files etc. He suspected that the access time was somehow screwed up. Well, he was right. I started looking at the access times for the files which the Makefile was looking at. We found this:

-rw-r--r-- 1 root wheel 133556 Jan 18 18:38:37 2000 Config.pm
-rw-r--r-- 1 root wheel  67988 Jan 18 18:38:36 2000 config.h

Yeah, OK, the times match up. That's about when the build world stopped... Then I checked the build log file which was created using my build world script:

# ls -lt | head /usr/tmp
-rw-r--r-- 1 root wheel 9405257 Jan 18 2000 bw.2000.

That's when the light bulb went on. 2000? The date is wrong! DOH!

The solution

After a short discussion with mux, we decided to set the time on the box, and start the build again.

It worked.

Please, if you came here with the same problem, Post a comment below so we know if the problem is solved the same way. Thanks.

  18 Responses to “Your Makefile has been rebuilt.”

  1. I’m pretty sure I told you it was a bad clock from the beginning, actually 🙂

  2. Actually I have answered that question at least a half-dozen times on various mailing lists; it should probably be in the FAQ by now 🙂

  3. Someone just asked about that. Why weren’t you running ntp? Good point.

    The box was in the process of being set up. I usually don’t do that until the box is up and running on the network. At the time, the box was sitting standalone trying to get it up to 4.4-stable. With all the ram swapping and motherboard switching, it was sitting on a table away from the network. It was after putting in the new motherboard that I set the time incorrectly.

  4. Hey, I had the exact same thing happen with the clock being set wrong on a friends box. Eventually I figured it out. I guess the time+date of the PC’s clock isnt the first thing you would suspect when something fails like this.


  5. Wow, guys, I am really happy to see you do the same crazy stuff I had probs with… 😉
    Worked on it for days but didn’t see something:
    Installed a brand new box and wondered why it didn’t do things right, but it turned out to depend on this….
    Didn’t turn to the right date, when I first copied the /bin to the box, but had something around 2000 and so he wondered how there could be those "futuristic" 4.4-stable files :-/
    Greetz from Germany.


  6. I had the same problem, and it was quite frustrating. I did find an article on groups.google.com which allowed me to fix it.

    Perhaps the buildworld process should be less sensitive about trivial things like the date on a file….

  7. Hi,

    I ran in to the same problem trying to install mySQL. I checked the times, blew away /usr/obj and reset the xargs on /src and /ports.

    It did not fix a thing and in the end all i had to do was cvsup again 🙂


  8. It seemed like I was reading my own post, we had just built a server with FreeBSD-4.5-RELEASE. Then it would constantly crash on anything other than 128MB RAM. Replaced the RAM, Motherboard and Hard Drives. Still it wouldnt work (it also failed when booting with VESA support). Then I started to encounter this Makefile has been rebuilt error, I found it here first and smacked my head against the wall 🙂



  9. yes, this fixed it. quite nice to know

  10. …of students, some had the problem and others not, width same machines…
    After full BIOS setup, it was solved, but never we knew what was. Thanks for the article, take out us from doubts!

  11. Hello,

    I have got the same error. " Your Makefile has been rebuilt."

    This is the way I solved it ..

    The error:

    Makefile out-of-date with respect to /usr/local/lib/perl5/5.8.8/mach/Config.pm /usr/local/lib/perl5/5.8.8/mach/CORE/config.h
    Cleaning current config before rebuilding Makefile…

    Writing Makefile for Locale::gettext
    ==> Your Makefile has been rebuilt. <==
    ==> Please rerun the make command. <==
    *** Error code 1

    After searching forums I found it was due to time error ( changing server time after cvsup…)

    I checked the time of creation of the files in error.

    ls -l /usr/local/lib/perl5/5.8.8/mach/Config.pm
    -r–r–r– 1 root wheel 2572 Apr 6 02:59 Config.pm

    ls -l /usr/local/lib/perl5/5.8.8/mach/CORE/config.h

    -r–r–r– 1 root wheel 135964 Apr 6 02:59 config.h

    ls -l /usr/ports/devel/p5-Locale-gettext/Makefile
    -rw-r–r– 1 root wheel 575 Apr 6 02:17 Makefile

    from the out put we can clearly find out that the Makefile(02:17) for gettext was created before Config.pm( 02:59) and config.h(02:59)

    What I did was :

    cd /usr/ports/devel/p5-Locale-gettext

    mv Makefile Makefile.bak

    cat Makefile.bak > Makefile

    so the make file got latest creation timestamp.

    Then gone back to php extensions port directory and run make install clean again…

    Everything worked smoothly….