<<

GNUstep Build Guide for Systems

A system

Mr. Dennis Leeuw Pieter Bothstraat 32 3531 GZ Utrecht NL [email protected] GNUstep Build Guide for Unix Systems: A basic system by Mr. Dennis Leeuw

Version 1.5.10 Edition Published Januari 2003 Copyright © 2001, 2002, 2003 by Dennis Leeuw

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Revision Revision 1.5.11 29 April 2003 Revised by: DL More IDs added. Bug in setting the Language for Defaults fixed. Added ideas by Chris B. Vetter for the X and init setup. Revision 1.5.10 04 April 2003 Revised by: DL More consistent interface/layout. Preparation for scripting by adding IDs Revision 1.5.0 13/14 December 2002 Revised by: DL Migrated to DocBook, lot of layout and text changes, minor updates to versions and procedures. Revision 1.4.2 29 Sept 2002 Revised by: DL Added a modified check for gmp, suggested by Larry Coleman. Revision 09 Sept 2002 Revised by: DL Updated to the newest version of gcc, updated to the newest binutils. Revision 11 May 2002 Revised by: DL changed the gcc configure options again, since they where too Debian Revision 03 May 2002 Revised by: DL Made some additional notes on the building of gcc and the xinitrc part, adjusted the xinitrc file to comply to the new -back situation. Added a Debian bootscript example (additions are welcome) Revision 26 Apr 2002 Revised by: DL Moved the WindowMaker build to /usr/local thanks to Larry Coleman, added notes for Solaris 8 users in the binutils section, added gdb-5.1.1 version and links to patches. Revision 21 Apr 2002 Revised by: DL Added the install of libffi to gcc section, removed the DGS section and setting the backend section, made extensions a chapter directly after installing GNUstep, added StepTalk to the extensions chapter, moved gsguile to extensions chapter, moved wmaker before the GNUstep build chapter, with this I assume a graphical workstation. Revision 21 Apr 2002 Revised by: DL Wrote new boot script and removed script startup section. Made sure the xinitrc could be found. 16 Apr 2002: Fixed the CVS source paths for GNUstep. Revision 29 Mar 2002 Revised by: DL Added the back part and removed xgps and xdps. Revision 22 Feb 2002 Revised by: DL Changed all versions to most recent ones, added troubleshooting section to gui build part, added tar jxvf note in Build Basic section (note from Dean Chouinard) Table of Contents

1. Document description...... 1 1.1. Introduction...... 1 1.2. Credits ...... 1 2. Check your system...... 2 2.1. Tips while installing...... 2 2.2. make ...... 3 2.3. binutils...... 4 2.4. iconv...... 5 2.5. The Objective- ...... 6 2.6. Foreign Function Interfaces ...... 7 2.7. GMP ...... 8 2.8. SSL...... 9 2.9. TIFF ...... 10 2.10. XML...... 11 2.11. Sound ...... 12 2.12. ...... 12 3. The GNUstep sources ...... 14 3.1. Stable and unstable versions ...... 14 3.2. CVS versions...... 14 4. Building GNUstep...... 15 5. Building Extensions ...... 18 6. GNUstep services ...... 20 7. GNUstep Workspace ...... 23

iii Chapter 1. Document description

1.1. Introduction This guide will try to guide you through the installation process of building GNUstep from source code. I only have GNU/ systems, so it might be that some things are GNU/Linux related. Some things are just assumed to be there, like a working system and the X-windows system (X11R6). If you work your way through the document from to finish, you should end up with a working system. No guarantees are made ofcourse. If you find things to be different on your system, please let me know.

1.2. Credits Writing a guide is not a one man job. First of all there needs to be a subject to write about, then there is the need to gather information and after that bugs, omissions, etc. are found in the work. The list tries to thank the people that helped me writing this guide. It is far from complete, but the best I could do. If you feel you should be on the list, but are not let me know.

1 Chapter 2. Check your system

This chapter guides you through the checking of your system, to see if all vital components are there to install GNUstep. Since there are several Un*x flavours out there, I have tried to do my best to be as generic as possible. Every part has a couple distinct sections, where we start with a test to see if the right program or library is available and if not I will almost always give a quick guide of how to install that piece. All additional software will be installed in /usr/local. Remember however that you should FIRST check to see if a package update for your system is available from your supplier, this keeps your system consistent and helps with future upgrades. If you decide to go with the "compile from source" there are some tips you might find useful to monitor what is actually going on on your system.

Solaris 8 When you install any of the below software in /usr/local make sure you have /usr/local/bin before /usr/ccs/bin in your path.

2.1. Tips while installing Be sure to have atleast /usr/local/lib and /usr/X11R6/lib in your /etc/ld.so.conf before you continue. The general procedure to compile most software programs is to use:

./configure make make install

Make sure you use GNU make for this. That means that on e.g. FreeBSD you’ll have to substitute the make command with gmake. I don’t know much about other then gcc, so I guess you are on your own on that one. Let me know if you have good tips. I always like to keep track about what a program installs and where, so I always do (I assume sources go under /usr/src):

mkdir -p /var/adm/[programname] touch /usr/src/test ./configure make make install find / -cnewer /usr/src/test | grep -v /proc | grep -v /var | grep -v /usr/src > /var/adm/[programname]/filelist

2 Chapter 2. Check your system

Now I have a complete list of all installed files, which saves me trouble in generating packages, but also when removing the program, before upgrading or if something was build wrong (which happens).

2.2. make

Priority: A must have.

GNU Make

Automatically determines which pieces of a program need to be compiled, and issues commands to recompile them.

1. Check

make --version \ | '{if(/Make/) print $4}' Which should return: 3.79.0, or higher. 2. Download ftp://ftp..org/gnu/make/make-3.80.tar.gz (ftp://ftp.gnu.org/gnu/make/make-3.80.tar.gz) 3. Build

./configure make make install

4. Post-install

a. GNU/Linux By default /usr/bin/make is installed setgid kmem. This is needed on some systems so it can check the load average by using /dev/kmem. However, on Linux systems, setgid kmem is not needed, so we remove this from our make binary. This also fixes problems with the make ignoring certain variables like LD_LIBRARY_PATH.

chgrp root /usr/bin/make chmod 755 /usr/bin/make

3 Chapter 2. Check your system

2.3. binutils

Priority: A must have if you want to use gcc-3.2 or higher. And a must have for Solaris 8 users.

Solaris 8 users make sure you have /usr/local/bin before /usr/ccs/bin in your path.

GNU binutils

The GNU binutils package contains:

• ld - the GNU linker.

• as - the GNU assembler.

• addr2line - Converts addresses into filenames and line numbers.

• ar - A utility for creating, modifying and extracting from archives.

• c++filt - Filter to demangle encoded C++ symbols.

• gprof - Displays profiling information.

• nlmconv - Converts object code into an NLM.

• nm - Lists symbols from object files.

• objcopy - Copys and translates object files.

• objdump - Displays information from object files.

• ranlib - Generates an index to the contents of an archive.

• readelf - Displays information from any ELF format object file.

• size - Lists the section sizes of an object or archive file.

• strings - Lists printable strings from files.

4 Chapter 2. Check your system

• strip - Discards symbols.

• windres - A compiler for Windows resource files.

1. Check

ld --version \ | awk '{ if (/ld version/) print $4}' Which should return: 2.9.6 or higher. 2. Download ftp://ftp.gnu.org/gnu/binutils/ binutils-2.13.tar.gz (ftp://ftp.gnu.org/gnu/binutils/binutils-2.13.tar.gz) 3. Build

./configure --prefix=/usr/local --enable-shared make -e tooldir=/usr/local make -e tooldir=/usr/local install

2.4. iconv

Priority: A must have.

iconv

Convert encoding of given files from one encoding to another.

1. Check

iconv -V \ | awk '{ if (/iconv/) print $4}'

5 Chapter 2. Check your system

Which should return: 2.1.2 or higher. 2. Download ftp://ftp.ilog.fr/pub/Users/haible/gnu/ (ftp://ftp.ilog.fr/pub/Users/haible/gnu/) 3. Build TODO

2.5. The Objective-C Compiler

Priority: A must have.

GNU compiler collection

For GNUstep you only need the C and Objective-C compiler. Make sure the Objective-C part is installed on your system before proceding.

This package is known to behave badly when you have changed its default optimization flags (including the -march and -mcpu options). GCC is best left alone. Therefore, if you have defined any environment variables that override default optimizations, such as CFLAGS and CXXFLAGS, we recommend unsetting or modifying them when building GCC.

1. Check To check the version use: gcc --version \ | awk '{ if ($0 ~ /gcc/) print $3}' Which should return:

6 Chapter 2. Check your system

3.2 or higher. 2. Download ftp://ftp.gnu.org/pub/gnu/gcc/ gcc-3.2.2.tar.gz (ftp://ftp.gnu.org/pub/gnu/gcc/gcc-3.2.2.tar.gz) 3. Build

mkdir gcc-build gcc-build ../gcc-3.2/configure \ --prefix=/usr/local \ --enable-languages=c,c++,objc \ --enable-shared \ --enable-threads= \ --enable-nls \ --with-gnu-as \ --with-gnu-ld \ --without-included- \ --with-system-zlib \ --enable-version-specific-runtime-libs make bootstrap make install cd libffi make install

2.6. Foreign Function Interfaces

Priotrity: A must have

1. Check libffi or ffcall:

gcc -print-file-name=libffi.so If the previous command returns a full path and gcc is 3.2 or higher. You don’t need to install ffcall.

7 Chapter 2. Check your system

ffcall This is a collection of four libraries which can be used to build foreign function call interfaces in embedded interpreters. The four packages are:

• avcall - calling C functions with variable arguments

• vacall - C functions accepting variable argument prototypes

• trampoline - closures as first-class C functions

• callback - closures with variable arguments as first-class C functions (a reentrant combination of vacall and trampoline)

1. Download ftp://ftp.gnustep.org/pub/gnustep/libs/ ffcall-1.8d.tar.gz (ftp://ftp.gnustep.org/pub/gnustep/libs/ffcall-1.8d.tar.gz) 2. Build

./configure make make install

2.7. GMP

Priority: GNUstep can live without it, but this guide expects it to be present.

GNU gmp

GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. There is no limit to the precision except the ones implied by the available memory in the machine GMP runs on. GMP has a rich set of functions, and the functions have a regular interface.

8 Chapter 2. Check your system

1. Check

strings `gcc --print-file-name=libgmp.so` \ | awk '{ if (/^[0-9]*\.[0-9]*\.[0-9]*/) print $0}' Which should return: 3.1.1 or higher. 2. Download ftp://ftp.gnu.org/pub/gnu/gmp/ gmp-4.1.2.tar.gz (ftp://ftp.gnu.org/pub/gnu/gmp/gmp-4.1.2.tar.gz) 3. Build

./configure make make install ldconfig

2.8. SSL

Priority: Non-essential, but do you dare to live without security?

OpenSSL

OpenSSL is a Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a full-strength general purpose cryptography library.

1. Check

openssl version \ | awk '{ print $2}' Which should return: 0.9.6b or higher.

9 Chapter 2. Check your system

2. Download http://www.openssl.org/source/ openssl-0.9.7a.tar.gz (http://www.openssl.org/source/openssl-0.9.7a.tar.gz) 3. Build

./config --prefix=/usr/local make make test make install ldconfig

2.9. TIFF

Priority: A must have

libtiff

This software provides support for the Tag Image File Format (TIFF), a widely used format for storing image data.

1. Check

strings `gcc -print-file-name=libtiff.so` \ | awk '{ if (/LIBTIFF/) print $3}' Which should return: 3.4036 or higher. Where 3.4 is the major number of the library and the 036 is the beta version. 2. Download ftp://ftp.remotesensing.org/pub/libtiff/tiff-v3.5.7.tar.gz (ftp://ftp.remotesensing.org/pub/libtiff/tiff-v3.5.7.tar.gz) 3. Build

./configure --with-JPEG \

10 Chapter 2. Check your system

--with-ZIP \ --with-DIRS_LIBINC=/usr/include \ --with-DIR_GZLIB=/usr/lib \ --with-DIR_JPEGLIB=/usr/lib make make install ldconfig

2.10. XML

Priority: A must have

libxml2

This is the GNOME libxml library, which implements generic xml functions.

1. Check

xml2-config --version Or if xml2-config does not exist: xml-config --version Which should return: 2.3.0 or higher. 2. Download ftp://ftp..org/pub/GNOME/stable/sources/libxml/libxml2-2.5.3.tar.gz (ftp://ftp.gnome.org/pub/GNOME/stable/sources/libxml/libxml2-2.5.3.tar.gz) 3. Build

./configure make make install ldconfig

11 Chapter 2. Check your system

FreeBSD: If you installed libxml2 through ports, make sure that you change in the gnustep-base the configure script. It should include -lgiconv.

2.11. Sound

Priority: A must have

SGI audiofile

The Audio File Library provides a uniform programming interface to standard digital audio file formats. Currently supported sound file formats include AIFF/AIFF-C, WAVE, NeXT/Sun .snd/.au, and Berkeley/IRCAM/CARL. Supported compression formats are currently G.711 mu-law and A-law and IMA and MS ADPCM.

1. Check

audiofile-config --version Which should return: 0.2.3 or higher. 2. Download ftp://oss.sgi.com/projects/audiofile/download/ audiofile-0.2.3.tar.gz (ftp://oss.sgi.com/projects/audiofile/download/audiofile-0.2.3.tar.gz) 3. Build

./configure make make install ldconfig

12 Chapter 2. Check your system 2.12. Window Manager

Priority: A must have

WindowMaker

Window Maker is the GNU window manager for the X Window System. It was designed to emulate the look-and-feel of part of the NEXTSTEP(tm) GUI. It’s supposed to be relatively fast and small, feature rich, easy to configure and easy to use, with a simple and elegant appearance borrowed from NEXTSTEP(tm).

1. Check

wmaker --version \ | awk '{print $3}' Which should return: 0.80.0 or higher. 2. Download http://windowmaker.org/pub/source/release/ WindowMaker-0.80.1.tar.bz2 (http://windowmaker.org/pub/source/release/WindowMaker-0.80.1.tar.bz2) 3. Build

./configure --prefix=/usr/local make make install

4. Post-install For every user that needs to use GNUstep run as the user: wmaker.inst

13 Chapter 3. The GNUstep sources

GNUstep can be build from various source trees. There are the so called stable versions, which are tested to work, but are often missing the newest features. Then there are the unstable versions, which are less tested, but are more up to date. And there is ofcourse CVS, which has all the newest features, including the broken ones. We will try to use the most stable version, that holds enough of the needed features to complete the book from start to finish. In this might be mostly the stable-versions, but once in a while we will pick a unstable-version. CVS is for your own testing.

3.1. Stable and unstable versions The stable and unstable versions can be downloaded from ftp://ftp.gnustep.org/pub/gnustep/core. One can recognize a stable version in that the minor number is even e.g. 1.6.x, while a unstable version is indicated by an uneven minor number like 1.5.x

3.2. CVS versions For the most up-to-date version use a CVS checkout, or a daily-snapshot. The daily snapshots can be downloaded from ftp://ftp.gnustep.org/pub/daily-snapshots/. If somehow a daily-snapshot does not work for you try a CVS checkout. And to be nice to other people on the , first unpack a local copy of the snapshot and then do the CVS checkout, as described below. This saves on bandwidth, is quicker, and will save you download time.

cvs -z3 -d :pserver:[email protected]:/cvsroot/gnustep update -Pd core cvs -z3 -d :pserver:[email protected]:/cvsroot/gnustep update -Pd dev-apps cvs -z3 -d :pserver:[email protected]:/cvsroot/gnustep update -Pd dev-libs

14 Chapter 4. Building GNUstep

By default GNUstep is built into /usr/GNUstep. We will follow this procedure. Be sure you build GNUstep as root. That means configure, make and make install should be run as root.

gnustep-make

This package sets up the GNUstep directory tree, sets some environment variables and contains scripts for all other packages installed hereafter.

1. Download ftp://ftp.gnustep.org/pub/gnustep/core/ gnustep-make-1.6.0.tar.gz (ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-1.6.0.tar.gz) 2. Build

./configure --prefix=/usr/GNUstep make make install

3. Post-install If you are using (/bin/sh), Korn Shell (/bin/ksh), or the Bourne Again Shell (/bin/), :

. /usr/GNUstep/System/Makefiles/GNUstep.sh

If you are using C-Shell (/bin/csh), the T-C-Shell (/bin/), type: source /usr/GNUstep/System/Makefiles/GNUstep.csh

gnustep-base

It provides functionality that aims to implement the non-graphical portion of the OpenStep standard (the Foundation library).

1. Download ftp://ftp.gnustep.org/pub/gnustep/core/ gnustep-base-1.6.0.tar.gz (ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-1.6.0.tar.gz) 2. Build

./configure

15 Chapter 4. Building GNUstep

make make install

3. Post-install Every system needs to know the timezone and the language to work correctly. GNUstep uses the .GNUstepDefaults database in the ~/GNUstep/Defaults directory for that. The defaults are set by the defaults command. The different time zones can be found in the directory: $GNUSTEP_SYSTEM_ROOT/Libraries/Resources/NSTimeZones/zones. I live in the Netherlands and set my timezone this way: defaults write NSGlobalDomain "Local Time Zone" Europe/Amsterdam

Setting your default language goes like this: defaults write NSGlobalDomain NSLanguages "(English)"

The languages setting is a list. So you could also replace the "(English)" with e.g. "(Dutch,English)" which means GNUstep uses Dutch as the default language, but when a Dutch translation is not present it uses the English language.

gnustep-gui

It is a library of graphical user interface classes written completely in the Objective-C language; the classes are based upon the OpenStep specification as released by NeXT Software, Inc. The library does not completely conform to the specification and has been enhanced in a number of ways to take advantage of the GNU system. These classes include graphical objects such as buttons, text fields, popup lists, browser lists, and windows; there are also many associated classes for handling events, colors, fonts, pasteboards and images.

1. Download ftp://ftp.gnustep.org/pub/gnustep/core/ gnustep-gui.0.8.5.tar.gz (ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui.0.8.5.tar.gz) 2. Build For BSD systems add ADDITIONAL_LIB_DIRS = -L/usr/local/lib to core/gui/Source/GNUmakefile.preamble

./configure make make install

16 Chapter 4. Building GNUstep

When you get the following error: Making all for service example... ./shared_obj/ix86/linux-gnu/gnu-gnu-gnu/make_services: error while loading shared libraries: libgnustep-base.so.1: cannot open shared object file: No such file or directory make[2]: *** [example.service/Resources/Info-gnustep.plist] Error 1 make[1]: *** [example.all.service.variables] Error 2 make[1]: Leaving directory `/usr/src/gnustep-gui-0.7.0/Tools' make: *** [internal-all] Error 2 Try: make LD_LIBRARY_PATH=$LD_LIBRARY_PATH

gnustep-back

This is the generic back-end for the GNUstep project.

1. Download ftp://ftp.gnustep.org/pub/gnustep/core/ gnustep-back.0.8.5.tar.gz (ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-back.0.8.5.tar.gz) 2. Build

./configure make make install

17 Chapter 5. Building Extensions

The following parts are options, but enhance GNUstep or are so important to applications that they are considered a vital part of GNUstep. You are free to skip some parts or this entire section, but we advise you not to.

Renaissance

GNUstep Renaissance allows you to describe your user interfaces (that is, the windows in your application, and the buttons, boxes, textfields, etc in the windows) in simple and intuitive XML files, using an open, standard format describing the logic of the interface. GNUstep Renaissance can then, run time, generate the user interfaces (using the native host OpenStep-like libraries) by reading the XML files. The connections between the objects created from the XML files, and the other objects in the application are done via outlets (as traditionally in OpenStep); a new quick and intuitive syntax has been developed to make creating outlets as easy as possible.

1. Download http://www.gnustep.it/Renaissance/Download/Renaissance-0.7.0.tar.gz (http://www.gnustep.it/Renaissance/Download/Renaissance-0.7.0.tar.gz) 2. Build

make GNUSTEP_INSTALLATION_DIR="$GNUSTEP_SYSTEM_ROOT" install

Guile is only needed for GNUstep Guile which is not an essential part, but provides you with scripting functionality within GNUstep.

guile

Guile is an for the Scheme , packaged as a library which can be incorperated into your programs. Your users have full access to the interpreter, so guile itself can be extended, based on the needs of the user. The result is a tailored to your application.

1. Check

guile --version Which should return: Guile 1.4 or higher. 2. Download

18 Chapter 5. Building Extensions

ftp://ftp.gnu.org/pub/gnu/guile/ (ftp://ftp.gnu.org/pub/gnu/guile/) 3. Build

./configure --with-modules --with-threads make make install ldconfig

steptalk

With StepTalk you can create scriptable servers or applications. It is written using GNUstep. It is language independent: you can use any available scripting language that is provided as a separate bundle.

1. Download ftp://ftp.gnustep.org/pub/gnustep/libs/ StepTalk-0.7.1.tar.gz (ftp://ftp.gnustep.org/pub/gnustep/libs/StepTalk-0.7.1.tar.gz) 2. Build

make GNUSTEP_INSTALLATION_DIR="$GNUSTEP_SYSTEM_ROOT" install

gnustep-guile

The gnustep_guile library lets you use (and extend) the GNUstep libraries from within Guile. This effectively provides you with scripting language for GNUstep and an interactive system for developing GNUstep applications.

1. Download ftp://ftp.gnustep.org/pub/gnustep/libs/ gnustep-guile-1.0.3.tar.gz (ftp://ftp.gnustep.org/pub/gnustep/libs/gnustep-guile-1.0.3.tar.gz) 2. Build

./configure make make install

19 Chapter 6. GNUstep services

GNUstep knows two kinds of services: the ones that are started at boot time and the once that are used per user session. The boot services are gdomap and gdnc, and the once used per user are gpbs and gsnd. Since it is very hard to supply scripts that work on every system. I will supply you with some example scripts, that should work on almost any system. But your milage may vary. gdomap. gdomap owns (that is it is registered with IANA) port 538 and uses it to maintain information about what GNUstep services are available on your network, so that apps on one machine can talk to apps on other machines. gdnc. gdnc is the distributed notification server - it provides support for the NSDistributedNotificationCenter class. This allows applications to send notifications that are visible to other applications - for example a notification that an app has started up or shut down. If for some reason your local network is shared with other people who do not like this, you can use the -c flag to specify a file containing a list of IP addresses where GNUstep apps might be running, or use the -p flag to tell gdomap that there are no other machines it should probe. gnustep-sndd. gnustep-sndd is the GNUstep sound daemon. Boot script. Create the following script in the Makefiles directory e.g. /usr/GNUstep/System/Makefiles with the name GSBoot.sh.

#!/bin/sh

# GSBoot.sh # (c) 2003 Dennis Leeuw # License: GPL version 2 or any newer version # # If GNUstep is not installed in the default place (/usr/GNUstep) # set this variable to the GNUstep Makefile directory # e.g. /usr/GNUstep/System/Makefiles GNUSTEP_MAKEFILES="" -n "GNUstep services: " # Make sure GNUSTEP_MAKEFILES is set to something if [ "x$GNUSTEP_MAKEFILES" = "x" ]; then if [ -d /usr/GNUstep/System/Makefiles ]; then GNUSTEP_MAKEFILES="/usr/GNUstep/System/Makefiles" else echo "GNUstep is not installed" exit 1 fi fi # Make sure GNUSTEP_MAKEFILES contains GNUstep.sh # And source it if available if [ -x $GNUSTEP_MAKEFILES/GNUstep.sh ]; then . $GNUSTEP_MAKEFILES/GNUstep.sh else echo "GNUstep.sh not found in $GNUSTEP_MAKEFILES" exit 1 fi # Do what is requested

20 Chapter 6. GNUstep services case $1 in start) if [ -x $GNUSTEP_SYSTEM_ROOT/Tools/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/gdomap ]; then echo -n "gdomap " $GNUSTEP_SYSTEM_ROOT/Tools/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/gdomap fi if [ -x $GNUSTEP_SYSTEM_ROOT/Tools/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/gdnc ]; then echo -n "gdnc " $GNUSTEP_SYSTEM_ROOT/Tools/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/gdnc fi if [ -x $GNUSTEP_SYSTEM_ROOT/Tools/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/gnustep-sndd ]; then echo -n "gnustep-sndd " $GNUSTEP_SYSTEM_ROOT/Tools/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/gnustep-sndd fi echo "started." exit 0 ;; stop) echo -n "gdomap " killall gdomap echo -n "gdnc " killall gdnc echo "stopped." echo -n "gnustep-sndd " killall gnustep-sndd echo "stopped." ;; restart) $0 stop; $0 start; ;; "") # Assume GSBoot.sh start $0 start exit ;; *) echo "GSBoot.sh [start|stop]" exit ;; esac # END

Create a symbolic link to your bootscript directory when you use System V style init-scripts, or add the script to your bootscript for BSD-style init-scripts. gpbs. gpbs is the pasteboard server - it provides inter-application cut and paste facilities and is used by the ’services’ facility. This one should be started after X is started, since it is dependends on a running X-server. X startup script. Create the following script in the Makefiles directory e.g. /usr/GNUstep/System/Makefiles with the name GSXBoot.sh.

#!/bin/sh

21 Chapter 6. GNUstep services

# GSXBoot.sh # (c) 2003 Dennis Leeuw # License: GPL version 2 or any newer version # # If GNUstep is not installed in the default place (/usr/GNUstep) # set this variable to the GNUstep Makefile directory # e.g. /usr/GNUstep/System/Makefiles GNUSTEP_MAKEFILES="" # Make sure GNUSTEP_MAKEFILES is set to something if [ "x$GNUSTEP_MAKEFILES" = "x" ]; then if [ -d /usr/GNUstep/System/Makefiles ]; then GNUSTEP_MAKEFILES="/usr/GNUstep/System/Makefiles" else echo "GNUstep is not installed" exit 1 fi fi # Make sure GNUSTEP_MAKEFILES contains GNUstep.sh # And source if available if [ -x $GNUSTEP_MAKEFILES/GNUstep.sh ]; then . $GNUSTEP_MAKEFILES/GNUstep.sh else echo "GNUstep.sh not found in $GNUSTEP_MAKEFILES" exit 1 fi # Start the services if [ -x $GNUSTEP_SYSTEM_ROOT/Tools/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/gpbs]; then $GNUSTEP_SYSTEM_ROOT/Tools/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/gpbs fi

Run this script whenever X is started. Dependend on your setup this could be in your ~/.xinitrc or in your Xsession startup files.

22 Chapter 7. GNUstep Workspace

This chapter will you build the basic parts of the GNUstep environment. All parts are my preferences, so decide for yourself which parts you want to add or leave out. The only reason they are here is that this will give you an idea about how to go forward and create the system you like best. The builds are intended for distribution maintainers. That means that all Applications are placed in the $GNUSTEP_SYSTEM_ROOT/Applications directory and not in $GNUSTEP_LOCAL_ROOT/Applications.

GWorkspace.app

The GNUstep Workspace Manager of which the most visible part is the filebrowser.

1. Download http://www.gnustep.it/enrico/gworkspace/gworkspace-0.5.1.tar.gz (http://www.gnustep.it/enrico/gworkspace/gworkspace-0.5.1.tar.gz) 2. Build

./configure make install cd Apps_wrappers cp -a * $GNUSTEP_SYSTEM_ROOT/Applications

Preferences.app

This is the configuration utility for GNUstep.

1. Download http://prefsapp.sourceforge.net/ (http://prefsapp.sourceforge.net/) 2. Build

make GNUSTEP_INSTALLATION_DIR=$GNUSTEP_SYSTEM_ROOT install

23 Chapter 7. GNUstep Workspace

HelpViewer.app

The GNUstep documentation reader.

1. Download http://www.roard.com/helpviewer/download/HelpViewer-0.3.tgz (http://www.roard.com/helpviewer/download/HelpViewer-0.3.tgz) 2. Build

make GNUSTEP_INSTALLATION_DIR=$GNUSTEP_SYSTEM_ROOT install

Terminal.app

An interface to the commandline.

1. Download http://w1.423.telia.com/~u42308495/alex/Terminal-0.9.3.tar.gz (http://w1.423.telia.com/~u42308495/alex/Terminal-0.9.3.tar.gz) 2. Build

make GNUSTEP_INSTALLATION_DIR=$GNUSTEP_SYSTEM_ROOT install

Gorm.app

The GNUstep Interface Builder.

1. Download ftp://ftp.gnustep.org/pub/gnustep/dev-apps/Gorm-0.2.6.tar.gz (ftp://ftp.gnustep.org/pub/gnustep/dev-apps/Gorm-0.2.6.tar.gz) 2. Build

make GNUSTEP_INSTALLATION_DIR=$GNUSTEP_SYSTEM_ROOT install

24 Chapter 7. GNUstep Workspace

ProjectCenter.app

The GNUstep Project Center.

1. Download ftp://ftp.gnustep.org/pub/gnustep/dev-apps/ProjectCenter-0.3.2.tar.gz (ftp://ftp.gnustep.org/pub/gnustep/dev-apps/ProjectCenter-0.3.2.tar.gz) 2. Build

make GNUSTEP_INSTALLATION_DIR=$GNUSTEP_SYSTEM_ROOT install

25