DLRN builds and maintains yum repositories following OpenStack uptream commit streams.
Documentation is available at http://dlrn.readthedocs.org/en/latest/
# yum install git createrepo python-virtualenv mock gcc \
redhat-rpm-config rpmdevtools httpd libffi-devel \
openssl-devel
Add the user you intend to run as to the mock group and login again.
$ git clone https://github.com/openstack-packages/DLRN.git
If you want to serve the built packages and the status reports, enable the httpd service, and then either add a section in the server configuration to map a URL to the data directories, or create a symbolic link:
# systemctl start httpd
# cd /var/www/html
# ln -s <datadir>/repos .
$ cd DLRN
$ virtualenv ../dlrn-venv
$ . ../dlrn-venv/bin/activate
$ pip install --upgrade pip
$ pip install -r requirements.txt
$ python setup.py develop
Edit projects.ini
if needed.
Some of the projects require others to build. As a result, use the
special option --order
to build in the order computed from the
BuildRequires and Requires fields of the spec files when you bootstrap
your repository.
$ dlrn --config-file projects.ini --order
When using this special option, a special variable repo_bootstrap
is defined in the specs, with a value of 1. You can use this variable if
needed, to break dependency loops between packages. For example:
%if 0%{?repo_bootstrap} == 0
BuildRequires: package-with-circular-dependency
%endif
Once all the packages have been built once, you can get back to build the packages in the order of the timestamps of the commits.
$ dlrn --config-file projects.ini
If you interrupt dlrn during mock build you might get an error
OSError: [Errno 16] Device or resource busy: '/var/lib/mock/dlrn-fedora-x86_64/root/var/cache/yum'
Solution is to clear left-over bind mount as root:
# umount /var/lib/mock/dlrn-fedora-x86_64/root/var/cache/yum
If the git clone operation fails for a package, DLRN will try to remove
the source directory using sudo. Please make sure the user running DLRN
can run rm -rf /path/to/dlrn/data/*
without being asked for a password,
otherwise DLRN will fail to process new commits.