Build system: Difference between revisions

From OLPC
Jump to navigation Jump to search
(add a section for files produced by a build, corrections welcome)
 
(23 intermediate revisions by 2 users not shown)
Line 3: Line 3:
== Description ==
== Description ==


The OLPC XO software build system has the requirement of combining software from various sources:
The OLPC XO software build system must combine software from various sources:


* A specific set of packages from Fedora Linux
* unchanged packages from Fedora,
* Some OLPC-specific packages which are not available in Fedora
* forked packages from Fedora, where the version in Fedora is insufficient,
* Some OLPC-forked packages where the versions in Fedora do not suit our needs exactly
* OLPC packages which are not available in Fedora,
* Sugar activities
* Sugar activities, and
* OLPC-specific configuration
* hardware specific configuration.


The build system outputs software images which can be flashed to XOs for testing and deployment.
The build system makes software images which can be installed on XOs for testing and deployment.


While OLPC produces generic software images, almost all deployments will want to add some level of customization (specific Sugar activities and software applications, default settings, etc). To allow for this, the build system can be easily installed and used by deployments and developers, allowing for easy local customisation.
While OLPC produces generic software images, almost all deployments will want to add some level of customization (such as Sugar activities and software applications, default settings, etc). To allow for this, the build system can be easily installed and used by deployments and developers, allowing for easy local customisation.


== Current build system ==
== Current build system ==
Line 20: Line 20:


== Files produced by the build system ==
== Files produced by the build system ==
[[Category:File formats]]
Over time the build system


The build system produces sets of files for each targeted OLPC model, each starting with the build number such as <tt>os''883''</tt>. It also produces a representation of the resulting filesystem for the OLPC model as one or more large files, that the OLPC's [[firmware]] knows how to copy to internal storage. The [[Release notes]] for a build document this install procedure.
The extensions produced by a build include
; activities.txt, libraries.txt
: the default [[Activities]] and [[Collections]] incorporated into the build.
; .onu
: UBIFS file system images ?
; .uim
: UBIFS file system images ?
; .img
: JFFS2 file system image for the [[XO-1]]. The [[firmware]] knows how to install this.
; packages.txt
: the existing GNU/Linux packages assembled by the build system to produce the build. Many come from [[Fedora]] unchanged.
; tree.tar.lzma
: The contents of the filesystem image. If you unpack this onto a partition on a USB drive or SD card and make some changes, you may be able to boot an XO from it.
; .zd2 , .zd4, .zd8
: raw disk images for the [[XO-1.5]], the number indicates the size of the image in GB.


=== Earlier files ===
=== For users installing ===

; .''file''.md5
: a cryptographic hash of the contents of the file ''file'', so that a [[Download#Verifying|download can be verified]].
; .zd2, .zd4, .zd8
: compressed disk images containing a boot and root filesystem, for XOs with eMMC, microSD, or SD card internal storage, such as [[XO-1.5]] and [[XO-1.75]]. The [[firmware]] knows how to copy this to internal storage. The trailing number indicates the size of the disk image in GB, and must be equal to or smaller than the size of the internal storage.
; .zd''N''.zsp , .zd''N''.zsp.fs.zip
: cryptographic signatures for .zd''N'' files, used by secured laptops to verify the authenticity of the files during installation.
; .uim and .onu
: a representation of the blocks of a partitioned [[UBIFS]] image for the XO-1. The firmware knows how to copy this to its built-in NAND flash memory.
; .img and .crc
: a non-partitioned JFFS2 file system image for an [[XO-1]]. The XO-1's [[firmware]] knows how to copy this to NAND Flash memory.

=== For users updating ===

; .toc and .usb
: Information for performing a system update using [[olpc-update]] without requiring network access.

=== For engineers ===

; .activities.txt, .libraries.txt and .packages.txt
: the [[Activities]], [[Collections]], and [[Fedora]]/OLPC RPM packages that went into the build. These are useful for build regression testing.
; .files.txt.gz
: a list of the entries in the filesystem. Most web browsers can view this compressed file directly. Used for build to build regression testing.
; .tree.tar.lzma
: the filesystem, in LZMA compressed tar format. If you carefully unpack this onto a Linux partition on a USB drive or SD card and make some changes, you may be able to boot an XO from it.
; .ext3.img
; .ext3.img
: raw disk image including partition table, suitable for copying onto a USB drive, see [[OS images for USB disks]].
: raw disk image including partition table, suitable for copying onto a USB drive, see [[OS images for USB disks]]. Not present in recent builds ... they are generated and discarded because they are not intended to boot.


== Historical build systems and their evolution ==
== Historical build systems and their evolution ==

Latest revision as of 05:50, 8 December 2011

Description

The OLPC XO software build system must combine software from various sources:

  • unchanged packages from Fedora,
  • forked packages from Fedora, where the version in Fedora is insufficient,
  • OLPC packages which are not available in Fedora,
  • Sugar activities, and
  • hardware specific configuration.

The build system makes software images which can be installed on XOs for testing and deployment.

While OLPC produces generic software images, almost all deployments will want to add some level of customization (such as Sugar activities and software applications, default settings, etc). To allow for this, the build system can be easily installed and used by deployments and developers, allowing for easy local customisation.

Current build system

OS Builder is used for current and upcoming OLPC software releases. Compared to its predecessors, it makes extensive use of Fedora's build tools under a higher layer which allows for organisation of components and easy customization. It is also easier to install and use.

Files produced by the build system

The build system produces sets of files for each targeted OLPC model, each starting with the build number such as os883. It also produces a representation of the resulting filesystem for the OLPC model as one or more large files, that the OLPC's firmware knows how to copy to internal storage. The Release notes for a build document this install procedure.

For users installing

.file.md5
a cryptographic hash of the contents of the file file, so that a download can be verified.
.zd2, .zd4, .zd8
compressed disk images containing a boot and root filesystem, for XOs with eMMC, microSD, or SD card internal storage, such as XO-1.5 and XO-1.75. The firmware knows how to copy this to internal storage. The trailing number indicates the size of the disk image in GB, and must be equal to or smaller than the size of the internal storage.
.zdN.zsp , .zdN.zsp.fs.zip
cryptographic signatures for .zdN files, used by secured laptops to verify the authenticity of the files during installation.
.uim and .onu
a representation of the blocks of a partitioned UBIFS image for the XO-1. The firmware knows how to copy this to its built-in NAND flash memory.
.img and .crc
a non-partitioned JFFS2 file system image for an XO-1. The XO-1's firmware knows how to copy this to NAND Flash memory.

For users updating

.toc and .usb
Information for performing a system update using olpc-update without requiring network access.

For engineers

.activities.txt, .libraries.txt and .packages.txt
the Activities, Collections, and Fedora/OLPC RPM packages that went into the build. These are useful for build regression testing.
.files.txt.gz
a list of the entries in the filesystem. Most web browsers can view this compressed file directly. Used for build to build regression testing.
.tree.tar.lzma
the filesystem, in LZMA compressed tar format. If you carefully unpack this onto a Linux partition on a USB drive or SD card and make some changes, you may be able to boot an XO from it.
.ext3.img
raw disk image including partition table, suitable for copying onto a USB drive, see OS images for USB disks. Not present in recent builds ... they are generated and discarded because they are not intended to boot.

Historical build systems and their evolution

Pilgrim was the first build system, developed by OLPC and Red Hat, and used for OLPC's early software releases.

Puritan was developed after pilgrim started to show signs of outgrowing its design, calling for a cleaner and leaner system. However, it was never adopted officially by OLPC.

Image builder was developed as a post-processing tool to complement Pilgrim when OLPC decided to hand off part of the image customization process to deployments; it takes Pilgrim images and applies various customizations to them to produce a new output image. This started to outgrow its design when various parts of pilgrim needed to be copied into Image builder in order to be able to make more invasive customizations.

For initial software development for the XO-1.5 laptop, a desire to move to standard Fedora build tools emerged. fedora-xo was used to produce the first XO-1.5 software release, but the resultant build system was messy and left no systematic process for customizations by deployments. This lead to design goals for future build systems to balance use of Fedora build tools, organisation of OLPC's special requirements, and the ability for deployments to easily obtain and use the tool while making customizations to the image.

School Server Build Tools

See XS Building Software for details.