ProduceIt offers a cross-distro chroot based Linux package build and application testing environment
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
David Sugar fd02d0487c Simplify project 3 months ago
cmake Simplify project 3 months ago
src Simplify project 3 months ago
test Resolve "Code cleanup" 7 months ago
utils Simplify project 3 months ago
.clang-tidy Resolve "Clean up cmake and add docgen" 7 months ago
.gitattributes prep-release (#23) 3 months ago
.gitignore prep-release (#23) 3 months ago
.reek.yml Updated ruby development 7 months ago
.rubocop.yml Add missing ruby linting (#22) 3 months ago
CHANGELOG.md Prep for next release (1.0.7) (#24) 3 months ago
CMakeLists.txt Simplify project 3 months ago
LICENSE.md Release cleanup and prep 1 year ago
README.md Simplify project 3 months ago
TODO Release cleanup and prep 1 year ago
config.hpp.in Resolve "Update project info" 6 months ago
permissions revised spec 2 years ago
produceit.conf support bind mounting home paths 2 years ago

README.md

About ProduceIt

ProduceIt offer a cross-distro chroot based Linux package build and application testing environment. It is somewhat like what mock offers for RedHat, and pbuilder for Debian GNU/Linux, though it uses the idea of pre-set dirty chroots containers for efficiently repeating builds with updates, and sets up build instances that can consume their own build dependencies to stage multi-package builds. The chroots can also be entered as "user" environments for testing software. ProduceIt also takes advantage of qemu-user-mode emulation to support hosting build and test environments in alternate cpu architectures.

Unlike my earlier cape-devtools, this implementation is built purely on c++14, and uses ruby for supporting non-setuid utilities. This implementation also offers better chroot container isolation than cape-devtools did. In the future I may offer a new and efficient container deployment model based on overlayfs and runit for fast container services startup.

Installation

ProduceIt has no dependencies other than a c++14 capable compiler and chroot support. A typical "install" target is created to support local installation. This should include an example config file, /etc/produceit.conf. A running chroot is typically prepared in /srv/produceit. I currently use lxc to seed valid chroot files. It should also be possible to do so by creating a docker instance of a distro and then exporting the container to a tar file.

Participation

This project uses cmake, and c++14 for core development, along with Ruby for supporting utilities. I use the ctest framework for unit testing and gcovr for coverage reports. ProduceIt can be built with gcc or clang and can be tested on just about any GNU/Linux distribution. In the future I may introduce BSD chroot and BSD jails as well.

This project project can also be built for running unit tests using the cmake ctest framework. This is enabled by default for Debug builds. To produce code coverage reports you can cmake a debug build with -DCOVERAGE_TYPE=gcov set. You can then use the make the "coverage" target and produce reports with gcovr or lcov. The "lint" target validates code with cppcheck and rubocop.

Support

Support is offered thru https://codeberg.org/dyfet/produceit/issues. When entering a new support issue, please mark it part of the support project. I also have dyfet@jabber.org. ProduceIt packaging build support for common GNU/Linux systems is found on https://pkg.gnutelephony.org/produceit. In the future maybe other means of support will become possible.