Activity Team/Obsolete/Native Packages
Levels
The entirely Zero Sugar infrastructure could be split into several levels:
- using spec file, build GNU/Linux distribution packages (OBS workflow is primarily supported) to let users install Zero packages from native packaging systems
- using spec file, generate 0isntall feeds to support fully decentralized deployment model
- do not reinvent the wheel by implementing packaging related features in sugar. For example, for now, sugar manages what activities (i.e. packages) should be launched, from native packages in /usr or from ~/Activities, or sugar supports versioning scheme for activities (simple version numbers vs. dotted versions) or sugar supports MANIFEST files with not yet implemented hashes. All these are regular packaging procedures and it is already implemented. The idea is to reuse 0install as packaging "engine" keeping in mind that:
- its decentralized nature, sugar is all about (re)creating activities that should be some how distributed, using only distributors channels decrease sugar values
- it supports all existed GNU/Linux distribution efforts e.g. there is no need to repackage already packaged, by distros, software, 0install will use PackageKit to install it
GNU/Linux distributions
GNU/Linux distributions integration is not intended to follow all requirements for native packages and in most cases cannot be reused for distribution official repositories. There are only three major ideas behind distribution support:
- run Zero package in particular GNU/Linux distribution using native packaging system
- do not interfere with official packages
- make packages reusable for 0install deployment model
Zero Sugar is designed to support primarily OBS workflow. Each OBS package is an all-sufficient Zero Sugar entity with one exception, it knows nothing about 0install infrastructure. It is possible to follow regular OBS procedures for Zero packages e.g. creating links and branching them.
Within distributions that OBS supports, Zero Sugar could be considered as meta packaging tool.
Each Zero package consist of:
- <package-name>.info Zero Sugar spec file
- <package-name>.changes regular OBS changes file
- revision file with revision number of current version
- <package-name>.spec stub spec file for rpm based distributions
- stub spec files for deb based distributions
- tarballs with sources
RPM support
Each Zero package has rpm.spec file to support building package on all RPM based distributions that OBS supports. File contains only one line %zsugar_spec
to invoke zsugar_spec
macros which generates spec file content on demand according to current 0sugar.info and revision files content.