1,885
edits
Changes
→Release Dates, Presentations, and Quizzes
Previous semester: [[Fall 2010 SBR600 Weekly Schedule]]
* Introductions
=== Intro to SBR600 - Software Build & Release ===* [[SBR600 Overview of the Build and Release Process|Brief overview of the Build & Release process - These steps vary according to the particular project/product. For example, when distributing software physically, "Release" means performing a release-to-manufacturing (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.** Version Control** Compilation** Testing** Packaging** Compositing** Release** Distribution** Mirroring]]
* Introduction to Free Software and Open Source
** The [http://fsf.org Free Software Foundation]
** [[SBR600 Communication Tools|Communication Tools]]
** [[SBR600|Course Outline]]
* How this Course Works** [[SBR600 Communication Tools]]** How coursework is submitted in SBR600* [[FUDCon Tempe 2011]] trip** Selection of attendees* Visit to the [[CDOTArea]] Area
=== To Do ===
=== Using ''make'' ===
=== RPM Packages ===
* Purpose* What's in an RPM package fileDifferences between managing RPMS and Installing from Source** MetadataRPMS provide a database of installed software*** What the package providesLet you determine what's installed*** DependenciesAutomatic management of dependencies*** Packager, date, license, summary, description, ...** Digital signature** Software** Data*** Fonts*** Icons*** Sample data** Documentation** Configuration Identify the origin of files** Setup scripts*** Pre-installPermit easy update or removal*** Post-installEnable you to verify installation (useful for spotting file corruption and intrusions)*** Pre-uninstall*** Post-uninstall*** Triggers[[RPM Package Contents|Contents of an RPM Package]]
=== The RPM Database ===
* [[RPM Queries|Querying the RPM database]]
=== 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 [[Contents 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** %makeinstallan RPM spec file]]
=== rpmlint: Checking for a clean spec file, SRPM, and RPM Creating Packages === <code>rpmlint</code> is a spec file, SRPM (.src.rpm), and RPM (.rpm) checker. To use it, supply the names of the file(s) to be checked as argument(s): rpmlint ''foo.spec foo*.rpm''
=== Demo: Creating a Simple Package ===
* Writing the specfile
* Testing the specfile
** Using rpmlint
=== Resources ===
By '''Monday, January 17''':
# [[SBR600 RPM-Writing Lab|RPM-Writing Lab]]
# Send your [[SSH]] public key to [[User:Chris Tyler|your professor]]so he can create accounts for you on the [[CDOT Development Systems]].
= Week 2 (January 17) - Using Mock and Koji =
== Tuesday ==
=== mock: Testing BuildRequires Project Selection ===
== Thursday =mock: Testing BuildRequires === It's often difficult to get the BuildRequires in a spec file exactly right, because it's easy to overlook packages that are coincidentally installed on the machine. ''Mock'' is used to test that the BuildRequires for a package are complete and accurate, by creating a bare-bones [http://en.wikipedia.org/wiki/Chroot chroot] environment containing only the [[:fedora:Packaging/Guidelines#Exceptions_2|basic build packages]] plus any packages indicated by BuildRequires lines in the spec file.
=== koji: Testing multiple architectures ===
<code>koji</code> is a client-server system which allows you to queue builds within the Fedora build farm. This permits you to test whether your package builds on several different architectures, which is especially useful when you don't otherwise have access to the machines of that architecture.
== ToDo Thursday ==
* Test your RPM from last week with:Project pages are due.** rpmlint** mock** kojiBe prepared to give a detailed but brief (3- to 5-minute presentation) on your project plan.
== Signing RPM packages ==
# Create a GPG key: <code>gpg --gen-key</code>
# Add the e-mail address associated with your gpg key to the <code>%_gpg_name</code> macro in <code>~/.rpmmacros</code> -- the line will look like this: <code>%_gpg_name "<i>e-mail-address</i>"</code>
# Find (or make) some packages to put in your repository. Make sure that the epoch-version-release is higher than that of any package with the same name in the Fedora repositories.
# Sign those packages with: <code>rpm --addsign <i>packagefile</i></code>
== ToDo ==
Lab
# Test it.
# Blog about this lab, and include a link to your repository RPM package.
= Weeks 6 - 13 =
* Project work
= Release Dates, Presentations, and Quizzes =
* March 7 - '''Release 0.1'''
* March 15/17 - Pre-0.2 presentations
* March 24 - Written Quiz
* April 4 - '''Release 0.2'''
* April 5/7 - Pre-0.3 presentations
* April 11/13 (To Be Confirmed) - OCE Presentations
* April 14 - Practical Quiz
* April 22 - '''Release 0.3''' - DO NOT BE LATE!
<!-- = Week 8 =