#! /bin/sh # file: install-wave32 G. Moody 7 October 2008 # Last revised: 7 January 2010 for Fedora 12 # Build and install WAVE on 64-bit Linux # # *** Fedora 12 users: if this script fails, see the note at the end! *** # # WAVE must be compiled as a 32-bit application, because it depends on the # XView toolkit, which does not support 64-bit mode (and most likely, never # will), and 64-bit applications cannot use the 32-bit XView libraries. # Furthermore, 32-bit applications cannot use 64-bit libraries, so it is # necessary to install 32-bit versions of all of the libraries needed by WAVE, # as well as the .h ("include") files associated with these libraries. # This script automates the process of building a 32-bit WAVE binary. On # Fedora Linux, it should be able to install all of the prerequisites (beyond # those already installed in order to compile the rest of the WFDB package in # 64-bit mode) before compiling and installing WAVE. To do this, it should be # sufficient to run this script with root (superuser) permissions from within # the top-level WFDB source directory (the directory that also contains the # 'configure' script). It is harmless to rerun this script if the # prerequisites have been installed already. # On other versions of Linux, you will need to install the first two groups of # prerequisites in some other way before running the final part of this script # as root, using the -q option. See the notes below for hints. # The prerequisites needed in order to compile WAVE on 64-bit Fedora fall into # three groups: # # 1. 32-bit libraries and font packages available from Fedora repositories # # These include the standard C library, the X11 client libraries, the X11 # pixmap libraries, the libcurl (HTTP client) libraries, and their # respective developer's toolkits. The easiest way to install these on # Fedora is using the yum commands below. These packages may have different # names in other Linux distributions, and "yum" itself may not be available # as a package manager in some distributions. These commands are safe to # run even if any or all of these packages are already installed. # # If you use a Debian-based Linux, such as Ubuntu, it can be difficult to # force apt-get to install 32-bit packages, especially if like-named 64-bit # packages have been installed already. Google on "getlibs" for an # alternative. if [ "x$1" != "x-q" ] then # The next several lines attempt to determine if this script is being run # under Fedora 12 or a later version, in order to determine the names of # the 32-bit packages to be installed. This code has not been tested on # other Linux distributions, but it will assume that the Fedora 12 package # names are the correct ones unless it recognizes Fedora 7, 8, 9, 10, or # 11. Until Fedora 12, 32-bit packages are named with 'i386' suffixes # (although in some cases they have been compiled for i586 or i686 # architectures). In Fedora 12, 32-bit packages are compiled and named as # i686 packages. FV=`cat /etc/fedora-release | cut -d " " -f 3` case $FV in 7|8|9|10|11) X86=i386 ;; *) X86=i686 ;; esac yum -y install libgcc.$X86 glibc-devel.$X86 libX11-devel.$X86 \ libXpm-devel.$X86 libcurl-devel.$X86 yum -y xorg-x11-fonts-misc \ xorg-x11-fonts-100dpi xorg-x11-fonts-ISO8859-1-100dpi \ xorg-x11-fonts-75dpi xorg-x11-fonts-ISO8859-1-75dpi fi # 2. XView libraries available from PhysioNet # # These are available as RPMs for Fedora and other RPM-based distributions, # and in binary and source tarballs for other distributions. By far the # easiest way to install them on Fedora is using the RPM command below. # Again, this command is safe even if any or all of these are already # installed. # # On Debian or Ubuntu, simply run # apt-get install xviewg-dev # instead of the rpm commands below (since 32-bit XView is in the Debian # repositories). if [ "x$1" != "x-q" ] then rpm -ivh http://physionet.org/physiotools/xview/i386-Fedora/xview-3.2p1.4-21.1.fc8.i386.rpm \ http://physionet.org/physiotools/xview/i386-Fedora/xview-clients-3.2p1.4-21.1.fc8.i386.rpm \ http://physionet.org/physiotools/xview/i386-Fedora/xview-devel-3.2p1.4-21.1.fc8.i386.rpm fi # 3. The 32-bit version of the WFDB library # # This is easily compiled and installed on any platform by the following # commands: make clean ./configure -m32 cd lib make install # Now all of the prerequisites are in place, and we can compile and install # WAVE itself: cd ../wave make install # Compile and install applications for remote control of WAVE. cd ../waverc make install # Clean up intermediate binaries and other temporary files. cd .. make clean # **************************************************************************** # # On Fedora 12, at the time this script was written, the most recent 32-bit # version of libcurl-devel was older than the most recent 64-bit version. # In this situation (and presumably in similar situations in which a 32-bit # package is "stale") the first yum command above fails. This is a bug # in yum that may be fixed in a future release; and it is also likely that # libcurl-devel.i686 will be updated in the future, so you may not encounter # this problem. If you do, here's the work-around: # # 1. Download the 32-bit rpm that yum refuses to install. # # 2. Attempt to install it using a command of the form # rpm -ivh --force *.i686.rpm # If this is successful, rerun this script. # # 3. If rpm complained that one or more dependencies were missing, use yum to # install them, then repeat step 2. # # Iterate until successful. In the case of libcurl-devel, it was necessary # to use these commands (the yum commands could have been combined into one): # # yum -y install libgcc.i686 libX11-devel.i686 install glibc-devel.i686 # yum -y install libXpm-devel.i686 # yum -y install cyrus-sasl-lib.i686 keyutils-libs.i686 krb5-libs.i686 # yum -y install libidn.i686 libssh2.i686 ncurses-libs.i686 nspr.i686 # yum -y install nss.i686 nss-softokn.i686 openldap.i686 # rpm -ivh --force libcurl-7.19.7-2.fc12.i686.rpm # rpm -ivh --force libcurl-devel-7.19.7-2.fc12.i686.rpm