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>
|
Vladimir Kozhukalov <vkozhukalov@mirantis.com>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
CHANGES
|
CHANGES
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
* Add 0.2.0 spec
|
||||||
* Initial commit
|
* Initial commit
|
||||||
* Added .gitreview
|
* Added .gitreview
|
||||||
|
@ -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()
|
||||||
|
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