Difference between revisions of "Winter 2010 SBR600 Weekly Schedule"

From CDOT Wiki
Jump to: navigation, search
(Week 2 (January 18) - Overview of the Build and Release Processs)
Line 51: Line 51:
 
** Any package that uses a configure script -- SourceForge might be a good place to look for such packages.
 
** Any package that uses a configure script -- SourceForge might be a good place to look for such packages.
 
* Blog about the experience.
 
* Blog about the experience.
 +
 +
= Week 2 (September 15) - RPM Packages I =
 +
 +
== Wednesday ==
 +
* Discussion of issues related to building
 +
** Finding dependencies.
 +
** <code>-j''X''</code> flag to enable multiple jobs
 +
 +
=== 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
 +
 +
== Friday ==
 +
 +
=== Creating Packages ===
 +
 +
* Packaging scenarios
 +
* Setting up a Packaging Environment
 +
** Needed packages
 +
*** rpm-build
 +
*** rpmdevtools
 +
*** rpmlint
 +
** Setting up the RPM tree
 +
*** run <code>rpmdev-setuptree</code>
 +
* Taking a look at existing source RPMS (useful as examples)
 +
** Installing
 +
*** <code>yumdownloader --source <i>nameofpackage</i></code>
 +
*** <code>rpm -i <i>nameofpackage</i>.src.rpm</code>
 +
*** Source will be in ~/rpmbuild/SOURCES and specfile will be in ~/rpmbuild/SPECS
 +
** Examine the specfile
 +
** Rebuild on the local machine
 +
*** <code>rpmbuild --rebuild <i>nameofpackage</i>.src.rpm</code>
 +
** Building from the spec file
 +
*** <code>cd ~/rpmbuild/SPECS; rpmbuild -ba <i>nameofpackage</i>.spec</code>
 +
 +
=== Writing a specfile ===
 +
 +
* Run <code>rpmdev-newspec ''packagename''</code> in ~/rpmbuild/SPECS
 +
* Edit the skeleton specfile.
 +
* Test it: <code>rpmbuild -ba ''packagename''.spec</code>
 +
** If successful, output will be binary RPM(s) in ~/rpmbuild/RPMS and source RPM in ~/rpmbuild/SRPMS
 +
*** Can install binary RPM with: <code>rpm -i ''rpmname''</code>
 +
** If unsuccessful, read the error messages carefully.
 +
* Check it with rpmlint: <code>rpmlint ''packagename''*</code>
 +
** Remember to check the spec file as well as the binary and source RPMs.
 +
** Correct any errors found.
 +
 +
=== Layout of a specfile ===
 +
 +
* 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 -- run before installation
 +
** %post -- run after installation
 +
** %preun -- run before uninstallation
 +
** %postun -- run after uninstallation
 +
*** Note that during upgrade, the installation of the new package is considered to happen before the removal of the old package.
 +
* 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 (not Nled!). Blog about the experience. Include a link to your source RPM (and optionally your binary RPM) from your blog. '''Please complete this by Monday, September 28.'''
 +
 +
 +
== ToDo ==
 +
 +
* Finish tasks from week 1 if not already completed.
 +
** Remember, marking in this course is done on the basis of blog posts which appear on the planet.
 +
** You should have two blog posts on the planet by now: One with a link to your Seneca and Fedora user pages plus a snippet of IRC conversation, and one with a reflection on your experience compiling software from source code.
 +
 +
* Find out what <code>-j</code> value results in the fastest build time for the software you have chosen. Blog about your results.
 +
 +
* Listen to the [http://cdot.senecac.on.ca/audio/sbr600/ audio recording] of last semester's conference call with Jesse Keating, Fedora Release Engin
 +
  
 
= Week 2 (January 18) - Overview of the Build and Release Processs =
 
= Week 2 (January 18) - Overview of the Build and Release Processs =
 +
 
= Week 3 (January 25) - Creating RPM Packages I =
 
= Week 3 (January 25) - Creating RPM Packages I =
 
= Week 4 (February 1) - Creating RPM Packages II=
 
= Week 4 (February 1) - Creating RPM Packages II=

Revision as of 12:57, 20 January 2010

Please note:

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

Week 1 (January 11) - 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

Friday

  • Make
  • Makefile Basics
    • Targets, Dependencies, and Commands
    • Implied rules (e.g., .o files)
    • Examples
  • Building software from a source tarball using a makefile

Readings/Resources

ToDo

Communication Lab: By Friday, 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 wikis
    • A link to your User page on the Fedora wiki
    • Note: don't just dump this stuff in a blog post, add some introductory text as well!
  • Add an entry to the Winter 2010 SBR600 Participants page

Lab 1: By Tuesday, January 19:

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

Week 2 (September 15) - RPM Packages I

Wednesday

  • Discussion of issues related to building
    • Finding dependencies.
    • -jX flag to enable multiple jobs

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

Friday

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

  • Run rpmdev-newspec packagename in ~/rpmbuild/SPECS
  • Edit the skeleton specfile.
  • Test it: rpmbuild -ba packagename.spec
    • If successful, output will be binary RPM(s) in ~/rpmbuild/RPMS and source RPM in ~/rpmbuild/SRPMS
      • Can install binary RPM with: rpm -i rpmname
    • If unsuccessful, read the error messages carefully.
  • Check it with rpmlint: rpmlint packagename*
    • Remember to check the spec file as well as the binary and source RPMs.
    • Correct any errors found.

Layout of a specfile

  • 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 -- run before installation
    •  %post -- run after installation
    •  %preun -- run before uninstallation
    •  %postun -- run after uninstallation
      • Note that during upgrade, the installation of the new package is considered to happen before the removal of the old package.
  • 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. Please complete this by Monday, September 28.


ToDo

  • Finish tasks from week 1 if not already completed.
    • Remember, marking in this course is done on the basis of blog posts which appear on the planet.
    • You should have two blog posts on the planet by now: One with a link to your Seneca and Fedora user pages plus a snippet of IRC conversation, and one with a reflection on your experience compiling software from source code.
  • Find out what -j value results in the fastest build time for the software you have chosen. Blog about your results.
  • Listen to the audio recording of last semester's conference call with Jesse Keating, Fedora Release Engin


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

Week 3 (January 25) - Creating RPM Packages I

Week 4 (February 1) - Creating RPM Packages II

Week 5 (February 8) - Repositories/Distributing

Week 6 (February 15) - Compositing

Week 7 (February 22) - Server Farms I

Study Week (March 1)

Week 8 (March 8) - Server Farms II

Week 9 (March 15) - Distributed Processing

Week 10 (March 22) - Virtualization

Week 11 (March 29) - Monitoring & Management

Week 12 (April 5) - Presentations

Week 13 (April 12) - Wrap-Up

Exam Week (April 19)