Starlink / starlink

Starlink Software Collection
162 stars 53 forks source link
astronomy

This directory contains the following directories:

libraries Starlink Fortran/C libraries

applications Starlink Fortran/C applications

etc Starlink initialisation scripts

buildsupport Starlink support applications required to build configure-based Starlink applications.

thirdparty Third party applications and libraries required to build Starlink classic applications

pubs Starlink publications

docs General documentation not associated with a particular application or library.

Building the Starlink source set from scratch

To build the COMPLETE set of Starlink classic applications the following steps are required. If you wish to do more elaborate things, then you should refer to Starlink document SSN/78, which also contains some FAQs. Details of this document are at the end of this README.

This procedure will not build the Starlink Java applications. They are built separately, using the procedure described in Java README (currently these are available from the git repository at https://github.com/Starlink/starjava.git). You do not need to build any of the Starlink classic applications to build the Java ones, unless you need to rebuild the native parts of JNIAST, JNIHDS or SPLAT. To build the documents for the Starjava applications FROG and SPLAT you will need the Starlink applications star2html and the latex classes provided in latexsupport.

Preparation

Developing individual components

Note that this sequence of

./bootstrap; make configure-deps; ./configure -C; make world

is indeed a `make world' command -- it builds everything in the repository that has been brought into the configure-based system, and will fail if some components have not been checked out. If you wish to build or develop a specific component, the instructions are slightly different.

Updating the source set

The make world' command will not _re_build the tree after you do an update from the source repository, possibly unexpectedly. For a detailed explanation of why this is so, see theGeneral FAQs' in SSN/78, described below.

You should also run the ./update-modules script after performing an update of the source set from the main repository. This will make sure that any thirdparty code is also updated.

Platform specific build notes

Further information

You should consult the project web pages at http://www.starlink.ac.uk, http://starlink.eao.hawaii.edu and consider subscribing to the Starlink development and user mailing lists: see http://www.jiscmail.ac.uk/archives/starlink.html and http://www.jiscmail.ac.uk/archives/stardev.html.

Starlink document SSN/78 gives much more detailed information on the process of building Starlink classic applications, but this document is primarily concerned with documenting the build system itself, and describing how to add new components to the build-system repository. The source for this document is in the repository at docs/ssn/078, and a built version should be available on the Starlink web pages. A version is also currently (May 2006) available at http://www.astro.gla.ac.uk/users/norman/star/ssn78/.

This document contains some FAQs: a few of these will likely be of interest to thise building the system from a checkout, though most address quite specific details of how to configure software to work within the Starlink source tree.

git repository

In February 2009 the Starlink source code was moved to a git repository on github. This is described by a wiki at:

http://starlink.eao.hawaii.edu/

The build procedures described above are still correct, but much of the associated documentation, SSN/78 etc. are becoming rapidly out-of-date. Consult the wiki for download instructions and how to access things like specific releases.

Prerequisites

This section lists some of the software development tools and headers that are required to build Starlink. The list is not exhastive, but is just a suggestion of some packages to check that may not not be provided by default by your operating system. To build the documentation on any system will require a reasonably complete up-to-date TeX install that includes the TeX4HT system -- for example, a recent TeXLive installation which includes a variety of standard packages.

Ubuntu: git build-essential (includes libc6-dev libc-dev gcc g++ make dpkg-dev) gfortran (or g95) libxext-dev libxau-dev libx11-dev libxt-dev xutils-dev libncurses-dev flex bison byacc latex texlive-latex-base texlive-latex-extra texlive-science latex-color pgf tex4ht texlive-fonts-extra cm-super texinfo texi2html libglu1-mesa-dev freeglut3-dev mesa-common-dev zlib1g-dev curl libssl-dev libexpat1-dev libjpeg-turbo8-dev

Fedora: Mainly as for Ubuntu, but note that package names are usually changed from "libxyz-dev" to "libXyz-devel".

libXt-devel ncurses-devel makedepend

For the new documentation build, it may be necessary to install the following (at least on Fedora 20 and 21): texlive-latex texlive-tex4ht.noarch texlive-siunitx.noarch texlive-titlesec.noarch texlive-abstract.noarch texlive-multirow.noarch texlive-mdframed.noarch texlive-titling.noarch texlive-tocloft.noarch texlive-eqparbox.noarch

Fedora 31: flex byacc bison libXt-devel libXau-devel libXext-devel imake libpng-devel openssl-devel expat-devel texi2html texinfo texlive-scheme-full (a subset may be sufficient)

To build perl-JCMT-Tau package in perlmods, the following packages may need to be added to the text file thirdparty/perlsys/perlmods/cpan_deps.

XML::Parser SOAP::Lite

Debian 10: This list (kindly provided by Paul Kerry), may not be complete and some packages may be superfluous..

bison byacc ed flex g++ gcc git gfortran libc6-dev libcurl4-openssl-dev libexpat1-dev libxext-dev libffi-dev libfreetype6-dev libgfortran5 libice-dev libjpeg62-turbo-dev libncurses-dev libpng-dev libsm-dev libssl-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxt-dev make texinfo texlive-full uuid-dev xutils-dev zlib1g-dev

Arch Linux: base-devel ed gcc-fortran ghostscript git libx11 libxt netpbm tcsh texlive-most

CentOS 7: libXext-devel libXau-devel libX11-devel libXt-devel libxml2-devel ncurses-devel texlive-multirow

Rocky Linux 8: Group: "Development Tools" gfortran libX11-devel libXext-devel libXt-devel libxml2-devel ncurses-devel texinfo libglvnd-opengl mesa-libGLw freeglut-devel openssl-devel expat-devel libjpeg-turbo-devel

macOS: gfortran XCode xcode commandline tools