Menu

Staden Package on Yosemite

Chad Smith
2014-12-29
2019-01-08
  • Chad Smith

    Chad Smith - 2014-12-29

    Is there a patch? As far as I can tell right now it will not running any of the programs without a fix. Something with libiconv.

     
  • James Bonfield

    James Bonfield - 2015-01-06

    Do you have a known working fix? Eg installing libiconv.dylib in the lib/staden directory?

    This isn't something we can test quickly here as our development host is still running Mountain Lion. I'll ask if our systems support have any Yosemite build hosts for me to test on though.

     
  • John Nash

    John Nash - 2015-01-06

    I have successfully built the Staden package on Yosemite. Also, packages built under Macvericks still work when my systems (OS X, Xcode - incl command line tools, and MacPorts) are upgraded to Yosemite. I have the Staden package running on about 12 Macs, three under Yosemite and the remainder still under Mavericks.

    Setting up your Yosemite environment after upgrading your OS X. If you have done these steps once already, you do not need to repeat them each time you want to rebuild the Staden package

    Update Xcode (Appstore)

    $ sudo xcodebuild -license
    $ sudo xcode-select --install

    If you have MacPorts, reinstall MacPorts. Before doing that, remove the old version:

    $ sudo port -fp uninstall installed
    $ sudo rm -rf /opt/local /Applications/DarwinPorts /Applications/MacPorts /Library/LaunchDaemons/org.macports.* /Library/Receipts/DarwinPorts*.pkg /Library/Receipts/MacPorts*.pkg /Library/StartupItems/DarwinPortsStartup /Library/Tcl/darwinports1.0 /Library/Tcl/macports1.0 ~/.macports

    Install MacPorts from the DMG available here: https://www.macports.org/install.php

    Then update the upgrade:

    $ sudo port selfupdate
    $ sudo port upgrade outdated

    Install / update Xquartz, from http://xquartz.macosforge.org/landing/

    Install Perl first or else texlive install will fail - also sets up libiconv:

    $ sudo port install perl5
    $ sudo port -f activate perl5

    Install Python:

    $ sudo port install python27
    $ sudo port select --set python python27

    Install packages needed to compile things, and used by Staden package:

    $ sudo port install wget libpng xz texlive texinfo imagemagick

    Make sure bootstrap can use Macport's 'libtoolize' or 'make' will crash on OS X:

    $ sudo ln -s /opt/local/bin/glibtool /usr/local/bin/libtool
    $ sudo ln -s /opt/local/bin/glibtoolize /usr/local/bin/libtoolize

    Make sure ImageMagick’s “convert" can be seen by gcc's document making code:

    $ sudo ln -s /opt/local/bin/convert /usr/bin/convert

    On a new installation, you need to add the following to /etc/profile:
    export PATH="/opt/local/bin:/opt/local/sbin:$PATH"

    You need to chmod /etc/profile to 644 before editing it, and chmod it back to 444 after.

    Install needed libraries:

    The MacPorts version of Tcl and Tk is badly broken, so it is better to install it from source, compiled as for Unix:
    Go to: http://www.tcl.tk/software/tcltk/download.html and make note of the most recent versions (see the wget below).

    $ cd
    $ mkdir ~/tcltk_install

    Install Tcl - note that stubs from previous installations will break the installation

    $ cd ~/tcltk_install/
    $ wget http://prdownloads.sourceforge.net/tcl/tcl8.6.2-src.tar.gz
    $ tar zxvf tcl8.6.2-src.tar.gz
    $ cd tcl8.6.2/unix # not macos
    $ ./configure
    $ make
    $ make test # takes ages, usually can be skipped
    $ sudo make install

    Install Tk - note that stubs from previous installations will break the installation

    $ cd ~/tcltk_install/
    $ wget http://prdownloads.sourceforge.net/tcl/tk8.6.2-src.tar.gz
    $ tar zxvf tk8.6.2-src.tar.gz
    $ cd tk8.6.2/unix # not macos
    $ ./configure --with-tcl=/usr/local/lib
    $ make

    If this step fails with an X11 error, make sure Xcode and Xquartz are installed and then log out and back in. If it's a new Mac, you may have to actually go into Xcode and set it up. The major reason for this failing is that Xquartz needs reinstalling.

    $ make test # takes ages, usually can be skipped
    $ sudo make install

    Install tklib (v 0.5) manually from source, First, fetch the tklib source - curl is a file fetcher, usually installed on Macs and other unix systems:

    $ cd ~/tcltk_install/
    $ curl -o tklib-0.5.tar.gz -L http://sourceforge.net/projects/tcllib/files/tklib/0.5/tklib-0.5.tar.gz
    $ tar zxvf tklib-0.5.tar.gz
    $ cd tklib-0.5
    $ ./configure
    $ sudo make install

    IGNORE the installation errors. To check that it's installed, if you are worried, you should see about 22 entries:

    $ ls /usr/local/lib/tklib0.5/

    You may remove ~/tcltk_install and the files in it. You will need to "sudo rm -rf ~/tcltk_install" as some files have root ownership.

    Building the Staden package:

    Make an install folder to house all the files and code needed to install Staden. It can all be deleted when Staden is installed.

    $ mkdir ~/staden_install

    Set staden's install location, as I date-stamp my Staden installations.

    $ export STADENROOT=/usr/local/staden_PutDateHere

    If you log out of / exit your shell after doing something, you will have to set this again using the identical wording as the first time.

    Install io_lib:
    This is assuming you have set $STADENROOT - see above

    $ cd ~/staden_install
    $ svn co https://svn.code.sf.net/p/staden/code/io_lib/trunk io_lib.trunk

    Accept any certificates (permanently)

    $ cd io_lib.trunk
    $ ./bootstrap
    $ ./configure --prefix=$STADENROOT
    $ make
    $ make check # takes ages, can be skipped unless gap5 is misbehaving or staden won’t compile
    $ sudo make install

    To check that it is installed, type:

    $ ls $STADENROOT

    Lots of programs should be there.

    Install the Staden package from the latest build - this part takes about 20 minutes:
    This is assuming you have set $STADENROOT - see above

    $ cd ~/staden_install
    $ svn co https://svn.code.sf.net/p/staden/code/staden/trunk/ staden.trunk

    Accept any certificates (permanently)

    $ cd ~/staden_install/staden.trunk/src
    $ ./bootstrap

    The 'configure' and 'make' steps must be done in its own folder as files may get overwritten if done directly in the 'src' folder:

    $ mkdir install.system
    $ cd install.system
    $ ../configure --with-png=/opt/local/ --with-lzma=/opt/local/ --with-tklib=/usr/local/lib/tklib0.5/ --prefix=$STADENROOT --with-io_lib=$STADENROOT --with-tcl=/usr/local/lib --with-tk=/usr/local/lib

    I use gap5 and not gap4 so I ignore:
    Iwidgets: ***NOT FOUND***
    Itcl: ***NOT FOUND***
    Itk: ***NOT FOUND***

    Do the build:

    $ make
    $ sudo make install

    Make the docs, assuming you have set $STADENROOT - see above:

    $ cd ~/staden_install/staden.trunk/doc
    $ make unix PAPER=us

    Lots of messages will fill your screen. If it quits or hangs with a couple of “?” on the screen, hitting "Enter" and re-invoking the previous command seems to fix it.

    $ sudo make install prefix=$STADENROOT

    To check that it is installed, assuming you have set $STADENROOT - see above, type:

    $ ls $STADENROOT/bin/gap5

    Because I have several different versions of Staden on the go as different versions being tested in my development environment ready for deployment, so I don't want to edit my config files all of the time. Thus I symlink the version that I want to use/test to /usr/local/staden, assuming you have set $STADENROOT - see above:

    $ sudo ln -s $STADENROOT /usr/local/staden

    If you use MIRA, it has its own GTAGDB file. Copy it to /usr/local/staden/share/staden/etc/GTAGDB

    To make the package run easily, tell the system where it is by doing the following. Make sure there are NO typos.

    $ sudo chmod 644 /etc/profile

    Then use an editor to put the following PATH in /etc/profile
    e.g. sudo open -e /etc/profile
    and enter:
    export STADENROOT=/usr/local/staden
    export PATH=$PATH:$STADENROOT/bin

    Check that gap5 is running by typing:

    $ gap5

    The first time an X program runs after Xcode is installed, it takes a good minute or so for Xcode to get things moving.

    Uninstalling:
    To uninstall the Staden install folder, which is safe to do once Staden is installed (via sudo make install):

    $ rm -rf ~/staden_install

    To uninstall the Staden Package, assuming you have set $STADENROOT - see above:

    $ sudo rm -r /usr/local/$STADENROOT

     

    Last edit: John Nash 2015-01-06
  • Hari Om Pandey

    Hari Om Pandey - 2019-01-07

    Hello help me out!
    Not good at working with unix environment.
    Followed Last edit: John Nash 2015-01-06 to build Staden package on MacOS Mozave
    tried to run $gap5; got following message

    dlopen(/usr/local/lib/libtk8.6.dylib, 6): Library not loaded: /opt/local/lib/libXft.2.dylib
    Referenced from: /usr/local/lib/libtk8.6.dylib
    Reason: image not found

     
  • James Bonfield

    James Bonfield - 2019-01-08

    Our Mac laptop happens to have /usr/local/lib/libtk8.6.dylib already there, presumably due to one of the Apple package managers such as Homebrew. Sadly we have no admin rights so can't experiment, but we're trying to rectify this.

    Maybe using Homebrew yourself and installing Tk will solve this, but in theory our drive image should be self contained so there is something wrong in our package too.

     

Log in to post a comment.