Home > Skunkware


Welcome to the Skunkware Development Tools section. Here you will find replacement compilers, debuggers, libraries and other tools used for software development. A lot of these tools are updated regularly, so you may want to check out the on-line version of this page.

Package List

Name Description Version OSR5 UnixWare
aalib Ascii graphics library 1.2 Yes Yes
autoconf GNU configuration script generator 2.12 Yes Yes
binutils GNU binutils 2.9.1 Yes Yes
bison GNU parser generator 1.25 Yes Yes
cdrecord Record audio & data CD's 1.6.1 Yes Yes
cvs GNU concurrent version system 1.10 Yes Yes
ddd Data Display Debugger 3.2.1 Yes Yes
dejagnu GNU test framework 971028 Yes Yes
erlang Programming language 47.4.1 No Yes
expect Expect - a TCL Extension 5.25 Yes Yes
flex Fast lexical analyzer generator 2.5.4 Yes Yes
gcc Integrated GNU Compilation System 2.95.2 Yes Yes
gdb GNU Source level Debugger 970817 Yes Yes
getline command-line editing library with history 3.11 No Yes
glib Graphics Libraries 2.0 Yes Yes
helpapi SCO Help API for UnixWare 7 1.1 No Yes
indent GNU indent - a source code beautifier 1.9.1 Yes Yes
infodock Advanced Integrated Development Environment 4.0.8 No Yes
intel2gas Converts NASM/MASM to GAS 1.3.3 No Yes
js NGS JavaScript Interpreter 0.2.4 No Yes
kdevelop KDevelop integrated development environment 1.1 Yes Yes
libtool GNU Libtool 1.3.5 Yes Yes
make GNU Make 3.76.1 Yes Yes
mkpkg Pkgadd Packaging Frontend 1.1 Yes Yes
mkvol Custom Packaging Frontend 1.1 Yes Yes
patch GNU patch 2.5 Yes Yes
perl Perl 5 Scripting Language 5.004_04 Yes Yes
pkgtools Pkgadd/pkgmk and family skw98 Yes No
pthreads FSU Posix threads 3.5 Yes No
python Python - an object orient scripting tool 1.5 Yes Yes
qt QT X11 Widget Set 1.44 Yes Yes
rcs GNU revision control system 5.7 Yes Yes
readline GNU Readline Library 2.1 Yes Yes
stl SGI Standard Template Library 3.11 Yes Yes
tcl Tool Command Language (TCL) 8.0p2 Yes Yes
tclx Extended TCL 8.0.2 Yes Yes
tk Tk - an X11 Toolkit for TCL 8.0p2 Yes Yes
vim Vi IMproved, a programmers text editor 5.5 Yes Yes

Integrated GNU Compilation System

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/gcc/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/gcc/

Original source code ftp://egcs.cygnus.com/pub/egcs/releases/index.html

Package Home page http://egcs.cygnus.com/

The GNU C Compiler (gcc) is an advanced optimizing compiler for C, C++ and Objective C. On OpenServer, this version of gcc can generate both COFF and ELF binaries from within a single compiler. Use the -melf flag to turn on ELF mode. By default, the compiler is always in COFF mode. On UnixWare, gcc always generates ELF binaries.

[Important Note for OpenServer Users]: The GCC package for OpenServer requires system libraries and headers. Even if you do not have a licensed Caldera development system, you are licensed to use these at no cost and they are available on your installation media. Install them thusly:

  • Invoke custom
  • Select "Install New" option from the "Software" menu.
  • Follow the prompts to steer custom toward the original media you used to install OpenServer 5.
  • Select Application Development Libraries and Linker. Install it all. This will give you the libraries, headers, and man pages.

On Skunkware 98 the "Gcc" package is an "Integrated GNU C Compilation System" containing both the "production quality" GNU C Compiler and the experimental EGCS GNU C Compiler from Cygnus. When installing the Gcc package off of Skunkware 98 both of these compilers are installed and co-exist. By default, the FSF gcc will be used. The system wide default can be set in the file /etc/default/gcc by setting the PREFERRED_GCC variable to either /usr/local/lib/front-fsf or /usr/local/lib/front-egcs. An individual developer can over-ride the system wide default by setting and exporting PREFERRED_GCC in her environment.

Caldera Skunkware for Open UNIX 8 no longer contains GCC and many related GNU development tools. These are shipped as part of the supported product.

For the UnixWare compiler (and the OpenServer compiler in ELF mode), there are a few switches which developers may be interested in. All of these switches are covered in the GCC documentation, this is just a brief summary:

  • -fPIC - generate position independent code. This is used when creating shared libraries.
  • -shared - used during linking. This will create a shared library. For example, the command gcc -shared -o libfoo.so *.o will link in all of the object files in the currently directory and correctly construct a shared library called libfoo.so. When using this option, you may want to check the man pages on ld for the usage of the -h and -Bexport options. NOTE: in order to pass the -Bexport flag to the linker, you need to invoke gcc with gcc -Wl,-Bexport. This is because the -B flag has special significance to gcc. The -Wl flag is used to pass arguments to the linker. Consult the gcc documentation for further details.
  • -m486 - turn on 486 specific optimizations. This option will produce code which can take advantage of specific 486 instructions, and which result in a code speed increase on 486 and later processors. On original 386 processors, there is a very negligible speed decrease. The code generated will still function properly on the 386.

On OpenServer release 5.0.4, be careful when invoking gcc as a linker if you use gcc specific flags. Be especially careful with mixing gcc specific flags when using the -s option. This can cause the 5.0.4 linker to core dump. For example, the command line gcc -m486 -fomit-frame-pointer -Wall -s -o foo *.o is bad, whereas the command line gcc -s -o foo *.o is good. The gcc specific flags -fomit-frame-pointer -Wall (used only as an example here) confuse the 5.0.4 linker.

Users of the old GDS (OSR5 only)

For users of the GDS, as shipped on Skunkware 96, or for users who have downloaded the GDS from the Caldera ftp site, life is a little different with this release of GCC.Firstly, the -b elf flag has been replaced with -melf. Secondly, the -K PIC option has been replaced with the -fPIC option. This is to ensure compatibility with all other version of the GNU C Compiler. Thirdly, no assemblers are provided, as described below.

With this release of GCC, no assembler is provided, and the GDS is no longer one large package, but rather a collection of smaller packages. However, installing all of the tools found in this section of Skunkware will be at least the equivalent of the GDS, if not more. For people using SCO OpenServer release 5.0.0 or release 5.0.2 who are not licensed development system users, you will need to install not only the linkers and libraries package, but also the assembler from the development system package. If you have the SCO OpenServer Development System package installed, you do not need to do anything extra in order to use gcc.

For people running OpenServer release 5.0.4 or later, the linkers and libraries package already contains the Caldera assemblers. For licensed SCO OpenServer Development System users, you can safely install gcc and all of these development system utilities without impacting your existing installed development system at all.


GNU Debugger

The GNU debugger is a source-level symbolic debugger. On Open Server, it can debug both ELF and COFF binaries from within the same executable, the file formats are automatically recognized. This is a very powerful debugger, and has many friendly interfaces (coming soon to Skunkware On-line), such as xxgdb, mxgdb and of course the interfaces provided by X-Emacs and GNU Emacs.

As with most GNU software, GDB comes with complete Texinfo documentation. If you have installed the Texinfo package, you can view the documentation by executing the command info -f /usr/local/info/gdb.info.gz.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/gdb/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


aalib - ascii graphics library

aalib is a really amazing ascii graphics library. There is a cool demo with synchronized audio called bb.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/libraries/aalib/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/libraries/aalib/

Original source code ftp://ftp.ta.jcu.cz/pub/aa/aalib-1.2.tar.gz

Package Home page http://horac.ta.jcu.cz/aa/aalib/


GNU autoconf

GNU autoconf is a set of M4 macros and various shell scripts which allow a developer to generate the famous "configure" scripts which most programs use these days. This package requires that you install the GNU m4 macro package, which is also to be found under the Shell Utilities section of Skunkware.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/autoconf/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


GNU Development Tools

GNU binutils contains various GNU compilers, assemblers, linkers, debuggers, etc., plus their support routines, definitions, and documentation.

In particular, the GNU binutils is often installed in order to take advantage of the GNU assembler, /usr/local/bin/as.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/binutils/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/binutils/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


GNU Project parser generator

Bison is a parser generator in the style of yacc(1). It should be upwardly compatible with input files designed for yacc. Input files should follow the yacc convention of ending in .y. Unlike yacc, the generated files do not have fixed names, but instead use the prefix of the input file. For instance, a grammar description file named parse.y would produce the generated parser in a file named parse.tab.c, instead of y.tab.c.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/bison/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


fast lexical analyzer generator

flex is a tool for generating scanners: programs which recognize lexical patterns in text. flex reads the given input files, or its standard input if no file names are given, for a description of a scanner to generate. The description is in the form of pairs of regular expressions and C code, called rules. flex generates as output a C source file, lex.yy.c, which defines a routine yylex(). This file is compiled and linked with the -lfl library to produce an executable. When the executable is run, it analyzes its input for occurrences of the regular expressions. Whenever it finds one, it executes the corresponding C code.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/flex/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


Cdrecord - create audio & data CDs

Cdrecord is used to record data or audio Compact Discs on an Orange Book CD-Recorder.

Some OpenServer/UnixWare specific notes are available via http://www.sco.com/skunkware/cdrecord/notes.html.

UnixWare Distribution uw7/fileutil/cdrecord/

OpenServer Distribution osr5/fileutil/cdrecord/

Original source code ftp://ftp.fokus.gmd.de/pub/1/cdrecord/

Package Home page http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html


Data Display Debugger

DDD can do four main kinds of things (plus other things in support of these) to help you catch bugs in the act:

  • Start your program, specifying anything that might affect its behavior.
  • Make your program stop on specified conditions.
  • Examine what has happened, when your program has stopped.
  • Change things in your program, so you can experiment with correcting the effects of one bug and go on to learn about another.
"Classical" UNIX debuggers such as the GNU debugger (GDB) provide a command-line interface and a multitude of com- mands for these and other debugging purposes. DDD is a comfortable graphical user interface around an inferior GDB, DBX, XDB, JDB, PYDB, or Perl debugger.

OpenServer Distribution osr5/devtools/ddd/

Original source code ftp://ftp.ips.cs.tu-bs.de/pub/local/softech/ddd/

Package Home page http://www.cs.tu-bs.de/softech/ddd/


GNU test framework

DejaGnu is a framework for testing other programs. Its purpose is to provide a single front end for all tests. Beyond this, DejaGnu offers several advantages for testing:

  • The flexibility and consistency of the DejaGnu framework make it easy to write tests for any program.
  • DejaGnu provides a layer of abstraction which makes all tests (if correctly written) portable to any host or target where a program must be tested. For instance, a test for GDB can run (from any Unix based host) on any target architecture supported by DejaGnu. Currently DejaGnu runs tests on several single board computers, whose operating software ranges from just a boot monitor to a full-fledged, Unix-like realtime OS.
  • DejaGnu is written in expect, which in turn uses Tcl (Tool command language). The framework comprises two parts: the testing framework and the testsuites themselves. Tests are usually written in expect using Tcl.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/dejagnu/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/dejagnu/

Original source code ftp://ftp.cygnus.com/pub/dejagnu/


Erlang Programming Language

UnixWare Distribution uw7/devtools/erlang/

Original source code http://www.erlang.org/download.html

Package Home page http://www.erlang.org

Erlang is a programming language which has many features more commonly associated with an operating system than with a programming language: concurrent processes, scheduling, memory management, distribution, networking, etc.

The initial open-source Erlang release contains the implementation of Erlang, as well as a large part of Ericsson middleware for building distributed high-availability systems.

Erlang is characterized by the following features:

Concurrency - Erlang has extremely lightweight processes whose memory requirements can vary dynamically. Processes have no shared memory and communicate by asynchronous message passing. Erlang supports applications with very large numbers of concurrent processes. No requirements for concurrency are placed on the host operating system.

Distribution - Erlang is designed to be run in a distributed environment. An Erlang virtual machine is called an Erlang node. A distributed Erlang system is a network of Erlang nodes (typically one per processor). An Erlang node can create parallel processes running on other nodes, which perhaps use other operating systems. Processes residing on different nodes communicate in exactly the same was as processes residing on the same node.

Robustness - Erlang has various error detection primitives which can be used to structure fault-tolerant systems. For example, processes can monitor the status and activities of other processes, even if these processes are executing on other nodes. Processes in a distributed system can be configured to fail-over to other nodes in case of failures and automatically migrate back to recovered nodes.

Soft real-time - Erlang supports programming "soft" real-time systems, which require response times in the order of milliseconds. Long garbage collection delays in such systems are unacceptable, so Erlang uses incremental garbage collection techniques.

Hot code upgrade - Many systems cannot be stopped for software maintenance. Erlang allows program code to be changed in a running system. Old code can be phased out and replaced by new code. During the transition, both old code and new code can coexist. It is thus possible to install bug fixes and upgrades in a running system without disturbing its operation.

Incremental code loading - Users can control in detail how code is loaded. In embedded systems, all code is usually loaded at boot time. In development systems, code is loaded when it is needed, even when the system is running. If testing uncovers bugs, only the buggy code need be replaced.

External interfaces - Erlang processes communicate with the outside world using the same message passing mechanism as used between Erlang processes. This mechanism is used for communication with the host operating system and for interaction with programs written in other languages. If required for reasons of efficiency, a special version of this concept allows e.g. C programs to be directly linked into the Erlang runtime system.


Open-source Erlang comes with several standalone components that can be used as building blocks when developing applications. These components understands Erlang systems messages (load, unload, start, stop, restart, change code).

Inets - HTTP 1.0 server and FTP client.

Mnesia - Distributed real-time database for Erlang. Supports RAM-replication as well as disk storage, allows dynamic schema changes, allows arbitrarily complex data structures to be stored. Mnesia is very fast since it runs in the same address space as the applications that use it - this is possible since both Mnesia and the applications are written in Erlang. Mnesia is a nice example of the power of Erlang: in how many languages could you write a fully-featured industrial-strength distributed DBMS in less than 20,000 lines of code?

Orber - CORBA v2.0 Object Request Broker (ORB).

SNMP - Extensible SNMP v1/v2 agent and MIB compiler.

Tools and Libraries

Open-source Erlang comes with a library of useful tools:

Appmon - Graphical monitoring of process groups (locally and on remote nodes).

ASN.1 - Compile-time and runtime package which supports the ASN.1 Basic Notation and the encoding rules BER and PER.

Compiler - Erlang compiler.

Debugger - Graphical Erlang debugger.

ERTS - Erlang runtime system, including the virtual machine, the garbage collector, and the port mapper daemon.

GS - Library for writing graphical user interfaces.

IC - Compiler from OMG Interface Definition Language (IDL) to Erlang and C.

Jive - Support for calling Java from Erlang and vice versa.

Kernel - C code necessary to run the Erlang system: Erlang built-in functions (BIFs); code, boot and name servers; networking and distribution support; loaders, linkers and loggers; OS and file system interfaces.

MESH - Measurement handling, including an SNMP MIB.

Mnemosyne - Optional query language for Mnesia.

Mnesia Session - Foreign languages interface to Mnesia defined in IDL, providing Mnesia access via the IIOP and erl_interface protocols.

OS monitor (OS_MON) - Monitoring of CPU, disk and memory utilization, including SNMP v1/v2 MIBs. Interfaces to Solaris syslogd and Windows NT event log.

Parse tools - LALR-1 parser generator for Erlang (yecc), similar to yacc. Yecc takes a BNF grammar definition as input, and produces Erlang code for a parser as output. Yecc is used to generate the Erlang parser.

PMan - Tool for tracing and viewing the state of Erlang processes (locally or on remote nodes).

SASL - Progress/error/crash report handling, report browsing, release handling, overload regulation.

Stdlib - Libraries for: input/output; incore and disk-based table storage (ETS and DETS); graphs, dictionaries, lists, strings, sets, queues; regular expressions; math. Erlang interpreter, tokenizer, parser, lint and pretty-printer. Generic frameworks for fault-tolerant servers, event handlers, state machines, and process supervisors. Etc, etc.

Table visualizer - Tool for viewing ETS and Mnesia tables.

Toolbar - Simplifies access to the Erlang Tools.

Tools - Coverage analyser, profiler, text-based tracer, Emacs mode, Emacs TAGS file generator, make utility, call graph utility.

Xref - Provides statistics on cross referencing between modules and functions.


command-line editing library with history

The getline package is a set of library routines that implement an editable command-line history. Getline is GNU Readline compatible but a lot smaller.

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/lib/

Original source code ftp://ftp.sco.com/skunkware/src/lib/


SCO UnixWare 7 Help API

The UW7 Skunkware team is very proud to be able to bring to you the public release of the SCO UnixWare 7 Help API.

The SCO UW7 Help API provides a low-level context-sensitive help api for use with the SCO UW7 ScoHelp system. X11 graphical clients wishing to provide context-sensitive help via the ScoHelp facility can utilize the SCO Help API contained herein.

The callable low-level scohelp api enables other Motif applications to act as scohelp "clients", thus allowing requests to be made of scohelp to display specific topics. Topics can be either "hard coded" using the actual topic name, or can be a "widget tree" name. "Widget tree" names are intended to be used by a higher level api; the direct user of the low-level api will use only "hard coded" topic names.

SCO UW7 Skunkware Help Api (helpapi package) contains the following files:

    (Help Api header file)
    (link to libhelp.so.1.0)
    (Help Api Documentation)
    (example C file)
    (example MAKE file)
    (example hook file)
    (example help documents)

Please use pkgadd to install helpapi.pkg

To build the example program (make sure the udk package has been installed):

mkdir $HOME/api_test
cd $HOME/api_test
cp /usr/lib/helpapi_example/ .
make -f api_test.mk
You can then run the example program api_test. From the api_test window, pressing F1 key or clicking on any item on the Help menu will open a netscape window which displays the corresponding example help document. Note that if your system is using a Documentation Server other than localhost, you will need to install the example documentation on the Documentation Server.

Please view the SCO UW7 Help Api Documentation from scohelp for additional details after you install the Help Api on your system. You may want to run /usr/man/bin/config_search -f to help you with finding the Help Api pages by scohelp searching.

UnixWare Distribution uw7/libraries/helpapi/

Package Home page http://doc.sco.com


BeOpen.com InfoDock - Integrated Software Development Toolset

BeOpen.com InfoDock is an Integrated Software Development Toolset based upon the XEmacs text editor but with a more powerful and commercially oriented user interface and feature set. It is part of the BeOpen.com Open Source Software product set.

Features of InfoDock include:

  • dozens of carefully designed menubars tailored to the large variety of supported editing and browsing modes (covers most major languages in use today);
  • attractive, cleanly blended window colors that support the use of either dark or light window backgrounds;
  • smart, automatic point-and-click hyperlinks in files: e.g. jump to an identifier definition, jump to the source line associated with a build-time error, follow URLs, etc.;
  • automatic file header insertion and standardized indenting of program constructs;
  • advanced, incremental source code coloring for most major programming languages; and professional object-oriented code browsing with fast queries for all major object-oriented languages.
  • powerful e-mail, NetNews and file management facilities.
InfoDock comes bundled together with Hyperbole (an everyday, net-centric hypertextual information manager) and the OO-Browser (a fast flexible object-oriented code browser that supports all languages). BeOpen.com also provides high-quality support, updates, training and printed documentation for these and other Open Source products.

(XEmacs is a powerful, extensible text editor with full GUI support. XEmacs descends from the Free Software Foundation Emacs editor but has many additional features and is maintained separately. BeOpen.com can also provide commercial support for XEmacs or Emacs.)

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/infodock/

Original source code http://www.beopen.com/products/products.html

Package Home page http://www.BeOpen.com


convert NASM/MASM to GAS

Intel2GAS is a converter that will convert assembler source files written for NASM to files that can be assembled using the GNU Assembler (GAS), on the 1 platform. It provides support for basic MMX instructions as well.

This converter was written for the Hermes project and is now released to the general public. The code inside this converter is extremely flexible, you can write a syntax file to convert between any two assembler languages


  • Basic opcodes are done
  • MMX/FPU support (converts all Hermes files :)
  • Preliminary Gas2Intel conversion
  • Conversion from masm/tasm to gnu syntax

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/intel2gas/

Original source code http://www.niksula.cs.hut.fi/~mtiihone/intel2gas/

Package Home page http://www.niksula.cs.hut.fi/~mtiihone/intel2gas/


The K Desktop Integrated Development Environment

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/x11/winman/kde/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/x11/winman/kde/

Original source code http://www.kde.org/

Package Home page http://www.kde.org/

KDE is an elegant and rich graphical desktop. To try it out, add the following to your $HOME/.profile:

and create/modify $HOME/.xinitrc such that "startkde" is the last command. Login on an ansi console screen and type "startx".

Alternately, you can configure your system to use the KDE graphical login manager by following the instructions in the file /usr/local/kde/share/config/xdm-setup-uw7.README

KDE 1.1.2 packages are available for both OpenServer and UnixWare 7 in formats suitable for installation with the Software Manager.

On OpenServer, i have provided a complete custom installable media images. You can download the KDE package:

kde-1.1.2-VOLS.tar(29323264 bytes)

Prior to installing the KDE package on OpenServer, you must have installed the following:

For UnixWare 7, i have provided a complete pkgadd installable datastream. You can download the whole package:

kde-1.1.2.pkg (67909120 bytes)

On UnixWare 7, prior to installing the KDE package, you must have installed the following:

Both the OpenServer and UnixWare 7 releases of KDE 1.1.2 contain alternate kpanel binaries and configuration files. These are tailored for use in environments where KDE is pushed out to thin clients from Caldera servers. Often in this situation the thin clients will utilize a local window manager to reduce network traffic. It's also common that these clients will be diskless and/or wireless. For these reasons, the kpanel functionality has been configured alternately for use with thin clients. To use the thin client kpanel, simply replace the /usr/local/kde/bin/kpanel binary with /usr/local/kde/bin/kpanel_nc and /usr/local/kde/share/config/kpanelrc with /usr/local/kde/share/config/kpanelrc_nc. You will also need to add appropriate lines to /usr/local/kde/bin/nc_logout to logout a thin client user.


KDevelop, an easy to use IDE (Integrated Development Enviroment) for Unix/X11, is now available for UnixWare 7. Download the pkgadd installable datastream via ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/kdevelop/. In addition to KDE 1.1.2 and dependencies (see above) you will need GNU Make and GNU Automake.

The OpenServer distribution of KDE 1.1.2 contains KDevelop as well. In order to use KDevelop you will need the OpenServer versions of GNU Make and GNU Automake.

Petr Sorfa has written an excellent introductory tutorial to KDevelop. This has been translated into Japanese.

To use KDevelop, make sure you are using GNU make and have all the various bits installed. GNU make should be located in /usr/local/bin and called "make". It may also be called "gmake". You may wish to place /usr/local/bin first in your execution path. Bourn and Korn shell users can do something like the following in their $HOME/.profile

    export PATH
Install the following packages:
    GNU Make
    m4 1.4
    gettxt 0.10
    perl 5.04
    qt1.44 (not QT 2.0)
And, optionally,
    sgmltools (sgml2html)

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/x11/winman/kde/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/x11/winman/kde/

Original source code http://www.kde.org/

Package Home page http://www.kde.org/


a generic library support script

GNU libtool is a generic library support script. Libtool hides the complexity of using shared and static libraries behind a consistent, portable interface.

In the past, if a source code package developer wanted to take advantage of the power of shared libraries, she needed to write custom support code for each platform on which hir package ran. She also had to design a configuration interface so that the package installer could choose what sort of libraries were built.

GNU Libtool simplifies the developer's job by encapsulating both the platform-specific dependencies, and the user interface, in a single script. GNU Libtool is designed so that the complete functionality of each host type is available via a generic interface, but nasty quirks are hidden from the programmer.

GNU Libtool's consistent interface is reassuring... users don't need to read obscure documentation in order to have their favorite source package build shared libraries. They just run your package configure script (or equivalent), and libtool does all the dirty work

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/libtool/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/libtool/

Original source code ftp://ftp.gnu.org/gnu/libtool/

Package Home page http://www.gnu.org/software/libtool/


GNU Make

GNU make is a replacement for the standard development system make. It has many advantages over the standard make. Firstly, it has a much saner set of default compile rules. Secondly, it has very good conditional compilation support. Thirdly, it is much more verbose in the actions it performs, and gives the user a lot of useful information. This is a fine replacement for the standard system make, and is 100% compatible with all existing make files.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/make/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


Pkgadd/pkgmk and family

The OpenServer release of the standard UnixWare packaging tools. Useful in preparing distributions built with the UDK for subsequent installation on either OpenServer or UnixWare.

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/sysadmin/pkgtools/

Original source code http://www.sco.com/skunkware/src/sysadmin/


Posix Threads

Pthreads is a prototype implementation of POSIX 1003.4a, Draft 6. It is a C-language library that supports multiple threads of control within a single process.

This library was developed to support the PART Ada runtime System (RTS). As such, it does not implement the entire Pthreads interface. It runs on a SPARCstation under the SunOS operating system, and its use on that platform will also be non-compliant since the bulk of the POSIX 1003.1 base standard and POSIX 1003.4 Real-Time Extensions to which Pthreads is an extension will not be available. The Pthreads library does provide some of the capability of these other standards.

WWW USA: http://www.cs.fsu.edu/~mueller/pthreads
WWW Europe: http://www.informatik.hu-berlin.de/~mueller/pthreads
ftp-site:  ftp.cs.fsu.edu/pub/PART/publications
files:     pthreads_serf92.ps.Z, pthreads_usenix93.ps.Z,
       pthreads_interface.ps.Z, rtoss94.ps.Z, pthreads_tr94-091.ps.Z

mail-list: mueller@informatik.hu-berlin.de  Subject: subscribe-pthreads
WWW USA  : http://www.cs.fsu.edu/~mueller/projects.html
WWW Europe: http://www.informatik.hu-berlin.de/~mueller/projects.html

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/libraries/pthreads/

Original source code ftp://ftp.cs.fsu.edu/pub/PART/PTHREADS

Package Home page http://www.cs.fsu.edu/~mueller/projects.html


Troll Tech QT Widget Set

Qt is a GUI software toolkit. Qt simplifies the task of writing and maintaining GUI (graphical user interface) applications.

Qt is written in C++ and is fully object-oriented. It has everything you need to create professional GUI applications. And it enables you to create them quickly.

Qt is a multi-platform toolkit. When developing software with Qt, you can run it on the X Window System (Unix/X11) or Microsoft Windows NT and Windows 95/98. Simply recompile your source code on the platform you want.

Qt cuts down the complexity in implementing large and complex systems. Its ingenious signal-slot technology enables true component programming.

OpenServer Distribution osr5/libraries/qt/

UnixWare Distribution uw7/libraries/qt/

Original source code ftp://ftp.troll.no/qt/source/

Package Home page http://www.troll.no


GNU Readline Library

The GNU Readline Library is a facility which aids in the consistency of user interface across discrete programs that need to provide a command line interface.

readline will read a line from the terminal and return it. The line returned is allocated with malloc(3), so the caller must free it when finished. The line returned has the final newline removed, so only the text of the line remains.

readline offers editing capabilities while the user is entering the line. By default, the line editing commands are similar to those of emacs. A vi-style line editing interface is also available.

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/lib/

Original source code ftp://prep.ai.mit.edu:/pub/gnu


GNU revision control system

RCS is a set of tools for source code / version control. RCS is more powerful than SCCS, and easier to use. RCS is required if you wish to use the CVS package (see below).

If you have installed perl, RCS is also able to convert existing SCCS databases into RCS format.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/rcs/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


GNU concurrent version system

CVS, which works in conjunction with RCS, is a tools which allows multiple developers to be working on the same source code at the same time. RCS itself only allows a single developer to have a file locked for editing. CVS is designed to allow more than one developer to edit a source file. When multiple developers check in source files, CVS does conflict checking very well. CVS is one of the easiest, most comprehensive version control systems available. This package is highly recommended for any developer who has a version control requirement.

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/cvs/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/cvs/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


GNU indent

Indent is a source re-formatting program. It can reformat any C or C++ source code according to almost any style you choose. It has a very large set of options, and works extremely well. An ideal tool for reformatting your code to look the way you want it to. This is especially useful if you get code from external vendors or from the net, which does not conform to the way you like your code to look.

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/indent/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/indent/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


NGS JavaScript Interpreter

The NGS JavaScript interpreter is an independent implementation of the JavaScript language, developed by Netscape et al. This implementation is designed to be re-entrant, extendible, fast, and programmable.

UnixWare Distribution uw7/net/js/

Original source code http://www.ngs.fi/js/

Package Home page http://www.ngs.fi/js/


Packaging front-ends

mkpkg - front-ends to assist in the creation of pkgadd installable packages.

Written by Ronald Joe Record (rr@sco.com)

The mkpkg front-end attempts to ease the pain of creating a package suitable for installation with the pkgadd tools. The easiest way to use these front-ends is to first create a gzip tar archive of the distribution files. That is, as root and with the proper permissions/ownership set on the files you want to package :

cd /
tar cfF - /tmp/filelist | gzip -9 > /.../dist/foo-1.0-dist.tar.gz
In the example command above, i am using /tmp/filelist as a file which contains a list of all the files you want to distribute and i am creating the gzip tar archive foo-1.0-dist.tar.gz (for the example product foo, release 1.0).

Note that the location of the distribution archive is important. In the example i have placed it in /home/ftp/pub/uw7/dist. By default, that is where the dist2pkg script looks for distribution archives. You can set this location by editing dist2pkg.

Once the distribution file is in place, you can then run the dist2pkg script. This script front-ends the chkdist and mkpkg scripts. The first time you run dist2pkg you need not provide any options. It will extract your archive, generate a prototype file based on the permissions and ownership you gave, and eventually run pkgmk and pkgtrans.

There appears to be a bug in the packaging tools such that a symbolic link something like foo.so -> foo.so.1.0 does not get created properly. To help me find these types of symlinks, i run the chkproto command which spits out a list of prototype files that might have this problem. I hand edit those files changing any occurrence of a relative symlink to an absolute symlink. For instance, i might change the above to foo.so -> /usr/local/lib/foo.so.1.0

If you have any questions or suggestions, e-mail rr@sco.com

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/mkpkg/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/mkpkg/

Original source code ftp://ftp.sco.com/skunkware/src/devtools/


Packaging front-ends

mkvol - front-ends to assist in the creation of custom installable packages.

Written by Ronald Joe Record (rr@sco.com)

The mkvol front-end attempts to ease the pain of creating a package suitable for installation with the Software Manager on OpenServer (/etc/custom). The easiest way to use these front-ends is to first create a gzip tar archive of the distribution files. That is, as root and with the proper permissions/ownership set on the files you want to package :

cd /
tar cfF - /tmp/filelist | gzip -9 > /.../dist/foo-1.0-dist.tar.gz
In the example command above, i am using /tmp/filelist as a file which contains a list of all the files you want to distribute and i am creating the gzip tar archive foo-1.0-dist.tar.gz (for the example product foo, release 1.0).

Once the distribution archive is created, simply extract this into an empty directory and, in that directory, run the command:

    # mkvol -c COMPONENT_NAME -r RELEASE
where COMPONENT_NAME is the name you wish to give the component and RELEASE is the release number.

You will now need to edit the CDMT input files in the input subdirectory. Usually i give the component a better description and fix up any errors in the *.pkg input file. Typically these have to do with what gets exported where and incorrect symbolic links, etc.

Once this process is completed, you can then run the script MakeSSO which will create the media images. The component can then be installed by running the Install script. The scripts are setup to create components of the SKUNK98 product.

If you have any questions or suggestions, e-mail rr@sco.com

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/mkvol/

Original source code ftp://ftp.sco.com/skunkware/src/devtools/


GNU patch

GNU patch is the latest version of the patch utility written by Larry Wall. Many source code products ship "patches", and you apply those patches with this program. In this version, there is a slightly different behavior with the -p option. If you see instructions in a patch file to run with the -p option, and there is no number following the -p, then you should use -p0 instead. This behavior is different from previous versions of the patch program.

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/patch/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw2/devtools/patch/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


Graphics Libraries

Many of the Caldera Skunkware graphics utilities require the installation of several dynamically loaded shared graphics libraries. These include support for the JPEG, TIFF, XPM, Mesa3D, PNG and other graphical file formats.

The versions of the various libraries included in the Skunkware Glib package are as follows:

NameVersionOriginal Source
aalib 1.2 ftp://ftp.ta.jcu.cz/pub/aa/
Mesa 2.3 ftp://iris.ssec.wisc.edu/pub/Mesa
Xaw3d 1.3 ftp://ftp.x.org/contrib/widgets/Xaw3d
Gd 1.2 http://www.boutell.com/gd
Gtk+ 971109 ftp://ftp.gimp.org/pub/gtk
ImageMagick 4.0.4
Imlib 0.5 http://www.rasterman.com
Jpeg 6a ftp://ftp.uu.net/graphics/jpeg/
Mpeg 1.2 ftp://ftp.mni.mcgill.ca/pub/mpeg/
Png 0.96 ftp://ftp.uu.net/graphics/png/
Tiff 3.4 ftp://ftp.sgi.com/graphics/tiff
Xpm 3.4j ftp://avahi.inria.fr/pub/xpm/
Zlib 1.0.4 http://www.cdrom.com/pub/infozip/zlib/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/libraries/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/libraries/Glib/

Original source code ftp://ftp.sco.com/skunkware/src/libraries/


PERL scripting language

PERL is a scripting language in use in many sites today. It combines the best features of sed, awk, shell scripts and even a little BASIC. It is commonly used for administrative tasks, and for WWW CGI scripts. Many tools depend on perl, and no system is complete without it.

This page provides links to Perl 5 binary distributions for SCO platforms and the Perl source archive as well as more info on Perl 5.

In addition to the custom installable Perl 5.004_04 for OpenServer 5 on Skunkware 98, there is a gzip tar archive of Perl 5.005 pre-compiled for use on SCO OpenServer 5. Manual installation of this release of Perl can be accomplished by issuing the following commands (as root):

    # cd /
    # gzcat /path/to/perl/perl-5.005.tar.gz | tar xf -

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/interp/perl/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/interp/perl/

Original source code ftp://prep.ai.mit.edu/pub/gnu/


SGI Standard Template Library

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/stl/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/devtools/stl/

Original source code http://www.sgi.com/Technology/STL/

Package Home page http://www.sgi.com/Technology/STL/

Note: This package is no longer necessary for OpenServer 5.0.5, 5.0.6 and UnixWare 7.1.1 or later releases as the new UDK 7.1.1b Feature Supplement (available at http://www.sco.com/download/) contains a complete implementation of STL and the rest of the C++ standard library.

The Silicon Graphics STL 3.11 is a freeware implementation of the new C++ Standard Template Library, with a few other parts of the new ANSI/ISO C++ standard library also included (string, bitset, auto_ptr).

It is available from


and is the best source of C++ standard library classes until such time as Caldera bundles a full C++ standard library implementation with its C++ compiler.

This distribution includes the full SGI STL 3.11 release together with a set of changes to make it work on Caldera platforms. In cases where SGI files have been modified, the original is preserved with an ..orig suffix.

The SGI site mentioned above has a full set of functional documentation on the SGI STL; it is also included in this distribution. Start at file://localhost/usr/local/man/html/stl/index.html.

In order to use the SGI STL 3.11 on Caldera platforms (UW7, UW2, OSR5) you must use the UDK C++ compiler, version 7.0 or later. You cannot use the older SDK C++ compilers on either UW2 or OSR5.

To compile the SGI STL 3.11 with the UDK compiler, simply do

	$ CC -I/usr/local/include/stl ...
Note that the whole implementation is in header files, so there is no library to build. Similarly, you shouldn't have to worry about template instantiation issues; use of the default CC -Tauto option should work well.

If you are using the STL in a multi-threaded environment, compile with the CC -Kthread option, as usual. This will enable the POSIX threads support in the SGI STL. Note however that currently POSIX threads are only supported on UW 7.0.1 and up. Support has also been added for UnixWare threads on pre-UW 7.0.1 platforms.

[The UW 7.0.1 upgrade can be downloaded free of charge from ftp.sco.com]

These are the changes Caldera has made for the Caldera UDK C++ compiler (all are based on the macro __USLC__ being defined, which the UDK CC command does):

Set the appropriate C++ language defines for our EDG 2.35-based compiler (also works for the EDG 2.39-based compiler in UW 7.1.0). Enable _PTHREADS when CC -Kthread is active.
Work around a problem with the UDK compiler not accepting the generalized _Alloc_traits::allocator_type declaration (due to rebind weirdness). The work-around probably means that you need to specialize _Alloc_traits if you want to use it, but as is user-defined allocators seem to work.
stl_config.h, stl_alloc.h, thread_alloc.h, thread_alloc
Add _THREADS for UnixWare-style threads support (contributed by Jochen Schlick, schlick@comsoft.de).
Add a cast to avoid an annoying warning.
stl_list.h, stl_iterator.h, stl_map.h, stl_multimap.h, stl_multiset.h, stl_queue.h, stl_set.h, stl_stack.h, string
All modified to conform to the Caldera UDK compiler's interpretation of template friends declarations.
ropeimpl.h, stl_rope.h
Same as above, for the SGI extension rope class (also contributed by Jochen Schlick).

Note: similar problems no doubt occur in the other SGI extension- to-the-standard hash and slist classes. These have not been changed; by looking at the changes for the above files, it should be clear how to modify them if you are so interested.

Note that compiling the bitset class results in an internal compiler error in the UW7 UDK compiler; this is fixed in the UW 7.0.1 C++ compiler. There have also been an intermittent compiler internal error in compiling STL member template declarations; this is fixed in the UW 7.1.0 C++ compiler, and is also be available as ptf7123a against UW 7.0.1.

There is no official support from Caldera for these modifications, although we are interested in hearing of any problems in using them and will try to help out.

The following notice is reproduced from the SGI STL 3.11 distribution:

Copyright 1996 Silicon Graphics Computer Systems, Inc.

Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appears in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Silicon Graphics makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

Copyright 1994 Hewlett-Packard Company

Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appears in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.


TCL - Tool Command Language

TCL is an embeddable scripting language and shell tool. This means you can write applications and link in the TCL interpreter into your applications in order to give them a scripting capability. TCL also comes with a shell version of the interpreter, in which you can write programs in much the same way as you can with perl or python.

One of the best features of TCL is the sheer number of extensions available for it. There are many of them, and most of them will be found on Skunkware in time. Keep an eye out on the on-line version of Skunk for updates to TCL.

This page provides links to the Tcl 8.0 distribution and more info on TCL 8.0.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/interp/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/interp/

Original source code ftp://ftp.smli.com/pub/tcl/

Package Home page http://sunscript.sun.com


Extended TCL

Extended TCL is a set of extra TCL commands and functions designed to make standard UNIX features more accessible in TCL. A most useful tool to have around if you are using TCL.

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/interp/tclX/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/interp/

Original source code ftp://ftp.neosoft.com/languages/tcl/TclX/

Package Home page http://www.neosoft.com/tcl


Tk - An X11 Toolkit for TCL

Tk is an official TCL companion. It allows TCL script writers to create pretty GUI programs from within their scripts. There are many extensions to Tk as well, and many will be coming to Skunkware soon.

This page provides links to the Tk 8.0 distribution and more info on Tk 8.0.

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/interp/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/interp/

Original source code ftp://ftp.smli.com/pub/tcl/

Package Home page http://sunscript.sun.com


Expect - a TCL / Tk extension

expect is an extension to TCL that allows a script to drive any aapplication that normally requires human interaction (e.g ftp, telnet, fsck, rlogin, passwd..). Obvious application areas include testing, automation and stress-testing or exercising.. In addition such programs can be wrapped with an X GUI using expectk

(It also has the distinction of being the first (and oldest) Tcl extension created).

There is more documentation availible on Expect, with links to other TCL resources.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/interp/expect/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/interp/expect/

Original source code ftp://ftp.sco.com/skunkware/src/interp/


Python Object Oriented Scripting Language

Python is an object oriented embed-able scripting language and shell scripting language. It comes with many very useful function libraries and is very well tested and stable. Python is a good alternative to TCL or Perl, for those who prefer object oriented programming.

Python also comes with an extremely comprehensive manual, both for the language itself, as well as the library functions provided with it.

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/interp/python/

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/interp/python/

Original source code ftp://ftp.python.org/pub/python/src/

Package Home page http://www.python.org/


Vi IMproved, a programmers text editor

Vim is a text editor that is upwards compatible to vi. It can be used to edit any ASCII text. It is especially useful for editing programs.

There are a lot of enhancements above vi: multi level undo, multi windows and buffers, command line editing, filename completion, on-line help, visual selection, etc.. Read vim_diff.txt for a summary of the differences between Vim and vi.

The SCO Open Source Program Architect (Ronald Joe Record) uses vim as his text editor of choice. Dr. Record states:

Vim is way cool. It recognizes most filetypes and can be configured to color the syntax intelligently. That is, if i edit an HTML document or shell script or C source file, vim knows that and displays the text colored according to its syntactical context. It even highlights things like missing end-quotes, braces and such. Vim has enhanced my productivity tremendously.

OpenServer Distribution ftp://ftp2.sco.com/pub/skunkware/osr5/editors/vim/

UnixWare Distribution ftp://ftp2.sco.com/pub/skunkware/uw7/editors/vim/

Original source code http://www.vim.org/download.html

Package Home page http://www.vim.org


Caldera International, The Santa Cruz Operation, Inc. and Caldera Skunkware are not related to, affiliated with or licensed by the famous Lockheed Martin Skunk Works (R), the creator of the F-117 Stealth Fighter, SR-71, U-2, Venturestar(tm), Darkstar(tm), and other pioneering air and spacecraft.

Last Updated: Thursday Jul 19, 2001 at 11:44:11 PDT