README: Tcl/Tk Aqua BI Sources ------------------------------ RCS: @(#) $Id: README,v 1.7 2004/05/18 23:44:12 das Exp $ Copyright (c) 2003-2004, Daniel A. Steffen http://tcltkqua.sourceforge.net/ This is a collection of scripts, tools, patches and media files used to build the Tcl/Tk Aqua Batteries-Included binary distribution for Mac OS X. It is distributed under the BSD License, c.f. LICENSE file. QuickStart ---------- Ensure you have the software listed under 'Requirements' below installed. Run the 'buildAll' script in this directory from the directory where sources should be downloaded and projects built; e.g. from this dir's parent directory: cd .. tcltkaqua/buildAll This will download all sources, build everything, install into a local subdirectory and build distribution disk images. Note that this requires sudo. Unpatched source tarballs will be in 'src', unpatched sources of non-CVS projects in 'orig', build products in 'build', 'build_x11' and 'embedded', installed projects in 'install', tarballs of installed projects in 'tar', installer packages in 'package', tarballs of installer packages in 'pkg' and disk images in 'dmg'. Details ------- The main workhorse is 'GNUMakefile', this retrieves & builds all projects in the distribution, applying project specific settings & patches. The makefile has a set of targets for each project, e.g. for project 'tcl': tcl install/tcl clean/tcl distclean/tcl package/tcl archive/tcl update/tcl diff/tcl patch/tcl the same targets also exist for certain project sets such as core (= tcl tk). These "action prefixes" are also (meta)targets of their own: all install clean distclean package archive update diff patch which will act on all projects at once, i.e. the following will fetch/update, build and install all projects: make update; make; sudo make install The utility scripts 'installAll', 'installCore' & 'buildPackages' are simple wrappers around these make targets. The scripts in 'Tools' and media files in 'Installer' are used to build complete disk images for the distributions, the 'buildDistributions' script wraps these to build the complete set of distributions. The 'buildAll' script wraps the whole process of building all projects, installing them into a local DESTDIR and building the distribution disk images. Note that all these scripts rely on sudo to gain root privileges when needed. The makefile and all scripts respect certain environment variables controlling where the various directories are located, c.f. top of 'GNUmakefile', e.g. to retrieve sources into the current directory but build & install into /tmp, use: export TMP_DIR=/tmp/tcltkaqua export DESTDIR=/tmp/install-tcltkaqua export SRC_DIR=$(pwd) ./buildAll CVS Source Retrieval Configuration ---------------------------------- The files cvsTag.conf & cvsUser.conf control source code retrieval via CVS or tarfile download, they can be configured to suit local needs: For CVS based projects, cvsTag.conf contains optional extra arguments to 'cvs checkout' to allow retrieving a specific version or branch of the sources, generally this is a tag argument, i.e. '-r a_release_tag', or a date argument, i.e. '-D "yyyy-mm-dd HH:MM:SS GMT"', or both. cvsTag.conf can also contain a default date argument that gets used for all CVS based projects where no explicit date is given, in particular this is used to tie a distribution sourcebase (normally built from the HEAD) to a given date. For non-CVS based projects, cvsTag.conf contains the version number suffix of the sourcecode tarfile that will be retrieved via wget. The file cvsUser.conf contains the list of CVS projects & usernames where CVS ':ext:' access is required/wanted instead of anonymous ':pserver:', e.g. add any sourceforge projects with developer membership here to gain write access to the repository via ssh. Note that this is completely optional, cvs checkout will work fine with the default empty version of cvsUser.conf. Requirements ------------ * Mac OS X 10.1.5 (or higher), Mac OS 10.2 or 10.3 strongly preferred. Note that not all functionality of GNUmakefile, such as building patches, is available or tested in 10.1; also some packages such as libxml2 & libxslt currently don't build on 10.1. * Apple's Developer Tools (the latest version matching your OS release, but no earlier than April 2002). * Apple's X11 server and X11SDK developer package. * on Mac OS X 10.3, the system provided libxml2.dylib symbolic link in /usr/lib has to be moved aside temporarily to allow correct linking with our own static version of libxml2, e.g. via sudo mv /usr/lib/libxml2.dylib /usr/lib/libxml2.dylib.disabled after building, the link can be restored via sudo mv /usr/lib/libxml2.dylib.disabled /usr/lib/libxml2.dylib * to build documentation for the tclxml suite, the DocBook DTD needs to be installed as /usr/local/share/xml/docbook/dtd, get it from http://www.oasis-open.org/docbook/xml/4.2/docbook-xml-4.2.zip * The following software is assumed to be installed and accessible in the shell path (under these exact executable names): - 'autoconf-2.13' - 'autoconf-2.52' - 'autoconf-2.57', 'autoheader-2.57' - 'automake-1.7', 'aclocal-1.7' - 'libtool-1.5' - 'wget' (preferred) or 'curl' * additonally, on OSX 10.1 only: - '/bin/bash' is bash2.x - 'find' is GNU find 4.1 * hints on acquiring & building the above: - GNU autoconf: download from http://www.gnu.org/software/autoconf/ to install multiple versions concurrently, use e.g.: cd autoconf-2.13 ./configure --program-suffix=-2.13 make pkgdatadir='$(datadir)/autoconf-2.13' sudo make install pkgdatadir='$(datadir)/autoconf-2.13' on 10.3, autoconf 2.57 is the default /usr/bin/autoconf, so to make it available under the correct name, just say e.g. sudo ln -s /usr/bin/autoconf \ /usr/local/bin/autoconf-2.57 sudo ln -s /usr/bin/autoheader \ /usr/local/bin/autoheader-2.57 on 10.2, autoconf 2.52 is the default /usr/bin/autoconf, so to make it available under the correct name, just say e.g. sudo ln -s /usr/bin/autoconf \ /usr/local/bin/autoconf-2.52 sudo ln -s /usr/bin/autoheader \ /usr/local/bin/autoheader-2.52 on 10.1, autoconf 2.13 is the default /usr/bin/autoconf, so to make it available under the correct name, just say e.g. sudo ln -s /usr/bin/autoconf \ /usr/local/bin/autoconf-2.13 sudo ln -s /usr/bin/autoheader \ /usr/local/bin/autoheader-2.13 - GNU automake: download from http://www.gnu.org/software/automake/ to install, use e.g.: cd automake-1.7.6 setenv AUTOCONF autoconf-2.57 ./configure make sudo make install - GNU libtool: download from http://www.gnu.org/software/libtool/ to install, use e.g.: cd libtool-1.5 setenv aclocaldir \ '${datadir}/'`cd /usr/local/share && ls -d aclocal* | head -1` ./configure --program-suffix=-1.5 --disable-ltdl-install make aclocaldir=${aclocaldir} sudo make install aclocaldir=${aclocaldir} sudo sh -c "cd /usr/local/share/libtool/; \ mv -f config.guess-1.5 config.guess; \ mv -f config.sub-1.5 config.sub" - GNU wget: download from http://www.gnu.org/software/wget/ build with e.g. ./configure --with-ssl make; sudo make install NOTE: the rest is only relevant for OSX 10.1 - GNU bash: download from http://www.gnu.org/software/bash/ build with e.g. ./configure make CFLAGS='-no-cpp-precomp'; sudo make install sudo mv /bin/sh /bin/sh.orif; sudo chmod -x /bin/sh.old sudo ln /usr/local/bin/bash /bin/bash - GNU find: download from http://www.gnu.org/software/findutils/ build with e.g. ./configure make -C lib; make -C find; sudo make -C find install - das 5/Mar/04