One of the nicest features of GPI is how easy it is to add a library and begin using new nodes. Whether the library contains nodes and networks you created, or code from a collaborator or colleague, installation is the same simple process.
Here we cover installing an updated version of the Core library. This will serve as a general demonstration of how to install additional node libraries.
The .gpirc FileGPI searches for libraries (by default) in a
~/gpi/directory within your home directory. On Mac OS X, the full path of this folder is
/Users/<username>/gpi/, and on Ubuntu (and most flavors of Linux) it is
/home/<username>/gpi/. Thus, to install a new library, simply move its root directory into this folder. New libraries are imported automatically any time GPI is started.
~/.gpirc file contains per-user configuration options for GPI.
Since the file is hidden (begins with a
.), you will not see it in
a normal directory listing; use
ls -a to see it. If this file does
not exist on your system, you can generate a basic version from the GPI
Select "Generate Config File" to create a basic .gpirc file.
The default GPI library path (
~/gpi/) is stored in the
LIB_DIRS variable within the
.gpirc file. You can amend the
LIB_DIRS in your
.gpirc file to tell GPI to look for
libraries in some other directories, if you prefer. Append (or prepend)
LIB_DIRS separated by colons.
My .gpirc file with modified LIB_DIRS to include additional node libraries.
Installing the Updated Core Library
The GPI package includes a snapshot of the Core node library, but new versions
of the Core nodes are maintained on GitHub. Installing the updated Core library will not
override the default installation of the Core library, so you need to remove
its path (
/opt/gpi/node/core/) from the
LIB_DIRS variable in
.gpirc file. A current snapshot of the Core library can be downloaded as
a zip archive from main GitHub page. To install this snapshot, simply unzip the
~/gpi/core/ as described above.
To stay up-to-date with the latest changes, it is recommended to link your local Core library with the remote repository by cloning it using Git. Git is a popular version control system, available on all platforms. Using Git makes it easy to update your local copy of the source code, and to contribute back your own enhancements and bug fixes.
To install the Core library using Git, open a terminal session and execute the following commands (after installing Git if necessary):
% cd ~/gpi % git clone https://github.com/gpilab/core-nodes.git core
This will create a copy of the remote
core-nodes repository to
your computer, inside your default GPI library directory.
Compiling the Core Library
GPI includes a Python/C++ interface called PyFI. The Core library uses PyFI to
implement algorithms in a combination of C++ and Python code. GPI includes a
gpi_make) to help compile C++ files associated with a GPI
Compiled binary objects are not included in the Git repository, so it's
necessary to build the library after installation. Once you have downloaded or
cloned the repository into
~/gpi/core/, run the following commands
to compile the C++ code:
% cd ~/gpi/core % gpi_make --all
Updating the Core Library
As mentioned, Git makes it easy to update the Core library with any new changes from the developers. If you cloned the repository using Git, you can update your copy of the Core library using the following commands:
% cd ~/gpi/core % git pull % gpi_make --all
git pull fetches any new changes from the core-nodes
repository on GitHub, and merges them into your local copy. To finish updating,
it's also good idea to re-compile the C++ code in case any changes were
made. Note you may get some warnings or errors if you attempt to "pull" changes
after modifying the code yourself. If you have changes you'd like to keep (or
contribute back!) please fork the project on GitHub, or just get in touch!
Branches in the
Development in the
core-nodes repository follows the gitflow branching
model. There are two main branches in this model: master, which
contains stable releases; and develop, which contains newer,
untested changes. Most likely you will want to keep your local copy on
the master branch, unless you are planning to make changes to the
library and contribute them back to the community.
git branch to see which branch you are on, and
checkout <branch name> to switch to a different branch. You will
again want to recompile (
gpi_make --all) any time you change branches.
Hopefully this will help you collaborate and stay up-to-date with the latest changes in your GPI node libraries. Check out the documentation for more information, and please get in touch if you have questions or if you're interested in contributing to the project.