Ipaq The Intimate Project
news
project info
dev structure
download
installation
packages
screenshots
known bugs
suggestions
howto
blkmtd
mail archives
links
credits

Development Structure

28th June 2001

There are four parts to the intimate development structure. Website, Base Image, Repositary and Installer. Each of these different sections is set up so that many people may work on each section independantly. There's a round-up of each area below. Hopefully this will give everyone an idea of how it all fits together, what needs doing, and how it can be done :)

Website

The website is hosted on handhelds.org. The intimate project has a /home/intimate directory in which all the files relating to the project live. The website itself is in /home/intimate/website/data. The site now uses server-side includes to include common page elements. This means that you don't have to worry about the page format if you're writing HTML docs. Just a plain blank page will do. The logo and sidebar can be added with a simple #include. In order to work on the site, you will need an account on handhelds.org, and membership of the intimate group. FTP is used to transfer files to/from the server, so a shell account is not required. Only FTP access is needed.

Base Image

The Base image is the section which is transferred onto the iPAQ during the rsync portition of the install. The base image fulfills the same role in intimate that it does in debian. Namely, a basic text-only setup which will allow you to install and configure additional packages. The current base image was made by starting with a debian2_2.tgz stable ARM base, configuring it for booting on the iPAQ, and then upgrading it to use debian_unstable packages. The base image is currently around 56MB in size. Most of the packages on the base are not likely to change, but configuration files on the base are still in need of significant modification. The base also needs periodically updating with an apt-get upgrade to keep it up to date with debian's unstable feed.

The base image is manipulated entirely using rsync. rsync is an open source utility that provides fast incremental file transfer, complete with error checking, and CRCs etc. It's effectively equivalent to 'cp' but for use between remote machines. You can sync in either direction, pulling files from the server to yourself, or vice vera. You can sync individual files, directories or whole disks. It's in every way just as useful, powerful and potentially harmful as the 'cp' command.

Because of this, there are two different versions of the rsync image. The release version, and the development version. The release version of the image is read-only, and no further changes are allowed to the release image once it has been released. The development image can be written to by authorised rsync users. (You do not need an account on handhelds.org for this. You just need to convince us to give you write-access to the rsync development stuff). Due to the lack of any kind of rollback, journaling, tracking, or any of the other useful things that makes CVS so good, the development image will need a good thorough testing before release. (Really, we want some kind of CVS for binary files, which maintains file permission and ownership information... If anyone has a suggestion.. please.. please)

Repositary

Intimate now pulls packages from a mixture of the debian repositaries, and a repositary held on handhelds.org. By placing packages on handhelds.org, we can offer them uniquely to intimate users, without breaking any regular debian users. For example, we can out-version debian on their own packages, to work around bugs (perl currently only works because we out-versioned debian). We can release packages which replace and obsolete existing debian packages, so they will be installed in preference on the iPAQ.

The intiamte .deb repositary is held in /home/intimate/website/data/debian . It fully matches the debian directory structure, as this is what apt-get and dpkg expect to work with. All the packages currently live under dists/unstable/main/binary-arm.

The 'Packages', 'Packages.gz' and 'Release' files are automatically generated by a script (./mkrelease) , which will parse the repositary for .debs, and extract the relevant information needed. The script also generates the Packages web page at the same time. The idea is to run this script whenever a new package is added to the repositary. The script is currently very very dumb. It performs no error checking whatsoever, and will dumbly just grep and echo information into the relevant files. If a single error exists within the resulting Packages file, then apt-get will fail, and no-one anywhere will be able to use the repositary (neat huh?... no.. not really).

Currently, to get a package added to the repositary, you need to be in group intimate on handhelds.org (so you can run the script etc). This means that we can all add packages to the repositary... If someone mails a package to an intimate developer, then they can add it by executing a single command.

The ./mkrelease script needs a lot of work. Ideally, we'd have a fully automated package check-in. (Maybe something html based?). Please someone.... please :) Also, we need every util ever made or customised for the iPAQ to be packaged up and added to the repositary... Plenty of work for everyone here :)

Installer

The installer is a bit of shell script, and any associated binaries that are needed. It is assumed right from square one that an Internet connection direct to the iPAQ is available, so the standard install procedure is to wget the installer script, and execute it. The script will then fetch any additional files needed during the install procedure. (for example, the util to display a bitmap on the screen, and the bitmap to be displayed... the music player, and some music to play etc etc). This enables us to have an installer script that can cope with many different configurations, without having an un-necessarily large archive to store it all in.

There's still lots of stuff that needs adding to the installer script.. for example, we don't check to see if a disk is mounted before we fdisk, mkreiserfs or mkswap it. Now that blkmtd is around, we could offer the user a choice of filesystem to use... Smarter network autoconfig would also be good.. We want to try to make the isntaller script as smart as possible, so that the user need not be so smart.

To work directly on the installer script, you need to have shell access on handhelds.org... It stikes me that this would be a good one to put into CVS actually... Either way, there's plenty to be done here too.

 
Not Copyrighted © 2001 The Intimate Project. No Rights Reserved.