swarm-support
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Long suffering of Redhat 4.1 user with tcl7.6/tk4.2


From: Sven N. Thommesen
Subject: Re: Long suffering of Redhat 4.1 user with tcl7.6/tk4.2
Date: Thu, 17 Apr 1997 12:22:12 -0500

At 10:57 AM 4/17/97 -0500, Hal L DeVore wrote:
>
>address@hidden said:
>> The short answer to your woes is (a) to install and compile the
>> sources for tcl and tk off the RedHat CD, and (b) make sure the linker
>> finds the correct version of blt by updating /etc/ld.so.conf and
>> running ldconfig. 
>
>No, that's NOT necessary.  I've got swarm running on Red Hat Linux 4.1 
>without doing that.  At least I've been able to compile and run all the 
>tutorials and the heatbugs program.
>

Well,

perhaps Hal has better karma than I do :-) 

Or, he forgot some of the steps he took. Or, his 'stock' RedHat 4.1 is
different from my RedHat 4.1 (updated from 3.0.3). Or, he's using the
binary release of Swarm instead of the archive. The number of variables is
near infinite ...

I'm addressing the use of the 'archive' version of Swarm. 
There were two issues: 

(a) since RH4.1 comes with blt 1.9, and we want blt 2.1, you either
uninstall blt 1.9 or you need to make sure Swarm finds 2.1 when linking.
(b) when compiling blt, I got a fatal error where 'tkInt.h' was not found.
Such a file was nowhere to be found on my system, hence the need for sources.

So, if your path to Nirvana is not as smooth as Hal's, here are the steps I
took. Perhaps some of this is the bit *you* need! 

1. Mount RedHat cd-rom #2 (on my system, on /mnt/cdrom).

2. # rpm -i /mnt/cdrom/SRPMS/tcltk-7.6_4.2-2.src.rpm

This places into directory /usr/src/redhat/SOURCES these files:
        tcl7.6.tar.gz
        tcl7.6-foobar.patch
        tk4.2.tar.gz

3. Move those files (or copy them) down to /usr/src. Then:
        # cd /usr/src
        # tar -xzvf tk4.2.tar.gz
        # tar -xzvf tcl7.6.tar.gz
        # patch < tcl7.6-foobar.patch

4. Build the tcl source:
        # cd /usr/src/tcl7.6
        # ./configure --prefix=/usr/local
        # make
        # make install

5. Build the tk source:
        # cd /usr/src/tk4.2
        # ./configure --prefix=/usr/local
        # make libtk4.2a
        # make wish     // not strictly needed
        # make install

        (After ./configure, check the Makefile and see that
         TCL_GENERIC_DIR=/usr/src/tcl7.6/generic
         TCL_BIN_DIR=/usr/src/tcl7.6/unix)


6. Build libtclobjc: unpack the source into /usr/src/libtclobjc-1.1b6
        # ./configure --prefix=/usr/local
        (You will be asked for the locations of tcl and tk,
         which are both in /usr/local/lib)
        # make
        # make install


7. Build the blt source:
        (I'm assuming you have unpacked the blt source into
         /usr/src/blt2.1 and applied Glen's patch.)

        # cd /usr/src/blt2.1
        # ./configure --prefix=/usr/local
        # make
        # make install

        (If there's problems, check in config.BLT that:
         TCLINCDIR=/usr/src/tcl7.6/generic
         TCLLIBDIR=/usr/local/lib
         TKINCDIR=/usr/src/tk4.2/generic
         TKLIBDIR=/usr/local/lib
         XLIBDIR=/usr/X11R6/lib
         XINCDIR=/usr/X11R6/include
         PREFIX=/usr/local)

8. Make a missing link:
        # cd /usr/local/lib
        # ln -s libBLT.so.2.1 libBLT.so.2
        # ln -s libBLT.so.2.1 libBLT.so

9. Update the linker database:
        Add "/usr/local/lib" as the first line in /etc/ld.so.conf, then:
        # ldconfig

        'ldconfig -p' will print out the database of libraries found.
        Check that the list includes:
                libtk.so
                libtk4.2.so
                libtcl.so
                libtcl7.6.so
                libBLT.so.2 => /usr/local/lib/libBLT.so.2.1
                libBLT.so.1.9 => /usr/lib/libBLT.so.1.9
                libBLT.so => /usr/lib/libBLT.so 
                        

10. Edit $SwarmHome/Makefile.conf: (this is my setup, amend as needed!)

SETUP=NONE
SYS=linux
LDCONFIG=archive

OTHERINCDIRS=   -i/usr/X11R6/include \
                        -I/usr/src/tcl7.6/generic \
                        -I/usr/src/tk4.2/generic \
                        -I/usr/src/blt2.1/include \
                        -I/usr/src/libtclobjc-1.1b6/include

OTHERLIBDIRS=   -L/usr/X1R6/lib \
                        -L/usr/local/lib        \
                        -L/usr/lib                      // the last 2 may not 
be needed

SYSDEPLIBS= -ldl


11. 'make' your application. Then see what dynamic libraries were linked in
by running # ldd ./app-name. If all went well, the list should be headed by:
        libBLT.so.2
        libtk.so
        libtcl.so


If Swarm found blt 1.9 instead of 2.1, you'll get a huge number of tcl/tk
errors reported on the console.

(Whew! That was my good deed for the day :-)

Happy Swarming!
--Sven

PS: there is reason to believe that using the binary distribution might be
a tad easier ;-)


                  ==================================
   Swarm-Support is for discussion of the technical details of the day
   to day usage of Swarm.  For list administration needs (esp.
   [un]subscribing), please send a message to <address@hidden>
   with "help" in the body of the message.
                  ==================================


reply via email to

[Prev in Thread] Current Thread [Next in Thread]