Date: Tue, 6 Feb 1996 17:20:25 -0700 (MST) From: Terry Lambert <terry@lambert.org> To: nate@sri.MT.net (Nate Williams) Cc: terry@lambert.org, nate@sri.MT.net, rkw@dataplex.net, hackers@FreeBSD.ORG Subject: Re: On keeping a src tree Message-ID: <199602070020.RAA03904@phaeton.artisoft.com> In-Reply-To: <199602062332.QAA05267@rocky.sri.MT.net> from "Nate Williams" at Feb 6, 96 04:32:53 pm
next in thread | previous in thread | raw e-mail | index | archive | help
> > It's failed since day one for me. Of course I started at 2.0.5 and I > > don't "make world" often because I am a kernel hacker, not a utility > > hacker. 8-). > > Hmm, I started with FreeBSD 0.9, and it's always worked for me. But, I > also am a utility hacker and realize when certain things must be updated > in order to keep my tools working. :) Ah. That must be my problem. As a kernel hacker, I live by the premise that "software doesn't mutate". Clearly, I'm being bitten by mutant software ("Fleshy-headed mutant, are you friendly?" "No way, Eh? Radiation has made me the enemy of all mankind"). 8-). > > Specifically, a CVS update with a changed tree failed when the rev on > > the checked-out, changed file was not the same as the updated rev of > > the same file in the tree. > > How can this happen? When you modify a file, neither the CVS entry nor > the ID changes, so they should be in sync. When an update occurs, CVS > attempts to 'patch' the modified file with the changes that were made in > the baseline tree. If that patch fails to apply cleanly, then cvs > doesn't fail but informs you the user that you must manually fix the > problems since it can't be done automatically. Is this the 'failure' > you speak of? No. 1) SUP a CVS tree on a 2.0.5 system using 2.0.5's CVS. 2) check out a source tree. 3) edit a file that you know will change the next time a SUP is done. 4) Do the next SUP, replacing the old file. 5) Attempt a "cvs update" of the tree containing the modified file. 6) Watch CVS puke its guts out because the rev on the line in the CVS/Entries file for the file you changed is less than the rev in the CVS tree, and the file is modified. 7) Update CVS. 8) Disable the client and server code, since 2.0.5 systems don't have "struct MD5Context". 9) Build a new cvs. 10) Attempt a "cvs update" of the tree containing the modified file, this time using the new CVS. 11) Watch it work like it should have worked before. 12) Get in a long discussion about mutating software with Nate. 8-). > > Gross, disgusting, and time consuming. > > Necessary to keep things in sync, since it can't be automated. Why the heck not? We used exactly this procedure with the older version of CVS at Novell without incident. > > I went from a 2.0.5-Release CVS to -current and it fixed it; whatever. > > > > It wants me to install the new headers for the MD5 stuff that the client > > and server use to validate. Specifically, it wants "struct MD5Context", > > which I don't have one of, not having rebuilt the world. > > I thought you went to -current? No. I am running a -current kernel, minimal updated utilities, and I *did not* go to -current on my entire machine. So I don't have the updated header files installed. You see, this is an SMP machine, and most of the time I am running an out of date kernel so that I can use both processors. Not that the source tree should be building using installed header files anyway; it should be using the header files from the source tree. Installed header files are useful only to provide a third-party with a developement environment. > In any case, in the same manner that you must libkvm when the kernel > changes to have working tools, you must also rebuild libraries such > a libmd when the tools which need them are modified. > > Even kernel hackers should be able to do this. :) With respect, this is why "make" has the ability to resolve dependencies; it should be possible for me to not give a damn what has changed beyond the changes I personally cause. When I type "make" it should rebuild everything that needs to be rebuilt, and *only* everything that needs to be rebuilt. Then it should be possible for me to specify an install target other than my important OS, union mount the shadow tree with the modified utils over the unmodified tree (which might be a CDROM) onto /altroot or some other mount point, and then boot the new kernel and chroot to /altroot to test the new stuff out. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199602070020.RAA03904>