Difference between revisions of "School Network/Open Build Service"
m |
|||
(25 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== Summary == | == Summary == | ||
− | This | + | This [http://git.sugarlabs.org/0sugar/build-service patched] Sugar Labs instance of the [http://openbuildservice.org/ Open Build Service] (OBS) has the following intentions: |
− | * | + | * Unattended building of software hosted on [[Sugar Network]] for all [[Sweets_Distribution/Supported_platforms|supported]] platforms. |
− | |||
− | + | * Be a convenient instrument to create 3rd party repositories with native packages for all [[Sweets_Distribution/Supported_platforms|supported]] GNU/Linux distributions. | |
== Sites == | == Sites == | ||
− | + | * [https://obs.sugarlabs.org obs.sugarlabs.org]<br>This is an [https://obs.sugarlabs.org/apidocs/ API] site, all OBS clients use it to get access to OBS. There is no need to work with the site directly, although that is [http://en.opensuse.org//openSUSE:Build_Service_Curl possible]. | |
− | + | * [https://packages.sugarlabs.org packages.sugarlabs.org]<br>This is an original OBS Web client. It is intended to be used only by people who need to create native packages, i.e., it is not needed for most Sugar developers assuming that [[Sugar Network]] will process building procedures in unattended mode. | |
− | + | * [http://download.sugarlabs.org/packages/ download.sugarlabs.org]<br>After building, binary packages will be acceptable from the Sugar Labs download site. | |
− | === | + | == Usage == |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | See original [http://openbuildservice.org/help/manuals/ manuals] and [http://openbuildservice.org/help/materials/ materials] to learn more about what functionality OBS provides. | |
− | + | On top of original OBS behavior, the Sugar Labs instance brings the following new features and common practices. | |
− | + | === Special projects === | |
− | + | There is a special project, named [https://packages.sugarlabs.org/project/repositories?project=base base]; it contains all GNU/Linux distributions that are supported on OBS. All other projects, that are intended for building packages, need to inherit repositories from this project. | |
− | |||
− | |||
− | |||
− | |||
− | + | === GNU/Linux distribution agnostic packages === | |
− | + | Instead of using spec files of packages to be built against for every GNU/Linux distribution, it is possible to use a special spec file that will be used as-is in all platforms that Sugar Labs OBS supports. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | To create such distro-agnostic packages, | |
− | + | * upload a {{Code|sweets.recipe}} file in [[Sweets_Distribution/Recipe_Specification|special notation]] to OBS package; | |
+ | * upload {{Code|.tar.gz}} sources with filename composed using {{Code|sweets.recipe}} fields: | ||
− | + | <context>-<version>.tar.gz | |
− | + | After that, OBS will start building submitted package on all attached OBS repositories. | |
− | |||
− | + | === Resolve packages === | |
− | + | There is new API command that might be used to resolve package names and package dependencies on a particular OBS platform. | |
− | + | GET '''/resolve'''?project=PROJECT&repository=REPOSITORY&arch=ARCH&package=PACKAGE[&withdeps][&exclude=PACKAGE] | |
− | + | Where: | |
− | |||
− | |||
− | |||
− | + | * {{Code|PROJECT}}, {{Code|REPOSITORY}}, {{Code|ARCH}} and {{Code|PACKAGE}}<br>identification of particular OBS package; | |
+ | * {{Code|withdeps}}<br>include dependencies graph of the {{Code|PACKAGE}}; | ||
+ | * {{Code|exclude}}<br>restrict dependency graph from bottom side. | ||
− | + | For example, | |
− | + | https://obs.sugarlabs.org/resolve?project=OLPC&repository=11.3.1&arch=i586&package=pygame&withdeps&exclude=sugar | |
− | + | Will output: | |
− | + | <resolve> | |
+ | <binary name="pygame" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/pygame-1.9.1-3.fc14.i686.rpm" /> | ||
+ | <binary name="SDL" url="http://mock.laptop.org/cgit/koji.dist-f14-i686-updates-11.3.1/plain/RPMS/SDL-1.2.14-11.fc14.i686.rpm" /> | ||
+ | <binary name="SDL_mixer" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/SDL_mixer-1.2.11-4.fc14.i686.rpm" /> | ||
+ | <binary name="SDL_image" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/SDL_image-1.2.10-1.fc13.i686.rpm" /> | ||
+ | <binary name="numpy" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/numpy-1.4.1-6.fc14.i686.rpm" /> | ||
+ | <binary name="SDL_ttf" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/SDL_ttf-2.0.10-1.fc14.i686.rpm" /> | ||
+ | <binary name="portmidi" url="http://mock.laptop.org/cgit/koji.dist-f14-i686-updates-11.3.1/plain/RPMS/portmidi-200-5.fc14.i686.rpm" /> | ||
+ | <binary name="libmikmod" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/libmikmod-3.2.0-11.beta2.fc14.i686.rpm" /> | ||
+ | <binary name="libgfortran" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/libgfortran-4.5.1-4.fc14.i686.rpm" /> | ||
+ | <binary name="python-nose" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/python-nose-0.11.3-5.fc14.noarch.rpm" /> | ||
+ | <binary name="python-setuptools" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/python-setuptools-0.6.14-3.fc14.noarch.rpm" /> | ||
+ | <binary name="atlas" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/atlas-3.8.3-18.fc14.i686.rpm" /> | ||
+ | </resolve> | ||
== Policy == | == Policy == | ||
− | {{: | + | {{:School_Network/Open_Build_Service/Policy}} |
== Resources == | == Resources == | ||
− | * Open Build | + | * Open Build Service [http://openbuildservice.org/ home page]. |
− | * API [https://obs.sugarlabs.org/apidocs/ specification]. | + | * Open Build Service API [https://obs.sugarlabs.org/apidocs/ specification]. |
− | * Downstream patch [ | + | * Downstream patch [https://git.sugarlabs.org/sl-tweaks/obs sources]. |
Latest revision as of 08:19, 23 March 2015
Summary
This patched Sugar Labs instance of the Open Build Service (OBS) has the following intentions:
- Unattended building of software hosted on Sugar Network for all supported platforms.
- Be a convenient instrument to create 3rd party repositories with native packages for all supported GNU/Linux distributions.
Sites
- obs.sugarlabs.org
This is an API site, all OBS clients use it to get access to OBS. There is no need to work with the site directly, although that is possible.
- packages.sugarlabs.org
This is an original OBS Web client. It is intended to be used only by people who need to create native packages, i.e., it is not needed for most Sugar developers assuming that Sugar Network will process building procedures in unattended mode.
- download.sugarlabs.org
After building, binary packages will be acceptable from the Sugar Labs download site.
Usage
See original manuals and materials to learn more about what functionality OBS provides.
On top of original OBS behavior, the Sugar Labs instance brings the following new features and common practices.
Special projects
There is a special project, named base; it contains all GNU/Linux distributions that are supported on OBS. All other projects, that are intended for building packages, need to inherit repositories from this project.
GNU/Linux distribution agnostic packages
Instead of using spec files of packages to be built against for every GNU/Linux distribution, it is possible to use a special spec file that will be used as-is in all platforms that Sugar Labs OBS supports.
To create such distro-agnostic packages,
- upload a
sweets.recipe
file in special notation to OBS package; - upload
.tar.gz
sources with filename composed usingsweets.recipe
fields:
<context>-<version>.tar.gz
After that, OBS will start building submitted package on all attached OBS repositories.
Resolve packages
There is new API command that might be used to resolve package names and package dependencies on a particular OBS platform.
GET /resolve?project=PROJECT&repository=REPOSITORY&arch=ARCH&package=PACKAGE[&withdeps][&exclude=PACKAGE]
Where:
PROJECT
,REPOSITORY
,ARCH
andPACKAGE
identification of particular OBS package;withdeps
include dependencies graph of thePACKAGE
;exclude
restrict dependency graph from bottom side.
For example,
https://obs.sugarlabs.org/resolve?project=OLPC&repository=11.3.1&arch=i586&package=pygame&withdeps&exclude=sugar
Will output:
<resolve> <binary name="pygame" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/pygame-1.9.1-3.fc14.i686.rpm" /> <binary name="SDL" url="http://mock.laptop.org/cgit/koji.dist-f14-i686-updates-11.3.1/plain/RPMS/SDL-1.2.14-11.fc14.i686.rpm" /> <binary name="SDL_mixer" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/SDL_mixer-1.2.11-4.fc14.i686.rpm" /> <binary name="SDL_image" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/SDL_image-1.2.10-1.fc13.i686.rpm" /> <binary name="numpy" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/numpy-1.4.1-6.fc14.i686.rpm" /> <binary name="SDL_ttf" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/SDL_ttf-2.0.10-1.fc14.i686.rpm" /> <binary name="portmidi" url="http://mock.laptop.org/cgit/koji.dist-f14-i686-updates-11.3.1/plain/RPMS/portmidi-200-5.fc14.i686.rpm" /> <binary name="libmikmod" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/libmikmod-3.2.0-11.beta2.fc14.i686.rpm" /> <binary name="libgfortran" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/libgfortran-4.5.1-4.fc14.i686.rpm" /> <binary name="python-nose" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/python-nose-0.11.3-5.fc14.noarch.rpm" /> <binary name="python-setuptools" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/python-setuptools-0.6.14-3.fc14.noarch.rpm" /> <binary name="atlas" url="http://mock.laptop.org/cgit/koji.dist-f14-i686/plain/RPMS/atlas-3.8.3-18.fc14.i686.rpm" /> </resolve>
Policy
The Open Build Service works underneath the Sugar Network, processing software content uploaded to Sugar Network, thus, the Sugar Network Policy is inherited.
Resources
- Open Build Service home page.
- Open Build Service API specification.
- Downstream patch sources.