The build generator is a program for building the components of software systems from declarative recipes describing software projects and software systems (and a few other things). This can be done in several ways. One way is automatically installing and configuring a Jenkins instance, then automatically generating Jenkins jobs which do the actual building.
One way to obtain a build generator binary is building from source. Furthermore, the following pre-built binaries are available:
- Binaries for released versions can be downloaded in the “Releases” section of the GitHub project.
- Binaries for the master version can be downloaded from the continous integration server.
- Common Lisp Implementation
- At the moment, the code is almost but not quite portable and can only be used with the SBCL implementation of Common Lisp.
- System Libraries
- For secure communication with the Jenkins server as well as archive retrieval via HTTPS, the build generator relies on the OpenSSL library, specifically
libssl.so.*
. In Debian-derived systems, theopenssl
package provides this library. - Lisp dependencies
- The following Lisp dependencies cannot be installed automatically via Quicklisp, yet:
- The model.transform.trace project
- The language.yaml project
- The text.source-location project
- The rosetta project
- The rosetta-project project
The following steps are intended to achieve the following
- building the master version of the build generator
- without elevated privileges
- without polluting system or user directories outside of a
build
sub-directory within the project directory
The last two points make things a little more complicated but hopefully more useful overall.
- Start in the project directory
git clone https://github.com/RDTK/generator cd generator mkdir -p build
- Installing SBCL
Not all Debian-like systems provide a reasonably recent version of the SBCL implementation of Common Lisp. It is therefore better to install a binary release from the project website:
( cd build curl -L "https://prdownloads.sourceforge.net/sbcl/sbcl-1.5.0-x86-64-linux-binary.tar.bz2" | tar -xj cd sbcl-* INSTALL_ROOT="$(pwd)/../sbcl" sh install.sh )
- Installing Quicklisp
Quicklisp is a package manager and installer for Common Lisp. See quicklisp for detailed instructions including cryptographic verification of the downloaded file.
A quick way to install Quicklisp is:
( cd build curl -o quicklisp.lisp "https://beta.quicklisp.org/quicklisp.lisp" SBCL_HOME="$(pwd)/sbcl/lib/sbcl" \ sbcl/bin/sbcl --noinform --non-interactive \ --load quicklisp.lisp \ --eval '(quicklisp-quickstart:install :path "quicklisp")' )
This creates the directory
build/quicklisp
. Dependencies will be downloaded into sub-directories of this directory. - Installing non-Quicklisp dependencies
A quick way to install the non-Quicklisp dependencies is
( cd build/quicklisp/local-projects \ && git clone -b future https://github.com/scymtym/model.transform.trace \ && git clone -b future https://github.com/scymtym/language.yaml \ && git clone -b future https://github.com/scymtym/text.source-location \ && git clone https://code.cor-lab.de/git/rosetta.git.cl \ && git clone https://code.cor-lab.de/git/rosetta.git.project-cl )
- Building the executable
SBCL_HOME="$(pwd)/build/sbcl/lib/sbcl" \ ASDF_OUTPUT_TRANSLATIONS="/:$(pwd)/build/fasl-cache/" \ CL_SOURCE_REGISTRY="$(pwd)//:" \ build/sbcl/bin/sbcl --noinform --non-interactive \ --load build/quicklisp/setup.lisp \ --eval '(ql:quickload :build-generator.commandline-interface)' \ --eval '(asdf:make :build-generator.commandline-interface)'
This should produce a binary named build-generator
in the project root directory.
Assuming the steps in Building have been completed, the following runs the unit tests of the project
SBCL_HOME="$(pwd)/build/sbcl/lib/sbcl" \
ASDF_OUTPUT_TRANSLATIONS="/:$(pwd)/build/fasl-cache/" \
CL_SOURCE_REGISTRY="$(pwd)//:" \
build/sbcl/bin/sbcl --noinform --non-interactive \
--load build/quicklisp/setup.lisp \
--eval '(ql:quickload :build-generator/test)' \
--eval '(asdf:test-system :build-generator)'
If you want to contribute to this project, please
- Submit your intended changes as coherent pull requests.
- Rebase onto the master branch and squash any fixups and corrections.
- Make sure the unit tests pass.
The development of this software has been supported as follows:
- The development of this software was supported by CoR-Lab, Research Institute for Cognition and Robotics Bielefeld University.
- This work was supported by the Cluster of Excellence Cognitive Interaction Technology ‘CITEC’ (EXC 277) at Bielefeld University, which is funded by the German Research Foundation (DFG).