Bug 44016

Summary: 4.7R installworld fails with /usr/obj readonly
Product: Base System Reporter: Jed Clear <clear>
Component: miscAssignee: ru <ru>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   

Description Jed Clear 2002-10-13 18:30:00 UTC
If /usr/obj is mounted read only, make installworld fails during Perl.

Normally I update my firewall by NFS mounting /usr/src and /usr/obj read-only, off a server with a lot more compile horsepower.  [Ever do a buildworld on a 486/66?]  This time, while doing the installworld to upgrade from 4.5p19 to 4.7R, it failed during perl5.

[The following are from notes that I can hardly read so may contain mistakes and the ??? is something I can't read. :-(]
It failed with:
Appending installation info to /usr/libdat/perl/5.00503/mach/perl/???pod===>gnu/usr.bin/perl/library/SBM_FILE
Stop in /usr/obj/usr/src/gnu/usr.bin/perl/library/SDBM_File/ext/SDBM_File/sdbm

Mounting /usr/obj r/w lets the installworld proceed, but seems wrong to me.

This was a freshly SUP'd 4.7R, as of 10/12.

Fix: 

WORKAROUND is to mount /usr/obj read/write.

It looks like the fix will involve how Perl is installed.
How-To-Repeat: Mount /usr/obj readonly
cd /usr/src; make installworld
Comment 1 Sergey N. Voronkov 2002-10-14 09:49:18 UTC
On Sun, Oct 13, 2002 at 10:23:14AM -0700, Jed Clear wrote:
> >Description:
> If /usr/obj is mounted read only, make installworld fails during Perl.
> 
> Normally I update my firewall by NFS mounting /usr/src and /usr/obj read-only, off a server with a lot more compile horsepower.  [Ever do a buildworld on a 486/66?]  This time, while doing the installworld to upgrade from 4.5p19 to 4.7R, it failed during perl5.
> 
> [The following are from notes that I can hardly read so may contain mistakes and the ??? is something I can't read. :-(]
> It failed with:
> Appending installation info to /usr/libdat/perl/5.00503/mach/perl/???pod===>gnu/usr.bin/perl/library/SBM_FILE
> Stop in /usr/obj/usr/src/gnu/usr.bin/perl/library/SDBM_File/ext/SDBM_File/sdbm
> 
> Mounting /usr/obj r/w lets the installworld proceed, but seems wrong to me.
> 
> This was a freshly SUP'd 4.7R, as of 10/12.      
> >How-To-Repeat:
> Mount /usr/obj readonly
> cd /usr/src; make installworld
> >Fix:
> WORKAROUND is to mount /usr/obj read/write.
> 
> It looks like the fix will involve how Perl is installed.

Get your system clock in sync! (Or just run adjkerntz -i after boot if your 
CMOS clock are set to localtime).

Best Regards,

Serg N. Voronkov,
Sibitex JSC.
Comment 2 ru freebsd_committer freebsd_triage 2002-10-14 10:03:34 UTC
State Changed
From-To: open->closed

The usual src/ modtimes / system time mismatch.
Comment 3 Jed Clear 2002-10-15 01:12:43 UTC
The two clocks can't be any more in sync.  I run ntpd on both.  The
firewall acts as NTP server to the fileserver.  The firewall is synched
to an Internet stratum 2 source (not that that matters as we're talking
relative time between the two boxes).

Both have /etc/wall_cmos_clock and run adjkerntz -i in /etc/rc.  The
timezones on both remain at EDT and the firewall keeps the right
timezone when shutdown to single user.

Now theoretically the clocks could drift after the firewall had been
shutdown to single user for the installworld, but that would be a hell
of a drift rate.  I suppose if the 4.5 adjkerntz couldn't work with the
new 4.7 kernel, that could be the problem.  But then I'd expect a lot
more to try to build, or it to fail earlier.

If I'm missing something with time, let me know, otherwise please reopen
the bug.

-Jed
Comment 4 Ceri Davies freebsd_committer freebsd_triage 2002-10-15 09:20:53 UTC
State Changed
From-To: closed->open

Not a clock problem.
Comment 5 ru freebsd_committer freebsd_triage 2002-10-15 11:22:37 UTC
State Changed
From-To: open->closed

I've just checked it here, the upgrade went fine: 

# uname -a 
FreeBSD gatekeeper.sunbay.crimea.ua 4.6-RC FreeBSD 4.6-RC #0: Wed May 29 14:02:28 EEST 2002     root@perl.sunbay.crimea.ua:/usr/obj/usr/src/sys/GATEKEEPER  i386 
# mount 
/dev/da0s1a on / (ufs, local) 
/dev/da0s1f on /usr (ufs, local) 
/dev/da0s1e on /var (ufs, local) 
procfs on /proc (procfs, local) 
perl:/usr/src on /usr/src (nfs, read-only) 
perl:/usr/obj on /usr/obj (nfs, read-only) 
# make installworld installkernel 
# reboot 
# uname -a 
FreeBSD gatekeeper.sunbay.crimea.ua 4.7-STABLE FreeBSD 4.7-STABLE #0: Tue Oct 15 12:36:24 EEST 2002     ru@perl.sunbay.crimea.ua:/usr/obj/usr/src/sys/GATEKEEPER  i386 

Other possible reasons for a failure include: some of the sources 
have modification time set to the future (use find(1)); make.conf 
options on the building and installing hosts do not match.  See 
what ``make -n'' is trying to build in the offending directory. 


Comment 6 ru freebsd_committer freebsd_triage 2002-10-15 11:22:37 UTC
Responsible Changed
From-To: freebsd-bugs->ru