Date: Fri, 3 Mar 95 09:26:59 -0500 From: crtb@helix.nih.gov (Chuck Bacon) To: questions@FreeBSD.org Subject: CDROM usable for building kernel? Message-ID: <9503031426.AA22803@helix.nih.gov>
next in thread | raw e-mail | index | archive | help
I just received O'Reilly's 4.4BSD manual set, with accompanying CDROM of 4.4BSD-Lite. To find out if there's much code in common with FreeBSD2.0R, I decided to compare /cdrom/4.4BSD-Lite/usr/src/sys with /usr/src/sys. So I cobbled a perl script which asks the central question: for each file in the /usr/src/sys tree, is there a matching file in the /cdrom/4.4BSD-Lite/usr/src/sys tree which is identical? If so, it's a candidate to become a symlink and save me some disk space. Well, I was disappointed. Only 11 out of 602 files had identical mates on the /cdrom. Following a sneaking suspicion, I found that if I replace `cmp $a $b` in the script with `diff $a $b` and checked for an output of two or less lines, I had 87 out of 602 files which I could replace with symlinks. A single line has been added to all of the source files, for RCS. It looks like: * stdarg.h,v 1.5 1994/08/02 07:39:09 davidg Exp I'd like someone with a 2.0R FreeBSD CDROM, who is tracking -current or 2.1dev., or any other variant, to run this script, and on a wider tree than /usr/src/sys, perhaps /usr/src. I'd like to know about how much disk space an updated distribution will take, and how that grows over time. Obviously, I could build a 2.0R kernel easily with no disk space, other than symlinks (and binaries of course :-). I guess what I'm interested in is the dynamics of a static CDROM, and the rate at which it becomes obsolete. At the risk of derision for making such grungy code public, here's the script I ran. Rewrite to suit. ======================= #!/usr/local/bin/perl # src-comp.pl # Compare the CDROM and my /usr/src/sys directories, making a table of # similarities and differences. $cdrom = '/cdrom/4.4BSD-Lite/usr/src/sys'; $disk = '/usr/src/sys'; @diskdu = `cd $disk; du`; # Get names of all directories for (@diskdu) { s/^\d+\s+\.\/(.*)\s+/$1/; } # Keep only the names pop (@diskdu); # Discard "Total" line for $d (@diskdu) { # For each directory, get all the plain files $ddir = "$disk/$d"; $cdir = "$cdrom/$d"; chop (@ls = `ls $ddir`); for $file (@ls) { next if -d "$ddir/$file"; if (-r "$ddir/$file" && -r "$cdir/$file") { @result = `diff $ddir/$file $cdir/$file`; if (@result > 2) { push (@nohits, "$d/$file"); } else { push (@hits, "$d/$file"); print "HIT $d/$file\n"; # These 'prints' are volatile. print @result; # I want to see that alleged RCS stuff } } } } open (R,"> report") || die "Can't write report: $!\n"; print R "Hits\n"; for (@hits) { print R ' ', $_, "\n"; } print R "\nChanged files\n"; for (@nohits) { print R ' ', $_, "\n"; } close (R); } ======================= Chuck Bacon - crtb@helix.nih.gov ABHOR SECRECY - DEFEND PRIVACY
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9503031426.AA22803>