#command #setup #command-line #management #clean #environment #eups

bin+lib reups

A clean implementation of the eups package management system in rust

4 releases (2 breaking)

0.3.0 Jan 2, 2019
0.2.1 Sep 21, 2018
0.2.0 Sep 12, 2018
0.1.1 Sep 6, 2018

#1777 in Development tools

MPL-2.0 license

110KB
1.5K SLoC

Reups

A reimagined, from scratch, reimplementation of the eups environment modules system in rust.

This software is designed to be a drop in replacement for much of the functionality of eups environment management system. As such its job is to manage loading and unloading defined packages and their dependencies into a shell environment. In this way a coherent software stack is available on a per-shell basis. The system enables easily switching out different versions of a software package for changing to a new release, or testing a new version.

While much of the functionally that eups has will be available in reups, it is not the stated goal of this project to have a 100% identical interface. Instead, these tools will share some (maybe a lot) of functionally, and be able to operate in the same environment on the same software products and databases. Differing apis and command line options will allow exploring new ideas and design paradigms.

One reason that some functionality of reups will differ is that a primary focus of this tool is speed! The aim is to be able to complete all common operations in orders of magnitude less time. As such, the runtime performance of these common operations is placed at a higher precedence an architecture which includes all the niche functionality. In the future more overlapping functionality may be introduced if it can be performant and is in agreement with how the developers wish to spend their time. If your favorite feature is missing, feel free to implement it and send a pull request!

Getting Started

Installing

From Source

This project is built in the rust programming language, and is available as a crate on crates.io. Crate is the package management/build tool for the rust programming language and can be used to fetch a copy of this code.

The source repository (and main home) for this project can be found on Github here. If cloning from the github source, cargo is still required for compilation.

Binaries

Binaries of release versions can be found on Github here. These are available for both linux (distro agnostic), and MacOs (10.7 and higher).

Usage

In it's current state reups bootstraps itself off an eups installation. As such eups must be setup prior to using reups. After eups is setup, reups should be set up by evaulating the results of the builtin prep command, as can be seen in the following example.

Note As of version 0.2.0, reups only implements the setup and list functionality of eups. Setting up products is done with a command called rsetup, chosen to not interfere with the default setup command.

Example

# Setup the standard eups installation
source <path_to_eups>/bin/setups.sh

# Setup the reups installation
eval $(reups prep)

# Use reups to setup prduct foobar
rsetup foobar

Note: For those not comfortable with running eval in a shell, the reups prep command can be run by itself, and the output inspected prior to evaluating it.

Dependencies

~6MB
~125K SLoC