From bd8d86825a6af993e0ce281a53bd93ccb6ae70ce Mon Sep 17 00:00:00 2001 From: Ivan Bogomazov Date: Mon, 21 Mar 2016 16:53:54 +0300 Subject: [PATCH] Add 0.2.0 spec Change-Id: I3104a473c2ee914e2c7be3fb114d72a1af901d90 --- AUTHORS | 1 + ChangeLog | 1 + doc/source/conf.py | 2 +- specs/0.2.0/.placeholder | 0 specs/0.2.0/build-packages.rst | 174 +++++++++++++++++++++++++++++++++ specs/0.3.0/.placeholder | 0 6 files changed, 177 insertions(+), 1 deletion(-) delete mode 100644 specs/0.2.0/.placeholder create mode 100644 specs/0.2.0/build-packages.rst delete mode 100644 specs/0.3.0/.placeholder diff --git a/AUTHORS b/AUTHORS index 4416d2e..a0a5a18 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1 +1,2 @@ +Ivan Bogomazov Vladimir Kozhukalov diff --git a/ChangeLog b/ChangeLog index 5f3851d..14f815c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ CHANGES ======= +* Add 0.2.0 spec * Initial commit * Added .gitreview diff --git a/doc/source/conf.py b/doc/source/conf.py index f8ead6e..cf3d280 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -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() diff --git a/specs/0.2.0/.placeholder b/specs/0.2.0/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/specs/0.2.0/build-packages.rst b/specs/0.2.0/build-packages.rst new file mode 100644 index 0000000..2ceb767 --- /dev/null +++ b/specs/0.2.0/build-packages.rst @@ -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 + +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 diff --git a/specs/0.3.0/.placeholder b/specs/0.3.0/.placeholder deleted file mode 100644 index e69de29..0000000