1. Introduction

The aim of this howto is to show what’s the procedure of a stable Frugalware release. The to-be-created release in this howto is 2.0, the previous release is 1.9.

2. A testing release

A testing release is similar to a full one, but much simpler. Here are the steps:

  • bump the frugalware package: update the Makefile in frugalware.git, upload a new release tarball, and update the package in -current

  • rebuild the setup package, update the version of the frugalware package dependency to the new version

  • wait for the nightly cronjob to publish setup kernel+initrd under /pub/frugalware/frugalware-current/boot

  • now you can generate a netinstall iso using mkiso for a single architecture you can test and upload the image to /pub/frugalware/frugalware-current-iso

  • do a default install and make sure the machine boots up and you can log in using the graphical interface (if not, then fix it)

  • run dg tag <version> for the new version and push, using:

git push
git push --tags
  • sync changes from -current to -testing:

$ rsync -avP --delete-after frugalware-current/ frugalware-testing/
  • generate installer images for a single architecture using mkisorelease

  • wait at least 24h so that mirrors will be in sync

  • update news.xml and roadmap.xml to mark the release as done

3. Preparing

  • send a mail to -devel about "please stop version and release bumps"

  • check if the artwork has been updated completely. see this mail from Nadfoka on what items should be checked

  • ask someone to update the screenshots

  • sync the archs, checkpkgs shouldn’t have any red pkg in it’s output

  • run gensync to rebuild the fdbs

  • generate isos and test if everything is ok (ie. install from cd1-cd2 on i686, and start kde, or something)

  • check if the upgrade from 1.9→2.0 works or not, probably a simple -Syu is not enough, then write a howto

  • tag the release using git tag

4. Creating the stable tree

Copy the full tree on genesis:

$ cd /home/ftp/pub/frugalware
$ cp -av frugalware-current frugalware-2.0

5. Updating the -current tree

Now one has two trees. All what one should do in -current is to regenerate ChangeLog.txt (copy & paste the command from tools/genpkgdbs).

6. Updating the -stable tree

  • run tools/mkpkglst for each arch

  • update VERSION in docs/Makefile, and rebuild the manual

  • update \.git/description

  • run genpkgs to regenerate the ChangeLog.txt to start from the 1.9 tag to the 2.0 tag

  • rename the frugalware-current fdbs to rigel:

for i in frugalware-*; do cd $i; mv frugalware-current.fdb rigel.fdb; cd ..; done
  • tweak the syncpkgd config, so that the rigel repo will be recognized as a non-current-based WIP repo

  • search for ugly in genesis:/pub/other/git-hooks/synchook/synchook.py and make it reply 2.0 with rigel as well.

  • you must place a copy of the new repo file in each build server’s /etc/pacman-g2/repos directory or else it will not work.

  • update pacman-{g2,-tools} and fwsetup so that -stable will be the default on -Syu / repoman upd / in the installer, not -current — and git push these changes (see previous stable release if you need an example!)

  • once all archs are ready with the "default to -stable" builds, rename rigel fdbs to frugalware:

for i in frugalware-*; do cd $i; mv rigel.fdb frugalware.fdb; cd ..; done
  • upload the fdbs to the mysql db using fpm2db, just run all2db.sh from the /tools dir

  • update the frugalware-stable and frugalware-stable-iso symlinks

ln -sfn frugalware-2.0     frugalware-stable
ln -sfn frugalware-2.0-iso frugalware-stable-iso
  • create a new chroot tarball for each arch

7. Testing

  • generate isos, test all of them (net,cd,dvd for each arch)

  • create an usb stick installer tarball for each arch

  • create an tftp boot image for each arch

  • create a gui installer image for each arch

8. Announcement

  • put the isos online and wait at least 24h so that the mirrors will be in sync at release time

  • create torrents for the isos and make sure at least one machine seeds them

  • add the new version to the bts

  • write an announcement, put it out to somewhere and ask Alex or LGee to spellcheck it

  • push it to the homepage-ng repo

  • mark the release as "done" in /frugalware/xml/roadmap.xml (homepage-ng repo) and add the proper newsid value

  • update the topic of #frugalware

  • update the freecode.com entry

9. For the next release

  • find a codename

  • update roadmap.xml

Done!