
ver=2.22 #set the version referenced by the following commands
repository
Hosting your project on a public OSS hosting site is a very good idea. Some possible choices for project hosting are, SourceForge, Google, GNU or Berlios. Personally I don't like the structure of the SourceForge site, though it is improving lately. So I went with Google's project hosting as it became available when I was considering using a public hosting site for my project, and I really like Subversion.Here we create the release in the google subversion repository and copy it locally.
cd ~/fslint/releases/ svn cp -m "tagging release $ver" \ https://fslint.googlecode.com/svn/trunk/ \ https://fslint.googlecode.com/svn/tags/$ver svn export https://fslint.googlecode.com/svn/tags/$ver fslint-$ver tar -c --exclude=debian --owner=root --numeric-owner fslint-$ver/ | gzip -9 > fslint-$ver.tar.gz rm -Rf fslint-$ver
fedora
First of all I build and sign an RPM for people who don't use the fedora package repositories, or want immediate access to the latest fedora package. Before Fedora 11 I did this:sudo rpmbuild --sign -tb fslint-$ver.tar.gz cp -a /usr/src/redhat/RPMS/noarch/fslint-$ver-1.noarch.rpm .Since fedora 11 we need to do the following to create backwards compatible packages, that are hashed using md5 rather than sha256.
rpmbuild --sign -tb --define "_binary_filedigest_algorithm md5" fslint-$ver.tar.gz cp -a ~/rpmbuild/RPMS/noarch/fslint-$ver-1.noarch.rpm .Currently fedora uses a CVS repository and a higher level client to interact with the project. Until Fedora Core 6 this client was called "plague" but since F7 "koji" is used. I'm a fedora maintainer and so can affect releases to the devel branch and the various fedora releases directly, using the following commands.
cd ~/fslint/rpm/fedora/fslint/ export CVSROOT=":ext:pbrady@cvs.fedoraproject.org:/cvs/pkgs" export CVS_RSH="ssh" cvs update -dPA #update any build infrastructure changes export KOJI_FLAGS="--nowait" #release to rawhide (separate from below so as can check each step) ( cd devel cp -a ~/fslint/releases/fslint-$ver.tar.gz . make new-sources FILES="fslint-$ver.tar.gz" #manually update spec file with new version info make noarch #to test locally cvs commit -m "Update to $ver" make tag build #test remote build ) #check rawhide build info #release to versions for i in FC-6 F-7 F-8; do ( cd $i cp -al ../devel/fslint-$ver.tar.gz . #note file only actually uploaded once make new-sources FILES="fslint-$ver.tar.gz" cp -fal ../devel/fslint.spec . #make noarch cvs commit -m "Update to $ver" make tag build ) done #check FC5/FC6 build info #check F7 build info #Since the merge of Fedora Core and Extras in F7, we need to #explicitly push koji builds into a distro staging area (using bodhi)
debian
I chroot to ubuntu from fedora and run the following, to create a source package. This also creates and signs a binary package for people who don't use debian, or want immediate access to the latest debian package.ver=2.22 cd ~/fslint/releases/debian ln -s ../fslint-$ver.tar.gz fslint_$ver.orig.tar.gz tar xzf fslint_$ver.orig.tar.gz ( cd fslint-$ver svn export https://fslint.googlecode.com/svn/tags/$ver/debian dpkg-buildpackage -rfakeroot -tc -sa ) mv fslint_$ver-1_all.deb .. ln -s ../fslint_$ver-1_all.deb rm -Rf fslint-$verThe requirements of debian packages change often so it's important to use lintian to ensure conformance.
lintian -i -I -E fslint_$ver-1_all.deb lintian -i -I -E fslint_$ver-1.dscI'm not a debian maintainer, so I must upload my source package to mentors.debian.net as follows, and then wait for someone to sponsor the package, i.e. upload it to debian.
dput mentors *$ver*.changesI don't release directly to ubuntu, but they sync periodically with "Debian unstable". One can also request a sync from debian, or request sponsorship for non debian packages.
Publish to this site
cd .. && ./update.web $ver #update packages and sign checksums to local copy of site #manually edit ~/public_html/fslint/index.html cd ~/public_html && ./www.pixelbeat.org.sync #update public site
Publish to news sites
Possibly I could use an XML RPC interface to automate this, but I do releases infrequently enough, and the web forms are simple enough to do this manually. Currently I publish to freshmeat and gnomefiles from where it generally filters to other news sites.
© Jun 29 2007