[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SYS:SITE; A novice adminstrator's question



    Date: Thu, 1 Aug 1991 10:45 EDT
    From: delaney@xn.ll.mit.edu (John R. Delaney)

    This question is for seasoned Symbolics network adminstrators. It pertains
    to managing such a network when you have two (or more) Genera versions
    around. 

    It appears from the instructions for system installation that the file
    "SYS:SITE;SYS.TRANSLATIONS" should translate "SYS: **; *.*.*" into 
    "<some host>:>REL-<majo number>-<minor-number>>SYS>**>*.*.*" using
    SET-LOGICAL-PATHNAME-HOST. Fine. 

    It appears from the namespace description that the site object site
    directory attribute should give the translation for "SYS: SITE;", e.g.,
    "<some host>:>SITE>". It would also appear that this translation take
    precedence over the above. That is, if I copied a file to "SYS: SITE;
    FOO.SYSTEM" some time long after booting, it would end up in "<some
    host>:>SITE>FOO.SYSTEM".

Yes, you want it to have precedence. There's all sorts of namespace,
configuration, etc etc info there that you want to preserve across
releases. Maybe the info from the namespace automatically takes
precedence, but I've always included SYS:SITE; in sys.translations for
clarities sake at least.  For that matter, I've always left SYS:FONTS;
in a release independent place, too; it seldom changes. So I end up with
something like this:

(SET-LOGICAL-PATHNAME-HOST
  "SYS"
  :TRANSLATIONS
  (let ((release (multiple-value-bind (major minor)(sct:get-release-version)
		   (format nil "~d.~d" major minor))))
    (selector release string=
      (("8.0" "8.0.1")
       '(("SYS:SITE;  **; *.*.*"    "GEM:>sys>site>**>*.*.*")
	 ("SYS:FONTS; **; *.*.*"    "GEM:>SYS>FONTS>**>*.*.*")
	 ("SYS: **; *.*.*"          "GEM:>Rel-8-0>**>*.*.*")))
      ("8.1"
       '(("SYS:SITE;  **;"        "GEM:>sys>site>**>")
	 ("SYS:FONTS; **; *.*.*"  "GEM:>SYS>FONTS>**>*.*.*")
	 ("SYS:embedding;**;"     ...

Course, there's a lot of `right' ways to do this.  This just happens to
be the way I write it. 

    Is that correct? Is that what one really wants? I can conceive of cases
    where I want a different .SYSTEM file for different Genera releases. 

The usual mode actually _does_ give you a different system definition
file, which is probably what you're thinking.  A typical FOO.SYSTEM file
just has the two lines:

  (fs:make-logical-pathname-host "Doodler")
  (si:set-system-source-file "Doodler" "Doodler:doodler; SYSTEM")

Note that the system source file has a LOGICAL pathname, so it will be
read from a release dependent place -- if you've set up your
translations to be release dependent.  Most FOO.TRANSLATIONS files look
like sys.translations, just a little shorter usually.

Whenever you install a new release, you need to update all the
foo.translations files for various systems you have to add the new
release to the recognized ones. Something like this:

(fs:set-logical-pathname-host
     "DOODLER"
  :translations
  (let ((release (multiple-value-bind (major minor)(sct:get-release-version)
		   (format nil "~d.~d" major minor))))
    (selector release string=
      ("8.0"       '(("Doodler:doodler;**;*.*.*" "gem:>Doodler-3>**>*.*.*")))
      ("8.0.1"     '(("Doodler:doodler;**;*.*.*" "gem:>Doodler-3>**>*.*.*")))
      ("8.1"       '(("Doodler:doodler;**;*.*.*" "gem:>Doodler-3>**>*.*.*")))
      (otherwise
	(ferror "~a is an unknown release or system version.~ 
              Edit SYS:SITE;DOODLER.TRANSLATIONS to add this system." release)))))
Or I could have written
    (selector release string=
      (("8.0" "8.0.1" "8.1")   '(("Doodler:doodler;**;*.*.*" "gem:>Doodler-3>**>*.*.*")))
      (otherwise
	(ferror "~a is an unknown release or system version.~ 
              Edit SYS:SITE;DOODLER.TRANSLATIONS to add this system." release)))
In this case, the same version works for release 8.0, 8.0.1 and 8.1.  If
that weren't the case, you'ld likely copy the previous version to a new
place and change the translation for 8.1 to point to that new directory. 
Maybe;
    (selector release string=
      (("8.0" "8.0.1")   '(("Doodler:doodler;**;*.*.*" "gem:>Doodler-3>**>*.*.*")))
      ("8.1"             '(("Doodler:doodler;**;*.*.*" "gem:>Doodler-4>**>*.*.*")))  
      (otherwise
	(ferror "~a is an unknown release or system version.~ 
              Edit SYS:SITE;DOODLER.TRANSLATIONS to add this system." release)))
Then you'd merrily modify as needed and recompile it.
Since the actual system definition file in this example would be
gem:>doodler-4>system.lisp, I could also modify  the system definition as
needed for the new release.

    Or does the tranbslation specified by the site object site directory
    attribute only applies until the SYS.TRANSLATIONS file is loaded? In that 
    case, I should have only the SYS.TRANSLATION files in the directory
    "<somehost>:>SITE>" and all .SYSTEM and other .TRANSLATIONS file in the
    directory "<some host>:>REL-<majo number>-<minor-number>>SYS>SITE>".
    This makes sense to me. But that is a vote against it being right.

Well, you _could_ (maybe?) override the translation of SYS:SITE; in
sys.translations.  I dont even know if it would `take'. Even if it did,
it would generate more headaches than it's worth.  A lot of programs are
expecting things to be in that standard place.  Its sort of like /etc if
Unux means anything to you!

Also, some packages, Macsyma notably, tend to try to do what you're
refering to in a different way; They often use different *.translations
and *.system files for different releases.  The way they've divide it up
has also varied from release to release.  Maybe they have good reasons,
but it just adds confusion and makes the impossible task of keeping
sys:site; clean that much worse.

    Thanks in advance for your help.

    John

Hope this helps.

bruce
miller@cam.nist.gov