Add 0.2.0 spec
Change-Id: I3104a473c2ee914e2c7be3fb114d72a1af901d90
This commit is contained in:
parent
fc24251028
commit
bd8d86825a
1
AUTHORS
1
AUTHORS
@ -1 +1,2 @@
|
||||
Ivan Bogomazov <ibogomazov@mirantis.com>
|
||||
Vladimir Kozhukalov <vkozhukalov@mirantis.com>
|
||||
|
@ -1,5 +1,6 @@
|
||||
CHANGES
|
||||
=======
|
||||
|
||||
* Add 0.2.0 spec
|
||||
* Initial commit
|
||||
* Added .gitreview
|
||||
|
@ -172,7 +172,7 @@ htmlhelp_basename = 'Packetary-Specsdoc'
|
||||
confdir = os.path.dirname(os.path.abspath(__file__))
|
||||
workdir = os.path.join(confdir, "..", "..")
|
||||
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:
|
||||
header = f.read()
|
||||
|
174
specs/0.2.0/build-packages.rst
Normal file
174
specs/0.2.0/build-packages.rst
Normal 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
|
Loading…
Reference in New Issue
Block a user