Add 0.2.0 spec

Change-Id: I3104a473c2ee914e2c7be3fb114d72a1af901d90
This commit is contained in:
Ivan Bogomazov 2016-03-21 16:53:54 +03:00
parent fc24251028
commit bd8d86825a
6 changed files with 177 additions and 1 deletions

View File

@ -1 +1,2 @@
Ivan Bogomazov <ibogomazov@mirantis.com>
Vladimir Kozhukalov <vkozhukalov@mirantis.com> Vladimir Kozhukalov <vkozhukalov@mirantis.com>

View File

@ -1,5 +1,6 @@
CHANGES CHANGES
======= =======
* Add 0.2.0 spec
* Initial commit * Initial commit
* Added .gitreview * Added .gitreview

View File

@ -172,7 +172,7 @@ htmlhelp_basename = 'Packetary-Specsdoc'
confdir = os.path.dirname(os.path.abspath(__file__)) confdir = os.path.dirname(os.path.abspath(__file__))
workdir = os.path.join(confdir, "..", "..") workdir = os.path.join(confdir, "..", "..")
releases = [os.path.basename(dirname) for dirname in releases = [os.path.basename(dirname) for dirname in
glob.iglob("{0}/specs/[0-9]*.[0-9]*(.[0.9]*)*".format(workdir))] glob.iglob("{0}/specs/[0-9]*.[0-9]*.[0.9]*".format(workdir))]
with open(os.path.join(confdir, 'header.rst.template')) as f: with open(os.path.join(confdir, 'header.rst.template')) as f:
header = f.read() header = f.read()

View File

@ -0,0 +1,174 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
=======================
Build packages from src
=======================
https://blueprints.launchpad.net/packetary/+spec/build-packages
Implement package building module in Packetary to provide single application to
solve full range of tasks of packaging and repositories management.
--------------------
Problem description
--------------------
Repository management and packets/packages building is
held in different interfaces that take a long time.
It is more convenient to build packages using the same interface.
----------------
Proposed changes
----------------
We propose to implement building scripts to integrate it in
the Packetary and provide a Python application that wraps the
process to create a rpm and deb packages, relying on Mock to build rpm
packages and Sbuild to build deb packages in isolated environment.
------------
Alternatives
------------
* Koji:
Supports rpm based distributions only
https://fedoraproject.org/wiki/Koji
* Automated build farm (ABF):
Supports rpm based distributions only
http://www.rosalab.ru/products/rosa_abf
https://abf.io/
* Delorean
Supports rpm based distributions only
Supports python packages only
Requires separate docker image for each supported distribution
https://github.com/openstack-packages/delorean
* docker-rpm-builder
Supports rpm based distributions only
Requires separate docker image for each supported distribution
https://github.com/alanfranz/docker-rpm-builder
--------------
Implementation
--------------
* Use standard upstream Linux distro tools to build packages (mock, sbuild)
* Every package should be built in a clean and up-to-date buildroot.
* Package build tool is able to run build stage for different revisions
of the same package in parallel on the same host.
* Packages are built from git repositories with unpacked source
(it's not necessary to commit source tarballs into git).
Packager should support following source layouts:
- Source rpm file (.src.rpm)
- Standard source layout (git project):
./source tarball (.tar.*z)
./rpm specfile (.spec)
./other files related to package (.patch .init etc)
Shell command:
.. code-block:: bash
packetary build --repo-config repos.yaml \
--packages-config packages.yaml \
--output ./dest
Format of repos.yaml and packages.yaml provided below
Repo.yaml format:
.. code-block:: yaml
rpm:
- name: repo-name
uri: http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=i386
- name: another-repo-name
uri: http://fedoraproject.org/repos/dist-5E-epel-build/latest/i386/
deb:
- name: example
type: deb
uri: http://site.example.com/debian
suite: trusty
section:
- main
- restricted
- name: example
type: deb-src
uri: http://site.example.com/debian
suite: trusty
section:
- main
- restricted
Packages YAML format:
.. code-block:: yaml
- source: /home/arno/projects/mirantis/mock-sandbox/zeromq
release: centos-7-x86_64
- source: /home/arno/projects/mirantis/mock-sandbox/zeromq
release: centos-7-x86_64
Assignee(s)
===========
Primary assignee:
Ivan Bogomazov <ibogomazov@mirantis.com>
Other contributors:
None
Mandatory design review:
None
Work Items
==========
* Write rpm-build packetary driver, which wrapping system mock-build
* Write deb-build packetary driver, which wrapping system sbuild
* Write tool to update build chroot package manager configs
* Implement YAML based interface, to be able to mass build packages
Dependencies
============
None
----------
References
----------
https://fedoraproject.org/wiki/Mock
https://wiki.debian.org/sbuild