home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume18 / libhoward / patch01b < prev    next >
Internet Message Format  |  1991-04-10  |  56KB

  1. From: howard@ericsson.se (Howard Gayle)
  2. Newsgroups: comp.sources.misc
  3. Subject: v18i008:  libhoward - libhoward portability library, Patch01b/3
  4. Message-ID: <1991Apr10.041031.3926@sparky.IMD.Sterling.COM>
  5. Date: 10 Apr 91 04:10:31 GMT
  6. Approved: kent@sparky.imd.sterling.com
  7. X-Checksum-Snefru: 2bbe0ff5 fed0ba69 fce0d845 97fb6198
  8.  
  9. Submitted-by: Howard Gayle <howard@ericsson.se>
  10. Posting-number: Volume 18, Issue 8
  11. Archive-name: libhoward/patch01b
  12. Patch-To: libhoward: Volume 8, Issue 80-87,96
  13.  
  14. #! /bin/sh
  15. # This is a shell patch script from revision 1.7 to revision 2.3.
  16. # Remove anything before this line, then feed it into a shell, for
  17. # example by typing "sh file".  This script was created by:
  18. # $Header: freezePch.b,v 1.2 89/09/25 07:01:13 howard Exp $
  19. #
  20. patch -c MakeCommon << 'EOF'
  21. ***************
  22. *** 1,6 ****
  23.   # MakeCommon - common definitions for uMakefile and Makefile for howard
  24.   #
  25. ! # $Header: MakeCommon,v 1.3 89/09/22 13:46:45 howard Exp $
  26.   #
  27.   # Copyright 1989 Howard Lee Gayle
  28.   # This file is written in the ISO 8859/1 character set.
  29. --- 1,6 ----
  30.   # MakeCommon - common definitions for uMakefile and Makefile for howard
  31.   #
  32. ! # $Header: /usr/local/dist/free-dist/howard/2/work/RCS/MakeCommon,v 1.4 91/02/27 08:52:33 howard Exp $
  33.   #
  34.   # Copyright 1989 Howard Lee Gayle
  35.   # This file is written in the ISO 8859/1 character set.
  36. ***************
  37. *** 40,46 ****
  38.   
  39.   
  40.   # C include file search path.
  41. ! INCLUDES=-I/usr/local/local-include -I/usr/local/free/howard/1/include
  42.   
  43.   # Special C programs.  These are *not* library functions.
  44.   SCS = mk-smp.c
  45. --- 40,46 ----
  46.   
  47.   
  48.   # C include file search path.
  49. ! INCLUDES=-I/usr/local/local-include -I/f/howard/2/include
  50.   
  51.   # Special C programs.  These are *not* library functions.
  52.   SCS = mk-smp.c
  53. EOF
  54.  
  55. patch -c Makefile << 'EOF'
  56. ***************
  57. *** 1,8 ****
  58.   # Makefile - main GNU make file for -lhoward and include/howard
  59.   #
  60. ! # $Header: Makefile,v 1.24 89/09/23 15:23:28 howard Exp $
  61.   #
  62. ! # Copyright 1989 Howard Lee Gayle
  63.   # This file is written in the ISO 8859/1 character set.
  64.   #
  65.   # This program is free software; you can redistribute it and/or modify
  66. --- 1,8 ----
  67.   # Makefile - main GNU make file for -lhoward and include/howard
  68.   #
  69. ! # $Header: /usr/local/dist/free-dist/howard/2/work/RCS/Makefile,v 1.25 91/02/26 14:25:51 howard Exp $
  70.   #
  71. ! # Copyright 1989, 1991 Howard Lee Gayle
  72.   # This file is written in the ISO 8859/1 character set.
  73.   #
  74.   # This program is free software; you can redistribute it and/or modify
  75. ***************
  76. *** 86,94 ****
  77.   
  78.   # Bourne shell files.
  79.   BS := $(filter %.b,$(SRCS))
  80. - # BibTeX bibliography file.
  81. - BIBS := $(filter %.bib,$(SRCS))
  82.   
  83.   # BibTeX bibliography file.
  84.   BIBS := $(filter %.bib,$(SRCS))
  85. --- 86,91 ----
  86. EOF
  87.  
  88. patch -c README << 'EOF'
  89. ***************
  90. *** 1,4 ****
  91. ! $Header: README,v 1.3 89/09/23 15:25:11 howard Exp $
  92.   
  93.         DESCRIPTION
  94.   
  95. --- 1,4 ----
  96. ! $Header: /usr/local/dist/free-dist/howard/2/work/RCS/README,v 1.7 91/04/03 13:19:03 howard Exp $
  97.   
  98.         DESCRIPTION
  99.   
  100. ***************
  101. *** 14,19 ****
  102. --- 14,26 ----
  103.   This is described in a LaTeX report.
  104.   
  105.   
  106. +       LICENSE
  107. + The C library is currently under the GNU General Public
  108. + License.  I intend to place it under the GNU library license
  109. + when that is released.
  110.         RATIONALE
  111.   
  112.   Many people make each software system they release stand-alone,
  113. ***************
  114. *** 34,63 ****
  115.   
  116.   ANSI-C float.h and limits.h include files must be on the C
  117.   include file search path.  If you don't have them, you can use
  118. ! Steven Pemberton's config program to make one.  It was posted to
  119. ! comp.sources.misc on 30 April 1989 as volume 6 issue 96, archive
  120. ! name config2.
  121.   
  122. ! The makefiles use features that may only be in GNU make, version
  123. ! 3.54 or later.
  124.   
  125.   Chris Tweed's sets command must be on the command search path.
  126.   It was posted to comp.sources.unix on 24 February 1988 as volume
  127.   13, issue 68, archive name sets.
  128.   
  129. ! Some of the documentation is in LaTeX.
  130.   
  131.   The Bourne shell scripts use if [...] syntax instead of explicit
  132. ! calls to test.  You might need to link test to [ to make this
  133. ! work.
  134.   
  135.   
  136.         INSTALLATION
  137.   
  138. ! It will be much easier to understand the installation if you
  139. ! first read my report.  It is in the LaTeX source file
  140. ! hetero.tex.  If you have LaTeX installed, you can format it like
  141. ! this.
  142.      % latex hetero
  143.      % bibtex hetero
  144.      % latex hetero
  145. --- 41,91 ----
  146.   
  147.   ANSI-C float.h and limits.h include files must be on the C
  148.   include file search path.  If you don't have them, you can use
  149. ! Steven Pemberton's enquire program to make them.  It was posted
  150. ! to comp.sources.misc on 16 December 1990 as volume 15 issue 95,
  151. ! archive name enquire-4.3.
  152.   
  153. ! The makefiles work with GNU make version 3.59, and I hope
  154. ! they'll continue to work with later versions of GNU make.  The
  155. ! makefiles won't work with SunOS 4.0 or 4.1 make.  I suspect that
  156. ! only GNU make has all the required features, but I haven't tried
  157. ! all other makes, so I can't be sure.  GNU make can be ordered
  158. ! from:
  159. !    Free Software Foundation, Inc.
  160. !    675 Mass Ave
  161. !    Cambridge, MA 02139
  162. !    USA
  163.   
  164.   Chris Tweed's sets command must be on the command search path.
  165.   It was posted to comp.sources.unix on 24 February 1988 as volume
  166.   13, issue 68, archive name sets.
  167.   
  168. ! The yrkw.c file includes <tzfile.h> in order to get the macro
  169. ! TM_YEAR_BASE.  If your system does not have
  170. ! /usr/include/tzfile.h then create this one-line version of
  171. ! tzfile.h and place it somewhere on the include search path, e.g.
  172. ! /usr/local/include:
  173.   
  174. + #define TM_YEAR_BASE 1900
  175. + Some of the documentation is in LaTeX.  The latest UNIX TeX
  176. + distribution tape, including LaTeX, can be ordered from:
  177. +    Northwest Computing Support Center
  178. +    DR-10, Thomson Hall 35
  179. +    University of Washington
  180. +    Seattle, Washington 98195
  181. +    USA
  182.   The Bourne shell scripts use if [...] syntax instead of explicit
  183. ! calls to the test command.  You might need to link test to [ in
  184. ! order to make this work.
  185.   
  186.   
  187.         INSTALLATION
  188.   
  189. ! It will be easier to understand the installation if you first
  190. ! read my report.  It is in the LaTeX source file hetero.tex.  If
  191. ! you have LaTeX installed, you can format it like this:
  192.      % latex hetero
  193.      % bibtex hetero
  194.      % latex hetero
  195. ***************
  196. *** 70,83 ****
  197.   below.
  198.   
  199.   Create a directory for compiling on this machine type.  I'll
  200. ! call it /usr/local/free/howard.
  201.   
  202.   Find out the version.  Look at the Header line (typically the
  203. ! first line) of the FREEZE file.  The version is the first
  204. ! number, and ends at the period.
  205.   
  206. ! Create a subdirectory for this version. e.g.
  207. ! /usr/local/free/howard/1.
  208.   
  209.   Create the following subdirectories for results:
  210.      bin             Installed Bourne shell scripts.
  211. --- 98,112 ----
  212.   below.
  213.   
  214.   Create a directory for compiling on this machine type.  I'll
  215. ! call it /f/howard.
  216.   
  217.   Find out the version.  Look at the Header line (typically the
  218. ! first line) of the FREEZE file.  The version is the first number
  219. ! after the path name, and ends at the period.  For example, this
  220. ! line has version 2:
  221. !    Header: /usr/local/free-dist/howard/2/work/RCS/FREEZE,v 2.1 91/02/26 09:45:19 howard Exp
  222.   
  223. ! Create a subdirectory for this version. e.g. /f/howard/2.
  224.   
  225.   Create the following subdirectories for results:
  226.      bin             Installed Bourne shell scripts.
  227. ***************
  228. *** 89,151 ****
  229.      tex             Installed TeX & LaTeX macro files.
  230.   
  231.   For example:
  232. !    % cd /usr/local/free/howard/1
  233.      % mkdir bin include include/howard man man/{cat,man}{1,3} tex
  234.      
  235. ! Create a subdirectory for doing the actual compilations.  I'll
  236. ! call it sun34:
  237. !    % mkdir sun34
  238.   
  239. ! Bootstrap the Bourne shell scripts into their installation
  240. ! directory.  Let $DD be where the master source is:
  241.      % cp $DD/*.b bin
  242.      % cd bin
  243.      % /bin/ls -1 | sed -e 's;\.b$;;' | xargs -i= -t mv =.b =
  244.      % chmod +x *
  245.      % cd ..
  246. !    
  247.   If you want to override the behavior of any of the Bourne shell
  248.   scripts for portability or because of different local policies,
  249.   this is a good time to do so.  I suggest putting locally changed
  250.   copies in a separate bin directory that is on the command search
  251.   path *before* the bin directory in which the scripts will be
  252. ! installed, e.g. create /usr/local/free/howard/1/local-bin, and
  253. ! put it on the command search path before
  254. ! /usr/local/free/howard/1/bin.  Here is a guide to possible local
  255. ! changes:
  256.   
  257. !    mkAr  This makes the ar archive library.  It is very BSDish
  258. !          and must change for the `lorder $* | tsort` crowd.
  259.   
  260. !    mkCIncl    These both assume that calling /lib/cpp -M is the
  261. !    mkLibIncl  way to find out what include files a C source
  262. !               file uses.  Change them if that's wrong for your
  263. !               system.
  264.   
  265. !    mkDistI  This is how files get from the master source
  266. !             directory to the compilation directory.  I use
  267. !             symbolic links.
  268.   
  269. !    mkInstF  This is how non-executable files get installed.  I
  270. !             use hard links.  Shell scripts count as
  271. !             non-executable.
  272.   
  273. !    mkInstX  This is how executable files get installed.  I
  274. !             use hard links.  This would be the place to strip
  275. !             symbol tables.  Shell scripts are *not* considered
  276. !             to be executable.
  277.   
  278. !    mkLaTeXPS  This formats a LaTeX file, including BibTeX
  279. !               processing, all the way to a printable
  280. !               representation, which for me is PostScript.  If
  281. !               you want some other final format, I would suggest
  282. !               writing a separate shell script.
  283. !             
  284. !    mkManPS  This formats a manual entry to PostScript, using
  285. !             TransScript.  If you have some other way to format
  286. !             manual entries, I would suggest writing a separate
  287. !             shell script.
  288.   
  289.   If you write original software with these tools, you may also
  290.   want to change mkDistO, which places files in the distribution
  291.   directory.  I use hard links for this.  Also, the following are
  292. --- 118,210 ----
  293.      tex             Installed TeX & LaTeX macro files.
  294.   
  295.   For example:
  296. !    % cd /f/howard/2
  297.      % mkdir bin include include/howard man man/{cat,man}{1,3} tex
  298.      
  299. ! Create a subdirectory for doing the actual compilations.  For
  300. ! my example, I'll use sun3-411, corresponding to a Sun-3 running
  301. ! SunOS 4.1.1:
  302. !    % mkdir sun3-411
  303.   
  304. ! Install the Bourne shell scripts into the correct destination
  305. ! directory.  The first two bytes of each .b file are spaces; this
  306. ! normally causes the Bourne shell to interpret them, regardless
  307. ! of whether the UNIX version handles #! at the beginning of an
  308. ! executable.  So normally, it's only necessary to copy foo.b to
  309. ! foo, then make foo executable.  For example, let DD be a shell
  310. ! variable containing a full path to the master source directory:
  311.      % cp $DD/*.b bin
  312.      % cd bin
  313.      % /bin/ls -1 | sed -e 's;\.b$;;' | xargs -i= -t mv =.b =
  314.      % chmod +x *
  315.      % cd ..
  316. ! On some systems it may be necessary to insert a
  317. !    #!/bin/sh
  318. ! line at the beginning of each executable.  In that case, you can
  319. ! use a simple Bourne shell program like this:
  320. !    #!/bin/sh
  321. !    for f
  322. !    do
  323. !       p=`basename "$f" .b`
  324. !       echo '#!/bin/sh' > "$p"
  325. !       cat "$f" >> "$p"
  326. !    done
  327. ! Suppose this program is in the file binstall.  Then you'd use
  328. ! these commands instead:
  329. !    % cd bin
  330. !    % binstall $DD/*.b
  331. !    % chmod +x *
  332. !    % cd ..
  333.   If you want to override the behavior of any of the Bourne shell
  334.   scripts for portability or because of different local policies,
  335.   this is a good time to do so.  I suggest putting locally changed
  336.   copies in a separate bin directory that is on the command search
  337.   path *before* the bin directory in which the scripts will be
  338. ! installed, e.g. create /f/howard/2/local-bin, and put it on the
  339. ! command search path before /f/howard/2/bin.  Then, when
  340. ! installing the next version, you don't have to remember which
  341. ! programs in /f/howard/2/bin you changed locally; you just copy
  342. ! everything in /f/howard/2/local-bin into /f/howard/3/local-bin.
  343. ! Here is a guide to possible local changes:
  344.   
  345. !    mkAr        This makes the ar archive library.  It is very BSDish
  346. !                and must change for the `lorder $* | tsort` crowd.
  347.   
  348. !    mkCIncl     These both assume that calling /lib/cpp -M is the
  349. !    mkLibIncl   way to find out what include files a C source
  350. !                file uses.  Change them if that's wrong for your
  351. !                system.
  352.   
  353. !    mkDistI     This is how files get from the master source
  354. !                directory to the compilation directory.  I use
  355. !                symbolic links.
  356.   
  357. !    mkInstF     This is how non-executable files get installed.  I
  358. !                use hard links if possible, otherwise copies.
  359. !                Shell scripts count as non-executable.
  360.   
  361. !    mkInstX     This is how binary executable files get installed.
  362. !                I use hard links.  This would be the place to strip
  363. !                symbol tables.  Shell scripts are *not* considered
  364. !                to be executable.
  365.   
  366. !    mkLaTeXPS   This formats a LaTeX file, including BibTeX
  367. !                processing, all the way to a printable
  368. !                representation, which for me is PostScript.  If
  369. !                you want some other final format, I would suggest
  370. !                writing a separate shell script.  The FMTLATEX
  371. !                make variable has the name of this command as its
  372. !                value.
  373.   
  374. +    mkManPS     This formats a manual entry to PostScript, using
  375. +                TransScript.  As with mkLaTeXPS, if
  376. +                you want some other final format, I would suggest
  377. +                writing a separate shell script.  The FMTMAN
  378. +                make variable has the name of this command as its
  379. +                value.
  380.   If you write original software with these tools, you may also
  381.   want to change mkDistO, which places files in the distribution
  382.   directory.  I use hard links for this.  Also, the following are
  383. ***************
  384. *** 156,173 ****
  385.   Set up the command search path to pick up the Bourne shell
  386.   scripts.  Rehash if necessary.
  387.   
  388. ! Change directory into the actual compilation directory, e.g.  cd
  389. ! sun34.
  390.   
  391.   Create an mk shell file.  Make it executable.  Here's a starting
  392.   point for SunOS 4.x:
  393.   
  394. ! DD=/usr/local/free-dist/howard/1/dist
  395.   SRCS=`cd $DD; echo *`
  396.   RM='rm -f'
  397.   export DD SRCS RM
  398. ! make -f uMakefile
  399. ! exec make \
  400.      CATMAN=catman \
  401.      FMTLATEX=mkLaTeXPS \
  402.      FMTMAN=mkManPS \
  403. --- 215,233 ----
  404.   Set up the command search path to pick up the Bourne shell
  405.   scripts.  Rehash if necessary.
  406.   
  407. ! Change directory into the actual compilation directory, e.g.
  408. !    % cd sun3-411.
  409.   
  410.   Create an mk shell file.  Make it executable.  Here's a starting
  411.   point for SunOS 4.x:
  412.   
  413. ! #!/bin/sh
  414. ! DD=/usr/local/free-dist/howard/2/dist
  415.   SRCS=`cd $DD; echo *`
  416.   RM='rm -f'
  417.   export DD SRCS RM
  418. ! make -e -f uMakefile
  419. ! exec make -e \
  420.      CATMAN=catman \
  421.      FMTLATEX=mkLaTeXPS \
  422.      FMTMAN=mkManPS \
  423. ***************
  424. *** 174,194 ****
  425.      SLT=libhoward.so.`cat FREEZE.version` \
  426.      $*
  427.   
  428.   If you don't have a catman command, drop that line.  FMTLATEX
  429.   should be the name of a command to turn LaTeX source into
  430.   whatever your printer prints; if you don't have one just drop
  431.   it.  Likewise, FMTMAN should be the name of a command to turn
  432.   manual entries into printable form.  If you don't have shared
  433. ! libraries, drop the SLT= line.  Add any local changes you need
  434. ! here.  If your C compiler doesn't understand different
  435. ! optimization levels, add CFLAGS=-O as an argument to the last
  436. ! make.
  437.   
  438.   Here is an alternate mk file for a system using GCC, and with
  439.   results installed in more conventional places:
  440.   
  441. ! DD=/usr/local/free-dist/howard/1/dist
  442.   SRCS=`cd $DD; echo *`
  443.   CC=gcc
  444.   CFLAGS='-g -O -traditional'
  445. --- 234,266 ----
  446.      SLT=libhoward.so.`cat FREEZE.version` \
  447.      $*
  448.   
  449.   If you don't have a catman command, drop that line.  FMTLATEX
  450.   should be the name of a command to turn LaTeX source into
  451.   whatever your printer prints; if you don't have one just drop
  452.   it.  Likewise, FMTMAN should be the name of a command to turn
  453.   manual entries into printable form.  If you don't have shared
  454. ! libraries, drop the SLT= line.
  455.   
  456. + The mk shell script is the place to override any make
  457. + variables.  Theoretically, you should never need to change the
  458. + MakeCommon, uMakefile, and Makefile files.  MakeCommon contains
  459. + a few make variables used by both uMakefile and Makefile; it is
  460. + included by both.  To override these, it is often easiest to
  461. + define them as environment variables exported from mk.  For
  462. + example, the make variable RM is defined in MakeCommon, and
  463. + overridden in the mk example above.  For make variables only
  464. + used in one of the makefiles (either uMakefile or Makefile but
  465. + not both), it's usually easier to pass the override value as a
  466. + command line argument to make.  You can read through MakeCommon
  467. + and the first parts of uMakefile and Makefile to see what you
  468. + need to override.  For example, if your C compiler doesn't
  469. + understand different optimization levels, add CFLAGS=-O as an
  470. + argument to the last make.
  471.   Here is an alternate mk file for a system using GCC, and with
  472.   results installed in more conventional places:
  473.   
  474. ! DD=/usr/local/free-dist/howard/2/dist
  475.   SRCS=`cd $DD; echo *`
  476.   CC=gcc
  477.   CFLAGS='-g -O -traditional'
  478. ***************
  479. *** 195,202 ****
  480.   INCLUDES=-I/usr/local/include
  481.   RM='rm -f'
  482.   export DD SRCS CC CFLAGS INCLUDES RM
  483. ! make -f uMakefile
  484. ! exec make \
  485.      AID=/usr/local/lib \
  486.      BID=/usr/local/bin \
  487.      CATMAN=catman \
  488. --- 267,274 ----
  489.   INCLUDES=-I/usr/local/include
  490.   RM='rm -f'
  491.   export DD SRCS CC CFLAGS INCLUDES RM
  492. ! make -e -f uMakefile
  493. ! exec make -e \
  494.      AID=/usr/local/lib \
  495.      BID=/usr/local/bin \
  496.      CATMAN=catman \
  497. ***************
  498. *** 226,232 ****
  499.   and can't do.  It will also echo the values of a bunch of make
  500.   variables.  That's normal.
  501.   
  502. ! Check out all the generated include files (*.i).  Make sure they
  503.   look reasonable.
  504.   
  505.   Install the include files:
  506. --- 298,304 ----
  507.   and can't do.  It will also echo the values of a bunch of make
  508.   variables.  That's normal.
  509.   
  510. ! Look at all the generated include files (*.i).  Make sure they
  511.   look reasonable.
  512.   
  513.   Install the include files:
  514. ***************
  515. *** 246,257 ****
  516.   Running "mk test" will compile all the test drivers.  A few of
  517.   the test drivers even do marginally useful things.
  518.   
  519. ! Run "mk install" and you're finished.
  520.   
  521.   
  522.         ANOMALIES
  523.   
  524. ! GNU make is still (at version 3.54) somewhat buggy.  It does not
  525.   always pick up environment variables, so it is sometimes
  526.   necessary to rewrite mk to pass them as command line arguments
  527.   instead.  Run "mk vars" to check that everything is all right.
  528. --- 318,335 ----
  529.   Running "mk test" will compile all the test drivers.  A few of
  530.   the test drivers even do marginally useful things.
  531.   
  532. ! Run "mk install" and you're finished.  (Except that, if you're
  533. ! using my "version 0" convention, then you need to set up a
  534. ! symbolic link for it, e.g.:
  535. !    % cd ../..
  536. !    % rm -f 0
  537. !    % ln -s 2 0
  538. ! This makes version 0 point to version 2.)
  539.   
  540.   
  541.         ANOMALIES
  542.   
  543. ! GNU make is still (at version 3.59) somewhat buggy.  It does not
  544.   always pick up environment variables, so it is sometimes
  545.   necessary to rewrite mk to pass them as command line arguments
  546.   instead.  Run "mk vars" to check that everything is all right.
  547. ***************
  548. *** 261,282 ****
  549.   around this is to replace command foo by "env - foo".  I needed
  550.   to do this for ranlib in SunOS 4.0.1.  It was OK in 4.0.3.
  551.   Also, the Bourne shell sometimes seems to suffer from an excess
  552. ! of environment variables.  Using the C shell instead is a
  553. ! possible workaround, e.g. pass SHELL=/usr/bin/csh on the command
  554. ! line.  (IMHO, GNU make needs some way to indicate which
  555.   variables should and should not be exported, e.g. something like
  556.   "export" in the Bourne shell.)
  557.   
  558.   The documentation for atof(3) says errno is set to ERANGE on
  559.   overflow and underflow.  In SunOS 4.0.1, and perhaps other
  560. ! systems, errno is also sometimes set even without overflow, e.g.
  561. ! on an input of 0.  As a workaround, pass DEFS=-DBADATOF to the
  562. ! last make in mk.  This skips the check of errno.  Unfortunately,
  563. ! this means overflow is *never* detected.  This bug *seems* to
  564. ! have been fixed in SunOS 4.0.3.
  565.   --
  566.   Howard Gayle
  567. ! TN/ETX/T/BG
  568.   Ericsson Telecom AB
  569.   S-126 25 Stockholm
  570.   Sweden
  571. --- 339,373 ----
  572.   around this is to replace command foo by "env - foo".  I needed
  573.   to do this for ranlib in SunOS 4.0.1.  It was OK in 4.0.3.
  574.   Also, the Bourne shell sometimes seems to suffer from an excess
  575. ! of environment variables.  Using BASH or the C shell instead is
  576. ! a possible workaround, e.g. pass SHELL=/usr/bin/csh on the
  577. ! command line.  (IMHO, GNU make needs some way to indicate which
  578.   variables should and should not be exported, e.g. something like
  579.   "export" in the Bourne shell.)
  580.   
  581.   The documentation for atof(3) says errno is set to ERANGE on
  582.   overflow and underflow.  In SunOS 4.0.1, and perhaps other
  583. ! systems, errno is also sometimes set even without overflow,
  584. ! e.g.  on an input of 0.  As a workaround, pass DEFS=-DBADATOF to
  585. ! the last make in mk.  This skips the check of errno.
  586. ! Unfortunately, this means overflow is *never* detected.  This
  587. ! bug *seems* to have been fixed in SunOS 4.0.3.
  588. !       WHY NOT JUST NON-COMMERCIAL USE?
  589. ! When I released version 1, several people wrote to me to argue
  590. ! that I should not use the GNU license but instead a simple
  591. ! statement that copying for non-commercial or non-profit use is
  592. ! permitted.  One of the reasons I used the GNU license instead
  593. ! is that I did not want to prevent anyone from making money from
  594. ! my software.  On the contrary, I'd be delighted to hear that
  595. ! people make money from my software.
  596.   --
  597.   Howard Gayle
  598. ! Up to 9 April 1991:
  599. ! TN/ETX/TG/HL
  600.   Ericsson Telecom AB
  601.   S-126 25 Stockholm
  602.   Sweden
  603. ***************
  604. *** 283,286 ****
  605.   howard@ericsson.se
  606.   uunet!ericsson.se!howard
  607.   Phone: +46 8 719 5565
  608. ! FAX  : +46 8 719 9598
  609. --- 374,388 ----
  610.   howard@ericsson.se
  611.   uunet!ericsson.se!howard
  612.   Phone: +46 8 719 5565
  613. ! FAX  : +46 8 719 8439
  614. ! After 9 April 1991:
  615. ! HaL Computer Systems, Inc.
  616. ! 1315 Dell Avenue
  617. ! Campbell, California 95008
  618. ! USA
  619. ! Phone: +1 408 379 7000
  620. ! FAX  : +1 408 379 5022
  621. ! Unfortunately, HaL isn't on the Net yet; when it does get on
  622. ! the Net, my email address will probably be something like
  623. ! howard@hal.com.
  624. EOF
  625.  
  626. patch -c a2.3 << 'EOF'
  627. ***************
  628. *** 1,5 ****
  629. ! .\" $Header: a2.3,v 1.2 89/08/10 13:53:23 howard Exp $
  630. ! .TH A2 "3 -lhoward" "$Revision: 1.2 $" "Howard\'s C library" "Howard\'s C library"
  631.   .SH NAME
  632.   a2 \- convert Ada-syntax numeric literals to internal representations
  633.   .SH SYNOPSIS
  634. --- 1,5 ----
  635. ! .\" $Header: /usr/local/dist/free-dist/howard/2/work/RCS/a2.3,v 1.3 91/02/27 05:44:52 howard Exp $
  636. ! .TH A2 "3 -lhoward" "$Revision: 1.3 $" "Howard\'s C library" "Howard\'s C library"
  637.   .SH NAME
  638.   a2 \- convert Ada-syntax numeric literals to internal representations
  639.   .SH SYNOPSIS
  640. ***************
  641. *** 372,384 ****
  642.   along with this program; if not, write to the Free Software
  643.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  644.   .SH AUTHOR
  645. ! Howard Gayle,
  646. ! TN/ETX/T/BG,
  647. ! Ericsson Telecom AB,
  648. ! S-126 25 Stockholm,
  649. ! Sweden,
  650. ! howard@ericsson.se,
  651. ! uunet!ericsson.se!howard,
  652. ! Phone: +46 8 719 5565,
  653. ! FAX: +46 8 719 9598,
  654. ! Telex: 14910 ERIC S
  655. --- 372,375 ----
  656.   along with this program; if not, write to the Free Software
  657.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  658.   .SH AUTHOR
  659. ! Howard Gayle
  660. EOF
  661.  
  662. patch -c b.bib << 'EOF'
  663. ***************
  664. *** 1,9 ****
  665.   % b.bib - bibliography
  666.   %
  667. ! % Copyright 1989 Howard Lee Gayle
  668.   % This file is written in the ISO 8859/1 character set.
  669.   %
  670. ! % $Header: b.bib,v 1.1 89/09/20 12:35:29 howard Exp $
  671.   %
  672.   % This program is free software; you can redistribute it and/or modify
  673.   % it under the terms of the GNU General Public License version 1,
  674. --- 1,9 ----
  675.   % b.bib - bibliography
  676.   %
  677. ! % Copyright 1989, 1991 Howard Lee Gayle
  678.   % This file is written in the ISO 8859/1 character set.
  679.   %
  680. ! % $Header: /usr/local/dist/free-dist/howard/2/work/RCS/b.bib,v 1.3 91/04/03 13:11:31 howard Exp $
  681.   %
  682.   % This program is free software; you can redistribute it and/or modify
  683.   % it under the terms of the GNU General Public License version 1,
  684. ***************
  685. *** 17,22 ****
  686. --- 17,40 ----
  687.   % You should have received a copy of the GNU General Public License
  688.   % along with this program; if not, write to the Free Software
  689.   % Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  690. + @misc{Cannon:CStyle,
  691. +    author = {L. W. Cannon and R. A. Elliott and L. W. Kirchhoff
  692. +              and J. H. Miller and J. M. Milner and R. W. Mitze
  693. +              and E. P. Schan and N. O. Whittington and Henry
  694. +              Spencer and David Keppel and Mark Brader},
  695. +    title = {Recommended {C} Style and Coding Standards},
  696. +    howpublished = {Available by anonymous FTP from
  697. +                    cs.washington.edu as pub/cstyle.tar.Z.},
  698. +    month = "June",
  699. +    year = "1990"}
  700. + @misc{Dolenc:Portable,
  701. +    author = "A. Dolenc and A. Lemmke and D. Keppel and G. V. Reilly",
  702. +    title = "Notes on Writing Portable Programs in {C}",
  703. +    howpublished = {Available by anonymous FTP from sauna.hut.fi
  704. +                    as pub/CompSciLab/doc/portableC.* and from cs.washington.edu
  705. +                    as pub/cport.tar.Z.},
  706. +    month = "November",
  707. +    year = "1990"}
  708.   @book{Lapin,
  709.      author = "J. E. Lapin",
  710.      title = "Portable C and UNIX system programming",
  711. ***************
  712. *** 23,28 ****
  713. --- 41,57 ----
  714.      publisher = "Prentice-Hall",
  715.      year = "1987",
  716.      address = "Englewood Cliffs, New Jersey"}
  717. + @inproceedings{Manheimer:Depot,
  718. +    author = {Kenneth Manheimer and Barry A. Warsaw and
  719. +              Stephen N. Clark and Walter Rowe},
  720. +    title = {The Depot: A Framework for Sharing Software
  721. +             Installation Across Organizational and UNIX
  722. +             Platform Boundaries},
  723. +    booktitle = {Proceedings of the fourth Large Installation
  724. +                 System Administration Conference},
  725. +    year = "1990",
  726. +    organization = "USENIX",
  727. +    month = "October"}
  728.   @article{Weiser:Source,
  729.      author = "Mark Weiser",
  730.      title = "Source Code",
  731. EOF
  732.  
  733. patch -c cat-path.1 << 'EOF'
  734. ***************
  735. *** 1,5 ****
  736. ! .\" $Header: cat-path.1,v 1.1 89/09/21 10:52:02 howard Exp $
  737. ! .TH CAT-PATH 1 "$Revision: 1.1 $"
  738.   .SH NAME
  739.   cat-path \- search path for files and concatenate them
  740.   .SH SYNOPSIS
  741. --- 1,5 ----
  742. ! .\" $Header: /usr/local/dist/free-dist/howard/2/work/RCS/cat-path.1,v 1.2 91/02/27 05:44:20 howard Exp $
  743. ! .TH CAT-PATH 1 "$Revision: 1.2 $"
  744.   .SH NAME
  745.   cat-path \- search path for files and concatenate them
  746.   .SH SYNOPSIS
  747. ***************
  748. *** 40,52 ****
  749.   along with this program; if not, write to the Free Software
  750.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  751.   .SH AUTHOR
  752. ! Howard Gayle,
  753. ! TN/ETX/T/BG,
  754. ! Ericsson Telecom AB,
  755. ! S-126 25 Stockholm,
  756. ! Sweden,
  757. ! howard@ericsson.se,
  758. ! uunet!ericsson.se!howard,
  759. ! Phone: +46 8 719 5565,
  760. ! FAX: +46 8 719 9598,
  761. ! Telex: 14910 ERIC S
  762. --- 40,43 ----
  763.   along with this program; if not, write to the Free Software
  764.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  765.   .SH AUTHOR
  766. ! Howard Gayle
  767. EOF
  768.  
  769. patch -c cia.1 << 'EOF'
  770. ***************
  771. *** 1,5 ****
  772. ! .\" $Header: cia.1,v 1.1 89/09/23 14:11:22 howard Exp $
  773. ! .TH CIA 1 "$Revision: 1.1 $"
  774.   .SH NAME
  775.   cia \- check files into RCS with strict locking
  776.   .SH SYNOPSIS
  777. --- 1,5 ----
  778. ! .\" $Header: /usr/local/dist/free-dist/howard/2/work/RCS/cia.1,v 1.2 91/02/27 05:44:26 howard Exp $
  779. ! .TH CIA 1 "$Revision: 1.2 $"
  780.   .SH NAME
  781.   cia \- check files into RCS with strict locking
  782.   .SH SYNOPSIS
  783. ***************
  784. *** 47,59 ****
  785.   along with this program; if not, write to the Free Software
  786.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  787.   .SH AUTHOR
  788. ! Howard Gayle,
  789. ! TN/ETX/T/BG,
  790. ! Ericsson Telecom AB,
  791. ! S-126 25 Stockholm,
  792. ! Sweden,
  793. ! howard@ericsson.se,
  794. ! uunet!ericsson.se!howard,
  795. ! Phone: +46 8 719 5565,
  796. ! FAX: +46 8 719 9598,
  797. ! Telex: 14910 ERIC S
  798. --- 47,50 ----
  799.   along with this program; if not, write to the Free Software
  800.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  801.   .SH AUTHOR
  802. ! Howard Gayle
  803. EOF
  804.  
  805. patch -c copy-self.1 << 'EOF'
  806. ***************
  807. *** 1,5 ****
  808. ! .\" $Header: copy-self.1,v 1.2 89/09/20 13:58:12 howard Exp $
  809. ! .TH COPY-SELF 1 "$Revision: 1.2 $"
  810.   .SH NAME
  811.   copy-self \- copy files to files with same names
  812.   .SH SYNOPSIS
  813. --- 1,5 ----
  814. ! .\" $Header: /usr/local/dist/free-dist/howard/2/work/RCS/copy-self.1,v 1.3 91/02/27 05:44:30 howard Exp $
  815. ! .TH COPY-SELF 1 "$Revision: 1.3 $"
  816.   .SH NAME
  817.   copy-self \- copy files to files with same names
  818.   .SH SYNOPSIS
  819. ***************
  820. *** 51,63 ****
  821.   along with this program; if not, write to the Free Software
  822.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  823.   .SH AUTHOR
  824. ! Howard Gayle,
  825. ! TN/ETX/T/BG,
  826. ! Ericsson Telecom AB,
  827. ! S-126 25 Stockholm,
  828. ! Sweden,
  829. ! howard@ericsson.se,
  830. ! uunet!ericsson.se!howard,
  831. ! Phone: +46 8 719 5565,
  832. ! FAX: +46 8 719 9598,
  833. ! Telex: 14910 ERIC S
  834. --- 51,54 ----
  835.   along with this program; if not, write to the Free Software
  836.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  837.   .SH AUTHOR
  838. ! Howard Gayle
  839. EOF
  840.  
  841. patch -c freeze.1 << 'EOF'
  842. ***************
  843. *** 1,5 ****
  844. ! .\" $Header: freeze.1,v 1.1 89/09/23 14:22:28 howard Exp $
  845. ! .TH FREEZE 1 "$Revision: 1.1 $"
  846.   .SH NAME
  847.   freeze \- record latest revisions of all RCS files in directory
  848.   .SH SYNOPSIS
  849. --- 1,5 ----
  850. ! .\" $Header: /usr/local/dist/free-dist/howard/2/work/RCS/freeze.1,v 1.2 91/02/27 05:44:34 howard Exp $
  851. ! .TH FREEZE 1 "$Revision: 1.2 $"
  852.   .SH NAME
  853.   freeze \- record latest revisions of all RCS files in directory
  854.   .SH SYNOPSIS
  855. ***************
  856. *** 53,65 ****
  857.   along with this program; if not, write to the Free Software
  858.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  859.   .SH AUTHOR
  860. ! Howard Gayle,
  861. ! TN/ETX/T/BG,
  862. ! Ericsson Telecom AB,
  863. ! S-126 25 Stockholm,
  864. ! Sweden,
  865. ! howard@ericsson.se,
  866. ! uunet!ericsson.se!howard,
  867. ! Phone: +46 8 719 5565,
  868. ! FAX: +46 8 719 9598,
  869. ! Telex: 14910 ERIC S
  870. --- 53,56 ----
  871.   along with this program; if not, write to the Free Software
  872.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  873.   .SH AUTHOR
  874. ! Howard Gayle
  875. EOF
  876.  
  877. patch -c freeze.b << 'EOF'
  878. ***************
  879. *** 1,9 ****
  880.     
  881.   # freeze - update RCS FREEZE file
  882.   #
  883. ! # $Header: freeze.b,v 1.8 89/09/21 19:21:19 howard Exp $
  884.   #
  885. ! # Copyright 1989 Howard Lee Gayle
  886.   # This file is written in the ISO 8859/1 character set.
  887.   #
  888.   # This program is free software; you can redistribute it and/or modify
  889. --- 1,9 ----
  890.     
  891.   # freeze - update RCS FREEZE file
  892.   #
  893. ! # $Header: /usr/local/dist/free-dist/howard/2/work/RCS/freeze.b,v 1.9 91/02/27 09:38:28 howard Exp $
  894.   #
  895. ! # Copyright 1989, 1991 Howard Lee Gayle
  896.   # This file is written in the ISO 8859/1 character set.
  897.   #
  898.   # This program is free software; you can redistribute it and/or modify
  899. ***************
  900. *** 24,30 ****
  901.   
  902.   CMDNAME=freeze
  903.   export CMDNAME
  904. ! u='Usage: $CMDNAME [-rRevision]'
  905.   if [ $# -gt 1 ]
  906.   then
  907.      echo "$u" 1>&2
  908. --- 24,30 ----
  909.   
  910.   CMDNAME=freeze
  911.   export CMDNAME
  912. ! u="Usage: $CMDNAME [-rRevision]"
  913.   if [ $# -gt 1 ]
  914.   then
  915.      echo "$u" 1>&2
  916. ***************
  917. *** 32,38 ****
  918.   fi
  919.   if [ ! -d RCS ]
  920.   then
  921. !    echo '$CMDNAME: no RCS directory' 1>&2
  922.      exit 1
  923.   fi
  924.   if [ -f RCS/FREEZE,v ]
  925. --- 32,38 ----
  926.   fi
  927.   if [ ! -d RCS ]
  928.   then
  929. !    echo "$CMDNAME: no RCS directory" 1>&2
  930.      exit 1
  931.   fi
  932.   if [ -f RCS/FREEZE,v ]
  933. ***************
  934. *** 46,49 ****
  935.   fi
  936.   echo '========================================' >> FREEZE
  937.   freeze0 RCS/*,v >> FREEZE
  938. ! ci $1 FREEZE < /dev/null && rcs -L FREEZE && co FREEZE
  939. --- 46,49 ----
  940.   fi
  941.   echo '========================================' >> FREEZE
  942.   freeze0 RCS/*,v >> FREEZE
  943. ! ci -f $1 FREEZE < /dev/null && rcs -L FREEZE && co FREEZE
  944. EOF
  945.  
  946. patch -c freeze0.b << 'EOF'
  947. ***************
  948. *** 1,9 ****
  949.     
  950.   # freeze0 - write name and revision of RCS files
  951.   #
  952. ! # $Header: freeze0.b,v 1.6 89/09/21 19:21:28 howard Exp $
  953.   #
  954. ! # Copyright 1989 Howard Lee Gayle
  955.   # This file is written in the ISO 8859/1 character set.
  956.   #
  957.   # This program is free software; you can redistribute it and/or modify
  958. --- 1,9 ----
  959.     
  960.   # freeze0 - write name and revision of RCS files
  961.   #
  962. ! # $Header: /usr/local/dist/free-dist/howard/2/work/RCS/freeze0.b,v 1.7 91/02/27 09:59:41 howard Exp $
  963.   #
  964. ! # Copyright 1989, 1991 Howard Lee Gayle
  965.   # This file is written in the ISO 8859/1 character set.
  966.   #
  967.   # This program is free software; you can redistribute it and/or modify
  968. ***************
  969. *** 23,29 ****
  970.   # f - file name
  971.   # u - usage string
  972.   
  973. ! u='Usage: freeze0 file...'
  974.   if [ $# -eq 0 ]
  975.   then
  976.      echo "$u" 1>&2
  977. --- 23,29 ----
  978.   # f - file name
  979.   # u - usage string
  980.   
  981. ! u="Usage: freeze0 file..."
  982.   if [ $# -eq 0 ]
  983.   then
  984.      echo "$u" 1>&2
  985. EOF
  986.  
  987. patch -c freezePch.1 << 'EOF'
  988. ***************
  989. *** 1,5 ****
  990. ! .\" $Header: freezePch.1,v 1.2 89/09/25 07:01:32 howard Exp $
  991. ! .TH FREEZEPCH 1 "$Revision: 1.2 $"
  992.   .SH NAME
  993.   freezePch \- make a patch file from one revision to another
  994.   .SH SYNOPSIS
  995. --- 1,5 ----
  996. ! .\" $Header: /usr/local/dist/free-dist/howard/2/work/RCS/freezePch.1,v 1.3 91/02/27 05:44:38 howard Exp $
  997. ! .TH FREEZEPCH 1 "$Revision: 1.3 $"
  998.   .SH NAME
  999.   freezePch \- make a patch file from one revision to another
  1000.   .SH SYNOPSIS
  1001. ***************
  1002. *** 71,83 ****
  1003.   along with this program; if not, write to the Free Software
  1004.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1005.   .SH AUTHOR
  1006. ! Howard Gayle,
  1007. ! TN/ETX/T/BG,
  1008. ! Ericsson Telecom AB,
  1009. ! S-126 25 Stockholm,
  1010. ! Sweden,
  1011. ! howard@ericsson.se,
  1012. ! uunet!ericsson.se!howard,
  1013. ! Phone: +46 8 719 5565,
  1014. ! FAX: +46 8 719 9598,
  1015. ! Telex: 14910 ERIC S
  1016. --- 71,74 ----
  1017.   along with this program; if not, write to the Free Software
  1018.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1019.   .SH AUTHOR
  1020. ! Howard Gayle
  1021. EOF
  1022.  
  1023. patch -c getlin.3 << 'EOF'
  1024. ***************
  1025. *** 1,5 ****
  1026. ! .\" @(#)$Header: getlin.3,v 1.7 89/07/05 07:31:35 howard Exp $
  1027. ! .TH GETLIN "3 -lhoward" "$Revision: 1.7 $" "Howard\'s C library" "Howard\'s C library"
  1028.   .SH NAME
  1029.   getlin, getlic \- read one line from a stream
  1030.   .SH SYNOPSIS
  1031. --- 1,5 ----
  1032. ! .\" @(#)$Header: /usr/local/dist/free-dist/howard/2/work/RCS/getlin.3,v 1.8 91/02/27 05:44:57 howard Exp $
  1033. ! .TH GETLIN "3 -lhoward" "$Revision: 1.8 $" "Howard\'s C library" "Howard\'s C library"
  1034.   .SH NAME
  1035.   getlin, getlic \- read one line from a stream
  1036.   .SH SYNOPSIS
  1037. ***************
  1038. *** 123,135 ****
  1039.   along with this program; if not, write to the Free Software
  1040.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1041.   .SH AUTHOR
  1042. ! Howard Gayle,
  1043. ! TN/ETX/T/BG,
  1044. ! Ericsson Telecom AB,
  1045. ! S-126 25 Stockholm,
  1046. ! Sweden,
  1047. ! howard@ericsson.se,
  1048. ! uunet!ericsson.se!howard,
  1049. ! Phone: +46 8 719 5565,
  1050. ! FAX: +46 8 719 9598,
  1051. ! Telex: 14910 ERIC S
  1052. --- 123,126 ----
  1053.   along with this program; if not, write to the Free Software
  1054.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1055.   .SH AUTHOR
  1056. ! Howard Gayle
  1057. EOF
  1058.  
  1059. patch -c getpwf.3 << 'EOF'
  1060. ***************
  1061. *** 1,5 ****
  1062. ! .\" $Header: getpwf.3,v 1.2 89/08/21 08:43:59 howard Exp $
  1063. ! .TH GETPWF "3 -lhoward" "$Revision: 1.2 $" "Howard\'s C library" "Howard\'s C library"
  1064.   .SH NAME
  1065.   getpwf \- copy full name of user from password file entry
  1066.   .SH SYNOPSIS
  1067. --- 1,5 ----
  1068. ! .\" $Header: /usr/local/dist/free-dist/howard/2/work/RCS/getpwf.3,v 1.3 91/02/27 05:45:02 howard Exp $
  1069. ! .TH GETPWF "3 -lhoward" "$Revision: 1.3 $" "Howard\'s C library" "Howard\'s C library"
  1070.   .SH NAME
  1071.   getpwf \- copy full name of user from password file entry
  1072.   .SH SYNOPSIS
  1073. ***************
  1074. *** 82,94 ****
  1075.   along with this program; if not, write to the Free Software
  1076.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1077.   .SH AUTHOR
  1078. ! Howard Gayle,
  1079. ! TN/ETX/T/BG,
  1080. ! Ericsson Telecom AB,
  1081. ! S-126 25 Stockholm,
  1082. ! Sweden,
  1083. ! howard@ericsson.se,
  1084. ! uunet!ericsson.se!howard,
  1085. ! Phone: +46 8 719 5565,
  1086. ! FAX: +46 8 719 9598,
  1087. ! Telex: 14910 ERIC S
  1088. --- 82,85 ----
  1089.   along with this program; if not, write to the Free Software
  1090.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1091.   .SH AUTHOR
  1092. ! Howard Gayle
  1093. EOF
  1094.  
  1095. patch -c hetero.tex << 'EOF'
  1096. ***************
  1097. *** 1,10 ****
  1098.   % hetero.tex - configuration management in a heterogeous net
  1099.   %
  1100. ! % Copyright 1989 Howard Lee Gayle
  1101. ! % This file is written in the ISO 8859/1 character set.
  1102.   %
  1103. - % $Header: hetero.tex,v 1.2 89/09/20 13:03:18 howard Exp $
  1104. - %
  1105.   % This program is free software; you can redistribute it and/or modify
  1106.   % it under the terms of the GNU General Public License version 1,
  1107.   % as published by the Free Software Foundation.
  1108. --- 1,7 ----
  1109.   % hetero.tex - configuration management in a heterogeous net
  1110.   %
  1111. ! % $Header: /usr/local/dist/free-dist/howard/2/work/RCS/hetero.tex,v 1.4 91/04/03 13:10:48 howard Exp $
  1112.   %
  1113.   % This program is free software; you can redistribute it and/or modify
  1114.   % it under the terms of the GNU General Public License version 1,
  1115.   % as published by the Free Software Foundation.
  1116. ***************
  1117. *** 21,35 ****
  1118.   \input gold-lt
  1119.   \input latin-lt
  1120.   \input unix-lt
  1121. ! \global \def \today {$Revision: 1.2 $}
  1122.   \raggedright
  1123.   \arraycolsep 0pt
  1124.   \parskip 1.5ex
  1125.   \parindent 2em
  1126.   \title{Sharing software in a network of heterogeneous UNIX hosts}
  1127. ! \author{Copyright \copyright\ 1989 Howard Lee Gayle
  1128.   \thanks{
  1129. ! TN/ETX/T/BG,
  1130.   Ericsson Telecom~AB,
  1131.   S-126~25 Stockholm,
  1132.   Sweden,
  1133. --- 18,33 ----
  1134.   \input gold-lt
  1135.   \input latin-lt
  1136.   \input unix-lt
  1137. ! \global \def \today {$Revision: 1.4 $}
  1138.   \raggedright
  1139.   \arraycolsep 0pt
  1140.   \parskip 1.5ex
  1141.   \parindent 2em
  1142.   \title{Sharing software in a network of heterogeneous UNIX hosts}
  1143. ! \author{Copyright \copyright\ 1989, 1991 Howard Lee Gayle
  1144.   \thanks{
  1145. ! Up to 9~April~1991, my address is:
  1146. ! TN/ETX/TG/HL,
  1147.   Ericsson Telecom~AB,
  1148.   S-126~25 Stockholm,
  1149.   Sweden,
  1150. ***************
  1151. *** 36,43 ****
  1152.   howard@ericsson.se,
  1153.   uunet!ericsson.se!howard,
  1154.   Phone: +46~8~719~5565,
  1155. ! FAX: +46~8~719~9598,
  1156. ! Telex: 14910~ERIC~S.}}
  1157.   \begin{document}
  1158.   \maketitle
  1159.   \begin{abstract}
  1160. --- 34,51 ----
  1161.   howard@ericsson.se,
  1162.   uunet!ericsson.se!howard,
  1163.   Phone: +46~8~719~5565,
  1164. ! FAX: +46~8~719~8439,
  1165. ! Telex: 14910~ERIC~S.
  1166. ! After 9~April~1991, my address is:
  1167. ! HaL Computer Systems, Inc.,
  1168. ! 1315 Dell Avenue,
  1169. ! Campbell, California 95008,
  1170. ! USA,
  1171. ! Phone: +1~408~379~7000
  1172. ! FAX: +1~408~379~5022
  1173. ! Unfortunately, HaL isn't on the Net yet; when it does get on
  1174. ! the Net, my email address will probably be something like
  1175. ! howard@hal.com.}}
  1176.   \begin{document}
  1177.   \maketitle
  1178.   \begin{abstract}
  1179. ***************
  1180. *** 76,82 ****
  1181.   architectures, run different versions of the \UNIX\ system, or
  1182.   both.
  1183.   For example, an organization may have on its network Sun-3s
  1184. ! and Sun-4s running SunOS~4.0,
  1185.   and VAXen running BSD~4.3.
  1186.   
  1187.   Most \UNIX\ software, as distributed, comes in a form
  1188. --- 84,90 ----
  1189.   architectures, run different versions of the \UNIX\ system, or
  1190.   both.
  1191.   For example, an organization may have on its network Sun-3s
  1192. ! and Sun-4s running SunOS~4.1.1,
  1193.   and VAXen running BSD~4.3.
  1194.   
  1195.   Most \UNIX\ software, as distributed, comes in a form
  1196. ***************
  1197. *** 88,97 ****
  1198.   is distributed, and writing new software.
  1199.   This report is not about how to write portable software;
  1200.   it {\em is} about what to do with portable software once you
  1201. ! have it.
  1202. ! (For an excellent treatment of how to write portable \UNIX\
  1203. ! software, see
  1204. ! \cite{Lapin}.)
  1205.   
  1206.   \chapter{Notation}
  1207.   In this report, a
  1208. --- 96,107 ----
  1209.   is distributed, and writing new software.
  1210.   This report is not about how to write portable software;
  1211.   it {\em is} about what to do with portable software once you
  1212. ! have
  1213. ! it.\footnote{For an excellent treatment of how to write
  1214. ! portable \UNIX\ software, see
  1215. ! \cite{Lapin}.
  1216. ! See also \cite{Cannon:CStyle} and
  1217. ! \cite{Dolenc:Portable}.}
  1218.   
  1219.   \chapter{Notation}
  1220.   In this report, a
  1221. ***************
  1222. *** 108,116 ****
  1223.   In my examples I will use abbreviations for types such as
  1224.   these:
  1225.   \begin{description}
  1226. ! \item[sun34] A Sun-3 running SunOS~4.$x$.
  1227. ! \item[sun44] A Sun-4 running SunOS~4.$x$.
  1228. ! \item[vax43] A DEC VAX-11 running BSD~4.3.
  1229.   \end{description}
  1230.   These are merely for illustration; each organization must
  1231.   choose suitable abbreviations.
  1232. --- 118,126 ----
  1233.   In my examples I will use abbreviations for types such as
  1234.   these:
  1235.   \begin{description}
  1236. ! \item[sun3-403] A Sun-3 running SunOS~4.0.3.
  1237. ! \item[sun4-411] A Sun-4 running SunOS~4.1.1.
  1238. ! \item[vax-43] A DEC VAX-11 running BSD~4.3.
  1239.   \end{description}
  1240.   These are merely for illustration; each organization must
  1241.   choose suitable abbreviations.
  1242. ***************
  1243. *** 135,141 ****
  1244.   18.54,
  1245.   \etcP.
  1246.   At the same time, one could have parallel versions, say for
  1247. ! Japanese, denoted 18.52-ja, 18.53-ja, 18.54-ja,
  1248.   \etcP.
  1249.   
  1250.   A
  1251. --- 145,151 ----
  1252.   18.54,
  1253.   \etcP.
  1254.   At the same time, one could have parallel versions, say for
  1255. ! Japanese, denoted 18.52-jp, 18.53-jp, 18.54-jp,
  1256.   \etcP.
  1257.   
  1258.   A
  1259. ***************
  1260. *** 189,194 ****
  1261. --- 199,208 ----
  1262.   continue to use an older version during a transition period.
  1263.   Users should be able to choose when to switch to a new version.
  1264.   \end{enumerate}
  1265. + At Ericsson, responsibility for software system support is
  1266. + widely distributed.
  1267. + An organization with more centralized responsibility would
  1268. + probably have somewhat different goals.
  1269.   
  1270.   \chapter{Mechanisms}
  1271.   \section{Master source virtual host(s)}
  1272. ***************
  1273. *** 212,219 ****
  1274.   where
  1275.   {\it type\/}
  1276.   is one of the type abbreviations above.
  1277. ! For example, the free-sun34 virtual host has compiled versions for
  1278. ! Sun-3s running SunOS~4.$x$.
  1279.   
  1280.   \section{File system}
  1281.   \subsection{Path to master source}
  1282. --- 226,233 ----
  1283.   where
  1284.   {\it type\/}
  1285.   is one of the type abbreviations above.
  1286. ! For example, the free-sun3-411 virtual host has compiled versions for
  1287. ! Sun-3s running SunOS~4.1.1.
  1288.   
  1289.   \section{File system}
  1290.   \subsection{Path to master source}
  1291. ***************
  1292. *** 233,242 ****
  1293.   is the version identifier.
  1294.   
  1295.   At Ericsson there are actually two source-prefixes:
  1296. ! /usr/local/free-dist and /usr/local/unfree-dist.
  1297.   For example, the master source for GNU Emacs version~18.54
  1298.   is on the free-dist virtual host in
  1299. ! /usr/local/free-dist/gnu-emacs/18.54.
  1300.   
  1301.   \subsection{Path to compiled version}
  1302.   Each compiled version also gets its own directory on the
  1303. --- 247,256 ----
  1304.   is the version identifier.
  1305.   
  1306.   At Ericsson there are actually two source-prefixes:
  1307. ! /export/free/dist and /export/unfree/dist.
  1308.   For example, the master source for GNU Emacs version~18.54
  1309.   is on the free-dist virtual host in
  1310. ! /export/free/dist/gnu-emacs/18.54.
  1311.   
  1312.   \subsection{Path to compiled version}
  1313.   Each compiled version also gets its own directory on the
  1314. ***************
  1315. *** 246,258 ****
  1316.   
  1317.   At Ericsson,
  1318.   {\it compiled-prefix\/}
  1319. ! is either /usr/local/free or /usr/local/unfree.
  1320.   For example, the compiled GNU Emacs version~18.54 is in
  1321. ! /usr/local/free/gnu-emacs/18.54
  1322.   on
  1323.   {\em every}
  1324. ! host.
  1325.   
  1326.   \subsection{Currently recommended version}
  1327.   Compiled version~0 is an abbreviation for the currently
  1328.   recommended version on a given host.
  1329. --- 260,292 ----
  1330.   
  1331.   At Ericsson,
  1332.   {\it compiled-prefix\/}
  1333. ! is /f for free software and public domain software, and
  1334. ! /u for other software.
  1335.   For example, the compiled GNU Emacs version~18.54 is in
  1336. ! /f/gnu-emacs/18.54
  1337.   on
  1338.   {\em every}
  1339. ! host on which it is installed.
  1340.   
  1341. + Initially, we used /usr/local/free and /usr/local/unfree as our
  1342. + compiled-prefixes, since /usr/local is the conventional place
  1343. + for third-party software.
  1344. + However, there are two advantages to short compiled-prefixes.
  1345. + Users who want complete control over system version selection
  1346. + end up with long command search paths; a short compiled-prefix
  1347. + makes these shorter.
  1348. + Also, most \UNIX\ versions have a limit of 32~characters for
  1349. + the path of a command interpreter in an executable file.
  1350. + For example,
  1351. + \begin{verbatim}
  1352. + #! /f/perl/3.0.44/bin/perl
  1353. + \end{verbatim}
  1354. + works whereas
  1355. + \begin{verbatim}
  1356. + #! /usr/local/free/perl/3.0.44/bin/perl
  1357. + \end{verbatim}
  1358. + is too long.
  1359.   \subsection{Currently recommended version}
  1360.   Compiled version~0 is an abbreviation for the currently
  1361.   recommended version on a given host.
  1362. ***************
  1363. *** 298,308 ****
  1364.   For example, a site could have a symbolic link from
  1365.   /usr/local/bin/emacs
  1366.   to
  1367. ! /usr/local/free/gnu-emacs/0/bin/emacs,
  1368.   and a symbolic link from
  1369.   /usr/local/man/man1/emacs.1
  1370.   to
  1371. ! /usr/local/free/gnu-emacs/0/man/emacs.1.
  1372.   Then users who wish to use the versions selected by the system
  1373.   administrators need only add /usr/local/bin to their command
  1374.   search paths and /usr/local/man to the values of their MANPATH
  1375. --- 332,342 ----
  1376.   For example, a site could have a symbolic link from
  1377.   /usr/local/bin/emacs
  1378.   to
  1379. ! /f/gnu-emacs/0/bin/emacs,
  1380.   and a symbolic link from
  1381.   /usr/local/man/man1/emacs.1
  1382.   to
  1383. ! /f/gnu-emacs/0/man/emacs.1.
  1384.   Then users who wish to use the versions selected by the system
  1385.   administrators need only add /usr/local/bin to their command
  1386.   search paths and /usr/local/man to the values of their MANPATH
  1387. ***************
  1388. *** 329,340 ****
  1389.   Local file system sharing is possible when several virtual
  1390.   hosts are implemented by one physical host.
  1391.   For example, if the physical host that implements a master source
  1392. ! virtual host is a sun44, then the same physical host can
  1393. ! implement a sun44 type virtual host.
  1394.   In addition, the compiled versions the host makes available are
  1395.   executable by the host's own users.
  1396.   
  1397. ! Network copying uses command such as rdist or ftp to copy files
  1398.   over a network.\footnote{Copying by other means, \eg\ tape,
  1399.   could also be used, but is outside the scope of this report.}
  1400.   
  1401. --- 363,374 ----
  1402.   Local file system sharing is possible when several virtual
  1403.   hosts are implemented by one physical host.
  1404.   For example, if the physical host that implements a master source
  1405. ! virtual host is a sun4-411, then the same physical host can
  1406. ! implement a sun4-411 type virtual host.
  1407.   In addition, the compiled versions the host makes available are
  1408.   executable by the host's own users.
  1409.   
  1410. ! Network copying uses commands such as rdist or ftp to copy files
  1411.   over a network.\footnote{Copying by other means, \eg\ tape,
  1412.   could also be used, but is outside the scope of this report.}
  1413.   
  1414. ***************
  1415. *** 345,351 ****
  1416.   
  1417.   At Ericsson all three file distribution mechanisms are used.
  1418.   The same physical host currently implements the free-dist,
  1419. ! unfree-dist, free-sun34, and unfree-sun34 virtual hosts.
  1420.   NFS distribution is used to other hosts with NFS.
  1421.   Hosts without NFS use rdist.
  1422.   Sites are encouraged to have local copies of executables, not
  1423. --- 379,385 ----
  1424.   
  1425.   At Ericsson all three file distribution mechanisms are used.
  1426.   The same physical host currently implements the free-dist,
  1427. ! unfree-dist, free-sun3-411, and unfree-sun3-411 virtual hosts.
  1428.   NFS distribution is used to other hosts with NFS.
  1429.   Hosts without NFS use rdist.
  1430.   Sites are encouraged to have local copies of executables, not
  1431. ***************
  1432. *** 366,378 ****
  1433.   and the executables for the currently recommended version are
  1434.   in
  1435.   /net/free/gnu-emacs/0.
  1436. ! Hosts running Sun's automounter system use that for /net.
  1437.   Other hosts with NFS but without automounter simply NFS-mount
  1438.   on subdirectories of /net.
  1439.   
  1440.   \section{Permissions}
  1441.   Each system can be supported by a different team.
  1442. ! In fact, each each (system,~type) pair can be supported by a
  1443.   different team.
  1444.   Teams can be implemented by \UNIX\ groups.
  1445.   
  1446. --- 400,413 ----
  1447.   and the executables for the currently recommended version are
  1448.   in
  1449.   /net/free/gnu-emacs/0.
  1450. ! Hosts running Sun's automounter system use it to mount
  1451. ! subdirectories of /net on demand.
  1452.   Other hosts with NFS but without automounter simply NFS-mount
  1453.   on subdirectories of /net.
  1454.   
  1455.   \section{Permissions}
  1456.   Each system can be supported by a different team.
  1457. ! In fact, each (system,~type) pair can be supported by a
  1458.   different team.
  1459.   Teams can be implemented by \UNIX\ groups.
  1460.   
  1461. ***************
  1462. *** 390,396 ****
  1463.   \item How does one contact the support team?
  1464.   \end{enumerate}
  1465.   At Ericsson, the support team places this information in a
  1466. ! README file directly under the system directory.
  1467.   For example, on any host with NFS, a system administrator can
  1468.   get this information about GNU Emacs by reading
  1469.   /net/free-dist/gnu-emacs/README.
  1470. --- 425,431 ----
  1471.   \item How does one contact the support team?
  1472.   \end{enumerate}
  1473.   At Ericsson, the support team places this information in a
  1474. ! README file directly under the master source system directory.
  1475.   For example, on any host with NFS, a system administrator can
  1476.   get this information about GNU Emacs by reading
  1477.   /net/free-dist/gnu-emacs/README.
  1478. ***************
  1479. *** 400,406 ****
  1480.   must still know what files to copy where.
  1481.   At Ericsson, for each type virtual host, the support team
  1482.   places this information in a README file directly under the
  1483. ! system directory.
  1484.   For example, on any host with NFS, a system administrator can
  1485.   get this information about GNU Emacs by reading
  1486.   /net/free/gnu-emacs/README.
  1487. --- 435,441 ----
  1488.   must still know what files to copy where.
  1489.   At Ericsson, for each type virtual host, the support team
  1490.   places this information in a README file directly under the
  1491. ! compiled version system directory.
  1492.   For example, on any host with NFS, a system administrator can
  1493.   get this information about GNU Emacs by reading
  1494.   /net/free/gnu-emacs/README.
  1495. ***************
  1496. *** 485,491 ****
  1497.   find . -type f -print | xargs chmod a-w
  1498.   \end{verbatim}
  1499.   This will reduce the risk of changing master source when
  1500. ! editing in local changes.
  1501.   It also makes it easier to see which files have been changed locally.
  1502.   \item If necessary, create a README file directly under the
  1503.   system directory, \eg\ /usr/local/free-dist/gnu-emacs/README.
  1504. --- 520,526 ----
  1505.   find . -type f -print | xargs chmod a-w
  1506.   \end{verbatim}
  1507.   This will reduce the risk of changing master source when
  1508. ! editing files to make local changes.
  1509.   It also makes it easier to see which files have been changed locally.
  1510.   \item If necessary, create a README file directly under the
  1511.   system directory, \eg\ /usr/local/free-dist/gnu-emacs/README.
  1512. ***************
  1513. *** 535,546 ****
  1514.   \item Set the umask.
  1515.   \item Copy the file system hierarchy from the master source
  1516.   version to the version for this type.
  1517. ! If hard or symbolic links can be used, my lnR command can be
  1518.   used.
  1519.   \item Create a log file under the version directory to record
  1520.   details of the installation for future use.
  1521. - If there was already a log file in the master version, remove
  1522. - it.
  1523.   If this is not the first installation of a system, it is often
  1524.   convenient to copy the log file from the previous installation,
  1525.   and then edit 
  1526. --- 570,579 ----
  1527.   \item Set the umask.
  1528.   \item Copy the file system hierarchy from the master source
  1529.   version to the version for this type.
  1530. ! If hard links are used, my lnR command can be
  1531.   used.
  1532.   \item Create a log file under the version directory to record
  1533.   details of the installation for future use.
  1534.   If this is not the first installation of a system, it is often
  1535.   convenient to copy the log file from the previous installation,
  1536.   and then edit 
  1537. ***************
  1538. *** 572,578 ****
  1539.   definitions, it is often more convenient to leave the Makefile
  1540.   unchanged and instead override the definitions with command
  1541.   line arguments to make.
  1542. ! The exact command should be logged for future use.
  1543.   \item Perform the system-specific installation procedures.
  1544.   It is often desirable to bypass the actual installation phase
  1545.   (\eg\ make install), and instead do this part by hand.
  1546. --- 605,611 ----
  1547.   definitions, it is often more convenient to leave the Makefile
  1548.   unchanged and instead override the definitions with command
  1549.   line arguments to make.
  1550. ! The exact make command and its arguments should be logged for future use.
  1551.   \item Perform the system-specific installation procedures.
  1552.   It is often desirable to bypass the actual installation phase
  1553.   (\eg\ make install), and instead do this part by hand.
  1554. ***************
  1555. *** 650,657 ****
  1556.   INCLUDES='-I/usr/local/local-include -I../../../howard/0'
  1557.   WORK=RCS
  1558.   export DD SRCS INCLUDES WORK
  1559. ! make -f uMakefile
  1560. ! exec make -k \
  1561.      CFLAGS='-g -Bstatic' \
  1562.      FMTLATEX=mkLaTeXPS \
  1563.      FMTMAN=mkManPS \
  1564. --- 683,690 ----
  1565.   INCLUDES='-I/usr/local/local-include -I../../../howard/0'
  1566.   WORK=RCS
  1567.   export DD SRCS INCLUDES WORK
  1568. ! make -e -f uMakefile
  1569. ! exec make -e -k \
  1570.      CFLAGS='-g -Bstatic' \
  1571.      FMTLATEX=mkLaTeXPS \
  1572.      FMTMAN=mkManPS \
  1573. ***************
  1574. *** 679,685 ****
  1575.   The fourth line sets the WORK environment variable, indicating
  1576.   development rather than installation.
  1577.   These environment variables are exported, and GNU make is run
  1578. ! using uMakefile.
  1579.   This will update the depend file if necessary.
  1580.   Then make is run again using the main makefile.
  1581.   It is given a number of command-line variable definitions for
  1582. --- 712,718 ----
  1583.   The fourth line sets the WORK environment variable, indicating
  1584.   development rather than installation.
  1585.   These environment variables are exported, and GNU make is run
  1586. ! on uMakefile.
  1587.   This will update the depend file if necessary.
  1588.   Then make is run again using the main makefile.
  1589.   It is given a number of command-line variable definitions for
  1590. ***************
  1591. *** 695,701 ****
  1592.   \etcP.
  1593.   The makefiles do not need to be changed when a new source file
  1594.   is added, nor do developers ever have to remember to run a
  1595. ! ``make depend'' command.
  1596.   
  1597.   Of course, all this automation has its price, and on slow
  1598.   hardware the price may be too high.
  1599. --- 728,734 ----
  1600.   \etcP.
  1601.   The makefiles do not need to be changed when a new source file
  1602.   is added, nor do developers ever have to remember to run a
  1603. ! ``make depend'' command manually.
  1604.   
  1605.   Of course, all this automation has its price, and on slow
  1606.   hardware the price may be too high.
  1607. ***************
  1608. *** 781,793 ****
  1609.   links into the distribution directory,
  1610.   but mk must be unique for each type, since mk contains all
  1611.   type-specific information.
  1612. ! For example, here is an mk shell file for a sun34 type for cz:
  1613.   \begin{verbatim}
  1614.   DD='/net/free-dist/cz/2/dist'
  1615.   SRCS=`cd $DD; echo *`
  1616.   export DD SRCS
  1617. ! make -f uMakefile
  1618. ! exec make \
  1619.      $*
  1620.   \end{verbatim}
  1621.   Here, the value of the SRCS environment variable is a list of
  1622. --- 814,826 ----
  1623.   links into the distribution directory,
  1624.   but mk must be unique for each type, since mk contains all
  1625.   type-specific information.
  1626. ! For example, here is an mk shell file for a sun3-411 type for cz:
  1627.   \begin{verbatim}
  1628.   DD='/net/free-dist/cz/2/dist'
  1629.   SRCS=`cd $DD; echo *`
  1630.   export DD SRCS
  1631. ! make -e -f uMakefile
  1632. ! exec make -e \
  1633.      $*
  1634.   \end{verbatim}
  1635.   Here, the value of the SRCS environment variable is a list of
  1636. ***************
  1637. *** 810,815 ****
  1638. --- 843,862 ----
  1639.   links, symbolic links, or copies, and to execute any other
  1640.   commands needed.
  1641.   For example, mkInstX can run strip.
  1642. + \chapter{Related work}
  1643. + The
  1644. + {\it depot\/}\cite{Manheimer:Depot}
  1645. + is an independent approach to solving many of the problems
  1646. + addressed by this report.
  1647. + A key difference is that, in the depot, there is a directory
  1648. + for each supported type under each system directory.
  1649. + This arrangement is simpler than the one described above, but
  1650. + it requires that a single team support all types.
  1651. + It is thus more appropriate for smaller or more centralized
  1652. + organizations.
  1653. + Also, the depot does not have a general version selection
  1654. + scheme, merely a simple two-version scheme (develop and primary).
  1655.   
  1656.   \bibliography{b}
  1657.   \bibliographystyle{alpha}
  1658. EOF
  1659.  
  1660. exit 0 # Just in case...
  1661. -- 
  1662. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1663. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1664. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1665. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1666.