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 69e8169652 Prep for next release (1.0.7) (#24) 2 hours ago
cmake prep-release (#23) 2 hours ago
src Prep for next release and packaging support update (#17) 2 months ago
test Resolve "Code cleanup" 4 months ago
utils Update links for gitea migration (#12) 2 months ago
.clang-tidy Resolve "Clean up cmake and add docgen" 4 months ago
.gitattributes prep-release (#23) 2 hours ago
.gitignore prep-release (#23) 2 hours ago
.reek.yml Updated ruby development 4 months ago
.rubocop.yml Add missing ruby linting (#22) 2 days ago
CHANGELOG.md Prep for next release (1.0.7) (#24) 2 hours ago
CMakeLists.txt Prep for next release (1.0.7) (#24) 2 hours ago
CONTRIBUTING.md Test Merge from fork (#13) 2 months ago
Doxyfile Resolve "Clean up cmake and add docgen" 4 months ago
LICENSE.md Release cleanup and prep 10 months ago
README.md Prep for next release and packaging support update (#17) 2 months ago
TODO Release cleanup and prep 10 months ago
config.hpp.in Resolve "Update project info" 4 months ago
permissions revised spec 2 years ago
produceit.conf support bind mounting home paths 1 year 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.

Basic documentation is provided as markdown files and is installed as system man pages. Developer documentation can be generated from source file headers using Doxygen. The "docgen" target can be used to create immediately browse documentation locally and https://doc.gnutelephony.org/produceit covers the latest release tag. I regularly use produceit for Alpine package production.

Participation

A more complete overview of participation is found in CONTRIBUTING.md. 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://git.gnutelephony.org/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.