Difference between revisions of "Fall 2008 SPR720 Weekly Schedule"

From CDOT Wiki
Jump to: navigation, search
m (Week 1 (Sept 1) - Intro to Open Source / Command-line Basics)
(Exam Week (Dec 8))
 
(46 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
* Course introduction
 
* Course introduction
 
* Introduction to Open Source and Linux
 
* Introduction to Open Source and Linux
* Introduction to the command line
+
* Introduction to/Review of the command line
 
** Why use the command line?
 
** Why use the command line?
 
** Accessing the command line locally and remotely
 
** Accessing the command line locally and remotely
 +
*** terminal programs
 +
*** ssh
 
** Command recall and editing
 
** Command recall and editing
 
* Linux Commands
 
* Linux Commands
* The Linux file hierarchy
+
** Builtin vs. external
 +
** Types of arguments
 +
*** Option
 +
*** Positional
 +
*** Option with value
 +
* Filesystem hierarchy
 
* Accessing Documentation
 
* Accessing Documentation
 
** manpages
 
** manpages
Line 20: Line 27:
  
 
= Week 2 (Sept 8) - Bash Scripting Basics I =
 
= Week 2 (Sept 8) - Bash Scripting Basics I =
 +
 +
Announcements/discussion/review:
 +
* Blogging guidelines
 +
* <s>Louis Suarez-Potts - Thursday Sept 11 2:15 pm</s>
 +
* 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?
 +
** [[Scripts on Linux]]
 +
*** [[Linux Permissions]]
 +
 +
'''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 =
 
= 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 =
 
= Week 4 (Sept 22) - Makefiles =
 +
 +
== BASH Scripting -- Conclusion ==
 +
 +
* Examine solutions to last week's lab
 +
 +
== Makefiles ==
 +
 +
* Purpose
 +
* How they work
 +
* [http://matrix.senecac.on.ca/~chris.tyler/osd600/makefile-examples.tgz Simple Examples]
 +
* Autoconf/configure
 +
** What it is
 +
** How it works
 +
* Real-world examples
 +
** Simple makefile: [http://cdot.senecac.on.ca/software/nled/ NLED] - [http://cdot.senecac.on.ca/software/nled/nled_2_52_src.tgz Source tarball]
 +
** Autoconf/configure: [http://criticalmass.sourceforge.net/ 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 [[LUX Project|Project]] blogging assignment.
 +
 
= Week 5 (Sept 29) - Creating SPEC files and RPMs =
 
= 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
 +
*** <code>rpmbuild --rebuild *.src.rpm</code>
 +
** Building from the spec file
 +
 +
== Writing a specfile ==
 +
 +
* <code>rpmdev-newspec ''packagename''</code>
 +
* 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 ==
 +
 +
* [[:fedora:PackageMaintainers|Fedora Package Maintainers page]]
 +
** [[:fedora:PackageMaintainers/CreatingPackageHowTo|Packaging How-To]]
 +
 +
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 [[LUX Project|project]] work this week.
 +
 
= Week 6 (Oct 6) - RPM Scripts =
 
= Week 6 (Oct 6) - RPM Scripts =
= Week 7 (Oct 13) - Creating a Repository =
+
== 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.
 +
** [[SPR720 Midterm Practice]]
 +
* 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) =
 
= FSOSS and Break Week (Oct 20) =
  
= Week 8 (Oct 27) - Using Mock =
+
= Week 8 (Oct 27) - Using Mock and Creating a Repository =
= Week 9 (Nov 3) - Python Scripting Basics I =
+
 
= Week 10 (Nov 10) - Python Scripting Basics II =
+
* Key documents:
= Week 11 (Nov 17) - Using Libvirt =
+
** [[: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 <code>BuildRequires</code> values in spec files:
 +
mock -r ''configuration-file'' --rebuild ''name-of-srpm''
 +
 
 +
The <code>configuration-files</code> can be found in <code>/etc/rpm</code> (example: <code>fedora-9-x86_64</code>).
 +
 
 +
* 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]]).
 +
 
 +
= 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)
 +
 
 +
* Do the [[SPR720 Python Lab I]]
 +
** Please complete the lab by ''Monday''
 +
 
 +
= Week 11 (Nov 17) - Python Scripting Basics II and Using Libvirt =
 +
 
 
= Week 12 (Nov 24) - Project presentations =
 
= Week 12 (Nov 24) - Project presentations =
 
= Week 13 (Dec 1) - Exam review =
 
= Week 13 (Dec 1) - Exam review =
 
= Exam Week (Dec 8) =
 
= Exam Week (Dec 8) =
 +
 +
[[Fall 2008 SPR720 Sample Exam Questions]]
 +
 +
[[Category:LUX]][[Category:SPR720]]

Latest revision as of 19:34, 10 December 2008

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