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 e248948ac6 bash required for coverage 1 year ago
.gitlab/issue_templates Resolve "Update support email" 1 year ago
cmake one more copyright cleanup 1 year ago
src one more copyright cleanup 1 year ago
test one more copyright cleanup 1 year ago
utils one more copyright cleanup 1 year ago
.gitattributes cleanup of git files 1 year ago
.gitignore cleanup of git files 1 year ago
.gitlab-ci.yml bash required for coverage 1 year ago
.rubocop.yml lint cleanup 1 year ago
CHANGELOG.md Release cleanup and prep 1 year ago
CMakeLists.txt one more copyright cleanup 1 year ago
CONTRIBUTING.md simplify docs, add CONTRIBUTING 1 year ago
Doxyfile Resolve "Update support email" 1 year ago
LICENSE.md Release cleanup and prep 1 year ago
README.md Resolve "Update support email" 1 year ago
TODO Release cleanup and prep 1 year ago
config.hpp.in one more copyright cleanup 1 year ago
permissions revised spec 2 years ago
produceit-rpmlintrc resolved spec 2 years ago
produceit.conf support bind mounting home paths 2 years ago
produceit.spec one more copyright cleanup 1 year ago
produceit.spec.in one more copyright cleanup 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 actually 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. I regularly use produceit for Alpine package production.

Participation

A more complete overview of participation will be added 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 jails support 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 our issue tracker using produceit-bugs@tychosoft.com. I also have dyfet@jabber.org. Build support and packaging, especially for openSUSE and Debian GNU/Linux, is found on the openSUSE build service (https://build.opensuse.org/project/show/home:dyfet). In the future maybe other means of support will become possible.