Fall 2008 SPR720 Weekly Schedule

From CDOT Wiki
Jump to: navigation, search

The tentative weekly schedule shown here is subject to change.

Week 1 (Sept 1) - Intro to Open Source / Command-line Basics

  • Course introduction
  • Introduction to Open Source and Linux
  • Introduction to/Review of the command line
    • Why use the command line?
    • Accessing the command line locally and remotely
      • terminal programs
      • ssh
    • Command recall and editing
  • Linux Commands
    • Builtin vs. external
    • Types of arguments
      • Option
      • Positional
      • Option with value
  • Filesystem hierarchy
  • Accessing Documentation
    • manpages
    • info
    • Documentation viewers
  • TODO

Week 2 (Sept 8) - Bash Scripting Basics I

Announcements/discussion/review:

  • Blogging guidelines
  • Louis Suarez-Potts - Thursday Sept 11 2:15 pm
  • Paul Frields - IRC chat Sept 11 5-6 pm
  • Review: shell, commands, arguments

The Fedora Project

  • What is a distribution?
  • Main functions of a distribution
    • Packaging
    • Integration
    • Testing/QA
    • Distributing (mirrors, media)
  • The Fedora Distribution
    • History
    • Community structure
    • Participating in the Fedora community
      • FAS2, mailing lists, wiki

Bash Scripting Basics

  • Filesystem hierarchy
    • Absolute paths: start with / indicating the root directory
    • Relative-to-home paths: start with ~ indicating a home directory
    • Relative paths: start with anything else, relative to "current" directory
  • Why script?

TODO

  • Create a FAS2 account, subscribe to Fedora mailing lists.
  • Narrow down your project search to 2-4 of the Potential Projects
  • Make sure you know how to use Vi -- if not, research its use.

IRC Session: Paul Frields

Paul Frields is the Fedora Project Leader. He will be meeting with us in freenode:#seneca from 5-6 pm on Thursday (Sept 11) during the SPR720 lab time.

Week 3 (Sept 15) - Bash Scripting Basics II

TODO

  • Narrow your project selection to one project by September 22.
  • Complete the SPR720 BASH Scripting Lab and blog your reflections on the experience. Include a link to one of your scripts in the blog.

Week 4 (Sept 22) - Makefiles

BASH Scripting -- Conclusion

  • Examine solutions to last week's lab

Makefiles

TODO

  • Download at least one software package in source form (sourceforge.net or fedorahosted.org are good sources), unpack it (usually 'tar xvf'), and build it (check the notes included in the tarball; in most cases './configure', 'make', and 'make install'). Make notes on the steps involved, and blog about the process, including any additional software that you had to install to get it to build. Please complete this lab before next Tuesday's class.
  • Complete this week's Project blogging assignment.

Week 5 (Sept 29) - Creating SPEC files and RPMs

RPM Packages

  • Purpose
  • What's in an RPM package file
    • Metadata
      • What the package provides
      • Dependencies
      • Packager, date, license, summary, description, ...
    • Digital signature
    • Software
    • Data
      • Fonts
      • Icons
      • Sample data
    • Documentation
    • Configuration files
    • Setup scripts
      • Pre-install
      • Post-install
      • Pre-uninstall
      • Post-uninstall

The RPM Database

  • Purpose of the database
  • Querying the RPM database
    • rpm -q

Creating Packages

  • Packaging scenarios
  • Setting up a Packaging Environment
    • Needed packages
      • rpm-build
      • rpmdevtools
      • rpmlint
    • Setting up the RPM tree
      • rpmdev-setuptree
  • Source RPMS
    • Installing
    • Examining the contents
    • Rebuilding
      • rpmbuild --rebuild *.src.rpm
    • Building from the spec file

Writing a specfile

  • rpmdev-newspec packagename
  • Basic Sections
  1. preamble - basic metadata
  2.  %prep - commands to prepare the package for building
  3.  %build - commands to build the package
  4.  %install - commands to install the built files
  5.  %check - commands to check/test the built files (optional, often not included)
  6.  %clean - commands to clean up the disk space
  7.  %files - list of files to be included in the pacakge
  8.  %changelog - record of the package's change-history
  • Scriptlets
    •  %pre
    •  %post
    •  %preun
    •  %postun
  • Macros
    •  %{_tmppath}
    •  %{buildroot}
    •  %{_bindir}
    •  %{_datadir}
    •  %{_mandir}
    •  %{_smp_flags}
    •  %setup
    •  %configure
    •  %makeinstall

Creating a Simple Package

  • NLED
  • Writing the specfile
  • Testing the specfile
  • Using rpmlint

Resources

See also "Fedora Linux" chapter 5 (see Seneca Library website > eBooks > View All > Safari > Fedora Linux).

TODO:

  • Take the software you compiled last week and package it. Blog about the experience. Include a link to your source RPM (and optionally your binary RPM) from your blog.
  • Remember to blog about your project work this week.

Week 6 (Oct 6) - RPM Scripts

Guest speaker: Andrew Overholt

Andrew Overholt works at Red Hat's Toronto office, primarily focusing on Eclipse; he'll be speaking about packaging issues. This session will be videotaped for the web.

ToDo:

Week 7 (Oct 13) - Midterm test Part A and Presentations

Midterm Test Part A

On Tuesday we'll be doing the multiple-choice portion of the midterm test for this course.

Presentations

A 5-minute presentation about your 0.1 project release (details provided by John Selmys).

FSOSS and Break Week (Oct 20)

Week 8 (Oct 27) - Using Mock and Creating a Repository

  • Mock is a tool for creating chroot environments and populating them with packages. One of its main uses is to test and verify the BuildRequires values in spec files:
mock -r configuration-file --rebuild name-of-srpm

The configuration-files can be found in /etc/rpm (example: fedora-9-x86_64).

  • Koji is the Fedora build server system (koji.fedoraproject.org). The same name is used for the Koji software, which you can install on your own build server.
    • Koji can checkout code from the Fedora CVS and build it. This is usually done under the control of the makefiles created when a CVS module is generated for a new package.
    • Koji can also be used for a scratch build, where any source RPM is submitted for building. If your packaging environment is set up, you can request a scratch build with a command such as this (where ppc is the arch, dist-f9 is the build target, and nled-2.52-3.fc8.src.rpm is the source package):
koji build --arch-override=ppc --scratch dist-f9 nled-2.52-3.fc8.src.rpm

TODO:

Week 9 (Nov 3) - Midterm Test part II and Guest Speakers

  • Write the second part of the Midterm test
  • Guest speakers: Tom and Anton

Week 10 (Nov 10) - Python Scripting Basics I

  • Read: Chapters 1-5 in the textbook (available online from the Seneca library website)

Week 11 (Nov 17) - Python Scripting Basics II and Using Libvirt

Week 12 (Nov 24) - Project presentations

Week 13 (Dec 1) - Exam review

Exam Week (Dec 8)

Fall 2008 SPR720 Sample Exam Questions