scipion logo

Generating Binaries

For a new Scipion release we generate a “binary” version (a Scipion installation that can be moved as a whole and work in basically any machine without recompiling). The main difference is the --binary flag when installing from a fresh download, that will later change the RPATH of the binaries.

In order to get the maximum libc compatibility, it is recommended to generate the binary package in a computer running an old Linux. One option is a Centos-6.5 virtual machine (see below for details).

The following steps summarize how to generate the binaries in a Centos_64 virtual machine.

Getting ready: tagging release in git

In your local system, move to the branch from where the bundle will be done (usually the master branch).

cd scipion
git checkout <branch name>

Ensure that [Version, NickName and DateRelease]. variables are updated in the scipion script

more scipion

Make a git tag to the last commit in that branch

git tag v2.0

replace v2.0 for the right version number.

Accessing the Virtual machine

We have set up a Centos 6.5 virtual machine to generate the Scipion bundles. This VM is on heisenberg (user scipion) and the following commands are useful to manage it:

  • List existing VMs

VBoxManage list vms

(machine is called “CentOS_64”)

  • List running vms

VBoxManage list runningvms

if CentOS_64 is not listed, then

  • Start the VM

VBoxHeadless -startvm "CentOS_64" &
  • Access the VM from heisenberg

Wait a bit till it starts and then access via ssh

ssh -p 2222 xmipp@127.0.0.1

(pass: ‘V1rtu4l.’)

  • Stop VM

It is recommended to stop the VM once bundles are done and copied out of the machine.

VBoxManage controlvm CentOS_64 poweroff

Bundle creation

Once in the machine where we will do the bundle (see above to log in CentOS_64).

We must get the repository. For generating the binaries we do not need the whole repository history (option --depth 1).

git clone --depth 1 https://github.com/I2PC/scipion.git
  • Moving to a certain branch (not for normal bundles)

If you want to make a bundle from a certain branch (e.g. to make a beta), you need to do instead:

git clone --depth 1 https://github.com/I2PC/scipion.git -b branch-name
  • Generate the Source zipped tar

python scipion/pyworkflow/install/tar.py source

This script will create the zipped tar file skipping temporary files and build artifacts. The script should print the tar command used:

 tar czf scipion_devel__source.tgz \
--exclude=.git --exclude='*.o' --exclude='*.os' --exclude='*pyc' \
--exclude='*.mrc' --exclude='*.stk' --exclude='*.gz'  \
--exclude='software/tmp/*' --exclude='*.scons*' --exclude='config/*.conf' scipion
  • Create a Basic Installation

cd scipion
./scipion config
./scipion install -j 5
cd ..
python scipion/pyworkflow/install//tar.py linux64

In this CentOS machine the ./scipion config should complain about the MPI variables. You will need to correct with mpi directories. For example:

MPI_BINDIR = /usr/lib64/openmpi-1.10/bin
MPI_LIBDIR = /usr/lib64/openmpi-1.10/lib
MPI_INCLUDE = /usr/include/openmpi-1.10-x86_64
  • Install Scipion plugins

cd scipion
$SCIPION_HOME/./scipion installp --help
$SCIPION_HOME/./scipion installp -p scipion-em-<plugin_name>
cd ..
python scipion/pyworkflow/install//tar.py linux64-em-packages

Now, two file are in the home directory scipion_<version>_<date>_source.tgz and scipion_<version>_<date>_linux-64.tgz. The first is the source package of the software, whereas the second is the precompiled binaries package.