From owner-freebsd-arch Sun Oct 17 12:16:51 1999 Delivered-To: freebsd-arch@freebsd.org Received: from ns1.yes.no (ns1.yes.no [195.204.136.10]) by hub.freebsd.org (Postfix) with ESMTP id 4DB6D1504C for ; Sun, 17 Oct 1999 12:16:36 -0700 (PDT) (envelope-from eivind@bitbox.follo.net) Received: from bitbox.follo.net (bitbox.follo.net [195.204.143.218]) by ns1.yes.no (8.9.3/8.9.3) with ESMTP id VAA03830 for ; Sun, 17 Oct 1999 21:16:36 +0200 (CEST) Received: (from eivind@localhost) by bitbox.follo.net (8.8.8/8.8.6) id VAA69268 for freebsd-arch@freebsd.org; Sun, 17 Oct 1999 21:16:35 +0200 (MET DST) Received: from rover.village.org (rover.village.org [204.144.255.49]) by hub.freebsd.org (Postfix) with ESMTP id 2156A14BD3 for ; Sun, 17 Oct 1999 12:16:27 -0700 (PDT) (envelope-from imp@harmony.village.org) Received: from harmony.village.org (harmony.village.org [10.0.0.6]) by rover.village.org (8.9.3/8.9.3) with ESMTP id NAA03441; Sun, 17 Oct 1999 13:16:25 -0600 (MDT) (envelope-from imp@harmony.village.org) Received: from harmony.village.org (localhost.village.org [127.0.0.1]) by harmony.village.org (8.9.3/8.8.3) with ESMTP id NAA04821; Sun, 17 Oct 1999 13:16:02 -0600 (MDT) Message-Id: <199910171916.NAA04821@harmony.village.org> To: Doug Subject: Re: make world issues Cc: Marcel Moolenaar , arch@freebsd.org In-reply-to: Your message of "Sun, 17 Oct 1999 11:58:48 PDT." <380A1C68.BF17ED9F@gorean.org> References: <380A1C68.BF17ED9F@gorean.org> <3808BC30.2699465B@scc.nl>, <199910162136.PAA01266@harmony.village.org> <38099CCB.99EE1C97@scc.nl> Date: Sun, 17 Oct 1999 13:16:01 -0600 From: Warner Losh Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG In message <380A1C68.BF17ED9F@gorean.org> Doug writes: : The simple solution for that problem was already suggested by someone : else, but may have been lost in the noise. You require a define to : incorporate the shims. Make the define a stock part of the "make : upgrade," or whatever we want to call it from 2.2.x/3.x to 4.x, and put : it in UPDATING so that -current -> later -current upgraders can also use : it. While they're there they're harmless, and/or necessary, and once : your system is all upgraded they go away on the next kernel rebuild. I like this. It can even be completely automated. It is a big PITA to have to rebuild a kernel before building world. : With proper comments in the code as to what they are there for, and a : recommended time of nuking (say, one year after 4.0-Release) all of the : admittedly possible scenarios you mention vanish. I've done exactly this : on some other projects I've worked on and never had a problem with it. In a past live, I've shot obsolete APIs in the head with what in FreeBSD would be expressed as #include /* * Allow osignal stuff until FreeBSD 5, which will be one major * release after they are added. */ #if __FreeBSD_version < 500000 extern int osignalbaz(int, ...); #else #error Please delete stale code. #endif This automatically kills osignalbaz when FreeBSD 5 is created and also tells the reader that this was explicitly limited to version < 5. The comments add to this and tell why the magic number 5 was picked. We've never really supported going from major release n to n + 2 in one step, although that has worked from 1.x -> 3.early. I'm not sure that it will still work, however. Combining this technique with the one above would ensure that the code disappears in the future. When the OI library had an API that went out of use, we deleted the code. When I was doing things on the OI library, I didn't use the #else clause above, that just occuring to me as I'm tying here. The argument that shims are evil and will last forever is one of ignorance of techniques to automatically kill them in the future. It is my perception of setting on the sidelines that each time Marcel has been given brief and a simple solution he's come up with a different excuse about why he hasn't provided backwards compatibility. It would be more honest to just say "I don't want to provide backwards compatibility, so you are SOL unless you or someone else wants to do it." There is precidence for this (witness CAM, which even change device names), but what I see as a constantly changing excuse rubs me the wrong way. I believe this will cause the problem to fester rather than being dealt with, imho. Warner To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message