Open main menu

CDOT Wiki β

Changes

Winter 2009 SBR600 Weekly Schedule

4,964 bytes added, 11:44, 9 April 2009
no edit summary
* 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.
= Week 4 (February 2) - Working with Open Source Communities and Project Release 0.0 =
* Free Software and Open Source
*** FADs
* Example from class: [http://matrix.senecac.on.ca/~chris.tyler/sbr600/md5deep-3.2-1.fc10.src.rpm md5deep-3.2-1.fc10.src.rpm] ''ToDo:'' # Create an RPM.# Test it with rpmlint (spec, source RPM, binary RPM)# Test it with mock = Week 5 (February 9) - Basic Build I == Week 6 (February 16) = * 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]]* Questions:*# Why are 2 books in the top-4 slowest packages to build?*# Why are there so many Java packages in the top 15? Are they big, or slow to compile, or ?*# How much can we speed up packages in the top 15 using distcc? '''ToDo:'''* Prepare one of the CDOT machines for a non- Basic Build II =mock build of a slow package. See [[Winter_2009_SBR600_Packages_of_Interest#Preparing_to_test_distcc|Preparing to test distcc]] = Week 7 (February 23) - Basic Build III - Project Release 0.1 =
= Study Week (March 2) =
= Week 8 (March 9) = Machine codes:* [c] indicates client machine (where you are starting the build)* [s] indicates server machine (running distccd) Prerequisites for building with distcc:* [c] distcc plus any requirements for a normal build (e.g., rpmbuild, cc, make, BuildRequires as specified in the spec file, etc)* [s] distcc- Server Farms & Distributed Processing I server plus compilers (libraries etc. are not required) Basic instructions on building with distcc:# [c] create ~/bin and populate it with symbolic links pointing to /usr/bin/distcc for each of the compilers your package might use -- gcc, cc, g++, c++# [c] add that directory to the start of your search path: <code>PATH=${HOME}/bin:$PATH</code># [c] edit /etc/distcc/hosts to list the names of the hosts which will be servers ('''Recommendation:''' if your server and client are both on the GigE network -- scotland, ireland, china, india, or australia -- then append a "2" to the hostname to use the GigE interface (e.g., "scotland2")).# [s] on each server, allow access through the firewall for the distcc port (firewalls may be disabled on some of the machines alread)# [s] on each server, start distccd: <code>distccd --daemon --allow ''IP-addresses-of-client-system''</code># [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 = == 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 (March 16or make) some packages to put in your repository. Make sure that the epoch- Server Farms & Distributed Processing II 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> == 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. ''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 10 (March 23) - Server Farms & Distributed Processing III - Project Release 0.2 == Week 11 (March 30) - Supporting Technologies I == Week 12 (April 6) = == Using git ===== Resources ===* git web site: http://git- Supporting Technologies II scm.com/* git tutorial: <code>man gittutorial</code> or http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html* git documentation: http://git-scm.com/documentation* Fedora packages: <code>git, gitk</code> ===Lab Steps ===# Select a CDOT system that no one else is using.# Make a backup archive of the /etc directory: <code>tar cvzf ~/etc-backup.tgz /etc</code># Put the <code>/etc</code> directory under git control and do an initial commit.# Experiment with making changes in /etc and committing those changes.# Create an experimental branch and checkout that branch.# Make radical changes in /etc. Experiment with switching back and forth between the master and experimental branches.# When you're done, checkout the master branch and delete the experimental branch. ''ToDo'''* Blog about your using git -- what commands you used, what worked well, what was confusing, what you like/don't like. = Week 13 (April 13) - Project Release 0.3 & Presentations =
= Exam Week (April 20) =