Winter 2009 SBR600 Weekly Schedule

From CDOT Wiki
Revision as of 13:00, 29 January 2009 by Chris Tyler (talk | contribs) (Creating Packages)
Jump to: navigation, search

Please note:

  • The schedule here is tentative.
  • Week-by-week details will be filled in as the course progresses.


Week 1 (January 12) - Introduction

Tuesday

  • Welcome
  • Introductions
  • Intro to Build & Release
    • Brief overview of the process
      • Versioning & repository systems
      • Compilation
      • Testing
      • Packaging
      • Compositing
      • Release
      • Distribution
      • Mirroring
    • These steps vary according to the particular project/product. For example, when distributing software physically, "Release" means performing a RTM, where the final "gold disk" is sent to the duplicating house to be mass-produced; but when distributing software electronically, "Release" means sending the software to the online distribution system. The sequence of steps also varies between projects/products.
  • Course Layout
    • Project-based course
    • Working with Open Source
    • Working with the Fedora Project
  • Communication Tools
  • Course Outline
  • Visit the CDOT Area

Thursday

  • Makefile Basics
    • Targets, Dependencies, and Commands
    • Implied rules (e.g., .o files)
    • Examples

Readings/Resources

ToDo:

Communication Lab: By Thursday, January 15, Set up your accounts (wiki, IRC, FAS2).

  • Create a blog post which will appear on the OpenSource@Seneca Planet, containing:
    • A portion of an IRC conversation you've had with someone on a Fedora or Seneca IRC channel.
    • A link to your User page on the Seneca wiki
    • A link to your User page on the Fedora wiki
  • Add an entry to the Winter 2009 SBR600 Participants page

Lab 1: By Wednesday, January 21:

  • Build 2 packages from Source
    • The NLED editor from http://cdot.senecac.on.ca
    • Any package that uses autoconf -- SourceForge might be a good place to look for such packages.
  • Blog about the experience.

Week 2 (January 19) - Overview of the Build and Release Processs

(Classes cancelled due to professor's illness)

  • Complete ToDo items from week 1 if not already done.

Week 3 (January 26) - Creating RPM Packages and Working with Open Source Communities

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
      • Triggers

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
      • run rpmdev-setuptree
  • Taking a look at existing source RPMS (useful as examples)
    • Installing
      • yumdownloader --source nameofpackage
      • rpm -i nameofpackage.src.rpm
      • Source will be in ~/rpmbuild/SOURCES and specfile will be in ~/rpmbuild/SPECS
    • Examine the specfile
    • Rebuild on the local machine
      • rpmbuild --rebuild nameofpackage.src.rpm
    • Building from the spec file
      • cd ~/rpmbuild/SPECS; rpmbuild -ba nameofpackage.spec

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 (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) - Project Release 0.0

Week 5 (February 9) - Basic Build I

Week 6 (February 16) - Basic Build II

Week 7 (February 23) - Basic Build III - Project Release 0.1

Study Week (March 2)

Week 8 (March 9) - Server Farms & Distributed Processing I

Week 9 (March 16) - Server Farms & Distributed Processing II

Week 10 (March 23) - Server Farms & Distributed Processing III - Project Release 0.2

Week 11 (March 30) - Supporting Technologies I

Week 12 (April 6) - Supporting Technologies II

Week 13 (April 13) - Project Release 0.3 & Presentations

Exam Week (April 20)