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. <== false *** 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.01.18.17.18.22.log
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.
I’m pretty sure I told you it was a bad clock from the beginning, actually 🙂
Neah Kris, ya didn’t. Well, if you did, you didn’t prefix it with my nick so it got lost…. But thanks.
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 🙂
As I said, I searched the FreeBSD mailing lists and didn’t find it. If you can post a URL, that would be helpful. cheers.
Sure, search the archives for ‘Makefile has been rebuilt’…
http://www.freebsd.org/cgi/search.cgi?words=Makefile+has+been+rebuilt&max=25&sort=score&index=recent&source=freebsd-isp&source=freebsd-stable
Don’t over-used FAQs. FAQs are good for some things, but "the right documentation at the right time" is much better. The error message should simply say, "(Note: is your clock set right?)" If this is the problem 90% of the time, I’m sure the other 10% of the people that see this message won’t mind.
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.
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.
-Shaun
True… But it’s the type of mistake you make once.
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.
—
florian
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….
didn’t your mother always tell you to keep your time straight?
Well, the time is critical to a build system. There’s not much you can do about that.
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 🙂
Dave
david@okeby.com
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 🙂
Thanks…
BTW WHY DIDNT I SET THE TIME ON INSTALLATION? 😛
yes, this fixed it. quite nice to know
…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!
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. <==
false
*** 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….
[%sig%]