Fall 2008 SPR720 Weekly Schedule
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
- Set up your accounts as described on the LUX Communication page.
- Complete the SPR720 Command Lab and blog about the experience.
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
- BASH Redirection
- Filter programs
- BASH Variables
- BASH Exit Status
- BASH Flow Control
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
- Purpose
- How they work
- Simple Examples
- Autoconf/configure
- What it is
- How it works
- Real-world examples
- Simple makefile: NLED - Source tarball
- Autoconf/configure: Critical Mass
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
- Metadata
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
- Needed packages
- Source RPMS
- Installing
- Examining the contents
- Rebuilding
-
rpmbuild --rebuild *.src.rpm
-
- Building from the spec file
Writing a specfile
-
rpmdev-newspec packagename
- Basic Sections
- preamble - basic metadata
- %prep - commands to prepare the package for building
- %build - commands to build the package
- %install - commands to install the built files
- %check - commands to check/test the built files (optional, often not included)
- %clean - commands to clean up the disk space
- %files - list of files to be included in the pacakge
- %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:
- Prepare for the test and presentation next week.
- Keep on blogging!
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
- Key documents:
- fedora:PackageMaintainers/Join (How to become a Fedora package maintainer. Includes instructions on setting up a packaging environment, using Koji, and more).
- fedora:PackageMaintainers/NewPackageProcess (Short version of above, intended for existing package maintainers).
- 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:
- Do the SPR720 Package Review Lab
- Blog about your project progress, particularly your plans for your 0.2 release (see LUX Project).