Dextrose/Building: Difference between revisions

Dfarning (talk | contribs)
m edit for readability
No edit summary
 
(34 intermediate revisions by 8 users not shown)
Line 1: Line 1:
== Build system ==
<noinclude>{{TeamHeader|Dextrose|home=Dextrose|xbgColor=ffe792|join_label=Get Involved}}</noinclude>
 
{{Obsolete|Moved and died at https://sugardextrose.org/projects/dextrose/wiki/Build_system_set-up}}
 
== Dextrose build system ==


Dextrose uses [http://wiki.laptop.org/go/OS_Builder olpc-os-builder], a tool create by OLPC to build official and customized system images. The Dextrose git repository contains, olpc-os-builder, local customizations specific to Dextrose, and fixes and enhancements waiting to be pushed upstream.
Dextrose uses [http://wiki.laptop.org/go/OS_Builder olpc-os-builder], a tool create by OLPC to build official and customized system images. The Dextrose git repository contains, olpc-os-builder, local customizations specific to Dextrose, and fixes and enhancements waiting to be pushed upstream.
Line 5: Line 9:
== Build host requirements ==
== Build host requirements ==


The Dextrose build system runs on '''Fedora 11 i386''' through '''Fedora 13 x86_64'''. The host system runs '''shouldn't''' matter, because the build runs in a chroot environment. olpc-os-builder does not yet run on Ubuntu due to a missing dependency.
The Dextrose build system is known to work on '''Fedora 14 x86_64''' and '''Fedora 16 x86_64'''. The OS on the host system ''shouldn't'' matter because the build runs in a chroot environment. olpc-os-builder does not yet run on Ubuntu due to a missing dependency (bitfrost).


The initial build requires about '''700MB''' of rpm packages and Sugar activity bundles. The packages and bundles are cached for futures builds.
The initial build requires about '''700MB''' of rpm packages and Sugar activity bundles. The packages and bundles are cached for futures builds.
Line 11: Line 15:
== Initial setup ==
== Initial setup ==


* Checkout Dextrose build system
* If sudo isn't configured to work with your account, add yourself to the '''wheel''' group. Alternatively, you can become root with <code>su -</code>.
 
* Install build dependencies (you need to be root to do this)
 
  yum upgrade
  yum install libtomcrypt-devel bitfrost crcimg make gcc mtd-utils python-imgcreate zip unzip zlib-devel lzma netpbm-progs git wget


   git clone git://git.sugarlabs.org/dextrose/mainline.git dextrose
* Install the olpc-bootanim-tools package:
 
   rpm -i http://download.sugarlabs.org/dextrose/testing/dx3/rpms/x86_64/os/olpc-bootanim-tools-2.14-1.bernie1.fc16.x86_64.rpm
 
If you have a 32bit machine:
 
  rpm -i http://download.sugarlabs.org/dextrose/testing/dx3/rpms/i386/os/olpc-bootanim-tools-2.14-1.bernie1.fc16.i686.rpm
 
Alternatively, you could rebuild the olpc-bootanim package from source:
 
  yum install rpm-build netpbm-progs
  wget http://download.sugarlabs.org/dextrose/testing/dx3/rpms/source/olpc-bootanim-2.14-1.bernie1.fc16.src.rpm
  rpmbuild --rebuild olpc-bootanim-2.14-1.bernie1.fc16.src.rpm
  rpm -U ~/rpmbuild/RPMS/*/olpc-bootanim-tools-*.rpm


* Install dependencies
* Checkout the Dextrose build system


   yum upgrade
   git clone git://git.sugarlabs.org/dextrose/mainline.git dextrose
  yum install libtomcrypt-devel bitfrost make gcc mtd-utils python-imgcreate zip unzip


* Compile build helper programs
* Compile build helper programs


  cd dextrose
   make
   make


* Generate initial sequence number for the builds
* Generate initial sequence number for the builds (42 is just an example)


   echo 42 >buildnr-dx
   echo 42 >buildnr-dx
Line 30: Line 52:
== Creating a build ==
== Creating a build ==


* Run the Build
* Become root and run the build system:
 
  time sudo ./osbuilder.py config/dextrose3-xo1-nognome.ini
 
The initial build may take several hours, depending on available bandwidth.
Subsequent builds will take about 15-20 minutes on average desktop machines.
 
Upon completion, the new image will be available in <tt>build/output</tt>.
Now copy it on a USB stick and test it on your target.
 
=== Available variants ===


  time sudo ./osbuilder.py examples/dextrose2-xo1.ini
There's a set of configuration files for each variant of the images you can build. You only need to specify the top-level file (i.e. none of the <code>*-common.ini</code> files) to build an image:


The initial build may take several hours depending on available bandwith. Subsequent builds will take about 15-20 minutes
;dextrose3-xo1-gnome.ini:
:Works on [[olpc:XO-1|XO-1]], includes Gnome. Not recommended unless you're running from an external SD card as the free space available on the internal NAND is too limited with Gnome installed.
;dextrose3-xo1-nognome.ini:
:Works on [[olpc:XO-1|XO-1]], does not include Gnome. This is the recommended image for XO-1s.
;dextrose3-xo1.5-gnome.ini:
:Works on [[olpc:XO-1.5|XO-1.5]] (including XO-1.5 [[olpc:OLPC_English_Non-membrane_Keyboard|HS]]), includes Gnome. Some teachers and older students seem to like Gnome, so you can trade off some of the free space that could be used by the Journal for the additional desktop environment.
;dextrose3-xo1.5-nognome.ini:
:Works on [[olpc:XO-1.5|XO-1.5]] (including XO-1.5 [[olpc:OLPC_English_Non-membrane_Keyboard|HS]]), doesn't include Gnome. More space for the Journal, so use this one if your users don't ask for Gnome and you haven't paid for a larger (i.e. > 4GB) SD card.
;dextrose3-xo1.75-gnome.ini:
:Experimental [[olpc:XO-1.75|XO-1.75]] image with Gnome.
;dextrose3-xo1.75-nognome.ini:
:Experimental [[olpc:XO-1.75|XO-1.75]] image without Gnome.


Upon completion the new image is available at <tt>build/output</tt>.
== Debugging ==


Because several build tools, olpc-os-builder, imgcreate and yum, are nested, error output could be misleading or obscure. Before digging into code, you please ask on IRC in case someone has already seen the same problem.
Because several build tools (olpc-os-builder, imgcreate and yum) run chrooted
and nested into each other, error output is often obscure or misleading.
Before digging into the code, try asking on IRC in case someone has already seen
the same problem.


== Publishing the images ==
== Publishing the images ==
Line 53: Line 99:
=== Upstream Code ===
=== Upstream Code ===


Dextrose is based on upstream olpc code located at dev.laptop.org.
Dextrose is based on [http://dev.laptop.org/git/projects/olpc-os-builder/ olpc-os-builder] by Daniel Drake. You can fetch the latest source code into your Dextrose repository:


  git remote add olpc git://dev.laptop.org/projects/olpc-os-builder
  git remote add olpc git://dev.laptop.org/projects/olpc-os-builder
Line 68: Line 114:


=== building the Custom RPM ===
=== building the Custom RPM ===
If you have a Fedora 11 i386 system, just type:


   make i586
   make i586
Otherwise, you need to build in a [http://fedoraproject.org/wiki/Projects/Mock mock] chroot:
  make srpm
  sudo mock -r fedora-11-i386 --resultdir=. --rebuild mypackage.src.rpm


=== Uploading the Custom RPM ===
=== Uploading the Custom RPM ===
Line 85: Line 138:
== Resources ==
== Resources ==


* [http://wiki.sugarlabs.org/go/Development_Team/Jhbuild Sugar-jhbuild] - The Sugar Labs build system.
* [[Machine/dextrose|Dextrose VM]] hosted by [[Machine/treehouse|treehouse]]
 
* [[Development_Team/Jhbuild|Sugar-jhbuild]] - The Sugar build system


* [http://www.rpm.org/wiki/Docs Rpm] - The Redhat package manager.
* [http://www.rpm.org/wiki/Docs RPM] - The Red Hat package manager


* [http://fedoraproject.org/wiki/Packaging/Guidelines Fedora packaging] - Fedora packaging workflow and conventions.
* [http://fedoraproject.org/wiki/Packaging/Guidelines Fedora packaging] - Fedora packaging workflow and conventions


* [http://createrepo.baseurl.org/] - The yum package repositories builder.
* [http://createrepo.baseurl.org/ createrepo] - the yum package repositories builder


* [http://activities.sugarlabs.org] - The Sugar Labs activities library.
* [http://activities.sugarlabs.org ASLO] - The Sugar Labs Activities Library


* General understanding of the Linux system plumbing infrastructure: [http://www.kernel.org/ kernel],
* General understanding of the Linux system plumbing infrastructure: [http://www.kernel.org/ kernel],