**Attributes ** What: tclreadline Where: http://tclreadline.sourceforge.net/ Latest version: 2.1.0 Updated: 07/2001 ** Summary ** Tcl bindings for GNU readline, by [Johannes Zellner]. Tested with Tcl 8.1 as well as itcl. ** See Also ** [Interactive Tcl]: [readline]: [ReloadableWidgets]: ** Description ** Mike 2007-11-15: Getting tclreadline (2.1.0) running on '''Mac OSX''' is a hassle. After running "./configure --enable-tclshrl" followed by "make", i got errors about '''"Undefined symbols ..."'''. To fix it you need to do the following: * After you have made sure you have a recent version of the readline library (I use 5.2), you will need to make sure that the symbolic link under /usr/lib/libreadline.dylib is pointing to the right location (originally it was pointing to /usr/lib/libedit.dylib). If you enable tclreadline in your tclsh and get an '''"alloc: invalid block: ..."''' error, then you will have to do the following: * Edit tclreadline.c file and rename all MALLOC to malloc and FREE to free (and remove the macros MALLOC and FREE) ---- PYL 2007-12-24: * Apparently /usr/lib/libedit.dylib '''is''' or '''contains''' libreadline as a 'nm -o /usr/lib/libedit.dylib' will show you... * I still cannot build tclreadline on '''Mac OSX'''. Could someone provide a link to some nice build so that I could RTFM ??? * Build on '''GNU/linux''' was a breeze... ---- Will 2008-03-16: I just managed to build tcllibreadline on Mac OS 10.4. I first did everything Mike did (note that you will need to have the proper libreadline - I had 5.2 under /usr/local/lib already but I don't think that came with the OS - and check the /usr/lib/libreadline.dylib symlink isn't incorrect). In addition I had to: * set the environment variable MACOSX_DEPLOYMENT_TARGET to 10.4 (I used "setenv MACOSX_DEPLOYMENT_TARGET 10.4" but I use tcsh - always forget the bash syntax). * link glibtool into the build directory with "ln -s /usr/bin/glibtool libtool" as the configure scripts weren't able to create their own. ---- [Chap] 2010-01-20 23:03:18: Things I did to install '''libtclreadline-2.1.0''' and '''readline-6.1''' on '''Mac OS X 10.6.2''' with '''TCL 8.5''' that came with OSX. * built a libreadline.dylib by downloading readline-6.1.tar.gz from http://tiswww.case.edu/php/chet/readline/rltop.html, and following the README. (It's standard procedure: from Terminal, navigate into the readline-6.1 directory, enter './configure', and 'make'.) DON'T 'make install', however. * /usr/lib/libreadline.dylib is a symlink to /usr/lib/libedit.dylib. On the recommendation of someone at the Apple Discussions Unix forum, I renamed the symlink to /usr/lib/libreadline_OLD.dylib and moved my newly-built libreadline.dylib (from previous step) into /usr/lib/. Needed sudo, of course. * built a libtclreadline.dylib by downloading it from http://tclreadline.sourceforge.net/. (Migraine sufferers are cautioned about the page's color scheme.) Unfortunately, this package is so old it needs some tweaks to get it to build a dylib: From etresoft on Apple Discussions forum: ''... the tclreadline library uses old versions of autoconf. Before calling "./configure" on this project, run "autoreconf -fvi". That will enable shared libraries.'' Quite correct - and there's one more thing to do before building. ''If you enable tclreadline in your tclsh and get an "alloc: invalid block: ..." error, then you will have to do the following: Edit tclreadline.c file and rename all MALLOC to malloc and FREE to free (and remove the macros MALLOC and FREE)'' Having done that, I then ran './configure', 'make', and 'sudo make install' -- From tclreadline.sourceforge.net: ''If you want to use tclreadline as a line interface for developing tcl scripts, you probably don't have to read much of the following section. Just install the package and put the following lines to your $HOME/.tclshrc:'' ====== if {$tcl_interactive} { package require tclreadline ::tclreadline::Loop } ====== My goal was simply to be able to run 'tclsh -i' and have a modern command line for learning and experimenting with TCL. So I did exactly what's described above. -- It worked. I hope this helps somebody. ---- [bovine] 2010-05-03 16:56:50: These steps are a modified version of Chap's instructions so that you do not have to replace the system libreadline. Tested on MacOS X 10.6.3 Download these two tarballs: * ftp://ftp.gnu.org/pub/gnu/readline/readline-6.1.tar.gz * http://downloads.sourceforge.net/project/tclreadline/tclreadline/tclreadline-2.1.0/tclreadline-2.1.0.tar.gz Run these commands: ======none cd ~/ tar xvzf ~/Downloads/readline-6.1.tar.gz tar xvzf ~/Downloads/tclreadline-2.1.0.tar.gz cd ~/readline-6.1/ ./configure --disable-shared --prefix=/tmp/readline-install/ make make install cd ~/tclreadline-2.1.0/ autoreconf -fvi ./configure --with-readline-includes=/tmp/readline-install/include/readline --with-readline-library=/tmp/readline-install/lib/libreadline.a egrep -v '#define (FREE|MALLOC)' tclreadline.c | sed 's/MALLOC/malloc/; s/FREE/free/' > tclreadline.c.new mv -f tclreadline.c.new tclreadline.c make sudo make install rm -rf /tmp/readline-install ====== [hv]: Thank you. I followed bovine's instruction and finally got tclreadline to build, installed, and was able to use it. Great instruction. ------ Debian/Ubuntu offer tclreadline as standard packages, installable via the package manager. After installing tclreadline, a new file .tclshrc must be created in the home directory with following content (same as above): ====== if {$tcl_interactive} { package require tclreadline ::tclreadline::Loop } ====== <> Package