6. Installation

This section describes how to install the NeXus API and details the requirements. The NeXus API is distributed under the terms of the GNU Lesser General Public License version 3.

The source distribution of NAPI can be downloaded from the release page of the associated GitHub project. Instructions how to build the code can be found in the INSTALL.rst file shipped with the source distribution. In case you need help, feel free to contact the NeXus mailing list: http://lists.nexusformat.org/mailman/listinfo/nexus

6.1. Precompiled Binary Installation

6.1.1. Linux RPM Distribution Kits

An installation kit (source or binary) can be downloaded from: http://download.nexusformat.org/kits/

A NeXus binary RPM (nexus-*.i386.rpm) contains ready compiled NeXus libraries whereas a source RPM (nexus-*.src.rpm) needs to be compiled into a binary RPM before it can be installed. In general, a binary RPM is installed using the command

rpm -Uvh file.i386.rpm

or, to change installation location from the default (e.g. /usr/local) area, using

rpm -Uvh --prefix /alternative/directory file.i386.rpm

If the binary RPMS are not the correct architecture for you (e.g. you need x86_64 rather than i386) or the binary RPM requires libraries (e.g. HDF4) that you do not have, you can instead rebuild a source RPM (.src.rpm) to generate the correct binary RPM for you machine. Download the source RPM file and then run

rpmbuild --rebuild file.src.rpm

This should generate a binary RPM file which you can install as above. Be careful if you think about specifying an alternative buildroot for rpmbuild by using --buildroot option as the “buildroot” directory tree will get remove (so --buildroot / is a really bad idea). Only change buildroot it if the default area turns out not to be big enough to compile the package.

If you are using Fedora, then you can install all the dependencies by typing

yum install hdf hdf-devel hdf5 hdf5-devel mxml mxml-devel

6.1.2. Microsoft Windows Installation Kit

A Windows MSI based installation kit is available and can be downloaded from: http://download.nexusformat.org/kits/windows/

6.1.3. Mac OS X Installation Kit

An installation disk image (.dmg) can be downloaded from: http://download.nexusformat.org/kits/macosx/

6.2. Source Installation

6.2.1. NeXus Source Code Distribution

The source code distribution can be obtained from GitHub. One can either checkout the git repositories to get access to the most recent development code. To clone the definitions repository use

$ git clone https://github.com/nexusformat/definitions.git definitions

or for the NAPI

$ git clone https://github.com/nexusformat/code.git code

For release tarballs go to the release page for the NAPI or the definitions. For the definitions it is currently recommended to work directly with the Git repository as the actual release is rather outdated.

Instructions how to build the NAPI code can be found either on the GitHub project website or in the README.rst file shipped with the source distribution.

6.3. Releases

The NeXus definitions are expected to evolve. The evolution is marked as a series of releases which are snapshots of the repository (and current state of the NeXus standard). Each new release of the definitions will be posted to the definitions GitHub repository and announced to the community via the NeXus mailing list: nexus@nexusformat.org (http://download.nexusformat.org/doc/html/mailinglist.html#nexus-mailing-list)

6.3.1. NeXus definitions

Releases of the NeXus definitions are listed on the GitHub web site: https://github.com/nexusformat/definitions/releases Release Notes

Detailed notes about each release (start with v3.3) are posted to the definitions GitHub wiki: https://github.com/nexusformat/definitions/wiki/Release-Notes Release Process

The process to make a new release of the NeXus definitions repository is documented in the repository’s GitHub wiki: https://github.com/nexusformat/definitions/wiki/Release-Procedure.

The release process starts by creating a GitHub [Milestone](https://help.github.com/articles/tracking-the-progress-of-your-work-with-milestones/) for the new release. Milestones for the NeXus definitions repository are available on the GitHub site: https://github.com/nexusformat/definitions/milestones Versioning

  1. each NXDL file has a definitions/@version attribute that declares the version of this NXDL file
  2. we will tag the definitions repository with new releases of the NeXus definitions
  1. example: change of an application definition version will compel a new NeXus definitions tag

  2. before pushing a new change, we should copy the documentation PDF of the current release to a place to be setup to retain legacy versions of the documentation (we can do this manually until we decide how to automate this in a robust way)

  3. NeXus uses a modified semantic versioning [1]: major.minor but no “.patch” level.

    major:(not described above) 3 (currently) - changes in NXDL language that are incompatible with previous versions
    minor:(item 2&3 above) 1 (currently) - changes in NXDL structure
    patch:(item 1 above) releases for NXDL file changes

    For changes at the patch level (commits to the GitHub master branch), we will move the current major.minor tag to point to the newest commit hash.

  1. changes in the NXDL language (such as new unit types) will become part of a new tag
  2. the syntax of the NXDL language is currently 3.3 (2017-05-02)
[1]semantic versioning: http://semver.org

In case you need help, feel free to contact the NeXus Mailing List: