Prometheus: The SourceMage GNU/Linux tinderbox project

WARNING : This page is servely out of date. I have cleaned it up as a part of my project to fix the sourcemage site up. This will not work right on your system -- Alex Ziaee

Updates

  • The Prometheus spell has been written by Andrew_Stitt and as of late 2004 is broken. Do not use this spell until it is fixed.

So what is Prometheus?

  • Prometheus is an automatic testing and bug reporting system for SourceMage, essentially a tinderbox, but written for sorcery.

Why Prometheus?

The poeple at SourceMage believe that users should make their own decisions on things, hence source based packaging. If I want to compile MPlayer with aalib support so I can watch movies in ascii-art, then I can choose to, and if I dont I'm not forced to. This is the freedom of a source based system.

Unfortunatly this freedom leads to an explosion in the number of conditions and variables that must be checked for stability. Does the spell compile with Gnome? What about if KDE is installed? Oh and XFCE? What if all three are installed? We simply dont have the time or energy to make sure everything builds with all these different conditions. Furthermore there are other problems such as missing dependancies which can lead to spells breaking "out of the box". All these problems are bugs, things shouldn't break unless you specifically make them, we want your system to work, we want you to be able to cast our given spell on your new system, walk away, and come back a few hours later to see that everything has compiled.

Because we do not have the man-power to do this ourselves, and since the efforts are better spent elsewhere (i.e. fixing various bugs), Andrew_Stitt wrote prometheus. Prometheus simply casts things, answers the questions from cast in a quasi-intelligent way, and notices when things go wrong. When things go wrong it writes up a bug report and sends it to bugzilla, The SMGL bug tracking system.

How do I install Prometheus?

Prometheus is designed to be run on a dedicated system, or at least in a chroot. Although it is probably slower a UML may be safer if you want to let that athlon or p4 use some more of its cycles. So the first thing to do is either setup a dedicated prometheus box, or make a chroot system (you should be able to chroot into it and everything should work right), or setup a virtual (UML) system. Basically some sort of sourcemage appearing environment. You shall also need a few gigabytes of storage. This will be your Prometheus environment.

You should be able to get the spell through cvs or something. Remember broken , outdated Do not ahead and cast it in your Prometheus environment (you would if this works) then edit /etc/prometheus/pm-config and override anything you want in /etc/pm-config make any last changes to your Prometheus system, you may want to setup an MTA so Prometheus will email you errors too. Then run pm-setup this will setup the initial directories and then backup everything. If there are any spells you do not want prometheus to cast or dispel (aside from things already installed) edit the file /prometheus/lists/ignore.lst Prometheus will answer any question that would lead to the casting of one of those spells as a negatory.

You can run Prometheus in one of 4 different ways:

  • pm-test once
  • pm-test once gimp-print
  • pm-test forever
  • pm-test until 1 am

the first one will randomly pick something and cast it the second will cast gimp-print forever will run forever and until will not start a new cast after 1am, the time must be parsable by the date program. you can also stop either of the last two modes by the touching /prometheus/stop file then Prometheus will finish out the current cast/dispel cycle.

Reporting?

  • Prometheus makes nice bug reports. You can set the option in the config file to do them in realtime or run pm-report-all to report on all unreported snapshots.

Snapshots?

After each cast or dispel cycle Prometheus saves a bunch of state information in a 'snapshot' these go in /prometheus/snapshot/<date> pm-report-all looks in /prometheus/unreported and reports on each one of those snapshots, Prometheus also deletes any snapshot older than 2 weeks by default (this is configurable). Prometheus will also not delete any snapshots whose names are in /prometheus/save. (cool huh?)

Bugs: (outdated)

  • Yes there are bugs.
  • Prometheus makes too many duplicate bugs

I added some stuff to try and combat this like how it wont recast anything that had a problem until it changes, although this may end up with a certain few spells getting repeatedly recast...

  • There was a new feature in devel sorcery about spells with conflicts that pm-autocast doesnt understand yet...some things may get dispelled which we dont want... I'm working on it.
  • Prometheus doesnt like dealing with multiple grimoires...if someone who knows sorcery wants to help me with this...
  • Prometheus does not understand much of the new config_query -- The author was working on that.
  • There is a few other things listed in the BUGS file that comes with Prometheus.

How does it work?

  • Read the INTERNALS file that comes with Prometheus but in a nutshell it picks stuff to cast, it casts it, it figures out what happened, then it dispels stuff, checks if everything is still okay, fixes anything that isn't and starts over again.

Features:

  • more 'intelligent' analysis in the reporting
  • no more duplicate bugs
  • more complex casting
  • attachments to bugs (I'm mostly there)
  • email me to update this project and page, or find swoolley or afrayedknot on irc.

--Enjoy

Prometheus (last edited 2008-09-22 23:34:59 by localhost)