Fuppes, Packaging, Weekly Summary

Packaging Gets Complicated (Weekly Summary Three)

Happy Valentines Day readers. I’ve had quite a little trip over the past few days. I have done alot this week in my attempt to package Fuppes for Debian and it makes for a long sort of story; so long, that you should consider this the weekly summary. I had finally taken Fuppes to the stage where I believe that it was ready to package; it compiled just fine on Ubuntu and, believing that Debian and Ubuntu were not that different, I wanted to make and submit a package for Debian. But first that would require a Debian install on my machine.

Dual Booting Ubuntu and Debain

The logical option was to dual boot Debian and Ubuntu and make them share the same /home partition. For those of you who have not heard of this before, many GNU/Linux users that I know prefer to always partition their machines so that one partition is for the root directory and one for the home directory. This has important advantages for data retention:

  • Your OS is separated from your personal data
    The operating system exists in the root directory and all of you data (should) exist in the /home directory; therefore, if you wanted to, you could completely reinstall your OS and keep all of your data. This has saved me quite a few times when I have damaged my OS beyond repair and done a complete reinstall; a few moments after the reinstall I’m exactly where I left off. No loss of data at all.
  • Better for Hard Drive Fails
    I have been led to believe that partitioned hard drives are easier to extract data from in the case of faults. Should you be crazy enough not to make backups, then you may have a greater chance of success of recovering your drive with this setup.

What this all means is that when I wanted to dual boot two operating systems that point to the same data all I had to do was add an extra partition for the Debian OS and tell it to mount the /home directory as its own. Therefore I have the following partitions on my machine:

  • /dev/sda6 – Ubuntu /
  • /dev/sda7 – /home
  • /dev/sda8 – Debian /
  • swap – Common swap directory

However, getting there was not that easy, and I encountered two problems when trying to install Debian lenny via a net install I met with two problems. The first was one that I could not explain; when I tried to install Gnome as my window manager it would download all of the required packages and then freeze for no apparent reason. I had no idea why that happened and I still don’t but I can tell you that using Xfce as my window manager instead solved the problem.

The next issue that I encountered was more serious, my Debian net install CD had no knowledge of the existence of /ext4 file systems; which was the type of file system that I had installed the Ubuntu root on. So when the Debian install went looking for other OS installs it could find nothing. It said that it found nothing else on the machine and asked me if I would like to overwrite the MBR. I didn’t really think straight and clicked OK; byebye Ubuntu Boot record. So Debian installed correctly but now my Ubuntu partition was unreachable; good one Robert, I felt pretty dumb. But, luckily, it was fairly easy to just reinstall Ubuntu on that partition again. Ubuntu recognized the /ext3 partition that Debian was installed on and now I have a Dual Boot-able system with Debian and Ubuntu. Finally I could try and compile Fuppes on Debian.

Compiling Fuppes on Debian

When I tried to compile fuppes on Debian it proved to be more difficult than I thought. It seems that the real difference between Debian and Ubuntu is the strictness of which packages you can install and what they provide. Debian is very strict about the whole FOSS concept and does not let you use anything that is not. As a result many of the meta-packages for fuppes did not build. My short term solution was to simply comment them out and try and get what remained into Debian. Once it was in Debian then it would be my future task to add support for all of the extras. As a result I am pleased to announce the following:

FUPPES has finally gone up for Debian RFS (Request For Sponsor)!

The package itself has been placed on mentors.debian.net for sponsors to download it and check it out. As of the time of this writing three prospective sponsors have checked it out downloaded it. I hope to hear from them soon with any comments that they may have. I expect that there will be a number of things that I got wrong, being my first package, but I will put in whatever effort is required to actually get this package in there.

Other Notes of Interest

  • It turns out that it is not that hard to make a package archive mirror for Ubuntu; I’ll be making one later this week.
  • The Ubuntu Vimperator package is broken in Ubuntu but not Debian. So for a dual booter like me I cannot currently have Vimperator in both UbuntuĀ  an Debain. This should be fixed in Ubuntu Lucid.
  • Bioshock 2 is an awesome game! I finished it in four days. The storyline was a major disappointment but the gameplay was beyond compare. All in all good work 2K.
  • Telstra Bigpond frustrates me. I am only allowed 12GB per month and there are no other competitors that I can goto to get a better deal; somehow they have monopolised my area and I am stuck with their ripoff prices.
  • The next game I might look at playing is Trine; suggested to me by a friend.

I hope you’ve had a great week. Thanks for reading this long post and I will keep everyone updated.

Fuppes, Packaging

Collaborative Maintenance for Fuppes

This is really just a short post to let everybody know that fuppes v660 now exists in the debian collab-main project: http://git.debian.org/?p=collab-maint/fuppes.git;a=summary

Anybody and everybody can now join the project, make changes, and generally help package Fuppes for Debian based systems. If it makes it into Debian then it will filter down into other distributions like Ubuntu soon enough. I hope everybody takes this opportunity to go have a look. We can also use this to package fuppes for every different architecture and gain the advice of seasoned packaging veterans.

The fuppes-git that is present in git.debian.org is the development repository upto release version 660 with my Debian packaging changes on-top of it. That means that the version that we are packaging for Debian is version 660; which has a few noted bugs but is solid. If you have been feeling like you wanted to help develop fuppes this is a prime oppourtunity; packaging a piece of software is a good way to learn more about it.

However, if you don’t want to code but still want to help then I have started up The Documentation Project on the fuppes wiki. Please feel free to go there and help document Fuppes.

Fuppes, Packaging

Packaging Fuppes: Debian Collab-Maint Project

Things have started getting busy lately. Packaging fuppes is going very well; all of the errors are now past history and the only one remaining is warning me that the ‘S’ run level should not be included in the init.d script and it is right. It should not; it is meant for other Linux distributions. With that in mind all is going very well for packaging fuppes however there have been some other people that have shown interest in packaging fuppes and I want to let them have input and let them help. The more the merrier I say; and they seem to have more experience than myself at packaging for debian. To see what I am talking about you may want to check out the Fuppes Debian ITP (Intent To Package).

As a result I have applied to the Debian Alioth collab-maint project for a space for fuppes. The collab-maint project, as the name suggests, is a place for people that are all working on the same debian package to go and develop for it. That way the packaging effort can be made by many people and there are no branches as everybody attempts to make their own package. Not only that but helping out with the packaging of a program is a really good way to learn about it. Even though there is no compulsion whatsoever, I am hoping that some people might help package fuppes, see what it like, and realise that they could contribute code every now and then.

In the downtime, waiting for the collab-maint project to get back to me, I have been looking over the database structure of the fuppes project. I actually have many pages of information now, handwritten if you believe it, on the fuppes database: the purpose of each table and also the purpose and usage of each field in each database. As it turns out a few things need to be reconsidered:

  • The Details for the Objects could really be separated into three tables (Video, Audio and Image) but currently they are all mashed into the one table. This results in many ‘NULL’ fields.
  • The Objects database has about five fields that simply don’t get used; it could be half the size of the code needs to be written to use that functionality.
  • Playlists seem to be represented as a hack; the playlist is represented as an item in the Map Objects table and all of its children have it as a parent. But this completely breaks the order of the playlist (which is apart of every playlist spec) and is the cause of one of the bugs that I have seen in the bugtracker.

There are more items to consider but essentially I am trying to make the database fast. I want it to be such that if you have 20,000 media items and you open up fuppes, in five minutes everything is in order, the database is full and you can watch whatever video you want to. I think this will involve some sort of lazy evaluation, like only getting the details of an object when somebody looks inside its folder. That way alot of processing can be delayed; I’m not sure yet and it’s still early days but I look forward to increasing database speeds for fuppes and I hope you do too.