packetary-specs/specs/0.2.0/build-packages.rst
Ivan Bogomazov bd8d86825a Add 0.2.0 spec
Change-Id: I3104a473c2ee914e2c7be3fb114d72a1af901d90
2016-06-06 15:40:13 +03:00

3.9 KiB

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

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:

packetary build --repo-config repos.yaml \
                --packages-config packages.yaml \
                --output ./dest

Format of repos.yaml and packages.yaml provided below

Repo.yaml format:

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:

- 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