1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-15 23:50:44 +00:00
freebsd-ports/lang/scsh/pkg-descr

85 lines
3.5 KiB
Plaintext
Raw Normal View History

Scsh is a Unix shell in that is has significant syntax entensions to
make writing Unix shell scripts easy (constructing pipelines, setting
I/O redirection, conditional execution etc.). It also offers access to
lower-level functionality like all Posix system calls, TCP/IP sockets
and a full-featured regular expression library. All this is embedded
into a general-purpose programming language with proper handling of
quoting, real data types and extensive, syntactically clean control
constructs.
Scsh is also a full implementation of R4RS Scheme with some
non-standard behaviour (required for scripting) that shouldn't be a
problem in practice. As a result, a wide varity of exsting Scheme code
can be used.
Offered functionality:
- Scheme special forms to work with Unix commands and command chains
- the ability to be used to write self-identifying scripts with
'#!/usr/local/bin/scsh' as the first line.
- all Posix system calls including signals, tty and time handling
- regular expressions, uses the same C library as *BSD, returns a
proper structure describing the matches and/or matched substrings.
- delimited strings, awk-like record/field processing
- several socket layers
- A foreign function interface to use other C code, including a tool
(cig) to automate integration process.
- elisp code to run it as a subprocess under emacs
- On the Scheme side: a module system, basic thread support, optional
static linker (compiles images to C, then into an executable).
The underlying Scheme implementation is a virtual machine for compact
byte code.
Installed Items:
----------------
Main program name(s): "scsh"
Manpage(s): scsh(1)
Info files: <none>
Other documentation: lib/scsh/doc/ (also linked to share/doc/scsh)
Learning entry point: lib/scsh/doc/scsh-paper.ps or
http://www-swiss.ai.mit.edu/scsh/
General Notes:
--------------
Changing ${PREFIX} to something other than /usr/local works
flawlessly, as far as scsh itself is concerned (that means: it will
run and find everythings it needs). You will have to change the
initial "#!/usr/local/bin/scsh" line when running shell scripts, of
course. An additional problem is the location of optional packages
like slib, these are still expected to be in /usr/local. I looked
into the sources and all the hardcoded /usr/local I found are in files
that are installed sourcecode form when scsh is installed
(i.e. slib-init.scm).
To load slib, install slib into /usr/local/lib/slib and run
(load "slib-init.scm")
in scsh. It requires no additional setup (paths or such).
The emacs interface is in the original distribution in emacs/. For
documentation see doc/user-quide.txt.
Differences between FreeBSD port and generic scsh release:
----------------------------------------------------------
1) When hitting C-d (end-of-file), scsh asks 100 times for
confirmation. I changed the default to do this just once. See constant
*y-or-n-eof-count* in scsh/rw.scm to change it.
2) The original scsh sends a mail to the scsh authors everytime you
make the package. The FreeBSD port doesn't. The authors of scsh would
appreciate it if you do a `(cd work/scsh-0.4.4 && make .notify)` after
you build this package.
3) A symbolic link ${PREFIX}/share/doc/scsh to the documentation is
created.
4) Some basic description text files from the distribution base dir
are copied to lib/doc. The emacs directory is copied into
lib/scsh/emacs. scsh's default is not to install these files.
5) Some /usr/tmp -> /var/tmp
FreeBSD port provided by Martin Cracauer <cracauer@cons.org>