The INIT package is required by all other packages. It contains the
package command, support scripts, and utilities.

Source Package Installation Instructions:

  (1) Do not install packages as root/super-user. Although some components may
      have setuid executables, few must be owned by root. These are best
      changed manually when the security implications are understood.
  (2) Choose a package root directory and cd to it. This will be a local work
      area for all packages. See (9) for installing packages for public use.
  (3) Create the subdirectory lib/package/tgz and download all package archives
      into that directory. The package(1) command maintains the contents of this
      directory and deletes old archives as new ones are read in. Package
      delta archives require the most recent base, so manually removing files
      in this directory may invalidate future deltas.
  (4) If the bin/package command does not exist then manually read the INIT
      source package:
		gunzip < lib/package/tgz/INIT.YYYY-MM-DD.tgz | tar xvf -
      If your system does not have tar(1) or gunzip(1) then download the ratz
      source package, compile it, and manually read the INIT
      source package:
		mkdir bin
		cp lib/package/tgz/ratz.YYYY-MM-DD.c lib/package/tgz/ratz.c
		cc -o bin/ratz lib/package/tgz/ratz.c
		bin/ratz -lm < lib/package/tgz/INIT.YYYY-MM-DD.tgz
  (5) Read all unread package archive(s):
		bin/package read
      Both source and binary packages will be read by this step.
  (6) Build and install; all generated files are placed under arch/$HOSTTYPE
      ($INSTALLROOT), where $HOSTTYPE is defined by the output of
      bin/package (with no arguments.) name=value arguments are supported; CC
      and CCFLAGS are likely candidates. The output is written to the terminal
      and captured in $INSTALLROOT/lib/package/gen/make.out:
		bin/package make
  (7) List make results and interesting errors from (6):
		bin/package results
      Run the regression tests:
		bin/package test
      List test results and errors:
		bin/package results test
  (8) Run the binaries by
		export PATH=$INSTALLROOT/bin:$PATH
		ksh
      or by adding $INSTALLROOT/lib to the runtime linker search list
      (the variable that is assigned the value ../lib in the
      $INSTALLROOT/bin/.paths file.) If you want to build individual
      components run:
		bin/package use
      to get an interactive $SHELL that sets up the environment for using
      package binaries:
	  $HOSTTYPE	 the current host type
	  $PACKAGEROOT	 the root directory for all packages ($P)
	  $INSTALLROOT	 the installation root for the current host type ($A)
	  $PATH		 $INSTALLROOT/bin:$PACKAGEROOT/bin prepended
	  $VPATH	 a multi-level view; all building done in $INSTALLROOT
          DLL-MAGIC	 environment magic for locating package shared libraries
      From this shell you can run nmake in any directory under
      $INSTALLROOT/src and rebuild just that part. If $INSTALLROOT/bin/nmake
      does not exist then use $INSTALLROOT/bin/mamake on Mamfile.
      nmake is open source - download ast-open or ast-base to
      simplify future builds or to make new or delta packages.
  (9) Once you are satisfied with a package its binaries can be installed in
      a public area by:
		bin/package install DIRECTORY PACKAGE
      or you can just copy the entire $INSTALLROOT directory tree. Users can
      run the binaries by
		export PATH=DIRECTORY/bin:$PATH
		ksh
      or by adding DIRECTORY/lib to the runtime linker search list.


All recorded changes follow.

:::::::: INIT ::::::::

01-10-31 package.sh: handle *.sum paths with embedded space
	 package.sh: change executable() to onpath()
	 package.sh: executable([!] foo) replaces test [!] -x foo (.exe hack)
	 package.sh: add os2 fix to `host type'
	 mamake.c: add .exe hack
	 iffe.sh: fix intrinsic function lib test
	 mamprobe.sh: update pic probe to match make.probe for linux.ia64
01-10-30 package.sh: make action skeleton view now checks subdirs
01-10-20 package.sh: don't recurse into leaf dirs matching $MAKESKIP
	 package.mk: tarball package.notice replaces `license accepted' prompt
	 package.sh: eliminate `license accepted' prompt
	 package.sh: add update to download latest from a url
	 package.sh: use builtin arithmetic when we know its ksh
	 iffe.sh: unkown -> unknown
01-10-18 package.sh: convert to YYYY-MM-DD delta releases instead of NNNN
	 package.mk: convert to YYYY-MM-DD delta releases instead of NNNN
	 ratz.c: fix -m for paths containing \f\n\r\v
01-10-16 ratz.c: _SEA_* => SEAR_*
	 ratz.c: preserve stdin for sear_exec()
	 ratz.c: add recursive sear_rm_r() to sear_exec() tmp dir cleanup
01-10-10 mamprobe.sh: add mam_cc_SHELLMAGIC
	 package.sh: add nfs wakeup call to admin to avoid stale file handles
01-10-04 cc.darin.ppc: -flat_namespace is not longer the default (huh)
01-10-01 package make: prepend $INSTALLROOT/bin/ok to PATH
	 package read: save cpy of bin/package when reading the INIT package
	 mamprobe.sh: allow cc path with optional arguments
01-09-24 Makefile,package.sh: add $INSTALLROOT/bin/.paths initialization
01-09-19 package.mk: add recurse to list.package.*
	 package.sh: bootstrap build nmake with _BLD_STATIC for _WIN32
01-09-11 ratz.c: add _SEA_SKIP & _SEA_COMMAND for self extracting archives
01-09-07 package.mk: fix output capture to not generate files names with spaces
01-09-07 package.mk: fix delta release number search
01-08-11 package.mk: handle single gz executable packages (e.g., for ksh)
	 package.sh: fix package install to require nmake only if no *.sum
	 iffe.sh: drop ancient menu and prompt actions; check ./hdr.h clash
01-07-17 package: fix use cross compile test to generate files in /tmp 
01-06-27 ratz: handle hard and soft links if possible
01-06-07 Makefile: fix :MAPLIB: for sco
01-05-31 crossexec.sh: add
	 iffe.sh: add -x crosstype to run crossexec
	 iffe.sh: exp test now handles pass{}end fail{}end yes{}end no{}end
	 package.sh: add package host canon external-host-type-name
	 package.sh: fix `use USER' lookup for shells that support ~USER
	 cc.*: add -dumpmachine to dump target HOSTTYPE
01-05-18 iffe.sh: drop $HOME/tmp/t.sh debug trace -- oops
01-05-01 mamake.c: scan() now handles :PACKAGE: foo:command
01-04-26 *.sh: expand [a-z][A-Z][0-9] for non-contiguous character codes
	 iffe.sh: fix run *.sh for shells that don't $* across . command
	 cc.mvs.390: recode for /bin/sh
01-04-25 package.mk: include non cc-g variants by default
	 package.sh: *[._]* => *?[_.]* for mvs.390 /bin/sh
01-04-24 TEST.mk: no tests for VARIANT=="DLL"
01-04-22 package.mk,package.sh: tarball text members are ascii encoded
01-04-18 package.mk: allow package name to be the same as one of its components
         cc.mvs.390: handle .C .cpp .cxx
         cc.mvs.390: compensate for -o that does not overwrite
01-04-01 regress: fix SAME that just skipped it -- we should regress regress!
	 iffe: fix bug that didn't emit _hdr_foo for internal hdr tests
	 iffe: fix lcl bug for cc -E that doesn't emit line syncs
	 ratz: add ascii=>ebcdic conversion for text archive members
	 mamake: fix buffer overlap bug that clobbered the probe file path
01-03-17 iffe: handle : separator as first arg
01-03-15 mamake.c,ratz.c,release.c: add <stdlib.h> and <string.h>
01-02-26 iffe.sh: fix bug that omitted runtime #define for `mac' op
01-02-22 cc.ibm.risc: handle SF_CLOSE clash in <sfio.h>
01-02-14 cc.sgi.mips3,cc.sgi.mips4: handle -mips2 -mips3 -mips4 for cross cc
	 C+probe: quote "$cc" when its an argument!
	 mamake: execute actions with $SHELL, ignored signals back to default
	 package.sh: nmake check error output to /dev/null
	 package.sh: fix INIT a.out updates for knr cc
	 package.sh: package list now handle large tgz dirs
	 package.sh: *-ok executables moved to ok/* for *.dll systems
	 iffe.sh: change "exec >&-" to "exec >/dev/null" else linux mkdir fails!
	 mamake: handle `bind -lx [dontcare]'
01-02-12 ratz.c: fix _PACKAGE_ast includes
	 package.sh: $HOSTTYPE env overrides if $PACKAGEROOT/arch/$HOSTTYPE/
	 package.sh: $CC ^HOSTTYPE=[A-Za-z_0-9.]*$ overrides HOSTTYPE
	 iffe.sh: fix dat code that used previous $tmp.exe
	 iffe.sh: fix dat code for _DLL imports
01-02-09 iffe.sh: add copy() for shells with the dissappearing here doc bug
01-02-08 Makefile: guard against null $(CC.HOSTTYPE)
01-02-06 Makefile: separate out cc,ld,ldd workarounds (so they will be packaged)
01-02-02 package.sh: fix package use for $INSTALLROOT != */$HOSTTYPE
	 package.sh: create intermediate recursion makefiles when needed
	 package.sh: add $SECONDS to the DEBUG trace prompt
01-01-01 ratz.c: #ifdef for uwin ncc
	 iffe.sh,package.sh: check PACKAGE_PATH for local installations
	 package.sh: add psrinfo for osf.alpha host cpu 
	 package.sh: change pax --meter probe; some hang on /dev/tty
	 package.sh: fix `install flat ARCH'
	 mamake: eliminate loops from scan order
	 C+probe: add probe_verbose -V for aix cc=xlc
	 cc.ibm.risc,ldd.ibm.risc: add
	 package.mk: list refs to top-level licenses only
	 package.mk: add local link table to change log html
00-12-25 package.sh: `no package archives' is a hard error, duh
	 package.sh: reorder host type logic for lame shells
	 mamake.c: getcwd => getwd for NeXT -- how about posix==default guys
	 iffe.sh: really gross workaround for NeXT -lposix stdout null's
	 iffe.sh: handle cc -E that insists on compiling
00-12-15 iffe.sh: ancient sh function call blows $*; call only when $# == 0
	 *.sh: `getopts 2>/dev/null` => `(getopts)2>/dev/null` for ancient sh
	 package.sh: fix LD_LIBRARY*_PATH initialization
	 cc.next.m68k: add for _POSIX_SOURCE and linker multiply defined syms
00-12-12 ratz: add --meter
	 package.sh: a few VPATH fixes
	 Makefile: don't override *.mips* cc if -version not accepted
00-12-11 package.mk: *.inx now contains name=value
00-12-07 package.sh: handle PC netscape . => _ pathname mangle
	 WWW.mk: .tar.gz => .tgz
00-11-27 package.sh: add checklicense() to do license checks at read time
	 package.mk: change component list from preformat to table
00-10-31 package.mk: *.pkg must assert closure
	 package.mk: add cc- variants to list.package.binary
	 package.sh: omit dups from package list
	 package.sh: invalid arg gives one line Usage
	 package.sh: relax checkaout checks for non-owners
	 package.sh: package use sets NPROC if not already set or [01]
	 proto.c: add $(INSTALLROOT)/include/ast hack
00-10-26 WWW.mk: add .SOURCE rhs to :WWWPAGE:
00-10-25 package: fix install
	 package.mk: add list.install
00-10-22 regress: fix VIEW to skip empty dirs
00-10-19 package.mk: $(PACKAGEROOT)/bin/nmake => $(PACKAGEROOT)/bin/manmake
	 iffe: validate #define identifiers
00-10-18 C+probe: mac os10 additions
	 package: add DYLD_LIBRARY_PATH initialization
	 add ldd.$(CC.HOSTTYPE)
00-10-01 iffe: handle -I* -L* options
00-09-21 mamake: add libxxx and xxx to makefile ordered prereqs
00-09-19 C+probe: add probe_longlong
00-09-11 package: drop manmake and $PACKAGEROOT/bin/nmake
00-09-08 iffe: verfiy that $cc is a C compiler
00-06-14 mamprobe: fix win32.* probe
	 mamake: fix bug that used lower view path for generation
	 package: don't clobber $PACKAGEROOT/bin/nmake
00-06-01 C+probe: fix stdinclude *again*
	 package: fix write delta source to use default pax format
	 package: add disambiguating bias for sgi.mips3 over sgi.mips4
	 package.mk: fix for directory content packages lib ast-locale
00-05-01 iffe: fix invalid _LIB_ macro identifier 
00-04-11 C+probe: uniq stdinclude and stdlib, fix usrinclude
00-04-01 regress: fix explicit OUTPUT bug that didn't compare with expected
00-03-17 package: all archives are .tgz for binary download
	 package: $(PACKAGEROOT)/LICENSES/* in source and binary archives
	 package: implement install and verify actions
	 iffe: add exp, pth file dir ..., fix lib - -lfoo, fix lib - - -la -lb
	 iffe: -L* must affect LD_LIBRARY* hacks for .exe tests -- yuk
	 package.mk: add *.pkg :INDEX:
00-03-07 package: add admin action
00-03-06 makefile: install optional make probe override script C+make+probe.lcl
00-02-14 --- release 1.0 ---
	 ratz: treat "foo/" as a dir, not a regular file
	 package: clarify source and binary installation instructions
	 package: fix so binary packages can install without cc
	 package: "ratz" now a non-archive package (the only one) for bootstrap
	 package: handle VPATH=a:b arg
	 package.mk: "ratz" package adjustments
	 Makefile: use :PACKAGE_INIT: to support binary INIT packages
	 WWW.mk: add :WWWALL:
	 C.probe: fix .so check that let .dll slip through
	 iffe: fix config sh var assignment for HAVE_member_IN_struct
	 iffe: fix config sh var assignment for symbol_DECLARED
	 package: delay PATH export until dll hack exports complete
	 package: don't forget binary package $(INSTALLROOT)/lib(32|64)
	 package: add delta change log for source packages
00-02-10 mamprobe: add mam_cc_DLLBIG
	 package: fix spelling typos
	 package: add html help output
	 package.mk: beef up source and binary help => html
00-02-08 package: mkdir man/man[138] in the new arch to cover MAM bug
00-01-28 package,release: add -rcount to release
	 package: fix linux "host cpu" and "host rating"
	 package: copy *.lic to $PACKAGEBIN for "make" and "write binary"
	 package: fix 'release change log' case match
00-01-24 package: add copyright action
	 mamprobe: add -D_BLD_DLL to mam_cc_DLL
00-01-11 package: tsort for package write
	 package: early verification that $CC works
	 package: add non-interactive command arg for use action
	 proto: fix -C intermediate mkdir()
	 mamprobe: unixware.i386 ksh workaround
	 C.probe: move hosttype to C.probe (with unixware.i386 workaround)
	 WWW.mk: fix mm2html option quoting
	 WWW.mk: add .SCAN.mm
	 WWW.mk: don't force static=1; grab dll's instead
	 *.sh: fix getopts test to handle botched implementations like osf.alpha
	 iffe.sh: fix read -r test
99-12-25 iffe: tweak verbose messages
	 iffe: hand code non-optget getopts parse
	 iffe: fix bash quoting bug again
	 iffe: do test -w . after option parse
	 package: fix PACKAGEROOT search
99-11-19 --- release 0.2 ---
99-11-19 first working package & friends
99-10-31 change from lib0ast to INIT; add MAM and package bootstrap
	 hostinfo: gobbled by package
99-10-01 iffe: add --config, yes{...}end no{...}end, fix read -r workaround
99-09-27 iffe: add --all --verbose, --* set options
99-09-22 regress: -v disables long line truncation
99-09-11 WWW.mk: WWWDIR and MM2HTMLINFO are now lists searched in $(HOME)
99-08-11 hostinfo: fix type sgi.mips4
99-06-24 WWW.mk: add
99-06-08 hostinfo.sh: ${TMPDIR:-/tmp}
99-06-07 TEST.mk: add
99-06-01 iffe: add `siz type' for _siz_type == sizeof(type)
99-05-11 hostinfo,iffe,regress,use: long options
99-05-01 C.probe: fix over aggressive stdinclude, e.g., /usr/include/machine
99-04-01 hostinfo: sgi.mips? -o32 and -n32 checks
	 iffe: check that . is writable
99-03-17 hostinfo: fix for cc not found
	 dl.c,hello.c,m.c: headers in conditionals to force .DONTCARE
	 C.probe: extra check for include dirs pulled in by <sys/types.h>
99-03-03 regress: add `UNIT - ...' for extra args
	 Makefile: add (_hosttype_) prereq for cc
99-01-23 hostinfo: tweak rating, use /proc/cpuinfo if there
99-01-11 C.probe: shlib before lib, /usr before /
98-12-25 iffe: work around win32.alpha intrinsic clash with -O
98-11-11 regress: fix UNIT PATH lookup
98-11-01 regress: add PROG
98-10-01 hostinfo: add unixware.*
	 use: export PACKAGE_* 
98-08-11 C.probe: add /usr/include check (for sco CC)
	 hostinfo: handle uwin uname update
98-05-01 regress: fix bug sometimes didn't list last test
98-04-01 hostinfo: add cc path arg
	 hostinfo: now works with /bin/sh
	 Makefile: strengthed -lm probe
98-01-23 Makefile: check for -ldl -lm
	 C.probe: handle gcc -v -E phony include dirs
	 iffe: fix lcl by dropping sort -u -- we need the real first
	 iffe: `mem x' to test if x is a non-opaque struct
98-01-11 $(INSTALLROOT)/lib32 for sgi.mips3
	 $(INSTALLROOT)/lib64 for sgi.mips4
	 add cc.hp.pa
98-01-01 cc.sgi.mips*: turn off ld library multiply defined
97-10-11 regress: add VIEW function for locating data
97-10-01 Makefile: -ldl test moved to libdll Makefile
97-08-11 regress: add MOVE
	 regress: add SAME
	 regress: use getopts
	 regress: `EXEC' repeats previous test
97-07-17 use: tweak PATH and LIBPATH bootstrap order
	 iffe: fix lcl bug that botched pathnames with embedded spaces
97-06-12 iffe: add npt `needs prototype' test
97-05-09 hostinfo: mvs.* => mvs.390
	 Makefile: cc.$(_hosttype_) workaround installed here
	 iffe: fix nolink{ ... }end
	 iffe: add [no]static{ ... }end for static link test
	 C.probe: _probe_PATH => _probe_export which must be eval'd
97-04-01 use: _RLD_ROOT set too
97-03-17 mm2html: changed inner loop
	 mm2html: handle .if|.ie|.el, .so
	 mm2html: handle different man styles
	 mm2html: differentiate mm/man in some non-obvious cases
	 hostinfo: r5000 is not mips4
97-02-14 hostinfo: validate type with cc
96-12-25 C.probe: uwin tweaks
	 iffe: use `...` instead of $(...) for alpha /bin/sh
	 iffe: fix `typ' divide by 0
	 iffe: `lcl' now drops X: prefix
	 iffe: +l* -> -l*
	 iffe: eval around ${...#%...} for bsd /bin/sh
	 use: add sgi.mips LD_LIBRARY<abi>_PATH variants
	 use: add -e to list exports
	 iffe: lcl leaves leading [a-zA-Z]: for dos
	 iffe: fix no{link|output|execute} logic
	 C.probe: don't automatically add /usr/include for non-hosted compilers
	 C.probe: don't automatically place /usr/include last
	 C.probe: check gcc style -v -E for stdinclude usrinclude
96-11-28 iffe: check BASH_VERSION for IFS botch
	 iffe: typ long.xxx only if sizeof(long xxx) != sizeof(xxx)
	 hostinfo: fix sgi.mips[234] tests
	 hostinfo: fix ncr.i386 tests
96-10-31 iffe: work around old bsh here doc bug by running separate sh
96-10-11 iffe: *.iffe and *.iff for iffe src files
	 hostinfo: tighten sgi.mips cpu type check
96-10-01 C.probe: add probe_libdir to catch alpha /usr/shlib
96-09-17 iffe: fix typ bug that failed for single id types!
96-08-31 hostinfo: handle recent sgi hinv cpu changes
96-07-17 make sure sizeof(long xxx)>sizeof(xxx) for typ long.xxx
96-05-09 C.probe: drop multiple / in stdinclude
96-02-29 use: package root must have bin and lib subdir
	 mm2html: add
	 C.probe: probe_members += -whole-archive for gcc
	 iffe: add + fix the blasted `...'...\\...'...`
96-01-31 use: add pkg dir
	 hostinfo: add tandem
96-01-01 hostinfo: windows_nt|windows[0-9][0-9] -> win32
95-11-24 hostinfo: linux-aout.* for non-elf linux
95-11-11 use: add aix LIBPATH
95-10-11 hostinfo: no args prints type
95-08-11 use: add
95-05-09 save original PATH in _probe_PATH
	 beef up library dir probe
95-04-01 use c source suffix if it still preserves the dialect
	 add hostinfo
	 add lib/hostinfo/typemap user type map
	 add sol.sun4 cpu count
	 fix C.probe to properly handle C/C++ combined compiler drivers
	 add NeXT to hostinfo
	 bummer: mach has /usr/bin/hostinfo
95-03-19 fix dialect executable test
95-03-19 --- release 0.0 ---
