Open main menu

CDOT Wiki β

Changes

Fall 2009 SBR600 Weekly Schedule

7,647 bytes added, 15:06, 3 December 2009
= Using DistCC
[[Category:SBR600]]'''Please note:'''
* The schedule here is tentative.
* Week-by-week details will be filled in as the course progresses.
= Week 2 (September 15) - Overview of the Build and Release Processs =
== Tuesday ==
* Discussion of issues related to building
** Finding dependencies.
** -j''X'' flag to enable multiple jobs
** Introduction to RPM
*** What is RPM?
*** Querying using the <code>-q</code> option
 
== Thursday ==
* Telephone conference with Jesse Keating, Fedora Release Engineer
** [http://cdot.senecac.on.ca/audio/sbr600/ Audio recording] of the call
 
== ToDo ==
* Finish tasks from week 1 if not already completed.
** Remember, marking in this course is done on the basis of blog posts which appear on the planet.
** You should have two blog posts on the planet by now: One with a link to your Seneca and Fedora user pages plus a snippet of IRC conversation, and one with a reflection on your experience compiling software from source code.
<!--
* Interview with a B&R Engineer
= Week 3 (September 22) - Creating RPM Packages I =
<!--
== RPM Packages ==
* Edit the skeleton specfile.
* Test it: <code>rpmbuild -ba ''packagename''.spec</code>
** If successful, output will be binary RPM(s) in ~/rpmbuild/RPMS and source RPM in ~/rpmbuild/SRPMS
*** Can install binary RPM with: <code>rpm -i ''rpmname''</code>
** If unsuccessful, read the error messages carefully.
* Check it with rpmlint: <code>rpmlint ''packagename''*</code>
** Remember to check the spec file as well as the binary and source RPMs.
** Correct any errors found.
== Layout of a specfile ==
# %changelog - record of the package's change-history
* Scriptlets
** %pre-- run before installation** %post-- run after installation** %preun-- run before uninstallation** %postun-- run after uninstallation*** Note that during upgrade, the installation of the new package is considered to happen before the removal of the old package.
* Macros
** %{_tmppath}
See also "Fedora Linux" chapter 5 (see Seneca Library website > eBooks > View All > Safari > Fedora Linux).
'''TODO:'''== ToDo ==
* Take the software you compiled last week and package it (not Nled!). Blog about the experience. Include a link to your source RPM (and optionally your binary RPM) from your blog.-->'''Please complete this by Monday, September 28.'''
= Week 4 (September 29) - Creating RPM Packages II=
-->
== Resources == * [[:fedora:PackageMaintainers/UsingKoji|Using Koji]] == ToDo == * Test your RPM from last week with:** rpmlint** mock** koji * Blog about your experience. = Week 5 (October 6) - Compositing Repositories/Distributing = ==Signing RPM packages == An RPM signature, like the digital signature used on many other software-signing systems, is a private key encryption of a checksum. RPM uses the GPG libraries for signing. # Create a GPG key: <code>gpg --gen-key</code># Add the e-mail address associated with your gpg key to the <code>%_gpg_name</code> macro in <code>~/.rpmmacros</code> -- the line will look like this: <code>%_gpg_name "<i>e-mail-address</i></code># Find (or make) some packages to put in your repository. Make sure that the epoch-version-release is higher than that of any package with the same name in the Fedora repositories.# Sign those packages with: <code>rpm --addsign <i>packagefile</i></code>
= Week 6 (October 13) - Distributing = Creating a YUM repository ==
A yum repository is just a directory of packages and some metadata.
 
# Create a directory that can be served. The protocol used to serve that directory could be http, ftp, nfs, or something else (the files can be served by putting them on a DVD too!). For http, create the directory within <code>/var/www/html</code>
# Put your signed packages in that directory.
# Create the repository metadata for that directory: <code>createrepo <i>/name/of/directory</i></code>
 
Notice that the repository metadata will be placed in a directory named <code>repodata</code>
 
== Testing ==
 
# Create a new repository file in <code>/etc/yum.repos.d</code> by copying and modifying an existing file in that directory. Keep <code>gpgcheck=1</code> but comment out the <code>gpgkey</code> file.
# Confirm that you cannot install from that repository using yum.
# Uncomment the <code>gpgkey</code> line, and point it to a new file within <code>/etc/pki/rpm-gpg/</code>
# Create that file by running (as your regular user): <code>gpg --export --armour <i>e-mail-address</i></code> and saving the output
# Confirm that you can now install from your repository. You should be asked whether you wish to import the key for your repo.
 
== Guest Speakers: Ben Hearsum and Armen Zambrano ==
 
* Ben Hearsum and Armen Zambrano Gasparnian from the Mozilla build team will discuss what Build & Release means in the [http://mozilla.org/ Mozilla] context.
 
== ToDo ==
 
# Create an RPM package that will install your repository configuration file and the key.
# Test it.
# Blog about this lab, and include a link to your repository RPM package.
 
= Week 6 (October 13) - Compositing =
 
* Compositing (or Composing) is arranging media for distribution. These days, "Media" may be an image instead of physical media.
 
== Creating a LiveCD/LiveDVD in Fedora ==
 
* Install the livecd-tools and example kickstart files: <code>yum install livecd-tools spin-kickstarts</code>
 
* Turn off SELinux temporarily: <code>setenforce 0</code>
* Run the livecd-creator with a specific kickstart file (this one uses an example from /usr/share/spin-kickstarts): <code> livecd-creator --config=/usr/share/spin-kickstarts/fedora-livecd-desktop.ks --fslabel=Fedora-LiveCD --cache=/var/cache/live</code>
* You should end up with an ISO image. You can test it with: <code>qemu-kvm -m 512 -cdrom Fedora-LiveCD.iso</code>
 
== Creating Your Own LiveCD Image ==
 
* Create a modified kickstart file with these changes:
** Replace the ''fedora-logos'', ''fedora-release'', and ''fedora-release-notes'' with the ''generic-logos'', ''generic-release'', and ''generic-release-notes'' packages.
** Add your personal repository and the package which you created.
* Build the live disc and test it.
 
== Resources ==
 
* Fedora Wiki:
** [[:fedora:FedoraLiveCD/LiveCDHowTo|LiveCDHowTo]]
** [[:fedora:Remix|Remix]]
** [[:fedora:Legal:Trademark_guidelines|Legal:Trademark Guidelines]]
 
== ToDo ==
 
* Blog about your experiment finding the optimal <code>%_smp_mflags</code> value for a CDOT machine.
* Blog about the LiveCD image you created. Include a link to the kickstart file as well as to the ISO image itself.
<!--
* We analyzed the [[Winter 2009 SBR 600 Fedora Mass Rebuild|mass rebuild]] results so far to find the slowest 15 packages: [[Winter 2009 SBR600 Packages of Interest]]
= Week 7 (October 20) - Server Farms I =
 
== Packaging ViewSource/DXR/Dehydra ==
 
Resources:
* This is what we're packaging (a web app): http://scotland.proximity.on.ca/dxr/viewsource/
* This is the script to build the modified GCC: <s>http://scotland.proximity.on.ca/dxr/viewsource/build-tools.sh</s> http://hg.mozilla.org/webtools/dxr/file/4e1eb442c826/viewsource/build-tools.sh
* This is DXR in its current form: http://dxr.proximity.on.ca/dxr/
 
== ToDO ==
 
* Build the modified GCC before Thursday.
* On Thursday, benchmark the differences between the regular and modified GCC.
= Study Week (October 27) =
* [http://fsoss.ca FSOSS 2009]
** Please plan on attending at least the Friday sessions.
** Register via the [http://fsoss.ca FSOSS web site] (student registration is $15 in advance) -- or you can [[volunteer]] to get in for free.
* [http://opensourceweek.ca Toronto Open Source Week]
= Week 8 (November 3) - Server Farms II =
== DistCC == DistCC is a distributed C compiler. It provides a daemon (server, slave) which can be run on multiple machines, and a client (master) which is used to send jobs to daemons on other computers. DistCC is installed as symbolic links named after the compilers present on the machine, targeting the 'distcc' binary. When invoked in this way, distcc will execute the compiler with the same name as the symbolic link, either on the local computer or on a slave. Make is therefore unaware that it's running distcc -- it thinks it's running the regular C or C++ compiler (such as gcc or c++). In order to take advantage of the additional resources provided by the slave servers, it's necessary to increase make's -j value. If building with rpmbuild, this is done through the <!-code>%_smp_mflags</code> macro in ~/.rpmmacros DistCC offers several different communication options, including a native (fairly insecure) protocol and ssh. The native protocol is often used despite being insecure because it is fast and most build farms are private networks that are not publicly accessible. === Resources === * http://distcc.org === Using DistCC === DistCC is packaged for Fedora (as "distcc" and "distcc-server"). 
Machine codes:
* [c] indicates client machine (where you are starting the build)
# [c] start the build: <code>time rpmbuild --rebuild ''package''.src.rpm</code>
''== ToDo:''==
* Blog about the build times with and without distcc.
* Blog an analysis of the /var/f10source/buildall.log file on Scotland.
-->
= Week 9 (November 10) - Distributed Processing =
# Confirm that you can now install from your repository. You should be asked whether you wish to import the key for your repo.
''== ToDo:''==
# Create an RPM package that will install your repository configuration file and the key.
= FUDCon (December 5-7) =
* [[:fedora:FUDCon:Toronto 2009|FUDCon Toronto 2009]] consists of:
** An unconference at SEQ on Saturday
*** A FUDPub social night at Dave & Busters on Saturday night
** A hackfest at SEQ on Sunday
*** Skating at Nathan Phillips Square on Sunday night
** A hackfest at TEL on Sunday
* Please plan on attending the Saturday Unconference.
= Week 13 (December 8) - Wrap-Up
= Exam Week (December 15) =
* There is no exam in this course.