[SCM] debian-live/autotesting branch, master, updated. 199031cc84d81f35169514b4ba7d107d39d22218

Brendan M. Sleight (none) bms at brum.
Wed Jul 1 21:58:42 UTC 2009


The following commit has been merged in the master branch:
commit 199031cc84d81f35169514b4ba7d107d39d22218
Author: Brendan M. Sleight <bms at brum.(none)>
Date:   Wed Jul 1 22:57:15 2009 +0100

    Complete re-write of autotesting. Driven by xml config and packaged.

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..43eb3c1
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,18 @@
+all: install
+
+install: autotesting
+
+autotesting:
+	mkdir -p $(DESTDIR)/usr/bin
+	cp ./autotesting.py $(DESTDIR)/usr/bin/autotesting
+	chmod a+x $(DESTDIR)/usr/bin/autotesting
+	mkdir -p $(DESTDIR)/usr/share/autotesting
+	cp ./README $(DESTDIR)/usr/share/autotesting/README
+	mkdir -p $(DESTDIR)/usr/share/autotesting/tests
+	cp -r ./tests/* $(DESTDIR)/usr/share/autotesting/tests/
+	
+clean:
+
+remove:
+	rm $(DESTDIR)/usr/bin/autotesting
+	rm -r $(DESTDIR)/usr/share/autotesting
diff --git a/README b/README
new file mode 100644
index 0000000..01f7ce3
--- /dev/null
+++ b/README
@@ -0,0 +1,99 @@
+AUTOTESTING README
+==================
+
+autotesting --tests=TESTS.XML
+
+This readme outlines the different tags used in TESTS.XML. 
+
+EXAMPLE TESTS.XML
+=================
+
+<autotesting>
+  </tests>
+    <test> 
+      <download>http://127.0.0.1/autotesting/debian-live-501-i386-xfce-desktop.iso</download>
+      <title>Debian Live (xfce)</title>
+      <description>Debian Live. Daily build of squeeze xfce iso.</description>
+      <background>http://git.debian.org/?p=debian-live/homepage.git;a=blob_plain;f=images/debian-live.png</background>
+      <frequency>daily</frequency>
+      <qemu>
+        <xscreen>800x600x24</xscreen>
+        <binary>qemu</binary>
+        <options>-cdrom</options>
+        <pause>10</pause>
+        <sendkeys>kp_enter</sendkeys>
+        <!-- Time to run qmeu -->
+        <time>600</time>
+      </qemu>
+      <output>
+        <!-- Number of test sets to keep -->
+        <keep>4</keep>
+        <root>/home/bms/autotesting/tests/</root>
+        <local>example-live/squeeze/xfce/</local>
+        <video>autotesting.ogv</video>
+        <screenshots>
+          <final>final-screenshot.png</final>
+          <montage>montage-of-video-frames.png</montage>
+        </screenshots>
+      </output>
+    </test>
+  </tests>
+</autotesting>
+
+
+LOOKING AT EACH TAG
+===================
+
+<download>http://127.0.0.1/autotesting/debian-live-501-i386-xfce-desktop.iso</download>
+The location of the image to be tested. This can be an iso or an USB image (img) or in fact anything that can be booted with qemu.
+
+<title>Debian Live (xfce)</title>
+<description>Debian Live. Daily build of squeeze xfce iso.</description>
+The title and description tags are used in the opening titles of the video and also useful when scanning a long tests.xml file. 
+
+<background>http://git.debian.org/?p=debian-live/homepage.git;a=blob_plain;f=images/debian-live.png</background>
+The location of the background graphic used in the video. 
+
+<frequency>daily</frequency>
+This can be daily, weekly or monthly. Daily, means that the test will be run every time. Weekly - the test will only be done if the current day is a Sunday. Monthly - the test will only be done on the 1st day of a month, 
+
+<xscreen>800x600x24</xscreen>
+The width, height and colour depth of the xserver (Xvfb) in which to run qemu. Not at the minimum dimensions required for qemu are 800x600. 
+
+<binary>qemu</binary>
+The qemu binary. This could be for example qemu-ppc64 or qemu-arm, to test images for different architectures. 
+
+<options>-cdrom</options>
+The option to pass to qemu in conjunction with the image we are testing. In this example we are testing a iso, so we need the "-cdrom" option. For an img file you would use -hda.
+
+<pause>10</pause>
+Time to pause before sending keys presses.
+
+<sendkeys>kp_enter</sendkeys>
+Some iso and img require some user interaction to star the booting, normally just a enter being pressed. Useful for selecting different options from the grub menu. Use the qmeu sendkey command, send "kp_enter" - a keypad enter. To send multiple key presses, use a comma separated list. <sendkeys>down,down,kp_enter</sendkeys>. 
+
+<time>600</time>
+Let qemu run for 600 seconds.
+
+<keep>4</keep>
+Number of test sets to keep. If frequency is weekly, and keep is 4, then any test set older than 4 weeks will be deleted.
+
+<root>/home/bms/autotesting/tests/</root>
+<local>example-live/squeeze/xfce/</local>
+A new directory will be created at /root/prefix/DATE/, in this example /home/bms/autotesting/tests/example-live/squeeze/xfce/2009-07-01/ and the output files will be stored in this directory. Another directory /root/current/prefix/ will be created, with symlinks to the latest output files, e.g. /home/bms/autotesting/tests/current/example-live/squeeze/xfce/.
+
+<video>autotesting.ogv</video>
+The output video file stored in the output directories (see <root> and <local>). File is a theora video, created by the wonderful application - recordmydeskptop.
+
+<final>final-screenshot.png</final>
+<montage>montage-of-video-frames.png</montage>
+The output file names stored in the output directories (see <root> and <local>) of a final screenshot of qemu and a montage of frames from the video. These can give a good idea of how successful the test was rather than viewing the whole video. 
+
+
+REQUIRED APPLICATIONS
+=====================
+
+I will be trying to package autotesting - however for reference this following applications are required:-
+
+python, python-amara, wget, Xvfb, xloadimage, qemu, recordmydesktop, ffmpeg, imagemagick, gmessage
+
diff --git a/README.debian b/README.debian
deleted file mode 100644
index 7dc56fc..0000000
--- a/README.debian
+++ /dev/null
@@ -1,152 +0,0 @@
-AUTOTESTING
-
-SUMMARY
-=======
-
-Outline how the AutoTesting server is set up to enable images to be automatically tested.
-
-
-What is AutoTesting
-===================
-
-A project to Autotest LiveCD images. The output of the autotesting is to create video recordings of booting live images "This will be really 
-great for doing QA on the images, so that we know before downloading if a latest-and-greatest sid image is even booting/working correctly :)"
-
-
-Ingredients
-===========
-
-1 x Xen instance of 128MB, 20 GB Hard Drive Space.
-1 x Debian minimal installation
-1 x IP Address
-
-
-OVERVIEW
-========
-
-Automated tasks
-===============
-
-Every [Day/Week/Month] a predetermined list of images are downloaded and tested.
-
-
-Producing Videos -  video-qemu-booting-iso.sh
-=============================================
-
-The videos are produced by booting the LiveCD using qemu. Where qemu is being displayed on a VNC session. This VNC session is being recorded by 
-vncrec. After qemu has run for a time, it is terminated, the recorded session is replayed and piped thought ffmpeg2theora to produce a video.
-
-At the start of the qemu session a number of simulated key presses are sent to LiveCD, (default "spc,l,i,v,e,spc,kp_enter"), via a telnet port 
-which is only accessible from 127.0.0.1
-
-
-Producing a Batch of Videos - run-batch-autotesting.sh
-======================================================
-
-This script will download a list of images, check the MD5SUM, run video-qemu-booting-iso.sh against each image. The output from 
-video-qemu-booting.sh will be moved to a place on the webserver path, together will a some source files to make a suitable webpage.
-
-
-Cron Scripts - autotesting.cron.txt
-===================================
-
-This does five tasks.
-1 - Run the daily-cron-script.sh.
-2 - Every week run-batch-autotesting against the week.lst of isos to test weekly. 
-3 - Every month run-batch-autotesting against the monthly.lst of isos to test monthly.
-4 - Every day run clean-old-files.sh to keep disk space low.
-5 - Every hour - touch the /var/www/index.wml and /var/www/*/index.wml and make index.html
-
-
-Cron Scripts - daily-cron-script.sh
-===================================
-
-run-batch-autotesting against the daily.lst
-run-batch-autotesting against the lenny_live_beta1.lst
-run-batch-autotesting against the webconverger.lst
-run local_build_debian-live.sh to locally build some images. Then run-batch-autotesting against the local.lst
-   [I would expect this to be disabled on final autotesting machine]
-
-
-INSTALLATION
-============
-
-Packages Required
-=================
-
-From debian.org:
-apache2-mpm-prefork apache2-utils apache2.2-common bc build-essential expect  ffmpeg2theora git-core imagemagick live-helper openssh-server qemu 
-socat sudo vnc4server wml xtightvncviewer
-
-From debian-multimedia.org: (Use a local mirror)
-ffmpeg
-
-From Debian Unoffical:
-vncrec-twibright
-
-
-User Required
-=============
-
-adduser autotesting
-addgroup autotesting www-data
-
-Add the following line to /etc/suders:
-autotesting   ALL = NOPASSWD: ALL
-
-
-Directory Structure
-===================
-
-mkdir -p /home/autotesting/debian-live
-mkdir -p /home/autotesting/iso/daily
-mkdir -p /home/autotesting/iso/weekly
-mkdir -p /home/autotesting/iso/monthly
-mkdir -p /home/autotesting/log/local
-mkdir -p /home/autotesting/log/daily
-mkdir -p /home/autotesting/log/weekly
-mkdir -p /home/autotesting/log/monthly
-mkdir -p /home/autotesting/log/local
-mkdir -p /home/autotesting/video/daily
-mkdir -p /home/autotesting/video/weekly
-mkdir -p /home/autotesting/video/monthly
-mkdir -p /home/autotesting/video/local
-mkdir /var/www/debian-live/
-mkdir /var/www/webconverger/
-mkdir /var/www/local-build/
-mkdir /var/www/jar/
-
-
-Git Autotesting
-===============
-
-git clone git://git.debian.org/git/debian-live/autotesting.git
-cp -R /home/autotesting/homepage/* /var/www/
-cp /home/autotesting/homepage/index.wml /var/www/debian-live/
-cp /home/autotesting/homepage/index.wml /var/www/webconverger/
-cp /home/autotesting/homepage/index.wml /var/www/local-build/
-
-(The above copyinf to /var/www looks ugly now I have documented it and should be fixed...)
-
-
-Java Playback - Your Cup of Coffee ?
-====================================
-
-The webpages are set up, simular to wikipedia to play theora video via java plugin. I am aware use of java may not be suitable for everyone.
-wget http://www.flumotion.net/jar/cortado/cortado-ovt-stripped-0.2.2.jar -O /var/www/jar/cortado.jar
-The most important thing is that the video are very free, so if java is not to everyone liking another player cna be choosen.
-
-
-Crontab
-=======
-
-As user autotesting:
-crontab -l /home/autotesting/debian-live/autotesting.cron.txt
-
-
-Summary
-=======
-
-Hopefully this documents how I set up an autotesting server, allowing replication. I am more than willing to add more detail. 
-
-Brendan M. Sleight - bms(a.t]barwap.com
diff --git a/autotesting.cron.txt b/autotesting.cron.txt
deleted file mode 100644
index 2c14f92..0000000
--- a/autotesting.cron.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-0 0 * * * /bin/echo "New Day " >/home/autotesting/log/daily/autotesting.log
-0 1 * * * /bin/bash /home/autotesting/debian-live/autotesting/daily-cron-script.sh 
-
-0 0 * * 5 /bin/echo "New Week " >/home/autotesting/log/weekly/autotesting.log
-0 9 * * 5 /bin/bash /home/autotesting/debian-live/autotesting/run-batch-autotesting.sh /home/autotesting/debian-live/autotesting/weekly.lst /home/autotesting/iso/weekly/ /home/autotesting/video/weekly/ /var/www/debian-live/i386/ >>/home/autotesting/log/weekly/autotesting.log 2>&1
-
-0 0 15 * * /bin/echo "New Month " >/home/autotesting/log/daily/autotesting.log
-0 17 15 * * /bin/bash /home/autotesting/debian-live/autotesting/run-batch-autotesting.sh /home/autotesting/debian-live/autotesting/monthly.lst /home/autotesting/iso/monthly/ /home/autotesting/video/monthly/ /var/www/debian-live/i386/ >>/home/autotesting/log/monthly/autotesting.log 2>&1
-
-0 0 * * * /bin/bash /home/autotesting/debian-live/autotesting/clean-old-files.sh
-
-# webwml
-0 */1 * * * cd /var/www && touch ./index.wml ./*/index.wml && make > /dev/null 2>&1
diff --git a/autotesting.py b/autotesting.py
new file mode 100644
index 0000000..423cd6e
--- /dev/null
+++ b/autotesting.py
@@ -0,0 +1,285 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+#   autotesting - automatically test by video qemu booting.
+#   Copyright (C) Brendan M. Sleight, et al. <bms at barwap.com>
+#
+#   This program is free software: you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation, either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+from optparse import OptionParser
+import amara, datetime, os, shutil, subprocess, telnetlib, tempfile, time
+
+def displayNumber():
+    """Really a global we can change later to something better.
+    like automaticaly get the next free display number. """
+    return ":8"
+    
+def log(message):
+    """ Print [date] message """ 
+    now = datetime.datetime.now()
+    print "[" + str(now) + "] " + str(message) 
+
+def cronCheak(frequency):
+    """Check if the frequency (e.g. daily, weekly, mounthly is due to 
+    be run at this time
+    returns boolean.
+    """
+    now = datetime.datetime.now()
+    if frequency == "Daily" or frequency == "daily":
+        return True
+    elif frequency == "Weekly" or frequency == "weekly":
+        if now.weekday() == 0:
+            return True
+    elif frequency == "Monthly" or frequency == "monthly":
+        if now.day == 1:
+            return True        
+    return False
+
+def dateBasedOnFrequency(frequency, keep):
+    now = datetime.datetime.now()
+    if frequency == "Daily" or frequency == "daily":
+        days=1 
+    elif frequency == "Weekly" or frequency == "weekly":
+        days=7 
+    elif frequency == "Monthly" or frequency == "monthly":
+        # No date delta of month so near enough ...
+        days=30
+    old = now - datetime.timedelta(days=days*keep)
+    return old
+
+def parseTest(xml):
+    """ Get the xml file and load as a object usign amara
+    returns amaraObject"""
+    tests = amara.parse(xml)
+    return tests.autotesting.tests
+
+def wget(url):
+    """ Use wget to download a file
+    return fileObject"""
+    log("Downloading " + url)
+    tmpFile = tempfile.NamedTemporaryFile(prefix="autotesting_wget_")
+    L = ['wget', '-nv', str(url), '-O', tmpFile.name]
+    # Maybe do something with the retcode in the future.
+    retcode = subprocess.call(L)
+    return tmpFile
+
+def getDownloads(downloadURL, backgroundURL):
+    """ Create two temp files and download the main downlaod and 
+    the background 
+    return tempfile, tempfile""" 
+    background = wget(str(backgroundURL))
+    download = wget(str(downloadURL))
+    return download, background
+
+def authorityFile():
+    """ Return a file containing "localhost"
+    """
+    authority = tempfile.NamedTemporaryFile(prefix="autotesting_authority_")
+    authority.write("localhost\n")
+    authority.close()
+    return authority
+
+def startXvfb(display, xscreen, background):
+    """Start a Xvfb instance. The host display for qemu to run inside.
+    then set the background image. Return ths PID of Xvfb
+    return interger"""
+    log("Starting Xvfb")
+    authority = authorityFile()
+    xvfbCommand = ["Xvfb", display, "-auth", authority.name, "-screen", "0", xscreen] 
+    xvfb = subprocess.Popen(xvfbCommand)
+    log("Setting Xvfb background")
+    xloadimage = ["xloadimage", "-display", display, "-onroot", "-fullscreen", background]
+    retcode = subprocess.call(xloadimage)
+    return xvfb
+
+def waitUntilEncodingFinished(recordMyDesktop):
+    log("Waiting for recordmydesktop encoding to finish")
+    while recordMyDesktop.poll()!=0:
+        print ".. ",
+        time.sleep(1)
+    print " "
+
+def kill(process, message):
+    log(message)
+    kill = ["kill", str(process.pid)]
+    retcode = subprocess.call(kill)
+
+def startRecordMyDesktop(display):
+    log("Starting Record My Desktop")
+    video = tempfile.NamedTemporaryFile(prefix="autotesting_video_", suffix=".ogv")
+    recordmydesktopCommand = ["recordmydesktop",  "--no-cursor", "-display", 
+                               display ,"--no-sound", "--overwrite", "-o" ,video.name]
+    recordmydesktop = subprocess.Popen(recordmydesktopCommand)
+    return recordmydesktop, video 
+
+def xmessage(display, title, message, time, font):
+    xloadimage = ["gmessage", "-display", display, "-timeout", time, 
+                "-font", font, "-button", "", "-title", title, 
+                "-center", "\n" + message]
+    retcode = subprocess.call(xloadimage)
+    
+def openingTitles(display, test):
+    log("Showing Opening Titles")
+    time.sleep(2)
+    xmessage(display, str(test.title), "Autotesting of: " + str(test.title), "3", "monospace 14")
+    xmessage(display, str(test.title), str(test.description), "3", "monospace 12")
+    xmessage(display, str(test.title), "Created at " + str(datetime.datetime.now()), "2", "monospace 10")
+
+def runningQemu(display, test, qemuDownload):
+    """ Start qemu running, with a local telnet port at 55555 listening acting as the qemu monitor
+    returns subprocess.process"""
+    telnet = ("127.0.0.1", "55555")
+    address, port = telnet
+    monitor = "telnet:" + address + ":" + port  + ",server,nowait"
+    qemuBinary = str(test.qemu.binary)
+    log("Starting " + qemuBinary)
+    if not qemuBinary.startswith("qemu"):
+        log("WARNING! : " + qemuBinary + " does not start with qemu, using qemu instead.")
+        qemuBinary = "qemu"
+    qemuCommand = [qemuBinary, "-monitor", monitor, "-full-screen", str(test.qemu.options), str(qemuDownload)]
+    qemu = subprocess.Popen(qemuCommand, env={"DISPLAY": display})
+    sendkeysToQemu(test, telnet)
+    log("Running qemu for  " + str(test.qemu.time) + " seconds")
+    time.sleep(int(str(test.qemu.time)))
+    return qemu
+
+def sendkeysToQemu(test, telnet):
+    """Using telnet to send commands to qemu monitor
+    """
+    address, port = telnet
+    log("Sending keys after pause of " + str(test.qemu.pause) + " seconds")
+    time.sleep(int(str(test.qemu.pause)))
+    tn = telnetlib.Telnet(address, port)
+    sendkeys = str(test.qemu.sendkeys)
+    for key in sendkeys.split(','):
+        log("qemu sendkey " + key)
+        tn.write("sendkey " + key + "\n")
+        time.sleep(1)
+
+
+def captureScreenshot(display):
+    """ Capture screen shot on display
+    return fileObject"""
+    log("Capture screenshot")
+    finalImage = tempfile.NamedTemporaryFile(prefix="autotesting_video_", suffix=".png")
+    captureCommand = ["import", "-display", display, "-window", "root", finalImage.name]
+    retcode = subprocess.call(captureCommand)
+    return finalImage
+
+def createMontage(video, test):
+    """ Make 16 frames of the video at 1/16, 2/16, 3/16 .... 16/16 of 
+        way through the video. The make a montage of these frames in to
+        one image. 
+    return fileObject"""
+    log("Creating Montage")
+    montage = tempfile.NamedTemporaryFile(prefix="autotesting_video_", suffix=".png")
+    videoLength = int(str(test.qemu.pause)) + int(str(test.qemu.time)) 
+    # Time for opening titles
+    videoLength = videoLength + 2 + 3 + 3 + 2
+    listFrames = []
+    listFramesNames = []
+    for count in range(16):
+        ss = 0.0625 * count * videoLength
+        frame = tempfile.NamedTemporaryFile(prefix="autotesting_frame_", suffix=".jpg")
+        frameName = frame.name + "%d.jpg"
+        frameNameOut = frame.name + "1.jpg"
+        ffmpeg = ["ffmpeg", "-i", video.name, "-an", "-ss", str(ss), "-t", 
+                  "01", "-r", "1", "-y", frameName]
+        retcode = subprocess.call(ffmpeg)
+        shutil.move(frameNameOut, frame.name)
+        listFramesNames.append(frame.name)
+        listFrames.append(frame)
+    montageCommand = ["montage", "-geometry", "180x135+4+4", "-frame", "5"]
+    for frame in listFramesNames:
+        montageCommand.append(frame)
+    montageCommand.append(montage.name)
+    retcode = subprocess.call(montageCommand)
+    return montage
+
+def storeFile(tmpFile, copyLocation, symLocation):
+    shutil.copyfile(tmpFile, copyLocation)
+    try:
+        os.remove(symLocation)
+    except:
+        pass
+    os.symlink(copyLocation, symLocation)
+
+def fileOutputs(test, video, finalImage, montage):
+    """ Move files to the correct place (as per XML tags)
+    including symlinks to current.
+    """
+    log("Moving files to the correct place.")
+    root=str(test.output.root)
+    local=str(test.output.local)
+    today=str(datetime.date.today())
+    mainDir = root + "/" + local + "/" + today + "/"
+    dateDirs = root + "/" + local + "/"
+    currentDir = root + "/current/" + local + "/"
+    try:
+        os.makedirs(mainDir)
+    except:
+        pass
+    try:
+        os.makedirs(currentDir)
+    except:
+        pass
+    storeFile(video.name, mainDir + str(test.output.video), 
+                                   currentDir + str(test.output.video))    
+    storeFile(finalImage.name, mainDir + str(test.output.screenshots.final), 
+                                   currentDir + str(test.output.screenshots.final))
+    storeFile(montage.name, mainDir + str(test.output.screenshots.montage), 
+                                   currentDir + str(test.output.screenshots.montage))
+    keepDate = dateBasedOnFrequency(str(test.frequency), int(str(test.output.keep)))
+    log("Removing old Autotesting output before " + keepDate.strftime("%A %B %d %I:%M:%S %p %Y"))
+    for f in os.listdir(dateDirs):
+        fp = dateDirs + f
+        if (time.mktime(keepDate.timetuple()) - os.path.getmtime(fp) ) > 0:
+            # Remove the old file
+            shutil.rmtree(fp)
+            log("Removing - " + fp)
+
+def main():
+    usage = "usage: %prog [options] --tests=TESTS.XML \n       %prog --help for all options"
+    parser = OptionParser(usage, version="%prog ")
+    parser.add_option("-t", "--tests", dest="tests",
+                      help="complete the autotesting definined in the xml template")
+    (options, args) = parser.parse_args() 
+    if not options.tests :
+        parser.error("Must pass a list of tests to complete.")
+        
+    # Main loop
+    display = displayNumber()
+    tests = parseTest(options.tests)
+    for test in tests.test:
+        if cronCheak(str(test.frequency)):
+            log("Starting Autotesting of: " + str(test.title))
+            (download, background) = getDownloads(str(test.download), str(test.background))
+            xvfb = startXvfb(display, str(test.qemu.xscreen), background.name)
+            (recordMyDesktop, video) = startRecordMyDesktop(display)
+            openingTitles(display, test)
+            qemu = runningQemu(display, test, download.name)
+            finalImage = captureScreenshot(display)
+            kill(qemu, "Killing qemu")
+            kill(recordMyDesktop, "Killing recordmysdesktop")
+            waitUntilEncodingFinished(recordMyDesktop)
+            kill(xvfb, "Killing Xvfb")
+            # Put video, montage in right place remvoe old versions etc.
+            montage = createMontage(video, test)
+            fileOutputs(test, video, finalImage, montage)
+            log("Finished Autotesting of: " + str(test.title))
+            log("*****************************")        
+
+if __name__ == "__main__":
+    main()
diff --git a/autotesting.sh b/autotesting.sh
deleted file mode 100755
index 5c45ad9..0000000
--- a/autotesting.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-#
-# Script to be run video-qemu-boot-iso.sh via cron job
-#
-
-while getopts p:v:q:t: opt
-do
-    case "$opt" in
-      p)  VQBI="$OPTARG";;
-      q)  QEMU_BIN="$OPTARG";;
-      t)  TIME_Q="$OPTARG";;
-      v)  VQUALITY="$OPTARG";;
-
-
-      \?)		# unknown flag
-      	  echo >&2 \
-		"usage: $0 [-p path to video-qemu-booting-iso.sh ] [-q alternative qemu binary name] [-t time to run qemu] /foo/bar/iso.directory/ /foo/bar/video.directory/ "
-	  exit 1;;
-    esac
-done
-shift `expr $OPTIND - 1`
-
-if [ -z "$1" ] && [ -z "$2" ] && [ -z "$3" ]; then
-    cat << EOF
-usage: $0 [-p path to video-qemu-booting-iso.sh ] [-q alternative qemu binary name] [-t time to run qemu] [-v (0 to 10) encoding quality for video] /foo/bar/iso.directory/ /foo/bar/video.directory/ 
-
- This script runs the video-qemu-booting-iso.sh for each iso in a directory. 
-
- This script will take _along_ time to run. Approx 1 hour per iso.
- Basically for time to run = number of isos x time to run qmeu x 3  seconds
- For testing the set-up use -t with a small value e.g. -t 10
-
- The use of -q could allow qemu-ppc be used once Debian bug #388735 is resolved.
-EOF
-    exit 0
-fi
-
-ISODIR=$1
-VIDEODIR=$2
-
-VQBI="${VQBI:-video-qemu-booting-iso.sh}"
-QEMU_BIN="${QEMU:-qemu}" #qemu_0.8.4-etch1
-TIME_Q="${TIME_Q:-1200}"
-VQUALITY="${VQUALITY:-5}"
-
-for ISO in $ISODIR/*.iso
-do
- ISOBN=$(basename $ISO)
- VIDEO=$VIDEODIR$ISOBN.ogg
- echo "Running $VQBI -t $TIME_Q -q $QEMU_BIN -v $VQUALITY $ISO $VIDEO"
- $VQBI -t $TIME_Q -q $QEMU_BIN -v $VQUALITY $ISO $VIDEO
-done
-echo "Finished Autotesting"
diff --git a/clean-old-files.sh b/clean-old-files.sh
deleted file mode 100755
index f2e195e..0000000
--- a/clean-old-files.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-#
-# Remove old files
-find /home/autotesting/*/daily/ -not -type d -ctime +4 -print0     | xargs --null --no-run-if-empty rm -f
-find /var/www/debian-live/i386/*-sid-*  -not -type d -ctime +4 -print0   | xargs --null --no-run-if-empty rm -f
-find /var/www/webconverger/i386/*  -not -type d -ctime +4 -print0   | xargs --null --no-run-if-empty rm -f
-find /var/www/local-build/debian-live/i386/*  -not -type d -ctime +4 -print0   | xargs --null --no-run-if-empty rm -f
-find /var/www/lenny_live_beta1/i386/*  -not -type d -ctime +4 -print0   | xargs --null --no-run-if-empty rm -f
-
-find /home/autotesting/*/weekly/ -not -type d -ctime +28 -print0   | xargs --null --no-run-if-empty rm -f
-find /var/www/debian-live/i386/*-lenny-*  -not -type d -ctime +28 -print0   | xargs --null --no-run-if-empty rm -f
-
-find /home/autotesting/*/monthly/ -not -type d -ctime +124 -print0 | xargs --null --no-run-if-empty rm -f
-find /var/www/debian-live/i386/*-etch-*  -not -type d -ctime +4 -print0   | xargs --null --no-run-if-empty rm -f
-
-# Remove empty directories
-find /var/www/*/ -depth -type d -empty -exec rmdir {} \;
diff --git a/daily-cron-script.sh b/daily-cron-script.sh
deleted file mode 100755
index 8f6ec25..0000000
--- a/daily-cron-script.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-#
-# Neater then one long cron line
-#
-
-BASEDIR="/home/autotesting"
-
-cd ${BASEDIR}/debian-live/autotesting
-
-exec >${BASEDIR}/log/daily/autotesting.log 2>&1
-echo "New Day $(date)"
-
-# lenny_live_beta1.lst
-./run-batch-autotesting.sh lenny_live_beta1.lst ${BASEDIR}/iso/daily/ ${BASEDIR}/video/daily/ /var/www/lenny_live_beta1/i386/
-
-# Test "daily" images
-./run-batch-autotesting.sh daily.lst ${BASEDIR}/iso/daily/ ${BASEDIR}/video/daily/ /var/www/debian-live/i386/
-
-# Test webcoverger
-./run-batch-autotesting.sh webconverger.lst ${BASEDIR}/iso/daily/ ${BASEDIR}/video/daily/ /var/www/webconverger/i386/ webc-3.2.mini.iso.MD5SUM
-
-# Build our own images
-exec >${BASEDIR}/log/daily/autobuild.log 2>&1
-for DIST in etch lenny sid
-do
-    ./local_build_debian-live.sh ${BASEDIR}/iso/local/debian-live ${DIST} xfce
-done
-
-# Test our own images
-exec >>${BASEDIR}/log/daily/autotesting.log 2>&1
-./run-batch-autotesting.sh local.lst ${BASEDIR}/iso/local/ ${BASEDIR}/video/local/ /var/www/local-build/debian-live/i386/
diff --git a/daily.lst b/daily.lst
deleted file mode 100644
index f0d43f1..0000000
--- a/daily.lst
+++ /dev/null
@@ -1,4 +0,0 @@
-http://live.debian.net/cdimage/daily-builds/current/i386/debian-live-sid-i386-standard.iso
-http://live.debian.net/cdimage/daily-builds/current/i386/debian-live-sid-i386-xfce-desktop.iso
-http://live.debian.net/cdimage/daily-builds/current/i386/debian-live-sid-i386-gnome-desktop.iso
-http://live.debian.net/cdimage/daily-builds/current/i386/debian-live-sid-i386-kde-desktop.img
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..1a1e879
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,6 @@
+autotesting (0.0.1-1) unstable; urgency=low
+
+  * Initial release 
+
+ -- Brendan M. Sleight <bms at barwap.com>  Wed, 01 Jul 2009 21:03:14 +0100
+
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+7
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..1e4f133
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,14 @@
+Source: autotesting
+Section: unknown
+Priority: optional
+Maintainer: Brendan M. Sleight <bms at barwap.com>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: autotesting
+Architecture: any
+Depends: python, python-amara, wget, Xvfb, xloadimage, qemu, recordmydesktop, ffmpeg, imagemagick, gmessage
+Description: automatically test by video qemu booting
+ autotesting is a script which records qemu booting. Designed to be run
+ as a cron job. Mainly used for testing liveCD images.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..b260705
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,38 @@
+This package was debianized by Brendan M. Sleight <bms at barwap.com> on
+Wed, 01 Jul 2009 21:03:14 +0100.
+
+It was downloaded from debian-live repositories
+
+Upstream Author(s):
+
+    Brendan M. Sleight <bms at barwap.com>
+
+Copyright:
+
+    <Copyright (C) 2009 Brendan M. Sleight >
+
+License:
+
+    This package is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This package is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this package; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
+
+The Debian packaging is (C) 2009, Brendan M. Sleight <bms at barwap.com> and
+is licensed under the GPL, see above.
+
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/debian/dirs b/debian/dirs
new file mode 100644
index 0000000..e28b830
--- /dev/null
+++ b/debian/dirs
@@ -0,0 +1,4 @@
+usr/bin
+usr/share/autotesting
+usr/share/autotesting/tests
+
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/debian/manpage.1 b/debian/manpage.1
new file mode 100644
index 0000000..a945e07
--- /dev/null
+++ b/debian/manpage.1
@@ -0,0 +1,48 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH AUTOTESTING SECTION "July  1, 2009"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+autotesting \- automatically test by video qemu booting
+.SH SYNOPSIS
+.B autotesting
+.RI [ options ] " files" ...
+.br
+.SH DESCRIPTION
+This manual page documents briefly the
+.B autotesting.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBautotesting\fP is a script which records qemu booting. Designed to be run as a cron job. Mainly used for testing liveCD images.
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-t, \-\-tests=TESTS.XML
+Run the tests defined in TESTS.XML.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.br
+.SH AUTHOR
+autotesting was written by Brendan M. Sleight.
+.PP
+This manual page was written by Brendan M. Sleight <bms at barwap.com>,
+for the Debian project (but may be used by others).
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..687d163
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+	dh_testdir
+	# Add here commands to configure the package.
+
+	touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp  
+	dh_testdir
+
+	# Add here commands to compile the package.
+	# $(MAKE)
+	#docbook-to-man debian/autotesting.sgml > autotesting.1
+
+	touch $@
+
+clean: 
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+
+	# Add here commands to clean up after the build process.
+	$(MAKE) clean
+
+	dh_clean 
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k 
+	dh_installdirs
+
+	# Add here commands to install the package into debian/autotesting.
+	$(MAKE) DESTDIR=$(CURDIR)/debian/autotesting install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs 
+	dh_installdocs
+	dh_installexamples
+#	dh_install
+#	dh_installmenu
+#	dh_installdebconf	
+#	dh_installlogrotate
+#	dh_installemacsen
+#	dh_installpam
+#	dh_installmime
+#	dh_python
+#	dh_installinit
+#	dh_installcron
+#	dh_installinfo
+	dh_installman -p autotesting debian/manpage.1
+	dh_link
+	dh_strip
+	dh_compress
+	dh_fixperms
+#	dh_perl
+#	dh_makeshlibs
+	dh_installdeb
+	dh_shlibdeps
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/homepage/Makefile b/homepage/Makefile
deleted file mode 100644
index de18c90..0000000
--- a/homepage/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# Makefile
-
-WORKDIR = $(shell echo $(PWD))
-DESTDIR = $(shell echo $(PWD) | sed -e 's/\.wml//')
-SUBDIRS =
-
-INCLUDES = $(WORKDIR)/includes
-
-WMK = /usr/bin/wmk
-WMKOPT = -I $(INCLUDES) -D IMGROOT=$(WORKDIR)/images -D DOCROOT="" --all 
-
-WMLFILES = $(wildcard *.wml)
-HTMLFILES = $(patsubst %.wml,%.html,$(WMLFILES))
-
-existing-SUBS := $(shell for dir in $(wildcard $(SUBS)) ''; do test -d $$dir && echo $$dir; done)
-existing-SUBS-build := $(addsuffix -build,$(existing-SUBS))
-existing-SUBS-clean := $(addsuffix -clean,$(existing-SUBS))
-existing-SUBS-cleandest := $(addsuffix -cleandest,$(existing-SUBS))
-
-
-all:	make
-
-$(existing-SUBS-build):
-	$(MAKE) -C $(subst -build,,$@)
-
-make:
-	$(existing-SUBS-build)
-	$(WMK) $(WMKOPT)
-	rm -fv screenshots/*_sm.png
-
-$(existing-SUBS-clean):
-	$(MAKE) -C $(subst -clean,,$@) clean
-
-clean: $(existing-SUBS-clean)
-	rm -f $(HTMLFILES)
-	rm -fv screenshots/*_sm.png
diff --git a/homepage/images/style.css b/homepage/images/style.css
deleted file mode 100644
index 36b9411..0000000
--- a/homepage/images/style.css
+++ /dev/null
@@ -1,302 +0,0 @@
-/* Stylesheet for mentors.debian.net */
-/* (c) 2005,2006 the mentors.debian.net team */
-
-body
-{
-    font-family: sans-serif;
-    font-size: 10pt;
-    background-color: #ffffff;
-    margin: 0;
-    padding: 0;
-}
-
-img
-{
-    border: 0;
-}
-
-.screenshot-right
-{
-    padding: 15px;
-    float: right;
-}
-
-.screenshot
-{
-    padding: 5px;
-}
-
-h1,h2
-{
-    font-family: "Bitstream Vera Serif", Georgia, Palatino, serif;
-    font-weight: normal;
-    color: #d70751;
-	margin: 0.5em 0 0.2em 0;
-	padding: 0 0 0 0;
-}
-
-h1
-{
-	font-size: 170%;
-	color: #000000;
-}
-
-h2
-{
-	font-size: 140%;
-    color: #808080;
-}
-
-
-#floatmenu
-{
-	float: left;
-	margin: 0.5ex;
-	padding: 0.5ex;
-	width: 20ex;
-}
-
-/* Menu item */
-.menuitem
-{
-    padding: 0.1em 0.2em 0.1em 0.2em;
-    background-color: #f0f0f0;
-    border: 1px solid #d0d0d0;
-    border-left: 3px solid #d70751;
-    margin: 0.5em 0 0 0;
-    text-transform: uppercase;
-}
-
-.menuitem-active
-{
-    padding: 0.1em 0.2em 0.1em 0.2em;
-    background-color: #f0f0f0;
-    border: 1px solid #d0d0d0;
-    border-left: 3px solid #d70751;
-    margin: 0.5em 0 0 0;
-    text-transform: uppercase;
-    font-weight: bolder;
-}
-
-.menusubitem
-{
-	margin: 0 0 0 1em;
-	font-size: 9pt;
-	line-height: 2em;
-}
-
-.menusubitem-active
-{
-	margin: 0 0 0 1em;
-	font-size: 9pt;
-	line-height: 2em;
-    font-weight: bolder;
-}
-
-/*
-.menuitem a
-{
-	text-decoration: none;
-}
-*/
-
-/* The currently running CGI is highlighted */
-.currentcgi
-{
-	border: 1px solid red;
-}
-
-#maincontent
-{
-	margin: 0.5ex 0.5ex 0.5ex 22ex;
-	padding: 0 0 0 1ex;
-	_border-left: 1px dotted red;
-}
-
-#header
-{
-	background-color: #f0f0f0;
-	color: #707070;
-	padding: 0.5ex;
-	min-height: 75px;	/* the top area is at least as large as the debian logo */
-		/* does not work with the IE but you won't see me write hacks to
-         * support buggy browsers */
-    border-bottom: 1px solid #b0b0b0;
-}
-
-#debianlogo
-{
-	float: left;
-	position: absolute;
-	top: 5px;
-	left: 5px;
-}
-#headertitle
-{
-    font-family: "Bitstream Vera Serif", Georgia, Palatino, serif;
-	font-size: 300%;
-	margin: 0;
-	margin-left: 70px;	/* indentation from the debian logo on the lft */
-	padding: 0;
-	font-weight: 100;
-}
-#headertitle a
-{
-	text-decoration: none;
-	font-weight: 100;
-}
-
-#headersubtitle
-{
-	padding: 0;
-	margin: 0;
-	margin-left: 70px;	/* indentation from the debian logo on the lft */
-	font-size: 110%;
-	font-weight: 500;
-}
-
-#footer
-{
-	background-color: #f0f0f0;
-	color: #707070;
-	padding: 0.2em 1em 0.2em 1em;
-	margin: 2em 0 0 0;
-	text-align: center;
-	clear: both;
-    border-top: 1px solid #b0b0b0;
-}
-
-#navigation
-{
-	padding: 0.2em 1em 0.2em 1em;
-	background: #e0e0e0;
-}
-
-#navigation > .right
-{
-	position: absolute;
-	right: 1em;
-}
-
-p,form
-{
-	color: #606060;
-	margin: 0.3ex 0em 1ex 0;
-	padding: 0 0 0 0;
-}
-
-pre
-{
-	color: #606060;
-    background-color: #f0f0f0;
-}
-
-a
-{
-	color: #606060;
-	text-decoration: underline;
-}
-
-a:hover
-{
-	_border-bottom: 1px solid #000000;
-	background-color: #f0f0f0;
-}
-
-ul
-{
-    color: #606060;
-}
-
-/*
-ul
-{
-	_background: #e0ffe0;
-	_margin: 0 0 0 0 0em;
-	padding: 0 0 0 1em;
-}
-
-li
-{
-	_background: #ffe0e0;
-	_list-style: none;
-	padding: 0;
-	margin: 0;
-}
-*/
-
-table
-{
-    border-collapse: collapse;
-    margin: 0.5em 0 0.5em 0;
-}
-
-/*
-tr
-{
-}
-*/
-
-td
-{
-    vertical-align: top;
-	color: #606060;
-    padding: 0.1em 1em 0.1em 0.1em;
-    margin: 0;
-}
-
-/* Table rows with light lines seperating the rows */
-td.lines
-{
-    border-top: 1px solid #e8e8e8;
-    border-bottom: 1px solid #e8e8e8;
-}
-
-th
-{
-	color: #606060;
-    font-weight: bolder;
-    text-align: left;
-    vertical-align: top;
-    padding-right: 1em;
-}
-
-/*
-fieldset 
-{ 
-	_border: 1px solid #808080; 
-}
-
-legend 
-{
-	padding: 0.2em 0.5em;
-	border: 1px solid #808080;
-	color: #808080;
-	_font-size: 90%;
-	_text-align: right;
-}
-*/
-
-.warning
-{
-    color: red;
-    font-weight: bolder;
-}
-
-.ok
-{
-    color: green;
-    font-weight: bolder;
-}
-
-.donate
-{
-	color: #606060;
-    font-size: 10pt;
-	font-size: 9pt;
-	text-align: center;
-    margin: 2em 1em 2em 1em;
-    border: 1px solid #d0d0d0;
-    padding: 0.2em 1em 0.2em 1em;
-}
-
diff --git a/homepage/includes/body.wmi b/homepage/includes/body.wmi
deleted file mode 100644
index 1cf5cf0..0000000
--- a/homepage/includes/body.wmi
+++ /dev/null
@@ -1,7 +0,0 @@
-# includes/body.wmi
-
-<div id="maincontent">
-
-<<MAIN__BODY>>
-
-</div>
diff --git a/homepage/includes/common.wmi b/homepage/includes/common.wmi
deleted file mode 100644
index 0550248..0000000
--- a/homepage/includes/common.wmi
+++ /dev/null
@@ -1,13 +0,0 @@
-# includes/common.wmi
-
-<define-tag webmaster whitespace=delete>
-	Autotesting LiveCD Org 
-</define-tag>
-
-<define-tag webmasterhtml whitespace=delete>
-	Autotesting LiveCD Org
-</define-tag>
-
-<define-tag full-url whitespace=delete>
-http://autotesting.livecd.org/
-<define-tag>
diff --git a/homepage/includes/footer.wmi b/homepage/includes/footer.wmi
deleted file mode 100644
index cf8b36d..0000000
--- a/homepage/includes/footer.wmi
+++ /dev/null
@@ -1,16 +0,0 @@
-# includes/footer.wmi
-
-<div id="footer">
-	<webmasterhtml> &mdash; <br //>
-
-	Last modified:
-	<:
-		@stat = stat($WML_SRC_FILENAME);
-		print scalar localtime($stat[9]);
-	:>
-	-
-	Last compiled:
-	<:
-		print scalar localtime();
-	:>
-</div>
diff --git a/homepage/includes/header.wmi b/homepage/includes/header.wmi
deleted file mode 100644
index 004dc48..0000000
--- a/homepage/includes/header.wmi
+++ /dev/null
@@ -1,7 +0,0 @@
-# includes/header.wmi
-
-<div id="header">
-	<div id="logo"><a href="/"><img src="images/logo.png" alt="AutoTesting.LiveCD.org logo" /></a></div>
-	<div id="headertitle"><a href="/">Autotesting.LiveCD.org</a></div>
-	<div id="headersubtitle">Testing Live Systems!</div>
-</div>
diff --git a/homepage/includes/link.wmi b/homepage/includes/link.wmi
deleted file mode 100644
index 0bea729..0000000
--- a/homepage/includes/link.wmi
+++ /dev/null
@@ -1,40 +0,0 @@
-# includes/link.wmi
-
-<define-tag mailto endtag=required whitespace=delete>
-  <a href="mailto:<EMAIL "%0">" title="<EMAIL "%0">">%body</a>
-</define-tag>
-
-<define-tag link endtag=required whitespace=delete>
-  <a href="<URL "%0">">%body</a>
-</define-tag>
-
-<define-tag EMAIL whitespace=delete>
-  <ifeq "%0" "daniel" "daniel at debian.org">
-</define-tag>
-
-<define-tag URL whitespace=delete>
-  <if   "%0" ""			"$(DOCROOT)">
-  <ifeq "%0" "home"		"$(DOCROOT)/">
-  <ifeq "%0" "links"		"$(DOCROOT)/links.html">
-  <ifeq "%0" "debian-live"      "$(DOCROOT)/debian-live/">
-  <ifeq "%0" "webconverger"     "$(DOCROOT)/webconverger/">
-  <ifeq "%0" "local-build"      "$(DOCROOT)/local-build/">
-</define-tag>
-
-<define-tag newslink whitespace=delete>
-  <a href="%0">[...]</a>
-</define-tag>
-
-<define-tag screenshot-right whitespace=delete>
-  <a href="$(DOCROOT)/screenshots/%0.png" title="Click for larger version">
-    <img class="screenshot-right" src="$(DOCROOT)/screenshots/%0_sm.png" border="0" />
-  </a>
-</define-tag>
-
-<define-tag screenshot whitespace=delete>
-<p>
-  <a href="$(DOCROOT)/screenshots/%0.png" title="Click for larger version">
-    <img class="screenshot" src="$(DOCROOT)/screenshots/%0_sm.png" border="0" />
-  </a>
-</p>
-</define-tag>
diff --git a/homepage/includes/main.wmi b/homepage/includes/main.wmi
deleted file mode 100644
index 93ef438..0000000
--- a/homepage/includes/main.wmi
+++ /dev/null
@@ -1,40 +0,0 @@
-# includes/main.wmi
-
-#include "link.wmi"
-#include "common.wmi"
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
-<html>
-	<head>
-		<title><<MAIN__TITLE>></title>
-		<protect><link rel="icon" href="favicon.ico" type="image/ico"></protect>
-		<protect><link rel="stylesheet" type="text/css" href="images/style.css" /></protect>
-		<meta name="Author" content="<webmaster>">
-		<meta http-equiv="content-type" content="text/html; charset=iso-8859-15">
-		<meta name="keywords" content="<<MAIN__KEYWORDS>>">
-		<meta name="description" content="<<MAIN__DESCRIPTION>>">
-	</head>
-
-<body>
-
-#include "header.wmi"
-#include "menu.wmi"
-#include "body.wmi"
-#include "footer.wmi"
-
-</body>
-</html>
-
-<define-tag title>
-..MAIN__TITLE>>%0<<..
-</define-tag>
-
-<define-tag keywords>
-..MAIN__KEYWORDS>>%0<<..
-</define-tag>
-
-<define-tag description>
-..MAIN__DESCRIPTION>>%0<<..
-</define-tag>
-
-..MAIN__BODY>>
diff --git a/homepage/includes/menu.wmi b/homepage/includes/menu.wmi
deleted file mode 100644
index 69ef83d..0000000
--- a/homepage/includes/menu.wmi
+++ /dev/null
@@ -1,10 +0,0 @@
-# includes/menu.wmi
-
-<div id="floatmenu">
-	<div class="menuitem">Welcome</div>
-		<div class="menusubitem"><link home>Home</link></div>
-	<div class="menuitem">Autotesting</div>
-                <div class="menusubitem"><link debian-live>Debian-Live</link></div>
-                <div class="menusubitem"><link webconverger>Webconverger</link></div>
-                <div class="menusubitem"><link local-build>local-builds</link></div>
-</div>
diff --git a/homepage/index.wml b/homepage/index.wml
deleted file mode 100644
index f945321..0000000
--- a/homepage/index.wml
+++ /dev/null
@@ -1,59 +0,0 @@
-#!wml
-#include "main.wmi"
-
-<title "Autotesting LiveCD Org">
-<description "Autotesting LiveCD Images">
-<keywords "Autotesting, LiveCD">
-
-<h1>About</h1>
-
-<p>
-
-   A project to Autotest LiveCD images. The output of the autotesting is to create video recordings of booting live 
-images  "This will be really great for doing QA on the images, so that we know before downloading if a 
-latest-and-greatest sid image is even booting/working correctly :)"
-
-</p>
-
-
-<:{
-use File::Find;
-use File::Basename;
-
-$dir = "./";
-$search_path="index\.html";
-$search_pattern_part2=".(current).";
-
-find({ wanted => \&filter, follow => 1 }, $dir);
-
-sub filter() {
-     $filename = $_;
-     $fullname = $File::Find::name;
-       if ($fullname =~ /$search_path/i) {
-         if($fullname =~ /$search_pattern_part2/i) {
-            push (@current, $fullname)
-            }
-         else {
-            push (@other, $fullname)
-            }
-         last;
-         }
-     }
-
-print "<h2>Current Videos</h2>";
-foreach(sort @current) {
- print "</p><a href=\"$_\">$_</a> </p>\n";
-}
-
-print "<h2>Older Videos</h2>";
-foreach(sort @other) {
- if ($_ !~ /\.\/index\.html/) {
-   print "</p><a href=\"$_\">$_</a> </p>\n";
- }
-}
-
-
-
-}:>
-
-
diff --git a/homepage/video-page.wml b/homepage/video-page.wml
deleted file mode 100644
index 6f724e9..0000000
--- a/homepage/video-page.wml
+++ /dev/null
@@ -1,129 +0,0 @@
-#!wml
-#include <main.wmi>
-
-<title "Autotesting LiveCD Org">
-<description "Autotesting LiveCD Images">
-<keywords "Autotesting, LiveCD">
-
-
-<define-tag dlurl whitespace=delete>
-<:{
-sub GetSetting
-{
-  my ($cfg_value,$cfg_filename,$cfg_default)=@_;
-  open(CFGFILE,"<$cfg_filename") or die "Can't open configuration file $cfg_filename.";
-  my @cf=<CFGFILE>;
-  foreach $cfg_line (@cf)
-  {
-    if (index($cfg_line,"#")==0) { next; } # Lines starting with a hash mark are comments
-    my @ln=split("=",$cfg_line);
-    if ($ln[0] =~ /$cfg_value/i) {
-      chomp $ln[1];
-      return $ln[1];
-    }
-  }
-  close CFGFILE;
-  return $cfg_default; # Return default if we can't find the value 
-}
-my $url = GetSetting('url','details.txt','http://debian-live.alioth.debian.org/');
-print "$url";
-}:>
-</define-tag>
-
-<define-tag built whitespace=delete>
-<:{
-my $built = GetSetting('built','details.txt','Sometime-Ago');
-print "$built";
-}:>
-</define-tag>
-
-<define-tag tested whitespace=delete>
-<:{
-my $tested = GetSetting('tested','details.txt','Today');
-print "$tested";
-}:>
-</define-tag>
-
-<define-tag tested-long whitespace=delete>
-<:{
-my $tested_long = GetSetting('tested_long','details.txt','Today');
-print "$tested_long"; 
-}:>
-</define-tag>
-
-<define-tag basename whitespace=delete>
-<:{
-my $basename = GetSetting('image','details.txt','.iso');
-print "$basename";
-}:>
-</define-tag>
-
-#video-booting.theora_${TODAY}.ogg"
-
-
-<h1>Autesting of <basename></h1>
-<p>Download: <a href=<dlurl>><dlurl></a><p>
-<p>Build: <built></p>
-<p>Tested: <tested-long></p>
-
-<h2>Final Frame</h2>
-<:{
-my $tested = GetSetting('tested','details.txt','Today');
-print "$tested";
-print "<img src=\"./final-screenshot_", $tested, ".jpg\" border=\"0\" >"
-}:>
-
-
-<h2>Video</h2>
-
-<p>Below is a video of the booting of this image within qemu.</p>
-
-<p>Please note - Java or gjc is required to play the video via the <a href=http://www.flumotion.net/cortado/>
-Cortado Java applet</a>. This applet plays the <a href=http://en.wikipedia.org/wiki/Theora>theora</a> encoded video. 
-</p>
-<p>Bug: At the moment seek button or the seek bar does not work. It is worth watching in the whole video (1 minute). 
-Note the first part of the boot up can appear slow, this is to avoid a qemu bug. </p>
-
-
-<script language="javascript">
-	     function doPlay()   {document.applets[0].doPlay();}
-	     function doPause()   {document.applets[0].doPause();}
-	     function doSeek(pos)   {document.applets[0].doSeek(pos);}
-</script>
- <applet code="com.fluendo.player.Cortado.class" archive="http://autotesting.livecd.org/jar/cortado.jar" width="800" height="600"/>
-<:{
-    use Cwd;
-    my $dir = getcwd;
-    ($absolut) = $dir =~ m|/var/www(/.*)$|;
-    my $tested = GetSetting('tested','details.txt','Today');
-    print "$tested";
-    print "<param name=\"url\" value=\"http://autotesting.livecd.org$absolut/video-booting.theora_", $tested , ".ogg\"/>";
-}:>
- 	<param name="local" value="false"/>                    
- 	<param name="seekable" value="false"/>                    
- 	<param name="keepaspect" value="true" />
- 	<param name="video" value="true" />
- 	<param name="audio" value="false" />
- 	<param name="showStatus" value="true" />
- 	<param name="bufferSize" value="500" />
-        <param name="statusHeight" VALUE="36" />
-        <param name="autoPlay" VALUE="false" />
-        <param name="duration" VALUE="140" />
- </applet>
-<p>
-<button onClick="doPlay()">
-Play
-</button>
-
-<button onClick="doPause()">
-Pause
-</button>
-
-<:{
-my $tested = GetSetting('tested','details.txt','Today');
-print "$tested";
-print "<p>The <a href=./video-booting.theora_", $tested, ".ogg>video is available for download</a> for offline viewing.<p>"
-
-}:>
-
-
diff --git a/lenny_live_beta1.lst b/lenny_live_beta1.lst
deleted file mode 100644
index 172c91b..0000000
--- a/lenny_live_beta1.lst
+++ /dev/null
@@ -1,4 +0,0 @@
-http://cdimage.debian.org/cdimage/lenny_live_beta1/i386/usb-hdd/debian-live-lenny-i386-standard.img
-http://cdimage.debian.org/cdimage/lenny_live_beta1/i386/usb-hdd/debian-live-lenny-i386-gnome-desktop.img
-http://cdimage.debian.org/cdimage/lenny_live_beta1/i386/usb-hdd/debian-live-lenny-i386-kde-desktop.img
-http://cdimage.debian.org/cdimage/lenny_live_beta1/i386/usb-hdd/debian-live-lenny-i386-xfce-desktop.img
diff --git a/local.lst b/local.lst
deleted file mode 100644
index 6640d9e..0000000
--- a/local.lst
+++ /dev/null
@@ -1,3 +0,0 @@
-/home/autotesting/iso/local/debian-live-sid-i386-xfce.iso
-/home/autotesting/iso/local/debian-live-lenny-i386-xfce.iso
-/home/autotesting/iso/local/debian-live-etch-i386-xfce.iso
diff --git a/local_build_debian-live.sh b/local_build_debian-live.sh
deleted file mode 100755
index 9ad1838..0000000
--- a/local_build_debian-live.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-#
-# Locally build a debian-live image.
-#  as crontab from root
-#  Kick auotesting to test..
-# debian-live-sid-i386-xfce.iso
-
-if [ -z "$1" ] && [ -z "$2" ]
-then
-    echo " Usage $0 build.iso distribution packages-list "
-    exit
-fi
-
-if [ -z "$3" ]
-then
-    echo "blank packages-lists"
-    PACKAGES_LISTS=""
-else
-    PACKAGES_LISTS="--packages-lists $3"
-fi
-
-TODAY=$(date +"%F")
-TMP_DIR=/tmp/local_build_$$/
-mkdir $TMP_DIR
-#chmod a+w $TMP_DIR
-cd $TMP_DIR
-
-lh_config --distribution $2  $PACKAGES_LISTS
-sudo lh_build
-cp ./binary.iso ${1}-${2}-i386-${3}.iso
-sudo lh_clean
-sudo rm $TMP_DIR -R
-
-
diff --git a/monthly.lst b/monthly.lst
deleted file mode 100644
index 4256508..0000000
--- a/monthly.lst
+++ /dev/null
@@ -1,4 +0,0 @@
-http://live.debian.net/cdimage/monthly-builds/current/i386/debian-live-etch-i386-standard.iso
-http://live.debian.net/cdimage/monthly-builds/current/i386/debian-live-etch-i386-xfce-desktop.iso
-http://live.debian.net/cdimage/monthly-builds/current/i386/debian-live-etch-i386-gnome-desktop.iso
-http://live.debian.net/cdimage/monthly-builds/current/i386/debian-live-etch-i386-kde-desktop.img
diff --git a/openlogo-live-nd.png b/openlogo-live-nd.png
deleted file mode 100644
index aa4f81d..0000000
Binary files a/openlogo-live-nd.png and /dev/null differ
diff --git a/run-batch-autotesting.sh b/run-batch-autotesting.sh
deleted file mode 100755
index 4a0ac5b..0000000
--- a/run-batch-autotesting.sh
+++ /dev/null
@@ -1,149 +0,0 @@
-#!/bin/sh
-#
-# run-batch-autotesting.sh                                #
-#                                                         #
-# Copyleft (c) 2008 Brendan M. Sleight                    #
-#              <bmsleight at barwap._REMOVE_SPAM_TRAP.com>   #
-#                                                         #
-# This script is licensed under the GNU GPL v2 or later.  #
-#                                                         #
-# On Debian systems, this license can be obtained via     #
-# /usr/share/common-licenses/GPL                          #
-#
-# Download the list of images and run video-qemu-booting against each download.
-#
-# Usage: run-batch-autotesting.sh filelist.txt isolocation videos
-#   e.g: run-batch-autotesting.sh dailylist.txt daily/ video/daily/
-# Hence can be run Daily, weekly or month using different lists
-# Another script can do the tidy up.
-#
-#   We make be downloading an iso on the 21st Jan, built on the
-# 20th or even the 1st Jan. This needs to be identified in the
-# someway - mayeb the filename. 
-# iso-file-name_Built_02-Apr-2008_tested_03-Apr-2008.ogg
-#
-# 0 - Check lockfile
-# 1 - For each iso [each file in in Auotest-iso-urls.lst]
-# 1a -  Remove the old iso
-# 1b -  if file does not exist or datestamp local iso iso is before today:
-# 1b -    Download the new-current-iso and related md5sum-file
-# 1c -  check md5sum, if md5sum ok:
-# 1d -    Video-qemu-booting-iso iso-name date-iso-name.ogg/.jpg
-# 1e -    ????
-# 2  -  Profit
-#
-#
-
-VIDEO_QEMU_BOOTING="/home/autotesting/debian-live/autotesting/video-qemu-booting-iso.sh"
-
-if [ -z "$1" ] && [ -z "$2" ] && [ -z "$3" ] && [ -z "$4" ]
-then
-    echo "usage: $0 directory/ "
-    echo
-    echo " e.g: run-batch-autotesting.sh dailylist.txt iso/daily/ video/daily/ debian-live/i386/ MD5SUM-FILE"
-    exit
-fi
-
-URLLIST=$1
-DIRECTORY=$2
-VIDEO_DIRECTORY=$3
-WEB_ROOT=$4
-
-if [ -z "$5" ]
-then
-    MD5SUM_FILE="MD5SUMS"
-else
-    MD5SUM_FILE="$5"
-fi
-
-if [ -f /tmp/run-batch-autotesting.lock ]
-then
-   echo "Lock file /tmp/run-batch-autotesting.lock present indicating $0 is already running"
-   exit
-fi
-
-echo "Lock file present indicating $0 is running" >/tmp/run-batch-autotesting.lock
-
-for URL in $(cat $URLLIST)
-do 
-    BASE_NAME=$(basename $URL)
-    PART_URL=$(dirname $URL)
-    MD5SUMS="$PART_URL/$MD5SUM_FILE"
-    HAS_FILE_UPDATED_TODAY=$(find $DIRECTORY/ -ctime -0 \! -type d | grep "$BASE_NAME")
-
-    if [ -n "$HAS_FILE_UPDATED_TODAY" ]
-    then
-        echo "$BASE_NAME already downloaded today "
-        echo " - skipping download and testing. To retest please remove file or set ctime>1 day"
-        continue
-    fi
-
-    case "${URL}" in
-        http*)
-            echo "Downloading $URL"
-            rm $DIRECTORY/$BASE_NAME 2>/dev/null
-            rm $DIRECTORY/$MD5SUM_FILE 2>/dev/null
-            wget --no-verbose --tries=3 --timeout=60 --directory-prefix=$DIRECTORY $URL
-            wget --no-verbose --tries=3 --timeout=60 --directory-prefix=$DIRECTORY $MD5SUMS
-            MD5SUM_LOCAL=$(md5sum $DIRECTORY/$BASE_NAME | cut --fields=1 --delimiter=\  )
-            MD5SUM_REMOTE=$(cat $DIRECTORY/$MD5SUM_FILE | grep "$BASE_NAME" | head -n 1 | cut --fields=1 --delimiter=\  )
-            ;;
-        *)
-            echo "Local file - assuming already in place"
-            MD5SUM_LOCAL="ok"
-            MD5SUM_REMOTE="$MD5SUM_LOCAL"
-            ;;
-    esac
-
-    if [ $MD5SUM_LOCAL != $MD5SUM_REMOTE ]
-    then
-        echo "$BASE_NAME - md5sums different, remote: $MD5SUM_REMOTE, local: $MD5SUM_LOCAL. "
-        echo "    Skip testing."
-        continue
-    fi
-
-    DATE_IMAGE_BUILT=$(ls -lh --time-style long-iso $DIRECTORY/$BASE_NAME |tr -s " "|cut -d" " -f6)
-    DATE_DOWNLOADED=$(ls -lc --time-style long-iso $DIRECTORY/$BASE_NAME |tr -s " "|cut -d" " -f6)
-    TODAY=$(date  +"%F")
-    TODAY_LONG=$(date )
-    mkdir "$VIDEO_DIRECTORY/${BASE_NAME}" 
-    VIDEO_NAME="$VIDEO_DIRECTORY/${BASE_NAME}/Built_${DATE_IMAGE_BUILT}_Tested_${TODAY}_.ogg"
-    LOG_FILE="$VIDEO_DIRECTORY/${BASE_NAME}/Built_${DATE_IMAGE_BUILT}_Tested_${TODAY}_log.txt"
-    echo "AutoTesting $BASE_NAME $VIDEO_NAME"
-    $VIDEO_QEMU_BOOTING -g 1280x960  -t 420 -v 5  $DIRECTORY/$BASE_NAME $VIDEO_NAME >$LOG_FILE 2>&1
-    echo "Finished Autotesting $BASE_NAME"
-    echo
-    echo "----"
-    echo
-    echo "* Moving to webserver"
-    LN_S_ROOT="$WEB_ROOT/$BASE_NAME/built_${DATE_IMAGE_BUILT}/Tested_${TODAY}"
-    LN_S_CURRENT="$WEB_ROOT/$BASE_NAME/current"
-    # making directories if required.
-    mkdir -p "$LN_S_ROOT"
-    rm $LN_S_CURRENT -rf
-    mkdir -p "$LN_S_CURRENT"
-    # get rid of the old current
-    cp $VIDEO_NAME                "$LN_S_ROOT/video-booting.theora_${TODAY}.ogg"
-    mv $VIDEO_NAME             "$LN_S_CURRENT/video-booting.theora_${TODAY}.ogg"
-    cp $VIDEO_NAME.montage.jpg    "$LN_S_ROOT/video-booting-montage_${TODAY}.jpg"
-    mv $VIDEO_NAME.montage.jpg "$LN_S_CURRENT/video-booting-montage_${TODAY}.jpg"
-    cp $VIDEO_NAME.end.jpg        "$LN_S_ROOT/final-screenshot_${TODAY}.jpg"
-    mv $VIDEO_NAME.end.jpg     "$LN_S_CURRENT/final-screenshot_${TODAY}.jpg"
-    echo "----"
-    cp /home/autotesting/debian-live/autotesting/homepage/video-page.wml "$LN_S_ROOT/index.wml"
-    cp /home/autotesting/debian-live/autotesting/homepage/video-page.wml "$LN_S_CURRENT/index.wml"
-    DETAILS_TXT="$VIDEO_DIRECTORY/${BASE_NAME}/Built_${DATE_IMAGE_BUILT}_Tested_${TODAY}__details.txt"
-    echo "# Setting used for index.wml"   >$DETAILS_TXT
-    echo "url=${URL}"                     >>$DETAILS_TXT
-    echo "image=${BASE_NAME}"             >>$DETAILS_TXT
-    echo "built=${DATE_IMAGE_BUILT}"      >>$DETAILS_TXT
-    echo "tested=${TODAY}"                >>$DETAILS_TXT
-    echo "tested_long=\"${TODAY_LONG}\" " >>$DETAILS_TXT
-    cp $DETAILS_TXT              "$LN_S_ROOT/details.txt"
-    mv $DETAILS_TXT              "$LN_S_CURRENT/details.txt"
-    echo
-done
-
-
-
-rm /tmp/run-batch-autotesting.lock
diff --git a/tests/local-test_morphix-lightgui.xml b/tests/local-test_morphix-lightgui.xml
new file mode 100644
index 0000000..df62b23
--- /dev/null
+++ b/tests/local-test_morphix-lightgui.xml
@@ -0,0 +1,32 @@
+<autotesting>
+  <tests>
+    <test>
+      <download>http://127.0.0.1/autotesting/lightgui-basemod-2.6.23-2008-02-10_0018-latest.iso</download>
+      <title>Morphix LightGUI</title>
+      <description>Morphix. Daily build of LightGUI iso.</description>
+      <background>http://www.morphix.org/templates/MorphixORG/images/mambo_header.jpg</background>
+      <frequency>daily</frequency>
+      <qemu>
+        <xscreen>800x600x24</xscreen>
+        <binary>qemu</binary>
+        <options>-cdrom</options>
+        <!-- Time to pause before sending keys presses -->
+        <pause>10</pause>
+        <sendkeys>down,down,kp_enter</sendkeys>
+        <!-- Time to run qmeu -->
+        <time>600</time>
+      </qemu>
+      <output>
+        <!-- Number of test sets to keep -->
+        <keep>4</keep>
+        <root>/home/bms/autotesting/tests/</root>
+        <local>morphix/lightGUI/</local>
+        <video>autotesting.ogv</video>
+        <screenshots>
+          <final>final-screenshot.png</final>
+          <montage>montage-of-video-frames.png</montage>
+        </screenshots>
+      </output>
+    </test>
+  </tests>
+</autotesting>
diff --git a/tests/morphix-lightgui.xml b/tests/morphix-lightgui.xml
new file mode 100644
index 0000000..ef5f866
--- /dev/null
+++ b/tests/morphix-lightgui.xml
@@ -0,0 +1,32 @@
+<autotesting>
+  <tests>
+    <test>
+      <download>http://distro.ibiblio.org/pub/linux/distributions/morphix/autobuilds/iso/lightgui-basemod-2.6.23-2008-02-10_0018-latest.iso</download>
+      <title>Morphix LightGUI</title>
+      <description>Morphix. Daily build of LightGUI iso.</description>
+      <background>http://www.morphix.org/templates/MorphixORG/images/mambo_header.jpg</background>
+      <frequency>daily</frequency>
+      <qemu>
+        <xscreen>800x600x24</xscreen>
+        <binary>qemu</binary>
+        <options>-cdrom</options>
+        <!-- Time to pause before sending keys presses -->
+        <pause>10</pause>
+        <sendkeys>down,down,kp_enter</sendkeys>
+        <!-- Time to run qmeu -->
+        <time>600</time>
+      </qemu>
+      <output>
+        <!-- Number of test sets to keep -->
+        <keep>4</keep>
+        <root>/home/bms/autotesting/tests/</root>
+        <local>morphix/lightGUI/</local>
+        <video>autotesting.ogv</video>
+        <screenshots>
+          <final>final-screenshot.png</final>
+          <montage>montage-of-video-frames.png</montage>
+        </screenshots>
+      </output>
+    </test>
+  </tests>
+</autotesting>
diff --git a/video-qemu-booting-iso.sh b/video-qemu-booting-iso.sh
deleted file mode 100755
index 3e5b835..0000000
--- a/video-qemu-booting-iso.sh
+++ /dev/null
@@ -1,275 +0,0 @@
-#!/bin/sh
-#
-# video-qemu-booting-iso.sh                               #
-#                                                         #
-# Copyleft (c) 2007 Brendan M. Sleight                    #
-#              <bmsleight at barwap._REMOVE_SPAM_TRAP.com>   #
-#                                                         #
-# This script is licensed under the GNU GPL v2 or later.  #
-#                                                         #
-# On Debian systems, this license can be obtained via     #
-# /usr/share/common-licenses/GPL                          #
-#                                                         #
-# Required packages/applications :-                       #
-#  bash, expect, ffmpeg2thoera, imagemagick,              #
-#  qemu, vncserver, vncrec-twibright                      #
-#                                                         #
-# Requires /etc/vnc.conf to be ammended.                  #
-#                                                         #
-#                                                         #
-
-
-lock_file_check ()
-{
-if [ -f /tmp/video-qemu-booting-iso.lock ]
-then
-  echo "Lock file /tmp/video-qemu-booting-iso.lock present indicating $0 is already running"
-  exit
-fi
-VNCCONF=$(cat /etc/vnc.conf | grep "^\$vncStartup")
-if [ "$VNCCONF" != "\$vncStartup = \"~/.vnc/xstartup\";" ]
- then
-  echo "Requires vnc.conf to have the line:-  "
-  echo "\$vncStartup = \"~/.vnc/xstartup\";"
-  echo "Else two lots of windowm mangers will launched in the extra vnc sessions."
-  exit
-fi
-echo "Lock file /tmp/video-qemu-booting-iso.lock present indicating $0 is running" >/tmp/video-qemu-booting-iso.lock
-}
-
-Random () {
-	tr -c -d '0-9' < /dev/urandom | dd bs=1 count=5 2>/dev/null
-}
-
-get_global_variables ()
-{
-PASSWD="$(Random).$(Random).$(Random).$(Random).$(Random)"
-HOSTNAME=$(hostname)
-OLD_DISPLAY="$DISPLAY"
-TODAY=$(date +"%F")
-TMP_DIR="$(mktemp -d vqbi.XXXXXXXXX)"
-IPADDRESS="127.0.0.1"
-}
-
-get_options_and_defaults ()
-{
-    SENDKEYS="${SENDKEYS:-spc,l,i,v,e,spc,kp_enter}"
-    QEMU_MONITOR_PORT="${QEMU_MONITOR_PORT:-4444}"
-    GEOMETRY="${GEOMETRY:-1280x960}"
-    CONVERT_DIM="${CONVERT_DIM:-800x600}"
-    FFMPEG_DIM_SCALE=$(echo "$CONVERT_DIM" | sed s/x/\ -y\ /g)
-    FFMPEG_DIM_SCALE="-x $FFMPEG_DIM_SCALE"
-    TIME_Q="${TIME_Q:-600}"
-    VQUALITY="${VQUALITY:-5}"
-    QEMU_BIN="${QEMU_BIN:-qemu}" #qemu_0.8.4-etch1
-}
-
-set_up_workspace ()
-{
-mkdir $TMP_DIR 2>/dev/null
-rm ~/.vnc/passwd
-
-cat<<EOF > ~/.vnc/xstartup
-#!/bin/sh
-xsetroot -solid grey
-EOF
-chmod 755 ~/.vnc/xstartup
-
-cat<<EOF > $TMP_DIR/vnc.exp
-spawn vncpasswd
-expect "Password:" { send "$PASSWD\r" }
-expect "Verify:" { send "$PASSWD\r" }
-interact
-puts "\nVNC Password changed\n"
-EOF
-
-expect $TMP_DIR/vnc.exp >/dev/null 2>/dev/null
-echo "VNC Password changed"
-}
-
-start_vnc_sessions ()
-{
-vncserver -depth 24   -Protocol3.3 -geometry $GEOMETRY -localhost >$TMP_DIR/vncserver.txt 2>&1
-VNSERVER_QEMU=$(cat $TMP_DIR/vncserver.txt | grep 'New' | awk '{ print $6}' )
-VNCSERVER_QMEU_NUMBER=$(cat $TMP_DIR/vncserver.txt | grep 'New' | cut -d: -f3)
-echo "Launched vncserver $VNSERVER_QEMU"
-vncserver -depth 24  -Protocol3.3 -geometry 1600x1200 -localhost >$TMP_DIR/vncserver.txt 2>&1
-VNSERVER_VNCREC=$(cat $TMP_DIR/vncserver.txt | grep 'New' | awk '{ print $6}' )
-VNCSERVER_VNCREC_NUMBER=$(cat $TMP_DIR/vncserver.txt | grep 'New' | cut -d: -f3)
-echo "Launched vncserver $VNSERVER_VNCREC"
-}
-
-start_vnc_record ()
-{
-export DISPLAY="$VNSERVER_VNCREC"
-export VNCREC_MOVIE_FRAMERATE
-echo "Starting vncrec, recording :$VNCSERVER_QMEU_NUMBER. Local display :$VNCSERVER_VNCREC_NUMBER"
-vncrec -display :$VNCSERVER_VNCREC_NUMBER -passwd ~/.vnc/passwd -depth 24 -shared -truecolor -viewonly -encoding raw -record $TMP_DIR/qemu.1.vnc :$VNCSERVER_QMEU_NUMBER  &
-#sleep 20
-}
-
-start_qemu ()
-{
-export DISPLAY=$VNSERVER_QEMU
-echo "Starting qemu, within Display $VNSERVER_QEMU"
-IMAGE_TYPE=$(echo "$ISO" | sed -e 's/.*[.]//g')
-if [ "$IMAGE_TYPE" = "img" ]
-then
-  QEMU_OPTS="-hda"
-else
-  QEMU_OPTS="-cdrom"
-fi
-$QEMU_BIN -full-screen $QEMU_OPTS $ISO -monitor telnet:$IPADDRESS:$QEMU_MONITOR_PORT,server,nowait &
-sleep 100 # This is important. Im not sure why, vnc catch-up time maybe, but it just works :), remove at your peril
-
-i=1
-REACHED_LAST_KB=""
-while [ -z $REACHED_LAST_KB ]
-do
- sleep 2
- KEY=$(echo $SENDKEYS | cut -d, -f$i)
- if [ "$KEY" != "" ]
- then
-  echo "sendkey $KEY" | socat - TCP4:$IPADDRESS:$QEMU_MONITOR_PORT
- else
-  REACHED_LAST_KB="Y"
- fi
- i=$(($i+1))
-done
-sleep 1
-}
-
-let_qemu_run ()
-{
-echo "Sleeping for $TIME_Q seconds whilst qemu runs"
-sleep $TIME_Q
-}
-
-stop_qemu ()
-{
-echo "Capture final screen-shot"
-import -window root $VIDEO.end.jpg
-echo "Stopping vncrec and qemu"
-killall vncrec
-killall $QEMU_BIN
-}
-
-stop_vncservers ()
-{
-echo "Stopping vncservers"
-vncserver -kill :$VNCSERVER_QMEU_NUMBER >/dev/null 2>&1
-vncserver -kill :$VNCSERVER_VNCREC_NUMBER >/dev/null 2>&1
-}
-
-gen_video ()
-{
-#Need to runs some tests to ensure vncrec -movie does temriante at end of session.
-echo "Generating video from recorded vnc stream. "
-vncrec  -movie $TMP_DIR/qemu.1.vnc 2>/dev/null | ffmpeg2theora $FFMPEG_DIM_SCALE --videoquality $VQUALITY --inputfps 40 --artist "AutoTesting.livecd.org" --title "Video of Qemu booting $ISO"  --date "$TODAY" -o $VIDEO - 2>/dev/null
-#vnc2swf-edit -o $VIDEO.swf -l -c -s 0.703125 -t video $TMP_DIR/qemu.1.vnc 
-#VIDEO_NO_EXT=${VIDEO%.*}
-#mv $VIDEO.html ${VIDEO_NO_EXT}_View_swf_Video_.html
-}
-
-gen_video_preview ()
-{
-MONTAGE_DIR=/tmp/tp.$$.dir.montage
-mkdir $MONTAGE_DIR
-ffmpeg -i $VIDEO -vcodec copy $TMP_DIR/duration.ogg 2>$TMP_DIR/ffmpeg.log
-DURATION_H=$(cat $TMP_DIR/ffmpeg.log | grep Duration | cut -d ' ' -f 4 | sed s/,// | cut -d ':' -f 1)
-DURATION_M=$(cat $TMP_DIR/ffmpeg.log | grep Duration | cut -d ' ' -f 4 | sed s/,// | cut -d ':' -f 2)
-DURATION_S=$(cat $TMP_DIR/ffmpeg.log | grep Duration | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/,// | cut -d ':' -f 3)
-LENGTH=$(($DURATION_H*3600+$DURATION_M*60+$DURATION_S))
-echo "Duration of Video $LENGTH $DURATION_H $DURATION_M $DURATION_S"
-COUNTER=0
-END=5
-COUNT=1
-# Generate a Frame every 0.5 secs for the start of the video
-while [  $COUNTER -lt $END ]; do
-	HALFSECS=$(echo $COUNTER/2|bc -l)
-	ffmpeg -i $VIDEO -an -ss $HALFSECS -t 01 -r 1 -y -s 320x240 $TMP_DIR/video%d.jpg 2>/dev/null
-	mv $TMP_DIR/video1.jpg $MONTAGE_DIR/$COUNT.jpg 
-	LIST="$LIST $MONTAGE_DIR/$COUNT.jpg"
-	COUNT=$(($COUNT + 1))
-	COUNTER=$(($COUNTER + 1))
-done
-SPLIT=$(($LENGTH/12))
-COUNTER="$SPLIT" 	
-while [  $COUNTER -lt $LENGTH ]; do
-	ffmpeg -i $VIDEO -an -ss $COUNTER -t 01 -r 1 -y $TMP_DIR/video%d.jpg 2>/dev/null
-	mv $TMP_DIR/video1.jpg $MONTAGE_DIR/$COUNT.jpg 
-	LIST="$LIST $MONTAGE_DIR/$COUNT.jpg"
-	COUNT=$(($COUNT + 1))
-	COUNTER=$(($COUNTER+$SPLIT))
-done
-montage -geometry 180x135+4+4 -frame 5 $LIST $VIDEO.montage.jpg 
-rm -R $MONTAGE_DIR
-rmdir $MONTAGE_DIR
-}
-
-clean_up ()
-{
-DISPLAY="$OLD_DISPLAY"
-export DISPLAY="$OLD_DISPLAY"
-rm $TMP_DIR -r
-rm /tmp/video-qemu-booting-iso.lock
-}
-
-
-while getopts s:p:g:d:t:v:q:n opt
-do
-    case "$opt" in
-      s)  SENDKEYS="$OPTARG";;
-      p)  QEMU_MONITOR_PORT="$OPTARG";;
-      g)  GEOMETRY="$OPTARG";;
-      d)  CONVERT_DIM="$OPTARG";;
-      t)  TIME_Q="$OPTARG";;
-      v)  VQUALITY="$OPTARG";;
-      q)  QEMU_BIN="$OPTARG";;
-      n)  NOPREVIEW="true";;
-
-
-      \?)		# unknown flag
-      	  echo >&2 \
-		"usage: $0 [-s \"keys,to,send,to,qemu\"] [-p port_number for qemu-monitor] [-g geometry of vncsession] [-d dimensions of video] [-t time to run qemu] [-v (0 to 10) encoding quality for video] [-q alternative qemu binary name] [-n] IsoToTest.iso Video.ogg "
-	  exit 1;;
-    esac
-done
-shift `expr $OPTIND - 1`
-
-if [ -z "$1" ] && [ -z "$2" ]; then
-    echo "usage: $0 [-s \"keys,to,send,to,qemu\"] [-p port_number for qemu-monitor] [-g geometry of vncsession] [-d dimensions of video] [-t time to run qemu] [-v (0 to 10) encoding quality for video] [-q alternative qemu binary name] [-n Do not gernerate a preview of the video.ogg.jpg] IsoToTest.iso Video.ogg " 
-    echo
-    echo " This script boots a livecd using qemu and records a video of the process. "
-    echo
-    echo " It is worth noting that this script takes a long time to run and heavy usage of CPU."
-    echo " There is heavy usage of the qemu, imagemagik tools. "
-    echo " For every second of running qemu the script it can take up to 3s to compile the video."
-    echo " For example using -t 1200 will about one hour."
-    echo
-    echo " Minimum geometry for qemu -g 1024x768"
-    echo
-    echo " Launches a couple of vncserver session, kills other vncrec and qemu sessions running."
-    exit
-fi
-
-ISO=$1
-VIDEO=$2
-
-lock_file_check
-get_options_and_defaults
-get_global_variables
-set_up_workspace
-start_vnc_sessions
-start_vnc_record
-start_qemu
-let_qemu_run
-stop_qemu
-gen_video
-if [ "$NOPREVIEW" = "true" ]; then
-	echo "Skipping jpg preview"
-else
-	gen_video_preview
-fi
-stop_vncservers
-clean_up
diff --git a/webconverger.lst b/webconverger.lst
deleted file mode 100644
index bf19ae8..0000000
--- a/webconverger.lst
+++ /dev/null
@@ -1 +0,0 @@
-http://custom.webconverger.com/webc-3.3b.mini.iso
diff --git a/weekly.lst b/weekly.lst
deleted file mode 100644
index a88658c..0000000
--- a/weekly.lst
+++ /dev/null
@@ -1,4 +0,0 @@
-http://live.debian.net/cdimage/weekly-builds/current/i386/debian-live-lenny-i386-standard.iso
-http://live.debian.net/cdimage/weekly-builds/current/i386/debian-live-lenny-i386-xfce-desktop.iso
-http://live.debian.net/cdimage/weekly-builds/current/i386/debian-live-lenny-i386-gnome-desktop.iso
-http://live.debian.net/cdimage/weekly-builds/current/i386/debian-live-lenny-i386-kde-desktop.img

-- 
debian-live/autotesting



More information about the debian-live-changes mailing list