From owner-freebsd-hackers Sat Sep 28 20:52:28 1996 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id UAA23105 for hackers-outgoing; Sat, 28 Sep 1996 20:52:28 -0700 (PDT) Received: from who.cdrom.com (who.cdrom.com [204.216.27.3]) by freefall.freebsd.org (8.7.5/8.7.3) with ESMTP id UAA23075 for ; Sat, 28 Sep 1996 20:52:25 -0700 (PDT) Received: from dg-rtp.dg.com (dg-rtp.rtp.dg.com [128.222.1.2]) by who.cdrom.com (8.7.5/8.6.11) with SMTP id UAA16819 for ; Sat, 28 Sep 1996 20:52:20 -0700 (PDT) Received: by dg-rtp.dg.com (5.4R3.10/dg-rtp-v02) id AA01611; Sat, 28 Sep 1996 23:50:02 -0400 Received: from ponds by dg-rtp.dg.com.rtp.dg.com; Sat, 28 Sep 1996 23:50 EDT Received: from lakes.water.net (lakes [10.0.0.3]) by ponds.water.net (8.7.5/8.7.3) with ESMTP id VAA16460; Sat, 28 Sep 1996 21:08:42 -0400 (EDT) Received: (from rivers@localhost) by lakes.water.net (8.7.5/8.6.9) id VAA00289; Sat, 28 Sep 1996 21:08:17 -0400 (EDT) Date: Sat, 28 Sep 1996 21:08:17 -0400 (EDT) From: Thomas David Rivers Message-Id: <199609290108.VAA00289@lakes.water.net> To: rkw@dataplex.net, ponds!ponds!rivers@ucbvax.Berkeley.EDU Subject: Re: NetBSD ==> FreeBSD make(1) Cc: ponds!FreeBSD.org!hackers@ucbvax.Berkeley.EDU Content-Type: text Sender: owner-hackers@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk > > > I've seriously modifed make(1) to "automagically" handle RCS > >repositories, version selection rules, etc... (essentially the > >basis of a rather nice Configuration Management system.) > > > > So, I'd be interested in whatever changes you made... > > And I am interested in what you felt you needed to change in "make" (as > oppesed to the makefiles) to support RCS, etc. > > > I needed to handle the idea of version selection rules; which is cumbersome at best with RCS commands in the makefile itself. That is, I need to have rules such as: retrive the source which: a) Has this symbolic name - if it exists -or- b) Has this symbolic name (a different one) if it exists ... -or- c) Is the latest one -or- d) Is this particular version -or- d) Is the "busy" one (one currently checked out.) This mechanism is similar to how Shape and DSEE (both excellent source & configuration management systems) operate. My changes work by examining the "RULES" environment variable, for example: RULES="exists(version2_1),exists(version2_0),exists(version1_0)" would retrieve a source from RCS that had a tag of 'version2_1' - if that didn't exist, it would find one that had a tag of 'version2_0', if that didn't exist, one that had a tag of 'version1_0'. Using a mechanism like this enabled you to determine just what files go into which version of a product... - Dave Rivers -