Subject: Re: dsp device
To: Michael Graff <explorer@kechara.flame.org>
From: Alistair G. Crooks <azcb0@sde.uts.amdahl.com>
List: port-i386
Date: 10/11/1996 00:05:01
This is a multipart MIME message.

--===_0_Thu_Oct_10_23:59:48_BST_1996
Content-Type: text/plain

> Sean Berry (most of the time) <spberry@image1.ansci.iastate.edu> writes:
> 
> > Phil Knaack and I have been discussing a tree of NetBSD capable
> > applications, customised to BSD make, such that when one acquired a new box
> > or a new port or rebuilt a system, one could simply rebuild all their
> > non system binaries (emacs, joe, ghostscript, various) with a single make
> > depend and make.  I'm willing to donate the disk to the project, and will
> > maintain this side of it, but I don't know that we've moved beyond the
> > talking about it phase.
> 
> I have something worked up.  As I know both Phil and Sean, if you want
> CVS access to the tree I'm working with, and really want to WORK on this,
> I will give you accounts on my box.
> 
> If others want to discuss this, I can (1) make a mailing list, and
> (2) possibly give out accounts to those I trust.
> 
> No matter what is done, it needs to support all the NetBSD arch's and
> it would be nice to have it just work for FreeBSD as well, so a few
> FreeBSD hackers would be nice...

I gave out the following information to some people on current-users
who asked me for it.  Since then, I've had an offer of an ftp site for
the thing, and I will look into doing this as soon as I get back from
travelling.  It's fairly lengthy, so I apologise to those of you who
get port-i386 over a PPP link.


--===_0_Thu_Oct_10_23:59:48_BST_1996
Content-Type: text/plain; charset=us-ascii
Content-Description: A description of the "ports" collection

This is fairly lengthy, so feel free to delete it if you don't want to
wade through this.  Also, please feel free to criticise, just as I'll
feel free to criticise your criticisms.

The whole idea of the ports collection is to have a framework for
integrating sources, usually written by third parties, in a consistent
and logical way, and to have a relatively easy way to install and
de-install the software.

FreeBSD has a similar collection, but my ports colllection is
different for various reasons:

1.  For various reasons, I needed something I wrote completely myself,
from scratch.
2.  The FreeBSD ports collection is much bigger than mine, but is
targeted towards the production of a binary package which can be
manipulated by their pkgtools clone.  Due to some bad experiences
with System V pkgtools, I have an aversion to this method, and
don't think that it scales well to a multi-platform system such
as NetBSD or OpenBSD.  I also prefer source to binaries.
3.  Each port has a wrapper Makefile, which includes some definitions
at the start, and some rules at the end of it.  For this reason, we
need a make(1) that has some sort of "include" functionality - the
rest has been implemented as a combination of basic make features, and
shell scripting.
4.  The idea is that you change into the directory of the port
which you want to install, and type "make". This goes through various
steps for you:
a) it'll fetch the tar archive from an ftp site, if the tar archive
isn't present in the current directory.
b) it'll verify the tar archive using a pre-computed checksum (I'm
not using md5 for this at the moment, just normal cksum - I'm
willing to be persuaded).
c) The tar archive is unpacked, usually into a separate working
directory.
d) Any patches are applied
e) The dependencies for this port are checked. These are other
"ports" which may be necessary for building or running the port.
You can specify the "stage" of the dependent-port i.e.
PORT_DEPENDS= m4-1.4 port_installed
is a line from autoconf-2.10/Makefile. Multiple dependencies
may be specified.
f) Any configuration is done.
g) The port is built
h) The necessary man pages, binaries, include files, libs etc
are installed.
5.  It's easy to see which files make up a particular installed port:
"make port_inventory" is the command.
6. The port can be uninstalled using the "make port_uninstall"
command.
7. The port can be cleaned up using the "make port_clean" command.
8. There are various other targets:
port_status - because it's possible to make parts of the port as and
when you want, this command tells you what stage you are at, and
when each stage was completed.
port_description - echo on stdout a short description of the port
port_watch - look for updated ports on the URL of the ftp site
(and note that I'm sitting behind a firewall at the moment - it
uses socks4 for this).
port_keywords - echo on stdout the keywords for this port (this is
useful if you're looking for some functionality, and don't know what
each port does).
port_installed - checks to see if the port is installed, and, if not,
installs it. Mostly used as a target in the dependency checking.
port_inventory - tells you which files were installed by this port.

Note that each definition used by my ports collection has a prefix of
"PORT_", and each target has a prefix of "port_". (Actually, I can't
stand the word "port", but there didn't seem to be any alternative.)
This means that there are usually no conflicts with other makefile
targets ore definitions.

To illustrate all this, I've included a short script(1) file below:
(I've deleted the trailing ^M characters from the typescript)

Script started on Tue Oct  1 17:37:56 1996
root@pumpy:/jaz(1)# make port_description
9term-1.6.6: A clone of the Plan 9 terminal program.
Sather-1.1b2: The Sather OOP language, a cousin of Eiffel.
amanda-2.2.6: An archival program for multiple machines.
amanda-2.3.0: An archival program for multiple machines.
apache-1.1.1: An HTTP daemon
autoconf-2.10: GNU auto-configuration package - builds the "configure" scripts.
awk-96-06-29: awk (scripting language) program by Brian Kernighan.
bash-1.14.7: The GNU Bourne Again Shell, a sh(1) clone with numerous 
additions, such as job control.
binutils-2.7: The GNU binary utilities.
bison-1.25: The GNU yacc(1) clone.
bochs-96-09-20a: An i386 emulator.
bzip-0.21: A replacement for gzip, generally much more efficient.
cvs-1.8.5: Concurrent Version System, for configuration management of software 
projects and other files.
dxpc-3.0.0: Compresses X traffic across a (low-bandwidth) link.
emacs-19.34b: GNU Emacs editor, an editor with full functionality.
enscript-1.4.0: A utility to generate Postscript.
f2c-96-08-27: Fortran 77 translator to C.
faces-1.6.1: Face manipulation and display software for X11.
fvwm-2.0.43: Feeble Virtual Window Manager for X11 - multiple desktops
gawk-3.0.0: The GNU awk program, similar to awk(1), but with added 
functionality.
gc-4.11alpha: garbage collecting memory allocator, also finds memory leaks.
gcc-2.7.2.1: The GNU C compiler, also compiles C++ and Objective-C.
gdbm-1.7.3: GNU database routines.
geomview-1.5.0: A geometrical display utility
ghostscript-3.33: A Postscript interpreter.
ghostview-1.5: An X11 viewer for Ghostscript (c.f.).
git-4.3.12: The GNU interactive tools.
glimpse-3.6: A powerful indexing and query system.
gmp-2.0.2: The GNU multi-precision math(s) library.
gofer-2.30a: A functional language interpreter/compiler, a small cousin of 
Haskell.
gzip-1.2.4: Memory compression and decompression program.
harvest-1.3: An HTTP daemon.
icon-9.1: High-level general-purpose programming language
id-utils-3.2: The GNU id utilities.
ilu-2.0a8: An O-O interface description language.
inetutils-1.2: The GNU Internet utilities.
jove-4.16: A windowing editor in the emacs family.
jpeg-6a: library for displaying jpeg images.
kaffe-0.5p4: A Java Virtual Machine (JIT compiler and interpreter).
less-321: A pager program, more functionality than more(1).
lesstif-0.50: A clone of Motif(TM) 1.2.
lsof-3.76: Lists open files/descriptors.
lynx-2.6: A WWW browser/HTML reader for dumb/thick terminals.
lyx-0.10.3: The lyx wordprocessor.
m4-1.4: The GNU m4 macro processor.
make-3.75: The GNU make project builder program, more functionality than 
make(1).
mawk-1.2.2: Mike Brennan's nice, small, fast awk(1) clone.
metahtml-5.00: A language for creating HTML documents
metamail-2.7: An implementation of Multipurpose Internet Mail Extensions 
(MIME).
mh-6.8.3: The Rand MH mail user agent.
mkisofs-1.05: Creates cd9660 filesystems.
nethack-3.2.1: An adventure-like game
nj-mc-tk-0.4: Generates bit-manipulating code for use in code-generators
nvi-1.71: An editor with the same interface as vi(1), but with added 
functionality, and other interpreters.
p2c-1.20: A Pascal to C translator.
pccts-1.33: Integrated compiler construction tools.
pdksh-5.2.8: Public Domain Korn Shell, a clone of the System V shell .
perl-5.003: A scripting language, popular for system admin, and WWW.
povray-3.0: Persistence Of Vision Ray tracer.
python-1.3: A scripting language, O-O, portable, and powerful.
rc-1.4: A clone of the Plan 9 shell.
rclock-1.0: A smaller, more socially-acceptable clock for X11
rcs-5.7: The GNU Revision Control System, more functionality, and quicker, 
than SCCS.
readline-2.0: GNU library which allows re-use of previously-entered input.
rman-2.5a6: Rosetta-man, parses *most* systems' manual pages.
rtty-3.2: A remote tty program.
rxvt-2.09: A terminal window for X11, smaller, simpler faster than xterm
sam-96-07-23: visual editor by Rob Pike, ported to X11.
scheme48-0.36: A portable scheme interpreter.
screen-3.7.1: A multiplexor for tty screens.
scsh-0.4.2: A scheme shell.
sed-2.05: The GNU sed stream editor, equivalent to sed(1).
smalltalk-1.1.1: The GNU Smalltalk-80 interpreter.
socks-4.3b2: Internet firewall software.
squid-1.0.12: An Internet Object cache.
sudo-1.5: Program to limit selected superuser commands to selected users.
tar-1.11.8: The GNU tar program, an archival program, with more functionality 
than tar(1).
tcl-7.5p1: The tcl scripting language, for embedding in programs.
tcpwrappers-7.4: Security software to log TCP/IP programs.
tcsh-6.06: A csh(1) clone, with added functionality.
teTeX-0.4: The teTeX distribution of TeX
tk-4.1p1: The tk windowing scripting language.
tkman-1.8b5: Manual page viewer, with hypertext links, for X11
top-3.4: A real-time display of machine loading statistics.
tripwire-1.2: A security tool to check integrity of files.
ucblogo-3.3: UCB logo language, small, simple.
ucd-snmp-3.1.0.1: UCD SNMP daemon.
unzip-5.2: Archiving extraction facility.
vile-6.1: An editor with vi(1) functionality, but with added features.
vim-4.2: A clone of the vi(1) editor.
wily-0.12.11: A windowing editor like acme, which runs on X11.
wine-960928: Windows emulator for X11, i386-based machines
xearth-1.0: Puts a rotating image of the world in your X11 root window.
xemacs-19.14: Emacs editor, based on GNU emacs, an editor with full 
functionality.
xforms-0.81: An X11 interface building library.
xless-1.7: A file viewer for X11, like more or less
xloadimage-4.1: X11 display program for all types of graphical objects.
xntp-3.5.85: Network time synchonisation.
xpdf-0.5: An X11 viewer for pdf (Acrobat) files.
xpm-3.4h: X11 pixmap library.
xv-3.10a: X11 display program for all types of graphical objects.
xvile-6.1: An X11 editor with vi(1) functionality, but with added features.
zlib-1.0.4: Memory compression and decompression library.
root@pumpy:/jaz(2)# cd m4-1.4
root@pumpy:/jaz/m4-1.4(3)# cat Makefile
# port Makefile for GNU m4-1.4, by
# Alistair G. Crooks (agc@amdahl.com)
# Wed Aug 14 15:05:54 BST 1996

.include "../agc.defs.mk"

PORT_URL= ftp://prep.ai.mit.edu/pub/gnu/m4-1.4.tar.gz
PORT_CHECKSUM= 3123889356 317588 m4-1.4.tar.gz
PORT_NAME= m4-1.4
PORT_POST_INSTALL_CMD=  mv $(PORT_PREFIX)/bin/m4 $(PORT_PREFIX)/bin/gm4
PORT_DESCRIPTION= "The GNU m4 macro processor."
PORT_KEYWORDS= language m4 macro GNU

.include "../agc.port.mk"
root@pumpy:/jaz/m4-1.4(4)# make
Fetching m4-1.4...
Verifying m4-1.4...
m4-1.4.tar.gz... ok
Unpacking m4-1.4...
Patching m4-1.4...
Checking dependencies for m4-1.4...
Configuring m4-1.4...
(cd m4-1.4 ; ./configure --prefix=/usr/local)
creating cache ./config.cache
checking for mawk... mawk
checking for gcc... gcc
checking whether we are using GNU C... yes
checking for a BSD compatible install... /usr/bin/install -c
checking whether make sets $MAKE... yes
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for AIX... no
checking for POSIXized ISC... no
checking for minix/config.h... no
checking for gcc option to accept ANSI C... 
checking for function prototypes... yes
checking for working const... yes
checking for limits.h... yes
checking for memory.h... yes
checking for siginfo.h... no
checking for string.h... yes
checking for unistd.h... yes
checking whether cross-compiling... no
checking for ANSI C header files... yes
checking return type of signal handlers... void
checking for size_t... yes
checking for mkstemp... yes
checking for sigaction... yes
checking for sigaltstack... yes
checking for sigstack... no
checking for sigvec... yes
checking for strerror... yes
checking for tmpfile... yes
checking for working alloca.h... no
checking for alloca... yes
checking for vprintf... yes
checking for strtol... yes
checking ecvt declaration... no
checking for ecvt... no
checking if stack overflow is detectable... yes
checking if changeword is wanted... no
checking if malloc debugging is wanted... no
updating cache ./config.cache
creating ./config.status
creating Makefile
creating doc/Makefile
creating lib/Makefile
creating src/Makefile
creating checks/Makefile
creating examples/Makefile
creating config.h
Building m4-1.4...
(cd m4-1.4 ; make)
for subdir in doc lib src checks examples; do  echo making all in $subdir;  
(cd $subdir && make CC='gcc' CFLAGS='-O -pipe -fno-strength-reduce' LDFLAGS='' 
LIBS=''  prefix='/usr/local' exec_prefix='/usr/local'  bindir='/usr/local/bin' 
infodir='/usr/local/info' all) || exit 1;  done
making all in doc
making all in lib
gcc -c -DHAVE_CONFIG_H -I.. -I.  -O -pipe -fno-strength-reduce regex.c
gcc -c -DHAVE_CONFIG_H -I.. -I.  -O -pipe -fno-strength-reduce getopt.c
gcc -c -DHAVE_CONFIG_H -I.. -I.  -O -pipe -fno-strength-reduce getopt1.c
gcc -c -DHAVE_CONFIG_H -I.. -I.  -O -pipe -fno-strength-reduce error.c
gcc -c -DHAVE_CONFIG_H -I.. -I.  -O -pipe -fno-strength-reduce obstack.c
gcc -c -DHAVE_CONFIG_H -I.. -I.  -O -pipe -fno-strength-reduce xmalloc.c
gcc -c -DHAVE_CONFIG_H -I.. -I.  -O -pipe -fno-strength-reduce xstrdup.c
rm -f libm4.a
ar cru libm4.a regex.o getopt.o getopt1.o error.o obstack.o xmalloc.o  
xstrdup.o
ranlib libm4.a
making all in src
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce m4.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
builtin.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
debug.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
eval.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
format.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
freeze.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
input.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
macro.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
output.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
path.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
stackovf.c
gcc -c -DHAVE_CONFIG_H -I.. -I. -I./../lib  -O -pipe -fno-strength-reduce 
symtab.c
gcc  -o m4 m4.o builtin.o debug.o eval.o format.o freeze.o input.o  macro.o 
output.o path.o stackovf.o symtab.o ../lib/libm4.a 
making all in checks
making all in examples
Installing m4-1.4...
for subdir in doc lib src checks examples; do  echo making install in $subdir; 
 (cd $subdir && make CC='gcc' CFLAGS='-O -pipe -fno-strength-reduce' 
LDFLAGS='' LIBS=''  prefix='/usr/local' exec_prefix='/usr/local'  
bindir='/usr/local/bin' infodir='/usr/local/info' install) || exit 1;  done
making install in doc
./../mkinstalldirs /usr/local/info
cd . && for file in m4.info*; do  /usr/bin/install -c -m 644 $file 
/usr/local/info/$file;  done
making install in lib
making install in src
./../mkinstalldirs /usr/local/bin
/usr/bin/install -c m4 /usr/local/bin/`echo m4 | sed 's,x,x,'`
making install in checks
making install in examples
root@pumpy:/jaz/m4-1.4(5)# make port_inventory
/usr/local/info/m4.info-3
/usr/local/info/m4.info-2
/usr/local/info/m4.info-1
/usr/local/info/m4.info
/usr/local/info
/usr/local/bin/gm4
/usr/local/bin
root@pumpy:/jaz/m4-1.4(6)# make port_uninstall
Uninstalling m4-1.4 files...
/usr/local/info/m4.info-3
/usr/local/info/m4.info-2
/usr/local/info/m4.info-1
/usr/local/info/m4.info
/usr/local/info
rmdir: /usr/local/info: Directory not empty
/usr/local/info not empty
/usr/local/bin/gm4
/usr/local/bin
rmdir: /usr/local/bin: Directory not empty
/usr/local/bin not empty
root@pumpy:/jaz/m4-1.4(7)# make port_clean
Cleaning up m4-1.4...
root@pumpy:/jaz/m4-1.4(8)# ls -al
total 325
drwxr-xr-x    2 root  wheel     512 Oct  1 17:44 .
drwxr-xr-x  117 root  wheel    3072 Oct  1 17:37 ..
-rw-r--r--    1 root  wheel     436 Sep  5 16:11 Makefile
-rw-r--r--    1 root  wheel  317588 Aug 16 21:58 m4-1.4.tar.gz
root@pumpy:/jaz/m4-1.4(9)# exit
root@pumpy:/jaz/m4-1.4(10)# exit

Script done on Tue Oct  1 17:44:10 1996

I'm more than willing to put this up for ftp somewhere, if anyone
should think it's worthwhile, except for the fact that I don't
actually have the ability to do that at Amdahl or at home at the
moment.

Thanks for your interest, and congratulations for making it this far,
Alistair

--===_0_Thu_Oct_10_23:59:48_BST_1996
Content-Type: text/plain; charset=us-ascii

Alistair G. Crooks (agc@uts.amdahl.com)                    +44 125 234 6377
Amdahl European HQ, Dogmersfield Park, Hartley Wintney, Hants RG27 8TE, UK.

--===_0_Thu_Oct_10_23:59:48_BST_1996--