Index: /branches/czw_branch/cleanup/Nebulous-Server/Changes
===================================================================
--- /branches/czw_branch/cleanup/Nebulous-Server/Changes	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous-Server/Changes	(revision 25051)
@@ -36,4 +36,5 @@
       instance and just those that are available
     - add Nebulous::Server->prune_object() API
+    - don't replicate to the volume being implied by the key being replicated!
       
 0.16
Index: /branches/czw_branch/cleanup/Nebulous-Server/lib/Nebulous/Server.pm
===================================================================
--- /branches/czw_branch/cleanup/Nebulous-Server/lib/Nebulous/Server.pm	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous-Server/lib/Nebulous/Server.pm	(revision 25051)
@@ -696,5 +696,5 @@
     $log->debug("entered - @_");
 
-    my ($key, $vol_name) = validate_pos(@_,
+    my ($key, $dest_vol_name) = validate_pos(@_,
         {
             type        => SCALAR,
@@ -726,28 +726,35 @@
     # instance on it.  If all avilable volume already have an instance on them
     # then we should throw an error 
-
-    # vol_name overrides the key implied volume
-    eval {
-        $key = parse_neb_key($key, $vol_name);
+    # volume names implied as part of the key are *IGNORED* as the source and
+    # *SHOULD NOT* be used as the destination either
+
+    eval {
+        $key = parse_neb_key($key);
     };
     $log->logdie("$@") if $@;
-    $vol_name = $key->volume;
 
     my $db  = $self->db($key);
 
-    if (defined $vol_name
+    # puke if the source volume is bogus, we may want to actually use this as
+    # the instance to be copied later
+    if (defined $key->volume
         and not $self->_is_valid_volume_name($key, $key->volume)) {
         unless ($key->hard_volume) {
-            $log->warn( "$vol_name is not a known volume name" );
-            $vol_name = undef;
+            $log->warn($key->volume . " not a known volume name");
         } else {
-           $log->logdie("$vol_name is not a valid volume name");
-        }
+           $log->logdie("$key is not a valid volume name");
+        }
+    }
+    # puke if the source volume is bogus, we may want to actually use this as
+    # the instance to be copied later
+    if (defined $dest_vol_name
+        and not $self->_is_valid_volume_name($key, $dest_vol_name)) {
+           $log->logdie($key->volume . " is not a valid volume name");
     }
         
     my ($vol_id, $vol_host, $vol_path, $vol_xattr);
-    if (defined $vol_name) {
+    if (defined $dest_vol_name) {
         ($vol_id, $vol_host, $vol_path, $vol_xattr)
-            = $self->_get_storage_volume($key, $vol_name);
+            = $self->_get_storage_volume($key, $dest_vol_name);
     } else {
         ($vol_id, $vol_host, $vol_path, $vol_xattr)
@@ -810,5 +817,5 @@
             $db->rollback;
             # handle soft volumes
-            if (defined $vol_name and not defined $key->hard_volume) {
+            if (defined $dest_vol_name and not defined $key->hard_volume) {
                 $log->debug("retrying with 'any' volume");
                 return $self->replicate_object($key->path, 'any');
Index: /branches/czw_branch/cleanup/Nebulous-Server/lib/Nebulous/Server/Config.pm
===================================================================
--- /branches/czw_branch/cleanup/Nebulous-Server/lib/Nebulous/Server/Config.pm	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous-Server/lib/Nebulous/Server/Config.pm	(revision 25051)
@@ -13,5 +13,5 @@
 
 use Log::Log4perl qw( :levels );
-use Params::Validate qw( validate validate_pos SCALAR ARRAYREF );
+use Params::Validate qw( validate validate_pos SCALAR ARRAYREF UNDEF );
 
 our %LEVELS = (
@@ -32,5 +32,5 @@
     dsn         => { type => SCALAR },
     dbuser      => { type => SCALAR },
-    dbpasswd    => { type => SCALAR },
+    dbpasswd    => { type => SCALAR | UNDEF },
 };
 
@@ -48,5 +48,5 @@
     dsn                 => { type => SCALAR, optional => 1 },
     dbuser              => { type => SCALAR, optional => 1 },
-    dbpasswd            => { type => SCALAR, optional => 1 },
+    dbpasswd            => { type => SCALAR | UNDEF, optional => 1 },
     memcached_servers   => { type => ARRAYREF, optional => 1 },
 };
Index: /branches/czw_branch/cleanup/Nebulous-Server/t/05_server_replicate_object.t
===================================================================
--- /branches/czw_branch/cleanup/Nebulous-Server/t/05_server_replicate_object.t	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous-Server/t/05_server_replicate_object.t	(revision 25051)
@@ -8,5 +8,5 @@
 use warnings FATAL => qw( all );
 
-use Test::More tests => 26;
+use Test::More tests => 25;
 
 use lib qw( ./t ./lib );
Index: /branches/czw_branch/cleanup/Nebulous-Server/t/09_server_delete_instance.t
===================================================================
--- /branches/czw_branch/cleanup/Nebulous-Server/t/09_server_delete_instance.t	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous-Server/t/09_server_delete_instance.t	(revision 25051)
@@ -58,5 +58,5 @@
     my $key = "foo";
     my $uri1 = $neb->create_object($key, 'node01');
-    my $uri2 = $neb->replicate_object($key, 'node2');
+    my $uri2 = $neb->replicate_object($key, 'node02');
 
     # make one of the instances unavailable
Index: /branches/czw_branch/cleanup/Nebulous/Changes
===================================================================
--- /branches/czw_branch/cleanup/Nebulous/Changes	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous/Changes	(revision 25051)
@@ -8,4 +8,5 @@
     - add Nebulous::Client->prune() method
     - add Nebulous::Client->there_can_be_only_one() method
+    - add neb-cull --one_only flag
 
 0.10
Index: /branches/czw_branch/cleanup/Nebulous/MANIFEST
===================================================================
--- /branches/czw_branch/cleanup/Nebulous/MANIFEST	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous/MANIFEST	(revision 25051)
@@ -102,4 +102,5 @@
 t/70_neb-ls.t
 t/71_client_there_can_be_only_one.t
+t/72_neb-cull.t
 t/90_nebclient.t
 t/TEST.PL
Index: /branches/czw_branch/cleanup/Nebulous/bin/neb-cull
===================================================================
--- /branches/czw_branch/cleanup/Nebulous/bin/neb-cull	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous/bin/neb-cull	(revision 25051)
@@ -16,5 +16,5 @@
 use Pod::Usage qw( pod2usage );
 
-my ($server, $volume);
+my ($server, $volume, $one_only);
 
 $server = $ENV{'NEB_SERVER'} unless $server;
@@ -23,4 +23,5 @@
     'server|s=s'    => \$server,
     'volume|v=s'    => \$volume,
+    'one_only|o'    => \$one_only,
 ) || pod2usage( 2 );
 
@@ -40,10 +41,24 @@
     unless defined $neb;
 
+my @cull_args;    
+push @cull_args, $key;
 if (defined $volume) {
-    $neb->cull($key, $volume)
-        or die "failed to replicate Nebulous key: $key";
+    push @cull_args, $volume;
+}
+
+if ($one_only) {
+    my $status = $neb->there_can_be_only_one(@cull_args);
+    if ($status == 0) {
+        die "not enough instances of Nebulous key: $key";
+    }
+    if (not defined $status or $status < 1) {
+        die "failed to cull Nebulous key: $key - " . $neb->err
+            if defined $neb->err;
+        die "failed to cull Nebulous key: $key";
+    }
 } else {
-    $neb->cull($key)
-        or die "failed to replicate Nebulous key: $key";
+    unless (defined $neb->cull(@cull_args)) {
+        die "failed to cull Nebulous key: $key - " . $neb->err;
+    }
 }
 
@@ -58,5 +73,5 @@
 =head1 SYNOPSIS
 
-    neb-cull [--server <URL>] [--volume <volume name>] <key>
+    neb-cull [--server <URL>] [--volume <volume name>] [--one_only] <key>
 
 =head1 DESCRIPTION
@@ -77,4 +92,12 @@
 
 Symbolic name of the volume to create the new instance on.
+
+Optional.
+
+=item * --one_only|-o
+
+Removes all but one instances of an object.  Any inaccessible instances are
+removed.  If C<--volume> is specified, and an instance exists on that volume,
+all instances but the one on that volume are removed.
 
 Optional.
@@ -110,5 +133,5 @@
 =head1 COPYRIGHT
 
-Copyright (C) 2007-2008  Joshua Hoblitt.  All rights reserved.
+Copyright (C) 2007-2009  Joshua Hoblitt.  All rights reserved.
 
 This program is free software; you can redistribute it and/or modify it under
Index: /branches/czw_branch/cleanup/Nebulous/lib/Nebulous/Client.pm
===================================================================
--- /branches/czw_branch/cleanup/Nebulous/lib/Nebulous/Client.pm	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous/lib/Nebulous/Client.pm	(revision 25051)
@@ -297,5 +297,5 @@
         my $instances = $stats[6];
         if (defined $instances and $instances < 2) {
-            $log->debug("can not cull - not enough instances");
+            $self->set_err("can not cull - not enough instances");
             $log->debug("leaving");
 
@@ -305,5 +305,5 @@
         $locations = $self->find_instances($key, $vol_name);
         unless (defined $locations) {
-            $log->debug( "no instances" );
+            $self->set_err( "no instances" );
             $log->debug( "leaving" );
 
@@ -313,5 +313,5 @@
         $locations = $self->find_instances($key);
         unless ($locations) {
-            $log->debug("no instances");
+            $self->set_err( "no instances" );
             $log->debug("leaving");
 
@@ -320,5 +320,5 @@
 
         if (scalar @{ $locations } < 2) {
-            $log->debug("can not cull - not enough instances");
+            $self->set_err("can not cull - not enough instances");
             $log->debug("leaving");
 
@@ -365,6 +365,5 @@
         if (not defined $self->prune($key)) {
             # use the prune() method to also determine if $key is valid
-            $removed = undef;
-            return;
+            die "invalid key: $key";
         }
 
@@ -377,4 +376,7 @@
         if (defined $locations) {
             my $instances = $self->find_instances($key);
+            if (scalar @$instances < 2) {
+                die "not enough instances";
+            }
             foreach my $victim (@$instances) {
                 next if $victim eq $locations->[0];
@@ -387,4 +389,7 @@
             # start at one so cull() is called one less time then the # of
             # instances
+            if ($stats->[6] < 2) {
+                die "not enough instances";
+            }
             for (my $i = 1; $i < $stats->[6]; $i++) {
                 $self->cull($key);
@@ -395,4 +400,8 @@
     };
     if ($@) {
+        if ($@ =~ qr/invalid key/) {
+            $self->set_err($@);
+            return;
+        }
         $log->logdie($@);
     }
Index: /branches/czw_branch/cleanup/Nebulous/nebclient/configure.ac
===================================================================
--- /branches/czw_branch/cleanup/Nebulous/nebclient/configure.ac	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous/nebclient/configure.ac	(revision 25051)
@@ -5,5 +5,5 @@
 AC_PREREQ(2.61)
 
-AC_INIT([nebclient], [0.08], [jhoblitt@cpan.org])
+AC_INIT([nebclient], [0.17], [jhoblitt@cpan.org])
 AC_CONFIG_SRCDIR([nebulous.wsdl])
 
Index: /branches/czw_branch/cleanup/Nebulous/nebclient/src/nebclient.c
===================================================================
--- /branches/czw_branch/cleanup/Nebulous/nebclient/src/nebclient.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous/nebclient/src/nebclient.c	(revision 25051)
@@ -51,9 +51,8 @@
 static char *nullstrncpy(char *dest, const char *src, size_t n);
 
+
 nebServer *nebServerAlloc(const char *endpoint)
 {
-    nebServer       *server;
-
-    server          = xmalloc(sizeof(nebServer));
+    nebServer *server = xmalloc(sizeof(nebServer));
 
     if (endpoint) {
@@ -77,4 +76,5 @@
 }
 
+
 void nebServerFree(nebServer *server)
 {
@@ -92,17 +92,16 @@
 }
 
+
 char *nebCreate(nebServer *server, const char *key, const char *volume, char **URI)
 {
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return NULL;
+    }
+
     struct ns1__create_USCOREobjectResponse response;
-    char            *filename;
-
-    REQUIRE_SERVER;
-
-    if (!key) {
-        nebSetErr(server, "parameter 'key' may not be NULL");
-
-        return NULL;
-    }
-
     if (soap_call_ns1__create_USCOREobject(server->soap, server->endpoint, NULL,
             (char *)key, (char *)volume, (char **)&response) != SOAP_OK) {
@@ -117,6 +116,9 @@
     }
 
+    char *filename;
     if (!nebParseURI(server, (char *)response.result, &filename)) {
         nebSetErr(server, "can not parse URI");
+        nebFree(filename);
+
         return NULL;
     }
@@ -131,20 +133,21 @@
 }
 
+
 int nebOpenCreate(nebServer *server, const char *key, const char *volume, char **URI)
 {
-    char            *filename;
-    int             file;
-
-    REQUIRE_SERVER;
-
-    if (!key) {
-        nebSetErr(server, "parameter 'key' may not be NULL");
-
-        return -1;
-    }
-
-    filename = nebCreate(server, key, volume, URI);
-
-    file = open(filename, O_RDWR|O_TRUNC, 0660);
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return -1;
+    }
+
+    char *filename = nebCreate(server, key, volume, URI);
+    if (!filename) {
+        return -1;
+    }
+
+    int file = open(filename, O_RDWR|O_TRUNC, 0660);
     if (file == -1) {
         nebSetErr(server, "can not open %s: %s", filename, strerror(errno));
@@ -159,10 +162,7 @@
 }
 
+
 bool nebReplicate(nebServer *server, const char *key, const char *volume, char **URI)
 {
-    struct ns1__replicate_USCOREobjectResponse response;
-    char            *filename;
-    int             sourceFH, destFH;
-
     REQUIRE_SERVER;
 
@@ -177,8 +177,7 @@
     // we don't do this, it's possible that open will find & open the new
     // instance that we're in the process of creating
-    sourceFH = nebOpen(server, (char *)key, NEB_READ);
+    int sourceFH = nebOpen(server, (char *)key, NEB_READ);
     if (sourceFH == -1) {
         nebSetErr(server, "can not open key %s", key);
-        nebFree(filename);
 
         return false;
@@ -186,4 +185,5 @@
 
     // ask the server for a new instance attached to our key
+    struct ns1__replicate_USCOREobjectResponse response;
     if (soap_call_ns1__replicate_USCOREobject(server->soap, server->endpoint,
             NULL, (char *)key, (char *)volume, (char **)&response) != SOAP_OK) {
@@ -193,4 +193,5 @@
     }
 
+    char *filename = NULL;
     if (!nebParseURI(server, (char *)response.result, &filename)) {
         nebSetErr(server, "can not parse URI");
@@ -199,5 +200,5 @@
     }
 
-    destFH = open(filename, O_RDWR|O_TRUNC, 0660);
+    int destFH = open(filename, O_RDWR|O_TRUNC, 0660);
     if (destFH == -1) {
         nebSetErr(server, "can not open %s: %s\n", filename, strerror(errno));
@@ -234,19 +235,21 @@
 }
 
+
 bool nebCull(nebServer *server, const char *key)
 {
-    nebObjectInstances *locations;
-
-    REQUIRE_SERVER;
-
-    if (!key) {
-        nebSetErr(server, "parameter 'key' may not be NULL");
-
-        return false;
-    }
-
-    locations = nebFindInstances(server, key, NULL);
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
+
+    nebObjectInstances *locations = nebFindInstances(server, key, NULL);
     if (!locations || locations->n <= 1) {
         nebSetErr(server, "can not cull - not enough instances");
+        if (locations) {
+            nebObjectInstancesFree(locations);
+        }
 
         return false;
@@ -264,23 +267,21 @@
 }
 
+
 bool nebLock(nebServer *server, const char *key, nebRW flag)
 {
-    time_t          endtime;
-    char            *type;
-    int             response;
-
-    REQUIRE_SERVER;
-
-    if (!key) {
-        nebSetErr(server, "parameter 'key' may not be NULL");
-
-        return false;
-    }
-
-    type = flag == NEB_READ ? "read" : "write";
-
-    endtime = time(NULL) + LOCK_TIMEOUT;
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
+
+    char *type = flag == NEB_READ ? "read" : "write";
+
+    time_t endtime = time(NULL) + LOCK_TIMEOUT;
 
     while (time(NULL) < endtime) {
+        int response;
         if (soap_call_ns1__lock_USCOREobject(server->soap, server->endpoint,
             NULL, (char *)key, type, &response) != SOAP_OK) {
@@ -302,19 +303,18 @@
 }
 
+
 bool nebUnlock(nebServer *server, const char *key, nebRW flag)
 {
-    char            *type;
-    int             response;
-
-    REQUIRE_SERVER;
-
-    if (!key) {
-        nebSetErr(server, "parameter 'key' may not be NULL");
-
-        return false;
-    }
-
-    type = flag == NEB_READ ? "read" : "write";
-
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
+
+    char *type = flag == NEB_READ ? "read" : "write";
+
+    int response;
     if (soap_call_ns1__unlock_USCOREobject(server->soap, server->endpoint,
         NULL, (char *)key, type, &response) != SOAP_OK) {
@@ -466,17 +466,13 @@
 nebObjectInstances *nebFindInstances(nebServer *server, const char *key, const char *volume)
 {
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return NULL;
+    }
+
     struct ns1__find_USCOREinstancesResponse response;
-    int             resultElements = 0;
-    char            **resultArray;
-    nebObjectInstances *locations = NULL;
-
-    REQUIRE_SERVER;
-
-    if (!key) {
-        nebSetErr(server, "parameter 'key' may not be NULL");
-
-        return NULL;
-    }
-
     // FIXME is this leaking memory when response goes out of scope?  the gsoap
     // manual seems to 'suggest' that this is temporary data that gets cleaed
@@ -488,11 +484,12 @@
     }
 
-    resultElements = response.result->__size;
-
+    int resultElements = response.result->__size;
+
+    nebObjectInstances *locations = NULL;
     if (resultElements) {
         locations = xmalloc(sizeof(nebObjectInstances));
         locations->n = resultElements;
         
-        resultArray    = response.result->__ptr;
+        char **resultArray = response.result->__ptr;
 
         locations->URI = xmalloc(sizeof(char*) * resultElements);
@@ -508,4 +505,5 @@
 }
 
+
 void nebObjectInstancesFree(nebObjectInstances *locations)
 {
@@ -521,9 +519,7 @@
 }
 
+
 char *nebFind(nebServer *server, const char *key)
 {
-    nebObjectInstances *locations;
-    char            *filename;
-
     REQUIRE_SERVER;
 
@@ -534,5 +530,5 @@
     }
     
-    locations = nebFindInstances(server, key, NULL);
+    nebObjectInstances *locations = nebFindInstances(server, key, NULL);
     if (!locations) {
         if (!strstr(nebErr(server), "no instances on storage volume")) {
@@ -548,4 +544,5 @@
     }
 
+    char *filename;
     if (!nebParseURI(server, locations->URI[0], &filename)) {
         nebSetErr(server, "can not parse URI");
@@ -560,19 +557,16 @@
 }
 
+
 int nebOpen(nebServer *server, const char *key, nebRW flag)
 {
-    nebObjectInstances *locations;
-    char            *filename;
-    int             fh;
-
-    REQUIRE_SERVER;
-
-    if (!key) {
-        nebSetErr(server, "parameter 'key' may not be NULL");
-
-        return -1;
-    }
-
-    locations = nebFindInstances(server, key, NULL);
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return -1;
+    }
+
+    nebObjectInstances *locations = nebFindInstances(server, key, NULL);
     if (!locations) {
         nebSetErr(server, "no instances found");
@@ -581,4 +575,5 @@
     }
 
+    char *filename;
     if (!nebParseURI(server, locations->URI[0], &filename)) {
         nebSetErr(server, "can not parse URI");
@@ -588,4 +583,5 @@
     }
 
+    int fh = 0;
     if (flag == NEB_WRITE) {
         if (locations->n > 1) {
@@ -613,17 +609,16 @@
 }
 
+
 bool nebDelete(nebServer *server, const char *key)
 {
-    nebObjectInstances *locations;
-
-    REQUIRE_SERVER;
-
-    if (!key) {
-        nebSetErr(server, "parameter 'key' may not be NULL");
-
-        return false;
-    }
-
-    locations = nebFindInstances(server, key, "any");
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
+
+    nebObjectInstances *locations = nebFindInstances(server, key, "any");
     if (!locations) {
         nebSetErr(server, "no instances found");
@@ -646,9 +641,7 @@
 }
 
+
 bool nebCopy(nebServer *server, const char *key, const char *newKey)
 {
-    int             sourceFH;
-    int             destFH;
-
     REQUIRE_SERVER;
 
@@ -665,5 +658,5 @@
     }
 
-    sourceFH = nebOpen(server, (char *)key, NEB_READ);
+    int sourceFH = nebOpen(server, (char *)key, NEB_READ);
     if (sourceFH < 0) {
         // propigate nebOpen() error
@@ -672,5 +665,5 @@
     }
 
-    destFH = nebOpenCreate(server, newKey, NULL, NULL);
+    int destFH = nebOpenCreate(server, newKey, NULL, NULL);
     if (destFH < 0) {
         // propigate nebCreate() error
@@ -696,4 +689,5 @@
 }
 
+
 bool nebMove(nebServer *server, const char *key, const char *newKey)
 {
@@ -723,8 +717,7 @@
 }
 
+
 bool nebSwap(nebServer *server, const char *key1, const char *key2)
 {
-    struct ns1__create_USCOREobjectResponse response;
-
     REQUIRE_SERVER;
 
@@ -741,4 +734,5 @@
     }
 
+    struct ns1__create_USCOREobjectResponse response;
     if (soap_call_ns1__swap_USCOREobjects(server->soap, server->endpoint,
             NULL, (char *)key1, (char *)key2, (char **)&response) != SOAP_OK) {
@@ -749,10 +743,7 @@
 }
 
+
 bool nebDeleteInstance(nebServer *server, const char *key, const char *URI)
 {
-    int             response;
-    char            *filename;
-    bool            status;
-
     REQUIRE_SERVER;
 
@@ -763,4 +754,5 @@
     }
 
+    char *filename;
     if (!nebParseURI(server, URI, &filename)) {
         nebSetErr(server, "can not parse URI");
@@ -769,4 +761,5 @@
     }
 
+    int response;
     if (soap_call_ns1__delete_USCOREinstance(server->soap, server->endpoint,
         NULL, (char *)key, (char *)URI, &response) != SOAP_OK) {
@@ -776,4 +769,5 @@
     }
 
+    bool status;
     if (response > 0) {
         status = nebNukeFile(server, filename);
@@ -787,11 +781,7 @@
 }
 
+
 nebObjectStat *nebStat(nebServer *server, const char *key)
 {
-    struct ns1__stat_USCOREobjectResponse response;
-    nebObjectStat   *stat;
-    int             resultElements = 0;
-    char            **resultArray = NULL;
-
     REQUIRE_SERVER;
 
@@ -802,9 +792,10 @@
     }
 
-    stat = xmalloc(sizeof(nebObjectStat));
+    nebObjectStat *stat = xmalloc(sizeof(nebObjectStat));
 
     // FIXME is this leaking memory when response goes out of scope?  the gsoap
     // manual seems to 'suggest' that this is temporary data that gets cleaed
     // up on the next soap function call
+    struct ns1__stat_USCOREobjectResponse response;
     if (soap_call_ns1__stat_USCOREobject(server->soap, server->endpoint,
             NULL, (char *)key, &response) != SOAP_OK) {
@@ -813,6 +804,6 @@
     }
 
-    resultElements = response.result->__size;
-    resultArray    = response.result->__ptr;
+    int resultElements = response.result->__size;
+    char **resultArray    = response.result->__ptr;
 
     if (resultElements != 8) {
@@ -821,7 +812,7 @@
     }
 
-    nullstrncpy(stat->so_id, resultArray[0], 256);
-    nullstrncpy(stat->ext_id, resultArray[1], 256);
-    nullstrncpy(stat->read_lock, resultArray[2], 256);
+    stat->so_id     = atol(resultArray[0]);
+    stat->ext_id    = atol(resultArray[1]);
+    stat->read_lock = atoi(resultArray[2]);
     nullstrncpy(stat->write_lock, resultArray[3], 256);
     nullstrncpy(stat->epoch, resultArray[4], 256);
@@ -833,4 +824,5 @@
 }
 
+
 void nebObjectStatFree(nebObjectStat *stat)
 {
@@ -839,11 +831,5 @@
     }
 
-    xfree(stat->so_id);
-    xfree(stat->ext_id);
-    xfree(stat->read_lock);
-    xfree(stat->write_lock);
-    xfree(stat->epoch);
-    xfree(stat->mtime);
-    xfree(stat);
+    nebFree(stat);
 }
 
@@ -895,4 +881,5 @@
     return response;
 }
+
 
 int nebThereCanBeOnlyOne(nebServer *server, const char *key, const char *volume)
@@ -936,4 +923,5 @@
         nebObjectInstancesFree(locations);
     } else {
+        nebObjectInstancesFree(locations);
         // nuke whatever
         nebObjectStat *stat = nebStat(server, key);
@@ -941,14 +929,16 @@
             return -1;
         }
+
+        int available = stat->available;
+        nebObjectStatFree(stat);
+
         // start at one so cull() is called one less time then the # of
         // instances
-        for (long i = 1; i < stat->available; i++) {
+        for (long i = 1; i < available; i++) {
             if (!nebCull(server, key)) {
-                nebObjectStatFree(stat);
                 return -1;
             }
             removed++;
         }
-        nebObjectStatFree(stat);
     }
 
@@ -962,5 +952,7 @@
 }
 
+
 void nebFree(void *ptr) {
+    if (!ptr) { return; }
     xfree(ptr);
 }
@@ -969,10 +961,6 @@
 static void p_nebSetErr(const char * filename, unsigned long lineno, const char *function, nebServer *server, const char *format, ...)
 {
-    va_list         args;
-    size_t          err_size;
-    char            err_location[ERRBUF_SIZE];
-    size_t          err_location_size; 
-
-    err_location_size = snprintf(err_location, ERRBUF_SIZE, "%s:%lu %s() - ",
+    char err_location[ERRBUF_SIZE];
+    size_t err_location_size = snprintf(err_location, ERRBUF_SIZE, "%s:%lu %s() - ",
             filename, lineno, function);
 
@@ -987,7 +975,8 @@
 
     while (1) {
+        va_list args;
         va_start(args, format);
         // append error string after error location info
-        err_size = vsnprintf(
+        size_t err_size = vsnprintf(
                 server->err_buf + err_location_size,
                 server->err_buf_size - err_location_size,
@@ -1013,27 +1002,22 @@
 }
 
+
 static void nebSetServerErr(nebServer *server)
 {
-    const char      **code;
-    const char      **string;
-
-    REQUIRE_SERVER;
-
-    code   = soap_faultcode(server->soap);
-    string = soap_faultstring(server->soap);
+    REQUIRE_SERVER;
+
+    const char **code   = soap_faultcode(server->soap);
+    const char **string = soap_faultstring(server->soap);
 
     nebSetErr(server, "%s - %s", *code, *string);
 }
+
 
 #if NEBCOPYFILE
 static off_t nebCopyFile(nebServer *server, const char *source, const char *dest)
 {
-    int             sourceFH;
-    int             destFH; 
-    off_t           bytesCopied;
-
-    REQUIRE_SERVER;
-
-    sourceFH = open(source, O_RDONLY);
+    REQUIRE_SERVER;
+
+    int sourceFH = open(source, O_RDONLY);
     if (sourceFH == -1) {
         nebSetErr(server, "can not open %s: %s", source, strerror(errno));
@@ -1042,5 +1026,5 @@
     }
 
-    destFH = open(dest, O_WRONLY|O_CREAT|O_CREAT, 0600);
+    int destFH = open(dest, O_WRONLY|O_CREAT|O_CREAT, 0600);
     if (destFH == -1) {
         nebSetErr(server, "can not open %s: %s", dest, strerror(errno));
@@ -1049,5 +1033,5 @@
     }
 
-    bytesCopied = nebCopyFilehandle(server, sourceFH, destFH);
+    off_t bytesCopied = nebCopyFilehandle(server, sourceFH, destFH);
     if (bytesCopied < 0) {
         return -1;
@@ -1070,14 +1054,10 @@
 #endif
 
+
 static off_t nebCopyFilehandle(nebServer *server, int sourceFH, int destFH)
 {
-    off_t           bytesTotal;
-    off_t           bytesRemaining;
-    off_t           writeSize;
-    char            writeBuf[64 * 1024];
+    REQUIRE_SERVER;
+
     struct stat     sourceStat;
-
-    REQUIRE_SERVER;
-
     if(fstat(sourceFH, &sourceStat)) {
         nebSetErr(server, "can not stat filehandles: %s", strerror(errno));
@@ -1087,5 +1067,5 @@
 
     // the size of the file to copied
-    bytesTotal = sourceStat.st_size;
+    off_t bytesTotal = sourceStat.st_size;
 
     /*
@@ -1095,7 +1075,9 @@
     */
 
-    bytesRemaining = bytesTotal;
+    off_t bytesRemaining = bytesTotal;
 
     while (bytesRemaining) {
+        off_t writeSize;
+        char writeBuf[64 * 1024];
         if (bytesRemaining <= sizeof(writeBuf)) {
             writeSize = bytesRemaining;
@@ -1122,15 +1104,7 @@
 }
 
+
 static size_t nebParseURI(nebServer *server, const char *URI, char **filename)
 {
-    regex_t         myregex;
-    regmatch_t      mymatch[2];
-    char            errbuf[ERRBUF_SIZE];
-    char            *pattern = "^file://(.*)$";
-    int             status;
-    size_t          matchStart, matchEnd;
-    size_t          matchLength;
-    size_t          filename_size;
-
     REQUIRE_SERVER;
 
@@ -1147,5 +1121,10 @@
     }
 
-    status = regcomp(&myregex, pattern, REG_EXTENDED);
+    regex_t myregex;
+    regmatch_t mymatch[2];
+    char *pattern = "^file://(.*)$";
+    char errbuf[ERRBUF_SIZE];
+
+    int status = regcomp(&myregex, pattern, REG_EXTENDED);
     if (status != 0) {
         regerror(status, &myregex, errbuf, ERRBUF_SIZE);
@@ -1165,7 +1144,7 @@
     regfree(&myregex);
 
-    matchStart = (size_t)mymatch[1].rm_so;
-    matchEnd   = (size_t)mymatch[1].rm_eo;
-    matchLength = matchEnd - matchStart;
+    size_t matchStart = (size_t)mymatch[1].rm_so;
+    size_t matchEnd   = (size_t)mymatch[1].rm_eo;
+    size_t matchLength = matchEnd - matchStart;
 
     if (matchStart == -1) {
@@ -1173,5 +1152,5 @@
     }
 
-    filename_size = matchLength + 1;
+    size_t filename_size = matchLength + 1;
     *filename = xmalloc(filename_size);
 
@@ -1180,4 +1159,5 @@
     return strlen(*filename);
 }
+
 
 static bool nebNukeFile(nebServer *server, const char *filename)
@@ -1199,4 +1179,5 @@
     return true;
 }
+
 
 static char *nullstrncpy(char *dest, const char *src, size_t n) {
@@ -1206,4 +1187,8 @@
     }
 
+    if (!dest) {
+        dest = xmalloc(n + 1);
+    }
+
     return strncpy(dest, src, n);
 }
Index: /branches/czw_branch/cleanup/Nebulous/nebclient/src/nebclient.h
===================================================================
--- /branches/czw_branch/cleanup/Nebulous/nebclient/src/nebclient.h	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous/nebclient/src/nebclient.h	(revision 25051)
@@ -38,7 +38,7 @@
 
 typedef struct {
-    char            so_id[256];         ///< storage object ID
-    char            ext_id[256];        ///< storage object key (name)
-    char            read_lock[256];     ///< read lock value
+    long            so_id;              ///< storage object ID
+    long            ext_id;             ///< storage object key (name)
+    int             read_lock;          ///< read lock value
     char            write_lock[256];    ///< write lock value
     char            epoch[256];         ///< creation time stamp
Index: /branches/czw_branch/cleanup/Nebulous/nebclient/tests/tests.c
===================================================================
--- /branches/czw_branch/cleanup/Nebulous/nebclient/tests/tests.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Nebulous/nebclient/tests/tests.c	(revision 25051)
@@ -98,10 +98,9 @@
 
     char *copies = nebGetXattr(server, key, "user.copies");
-    neb_ok(server, strcmp(copies, "2") == 0, "get user.copies xattr");
+    neb_ok(server, copies != NULL && strcmp(copies, "2") == 0, "get user.copies xattr");
     char **xattrs = NULL;
     int n_xattrs = nebListXattr(server, key, &xattrs);
-    printf("# %s\n\n", xattrs[0]);
-    neb_ok(server, n_xattrs == 1, "count of xattrs");
-    neb_ok(server, strcmp(xattrs[0], "user.copies") == 0, "user.copies xattr exists");
+    neb_ok(server, xattrs != NULL && n_xattrs == 1, "count of xattrs");
+    neb_ok(server, xattrs != NULL && strcmp(xattrs[0], "user.copies") == 0, "user.copies xattr exists");
     neb_ok(server, nebRemoveXattr(server, key, "user.copies"), "remove user.copies xattr");
 
Index: /branches/czw_branch/cleanup/Nebulous/t/72_neb-cull.t
===================================================================
--- /branches/czw_branch/cleanup/Nebulous/t/72_neb-cull.t	(revision 25051)
+++ /branches/czw_branch/cleanup/Nebulous/t/72_neb-cull.t	(revision 25051)
@@ -0,0 +1,181 @@
+#!/usr/bin/env perl
+
+# Copyright (C) 2009  Joshua Hoblitt
+
+=head1 NAME
+
+t/72_neb-cull.t - tests neb-cull
+
+=head1 SYNOPSIS
+    
+    prove t/72_neb-cull.t
+
+=cut
+
+use strict;
+use warnings;
+
+use Apache::Test qw( -withtestmore );
+plan tests => 29;
+
+use lib qw( ./lib ./t );
+
+use Test::Cmd;
+use Nebulous::Client;
+use Test::Nebulous;
+
+my $hostport = Apache::Test->config->{ 'hostport' };
+my $neb_url  = "http://$hostport/nebulous";
+
+
+my $cmd = 'bin/neb-cull';
+
+# last ditch effort to make sure $cmd executable
+chmod 0755, $cmd;
+
+my $test = Test::Cmd->new(prog => $cmd, workdir => '');
+isa_ok($test, 'Test::Cmd');
+
+# NEB_SERVER env var not set
+undef $ENV{'NEB_SERVER'} if defined $ENV{'NEB_SERVER'};
+Test::Nebulous->setup;
+
+{
+    $test->run(args => '');
+    missing_args(2, "Required options: --server");
+}
+
+# NEB_SERVER set
+Test::Nebulous->setup;
+
+{
+    $ENV{NEB_SERVER} = $neb_url;
+
+    $test->run(args => '');
+    missing_args(2, "missing key operand");
+}
+
+Test::Nebulous->setup;
+
+{
+    my $key = 'foo';
+
+    my $neb = Nebulous::Client->new(
+        proxy => $neb_url,
+    );
+    $neb->create($key);
+
+    $test->run(args => $key);
+
+    is($neb->stat($key)->[6], 1, "correct # of instances");
+    is($? >> 8, 255, "exit code");
+    like($test->stdout, qr/^$/, "stdout");
+    like($test->stderr, qr/not enough instances/, "stderr");
+}
+
+Test::Nebulous->setup;
+
+{
+    my $key = 'foo';
+
+    my $neb = Nebulous::Client->new(
+        proxy => $neb_url,
+    );
+    $neb->create($key);
+    $neb->replicate($key);
+
+    $test->run(args => $key);
+
+    is($neb->stat($key)->[6], 1, "correct # of instances");
+    is($? >> 8, 0, "exit code");
+    like($test->stdout, qr/^$/, "stdout");
+    like($test->stderr, qr/^$/, "stderr");
+}
+
+Test::Nebulous->setup;
+
+{
+    my $key = 'foo';
+
+    my $neb = Nebulous::Client->new(
+        proxy => $neb_url,
+    );
+    $neb->create($key);
+    $neb->replicate($key);
+    $neb->replicate($key);
+
+    $test->run(args => $key);
+
+    is($neb->stat($key)->[6], 2, "correct # of instances");
+    is($? >> 8, 0, "exit code");
+    like($test->stdout, qr/^$/, "stdout");
+    like($test->stderr, qr/^$/, "stderr");
+}
+
+Test::Nebulous->setup;
+
+{
+    my $key = 'foo';
+
+    my $neb = Nebulous::Client->new(
+        proxy => $neb_url,
+    );
+    $neb->create($key);
+
+    $test->run(args => "--one_only " . $key);
+
+    is($neb->stat($key)->[6], 1, "correct # of instances");
+    is($? >> 8, 255, "exit code");
+    like($test->stdout, qr/^$/, "stdout");
+    like($test->stderr, qr/not enough instances/, "stderr");
+}
+
+Test::Nebulous->setup;
+
+{
+    my $key = 'foo';
+
+    my $neb = Nebulous::Client->new(
+        proxy => $neb_url,
+    );
+    $neb->create($key);
+    $neb->replicate($key);
+
+    $test->run(args => "--one_only " . $key);
+
+    is($neb->stat($key)->[6], 1, "correct # of instances");
+    is($? >> 8, 0, "exit code");
+    like($test->stdout, qr/^$/, "stdout");
+    like($test->stderr, qr/^$/, "stderr");
+}
+
+Test::Nebulous->setup;
+
+{
+    my $key = 'foo';
+
+    my $neb = Nebulous::Client->new(
+        proxy => $neb_url,
+    );
+    $neb->create($key);
+    $neb->replicate($key);
+    $neb->replicate($key);
+
+    $test->run(args => "--one_only " . $key);
+
+    is($neb->stat($key)->[6], 1, "correct # of instances");
+    is($? >> 8, 0, "exit code");
+    like($test->stdout, qr/^$/, "stdout");
+    like($test->stderr, qr/^$/, "stderr");
+}
+
+
+Test::Nebulous->cleanup;
+
+sub missing_args
+{
+    my ($exit, $errstr) = @_;
+
+    is($? >> 8, $exit, "error code is: $exit");
+    like($test->stderr, qr/$errstr/, "error string is: $errstr");
+}
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/Makefile
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/Makefile	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/Makefile	(revision 25051)
@@ -58,4 +58,5 @@
 $(SRC)/greference.$(ARCH).o \
 $(SRC)/grefstars.$(ARCH).o \
+$(SRC)/GetZeroPointExposure.$(ARCH).o \
 $(SRC)/LoadStars.$(ARCH).o \
 $(SRC)/LoadHeaders.$(ARCH).o \
@@ -199,4 +200,5 @@
 $(SRC)/replace_match.$(ARCH).o \
 $(SRC)/update_coords.$(ARCH).o \
+$(SRC)/SkyRegionUtils.$(ARCH).o \
 $(SRC)/StarOps.$(ARCH).o \
 $(SRC)/ConfigInit.$(ARCH).o \
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/doc/notes.txt
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/doc/notes.txt	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/doc/notes.txt	(revision 25051)
@@ -1,2 +1,49 @@
+
+2009.08.02
+
+  ZERO POINTS: addstar currently has a couple of inconsistent ways that it 
+  measures or uses image zero points:
+
+  * the standard zero point: data in the database is saved as M_inst +
+    25.0.  This value is written to the image header and checked when
+    the image is loaded.  This is completely archaic, but removing
+    this concept from the DVO system will require some work and some
+    care.  This value is NOT reflected in the image->Mcal values
+
+  * on-the-fly calibration: addstar was used by CFHT skyprobe to
+    measure the sky transparency.  This calculation was done by
+    measuring the zero point between the Tycho stars in the database
+    and the stars in the image.  Star data is saved in
+    AddToCalibration as they are found (in find_matches, or
+    equivalent).  At the end of the match processing, the zero point
+    for the image was calculated with FindCalibration and saved to the
+    image table but NOT the measure table.  For skyprobe, the stars
+    are normally not saved to the database -- the Tycho stars are kept
+    in the measure & average tables, and used as the reference for the
+    zero point calculation above.
+
+  For Pan-STARRS, the zero point analysis is performed by psastro
+  before we run addstar.  However, there are a few ways we could
+  choose to apply the zero point calculation:
+
+  * use the per-chip zero point reported in the individual chip
+    headers (easy, but fairly wrong)
+
+  * calculate the per-exposure zero point from the chip headers and
+    supply.
+
+  * calculate the per-exposure zero point from the MATCHED_REFS table
+
+  We also need to consider the zero point error.  We currently have
+  only dM (poisson error) + dMcal (calibration error).  We need to
+  divide dMsys into dMcal (photometry calibration error) and dMap
+  (aperture correction error).
+
+  * zero point options:
+    * NOMINAL : set Mcal = 0.0
+    * CHIP_HEADER : each chip has zero point in header
+    * PHU_HEADER : a single exposure-wide value in the header
+    * CHIP_AVERAGE : determine zero point for exposure from chip zero points
+    * MATCHED_REFS : recalculate from table
 
 2009.02.11
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/include/2mass.h
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/include/2mass.h	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/include/2mass.h	(revision 25051)
@@ -33,5 +33,5 @@
 e_time    get2mass_date (char *ptr, int Nbound, int Nmax);
 
-int       load2mass_as_rawdata (SkyTable *skytable, char *filename, AddstarClientOptions options);
+int       load2mass_as_rawdata (SkyList *skytable, char *filename, AddstarClientOptions options);
 SkyTable *load2mass_acc (char *path, char *accel);
 int       get2mass_3star (Stars *star, char *line, int Nmax);
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/include/addstar.h
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/include/addstar.h	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/include/addstar.h	(revision 25051)
@@ -73,4 +73,5 @@
 char   TYCHO_DIR[256];
 char   SubpixDatafile[256];
+char   *USE_NAME;
 char   PASSWORD[80];
 char   HOSTNAME[80];
@@ -118,4 +119,7 @@
 double  FAKE_THETA;     // boresite angle for fake images
 
+char    ZERO_POINT_OPTION[64];
+float	ZERO_POINT_OFFSET;
+
 // carries the mosaic into gstars
 
@@ -187,4 +191,5 @@
 HeaderSet *MatchHeaders           PROTO((int **extsize, int *nimage, int mode, Header **headers, int Nheaders));
 int        LoadData               PROTO((FILE *f, char *file, Image **images, int *nvalid, Stars **stars, int *Nstars, Header **headers, int *extsize, HeaderSet *headerSets, int NheaderSets));
+int        GetZeroPointExposure   PROTO((Header **headers, HeaderSet *headerSets, int Nimages));
 
 int        in_image               PROTO((double r, double d, Image *image));
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/src/ConfigInit.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/src/ConfigInit.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/src/ConfigInit.c	(revision 25051)
@@ -77,4 +77,9 @@
   if (!ScanConfig (config, "EXTNAME-KEYWORD",        "%s",  0, ExtnameKeyword)) {
       strcpy (ExtnameKeyword, "EXTNAME"); 
+  }
+
+  // if this config variable is not set, do not set any zero point offset
+  if (!ScanConfig (config, "ZERO_POINT_OPTION", "%s",  0, ZERO_POINT_OPTION)) {
+      strcpy (ZERO_POINT_OPTION, "NOMINAL"); 
   }
 
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/src/GetZeroPointExposure.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/src/GetZeroPointExposure.c	(revision 25051)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/src/GetZeroPointExposure.c	(revision 25051)
@@ -0,0 +1,96 @@
+# include "addstar.h"
+
+// XXX this needs to handle the nominal zero point for the photcode(s) and the airmass term
+int GetZeroPointExposure (Header **headers, HeaderSet *headerSets, int Nimages) {
+
+    if (!strcasecmp(ZERO_POINT_OPTION, "NOMINAL")) {
+	ZERO_POINT_OFFSET = 0.0;
+	return (TRUE);
+    }
+
+    if (!strcasecmp(ZERO_POINT_OPTION, "CHIP_HEADER")) {
+	ZERO_POINT_OFFSET = 0.0;
+	return (TRUE);
+    }
+
+    if (!strcasecmp(ZERO_POINT_OPTION, "CHIP_AVERAGE")) {
+	int i, Nzpt, Nmid, Nhead;
+	float *zpt, ZPT_OBS;
+	PhotCode *photcode;
+	char photname[80];
+
+	Nzpt = 0;
+	ALLOCATE (zpt, float, Nimages);
+
+	for (i = 0; i < Nimages; i++) {
+	    if (!strcmp(headerSets[i].exthead, "PHU")) continue;
+	    Nhead = headerSets[i].extnum_head;
+
+	    if (!gfits_scan (headers[Nhead], "ZPT_OBS", "%f", 1, &ZPT_OBS)) {
+		fprintf (stderr, "zero point not supplied in header\n");
+		continue;
+	    }
+	    
+	    /* get photcode from header */
+	    if (!gfits_scan (headers[Nhead], "PHOTCODE", "%s", 1, photname)) {
+		fprintf (stderr, "photcode not supplied in header\n");
+		continue;
+	    }
+	    photcode = GetPhotcodebyName (photname);
+	    if (photcode == NULL) {
+		fprintf (stderr, "photcode %s not found in photcode table\n", photname);
+		continue;
+	    }
+	    // photcode table stores zero point in milli-mags :
+	    // Mrel = measure[0].M - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal;
+	    // ZERO_POINT above is the standard 25.0
+	    // measure[0].M = Mobs + 2.5log(exptime)
+	    // Mrel should be equivalent to Mref.  thus Mref - Mobs - 2.5log(exptime) = -Mcal
+
+	    zpt[Nzpt] = 0.001*photcode[0].C - ZPT_OBS;
+	    Nzpt ++;
+	}
+	    
+	if (Nzpt == 0) {
+	    fprintf (stderr, "WARNING: zero point is not measured, no valid entries in headers\n");
+	    ZERO_POINT_OFFSET = 0.0;
+	    free (zpt);
+	    return (FALSE);
+	} 
+
+	fsort (zpt, Nzpt);
+	Nmid = Nzpt / 2;  // Nzpt = 1,2,3,4 -> Nmid = 0,1,1,2  2: (0 1), 4: 0 (1 2) 3 
+	ZERO_POINT_OFFSET = (Nzpt % 2) ? zpt[Nmid] : 0.5*(zpt[Nmid] + zpt[Nmid-1]);
+	free (zpt);
+	return (TRUE);
+    }
+    
+    // this option is not consistent with the options for photcodes
+    if (!strcasecmp(ZERO_POINT_OPTION, "PHU_HEADER")) {
+	int i, Nhead;
+	float ZPT_OBS;
+
+	ZERO_POINT_OFFSET = 0.0;
+	for (i = 0; i < Nimages; i++) {
+	    if (strcmp(headerSets[i].exthead, "PHU")) continue;
+	    Nhead = headerSets[i].extnum_head;
+	    
+	    if (!gfits_scan (headers[Nhead], "ZPT_OBS", "%f", 1, &ZPT_OBS)) {
+		fprintf (stderr, "WARNING: zero point is not measured, no valid entries in headers\n");
+		return (FALSE);
+	    }
+	    ZERO_POINT_OFFSET = ZPT_OBS;
+	    return (TRUE);
+	}
+	fprintf (stderr, "WARNING: zero point is not measured, no valid entries in headers\n");
+	return (FALSE);
+    }
+
+    if (!strcasecmp(ZERO_POINT_OPTION, "MATCHED_REFS")) {
+	fprintf (stderr, "ERROR: MATCHED_REFS zero point analysis is not implemented\n");
+	exit (1);
+    }
+
+    fprintf (stderr, "ERROR: invalid value for ZERO_POINT_OPTION: %s\n", ZERO_POINT_OPTION);
+    exit (1);
+}
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/src/LoadData.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/src/LoadData.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/src/LoadData.c	(revision 25051)
@@ -23,5 +23,13 @@
 
   // find image rootname
-  name = filebasename (file);
+  if (USE_NAME) {
+      name = filebasename (USE_NAME);
+  } else {
+      name = filebasename (file);
+  }
+
+  // if zero points are calculated for the full exposure using more than just the matched chip header,
+  // we need to perform that analysis here
+  GetZeroPointExposure (headers, headerSets, Nimages);
 
   // now run through the images, interpret the headers and read the stars
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/src/ReadImageHeader.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/src/ReadImageHeader.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/src/ReadImageHeader.c	(revision 25051)
@@ -8,4 +8,5 @@
   double tmp, sec, Cerror, ZeroPt, FWHM_X, FWHM_Y;
   char *c, photname[64], line[80];
+  PhotCode *photcodeData = NULL;
 
   // zero out the entire image structure
@@ -104,9 +105,10 @@
       return (FALSE);
     }
-    photcode = GetPhotcodeCodebyName (photname);
-    if (photcode == 0) {
+    photcodeData = GetPhotcodebyName (photname);
+    if (photcodeData == NULL) {
       fprintf (stderr, "photcode %s not found in photcode table\n", photname);
       return (FALSE);
     }
+    photcode = photcodeData[0].code;
   }
   if (photcode == 0) { 
@@ -191,4 +193,8 @@
   }
 
+  // XXX this is archaic: we used to set a fixed zero point of 25 to shift data into the range
+  // 0 - 32 so it would fit in an unsigned int.  This is also needed because some programs like
+  // sextractor will put in an arbitrary zero point that we need to understand to get back to
+  // instrumental mags.  
   gfits_scan (header, "ZERO_PT", "%lf", 1, &ZeroPt);
   if (ZeroPt != GetZeroPoint()) {
@@ -197,6 +203,17 @@
   }
 
+  // if it exists, find the 
+  if (!strcasecmp(ZERO_POINT_OPTION, "CHIP_HEADER")) {
+      float ZPT_OBS;
+      if (!photcodeData || !gfits_scan (header, "ZPT_OBS", "%f", 1, &ZPT_OBS)) {
+	  fprintf (stderr, "zero point not supplied in header\n");
+	  ZERO_POINT_OFFSET = 0.0;
+      } else {
+	  ZERO_POINT_OFFSET = 0.001*photcodeData[0].C - ZPT_OBS;
+      }	  
+  }
+
   /* secz is in units milli-airmass */
-  image[0].Mcal = 0.0;
+  image[0].Mcal = ZERO_POINT_OFFSET;
   image[0].Xm   = NAN_S_SHORT;
   image[0].flags = 0;
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/src/SkyRegionUtils.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/src/SkyRegionUtils.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/src/SkyRegionUtils.c	(revision 25051)
@@ -11,4 +11,5 @@
   ALLOCATE (subset, SkyList, 1);
   ALLOCATE (subset[0].regions, SkyRegion *, NSUBSET);
+  ALLOCATE (subset[0].filename, char *, NSUBSET);
   subset[0].ownElements = FALSE; // free these elements when freeing the list
 
@@ -20,6 +21,11 @@
 
     subset[0].regions[Nsubset] = input[0].regions[i];
+    subset[0].filename[Nsubset] = input[0].filename[i];
     Nsubset ++;
-    CHECK_REALLOCATE (subset[0].regions, SkyRegion *, NSUBSET, Nsubset, 100);
+    if (Nsubset >= NSUBSET) {
+	NSUBSET += 100;
+	REALLOCATE (subset[0].regions, SkyRegion *, NSUBSET);
+	REALLOCATE (subset[0].filename, char *, NSUBSET);
+    }
     subset[0].Nregions = Nsubset;
   }
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/src/args.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/src/args.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/src/args.c	(revision 25051)
@@ -46,4 +46,11 @@
   if ((N = get_argument (argc, argv, "-list"))) {
     options.filelist = TRUE;
+    remove_argument (N, &argc, argv);
+  }
+
+  USE_NAME = NULL;
+  if ((N = get_argument (argc, argv, "-use-name"))) {
+    remove_argument (N, &argc, argv);
+    USE_NAME = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/src/args_load2mass.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/src/args_load2mass.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/src/args_load2mass.c	(revision 25051)
@@ -38,4 +38,10 @@
   }
 
+  /* only add to existing regions */
+  options.existing_regions = FALSE;
+  if ((N = get_argument (argc, argv, "-existing-regions"))) {
+    options.existing_regions = TRUE;
+    remove_argument (N, &argc, argv);
+  }
   /* only add to existing objects */
   options.only_match = FALSE;
@@ -62,5 +68,4 @@
   options.timeref = 0; 
   options.mosaic = FALSE;
-  options.existing_regions = FALSE;
   options.skip_missed = FALSE;
   options.closest = FALSE;
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/src/load2mass.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/src/load2mass.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/src/load2mass.c	(revision 25051)
@@ -7,4 +7,6 @@
   int i;
   SkyTable *sky, *sky2mass;
+  SkyList *skylist = NULL;
+  SkyList *overlap = NULL;
   AddstarClientOptions options;
 
@@ -13,7 +15,19 @@
   options = args_load2mass (argc, argv, options);
 
+  // load the full sky description table:
   sky = SkyTableLoadOptimal (CATDIR, SKY_TABLE, GSCFILE, SKY_DEPTH, VERBOSE);
   SkyTableSetFilenames (sky, CATDIR, "cpt");
   
+  // generate the subset matching the user-selected region
+  skylist = SkyListByPatch (sky, -1, &UserPatch);
+
+  // if we only match to existing (already populated) regions, limit the select to those regions:
+  if (options.existing_regions) {
+    SkyList *tmp;
+    tmp = SkyListExistingSubset (skylist, CATDIR);
+    SkyListFree (skylist);
+    skylist = tmp;
+  }
+
   path = TWO_MASS_DIR_AS;
 
@@ -23,6 +37,14 @@
   
   for (i = 0; i < sky2mass[0].Nregions; i++) {
+    // check if any of the skylist entries overlap this 2mass catalog:
+    overlap = SkyListByBounds_List (skylist, -1, sky2mass[0].regions[i].Rmin, sky2mass[0].regions[i].Rmax, sky2mass[0].regions[i].Dmin, sky2mass[0].regions[i].Dmax);
+    if (overlap[0].Nregions == 0) {
+      SkyListFree (overlap);
+      continue;
+    }
+    
     fprintf (stderr, "loading %s\n", sky2mass[0].filename[i]);
-    load2mass_as_rawdata (sky, sky2mass[0].filename[i], options);
+    load2mass_as_rawdata (overlap, sky2mass[0].filename[i], options);
+    SkyListFree (overlap);
   }
   exit (0);
Index: /branches/czw_branch/cleanup/Ohana/src/addstar/src/load2mass_as_rawdata.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/addstar/src/load2mass_as_rawdata.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/addstar/src/load2mass_as_rawdata.c	(revision 25051)
@@ -10,5 +10,5 @@
 # define DEBUG 0
 
-int load2mass_as_rawdata (SkyTable *skytable, char *filename, AddstarClientOptions options) {
+int load2mass_as_rawdata (SkyList *skytable, char *filename, AddstarClientOptions options) {
   
   int i, j, verbose;
@@ -109,4 +109,13 @@
       if (tstars[i].D > UserPatch.Dmax) continue;
 
+      // identify the relevant catalog
+      skylist = SkyRegionByPoint_List (skytable, -1, tstars[i].R, tstars[i].D);
+      if (skylist[0].Nregions == 0) {
+	  SkyListFree (skylist);
+	  continue;
+      }
+      region = skylist[0].regions[0];
+      if (DEBUG) fprintf (stderr, "writing to %s\n", skylist[0].filename[0]);
+
       // collect array of (Stars *) stars in a new output catalog
       Nstars = 0;
@@ -114,9 +123,5 @@
       ALLOCATE (stars, Stars *, NSTARS);
 
-      // identify the relevant catalog
-      skylist = SkyRegionByPoint (skytable, -1, tstars[i].R, tstars[i].D);
-      region = skylist[0].regions[0];
-      if (DEBUG) fprintf (stderr, "writing to %s\n", skylist[0].filename[0]);
-
+      // loop over stars in this 2mass region that are also in this output region
       for (j = i; j < Ntstars; j++) {
 	if (tstars[j].flag) continue;
@@ -166,5 +171,5 @@
       }
 
-      if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f\n", Nstars, 
+      if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", Nstars, 
 			  region[0].Rmin, region[0].Rmax, region[0].Dmin, region[0].Dmax);
 
Index: /branches/czw_branch/cleanup/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/libdvo/include/dvo.h	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/libdvo/include/dvo.h	(revision 25051)
@@ -311,4 +311,5 @@
 float PhotInst (Measure *measure);
 float PhotCat (Measure *measure);
+float PhotAper (Measure *measure);
 float PhotSys (Measure *measure, Average *average, SecFilt *secfilt);
 float PhotRel (Measure *measure, Average *average, SecFilt *secfilt);
@@ -441,4 +442,5 @@
 SkyList   *SkyListByBounds     	   PROTO((SkyTable *table, int depth, double Rmin, double Rmax, double Dmin, double Dmax));
 SkyList   *SkyListChildrenByBounds PROTO((SkyTable *table, int No, int depth, double Rmin, double Rmax, double Dmin, double Dmax));
+
 int        SkyListMerge     	   PROTO((SkyList **outlist, SkyList *newlist));
 int        SkyListFree             PROTO((SkyList *list));
@@ -447,4 +449,8 @@
 int        SkyTableSetFilenames    PROTO((SkyTable *sky, char *path, char *ext));
 
+SkyList   *SkyRegionByPoint_List   PROTO((SkyList *inList, int depth, double ra, double dec));
+SkyList   *SkyListByBounds_List    PROTO((SkyList *table, int depth, double Rmin, double Rmax, double Dmin, double Dmax));
+SkyList   *SkyListChildrenByBounds_List PROTO((SkyList *table, int depth, double Rmin, double Rmax, double Dmin, double Dmax));
+
 /* dvo-specific sorting functions */
 void sortave (Average *ave, int N);
Index: /branches/czw_branch/cleanup/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 25051)
@@ -249,4 +249,23 @@
   code = &photcodes[0].code[Np];
   Mcat = measure[0].M - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C;
+  
+  return (Mcat);
+}
+
+float PhotAper (Measure *measure) {
+
+  int Np;
+  float Mcat;
+  PhotCode *code;
+
+  Np = photcodes[0].hashcode[measure[0].photcode];
+  if (Np == -1) return (NAN);
+
+  if (photcodes[0].code[Np].type == PHOT_REF) {
+    Mcat = measure[0].Map;
+    return (Mcat);
+  }
+  code = &photcodes[0].code[Np];
+  Mcat = measure[0].Map - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C;
   
   return (Mcat);
Index: /branches/czw_branch/cleanup/Ohana/src/libdvo/src/skyregion_ops.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/libdvo/src/skyregion_ops.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/libdvo/src/skyregion_ops.c	(revision 25051)
@@ -300,4 +300,128 @@
 	  REALLOCATE (list[0].filename, char *, NNEW);
       }
+    }
+  }
+
+  list[0].Nregions = Nnew;
+  return (list);
+}
+
+/* find region which overlaps c at given depth (-1 : populated ) */
+SkyList *SkyRegionByPoint_List (SkyList *inList, int depth, double ra, double dec) {
+  
+  int i;
+  SkyRegion **region;
+  SkyList *list;
+
+  ALLOCATE (list, SkyList, 1);
+  ALLOCATE (list[0].regions,  SkyRegion *, 1);
+  ALLOCATE (list[0].filename,  char *, 1);
+  list[0].Nregions = 0;
+  list[0].ownElements = FALSE; // this list is only holding a view to the elements
+
+  region = inList[0].regions;
+
+  for (i = 0; i < inList[0].Nregions; i++) {
+
+    // once we pass our desired depth, quit
+    if ((depth > -1) && (depth < region[i][0].depth)) break;
+
+    // skip tables that do not overlap 
+    if (ra  < region[i][0].Rmin) continue;
+    if (ra  > region[i][0].Rmax) continue;
+    if (dec < region[i][0].Dmin) continue;
+    if (dec > region[i][0].Dmax) continue;
+
+    // skip tables that are not at our depth
+    if ((depth >  -1) && (depth > region[i][0].depth)) continue;
+    if ((depth == -1) && (region[i][0].table == FALSE)) continue;
+    
+    list[0].regions[0] = region[i];
+    list[0].filename[0] = inList[0].filename[i];
+    list[0].Nregions = 1;
+    break;
+  }
+  return (list);
+}
+
+SkyList *SkyListByBounds_List (SkyList *table, int depth, double Rmin, double Rmax, double Dmin, double Dmax) {
+
+  int i, j, Ns;
+  SkyList *list, *extra;
+
+  Rmin = ohana_normalize_angle (Rmin);
+  Rmax = ohana_normalize_angle (Rmax);
+
+  /* handle 0,360 boundary requests */
+  /* this is probably wrong: I will get duplicates for all Dec bands... */
+  if (Rmin > Rmax) {
+    list = SkyListChildrenByBounds_List (table, depth, 0.0, Rmax, Dmin, Dmax);
+
+    extra = SkyListChildrenByBounds_List (table, depth, Rmin, 360.0, Dmin, Dmax);
+    REALLOCATE (list[0].regions, SkyRegion *, list[0].Nregions + extra[0].Nregions);
+    REALLOCATE (list[0].filename, char *, list[0].Nregions + extra[0].Nregions);
+    Ns = list[0].Nregions;
+    for (i = 0; i < extra[0].Nregions; i++) {
+      // search for pre-existing match
+      for (j = 0; j < list[0].Nregions; j++) {
+	if (list[0].regions[j] == extra[0].regions[i]) {
+	  goto skip;
+	}
+      }
+      list[0].regions[Ns] = extra[0].regions[i];
+      list[0].filename[Ns] = extra[0].filename[i];
+      Ns ++;
+    skip:
+      continue;
+    }
+    list[0].Nregions = Ns;
+    SkyListFree (extra);
+  } else {
+    list = SkyListChildrenByBounds_List (table, depth, Rmin, Rmax, Dmin, Dmax);
+  }
+
+  return (list);
+}
+
+SkyList *SkyListChildrenByBounds_List (SkyList *table, int depth, double Rmin, double Rmax, double Dmin, double Dmax) {
+
+  int i, j, Ns, Ne, Nnew, NNEW;
+  int append;
+  SkyList *children;
+  SkyList *list;
+  SkyRegion **region;
+
+  Nnew = 0;
+  NNEW = 50;
+  ALLOCATE (list, SkyList, 1);
+  ALLOCATE (list[0].regions, SkyRegion *, NNEW);
+  ALLOCATE (list[0].filename, char *, NNEW);
+  list[0].ownElements = FALSE; // this list is only holding a view to the elements
+
+  region = table[0].regions;
+
+  // can we assume the skylist is globally sorted by depth?  i think so...
+  for (i = 0; i < table[0].Nregions; i++) {
+    
+    // once we pass our desired depth, quit
+    if ((depth > -1) && (depth < region[i][0].depth)) break;
+
+    // skip tables that do not overlap 
+    if (Rmax <= region[i][0].Rmin) continue;
+    if (Rmin >= region[i][0].Rmax) continue;
+    if (Dmax <= region[i][0].Dmin) continue;
+    if (Dmin >= region[i][0].Dmax) continue;
+
+    // skip tables that are not at our depth
+    if ((depth >  -1) && (depth > region[i][0].depth)) continue;
+    if ((depth == -1) && (region[i][0].table == FALSE)) continue;
+
+    list[0].regions[Nnew] = region[i];
+    list[0].filename[Nnew] = table[0].filename[i];
+    Nnew ++;
+    if (Nnew >= NNEW) {
+      NNEW += 50;
+      REALLOCATE (list[0].regions, SkyRegion *, NNEW);
+      REALLOCATE (list[0].filename, char *, NNEW);
     }
   }
Index: /branches/czw_branch/cleanup/Ohana/src/opihi/dvo/dbExtractMeasures.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/opihi/dvo/dbExtractMeasures.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/opihi/dvo/dbExtractMeasures.c	(revision 25051)
@@ -117,4 +117,7 @@
 	case MAG_REF:
 	  value.Flt = PhotRef  (equiv, average, secfilt, measure); 
+	  break;
+	case MAG_APER:
+	  value.Flt = PhotAper  (measure); 
 	  break;
 	case MAG_ERR:
Index: /branches/czw_branch/cleanup/Ohana/src/opihi/dvo/dbFields.c
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/opihi/dvo/dbFields.c	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/opihi/dvo/dbFields.c	(revision 25051)
@@ -37,4 +37,6 @@
   if (!strcasecmp (string, "ave"))   	 return (MAG_AVE);
   if (!strcasecmp (string, "ref"))   	 return (MAG_REF);
+  if (!strcasecmp (string, "ap"))   	 return (MAG_APER);
+  if (!strcasecmp (string, "aper"))   	 return (MAG_APER);
   if (!strcasecmp (string, "err"))   	 return (MAG_ERR);
   if (!strcasecmp (string, "photflags")) return (MAG_PHOT_FLAGS);
Index: /branches/czw_branch/cleanup/Ohana/src/opihi/include/dvoshell.h
===================================================================
--- /branches/czw_branch/cleanup/Ohana/src/opihi/include/dvoshell.h	(revision 25050)
+++ /branches/czw_branch/cleanup/Ohana/src/opihi/include/dvoshell.h	(revision 25051)
@@ -27,4 +27,5 @@
       MAG_INST, 
       MAG_CAT, 
+      MAG_APER, 
       MAG_SYS, 
       MAG_REL, 
Index: /branches/czw_branch/cleanup/PS-IPP-PStamp/lib/PS/IPP/PStamp/Job.pm
===================================================================
--- /branches/czw_branch/cleanup/PS-IPP-PStamp/lib/PS/IPP/PStamp/Job.pm	(revision 25050)
+++ /branches/czw_branch/cleanup/PS-IPP-PStamp/lib/PS/IPP/PStamp/Job.pm	(revision 25051)
@@ -232,13 +232,12 @@
         }
         my $out = $image;
+
         # if uri is nil this will get overridded below
+        # (this is for raw stage)
         $out->{image}  = $image->{uri};
-#        $out->{exp_id} = $image->{exp_id};
-#        $out->{exp_name} = $image->{exp_name};
-#        $out->{state}  = $image->{state}; # state is undef for rawExp, but that's ok
-#        if ($set_class_id) {
-#            $class_id = $image->{class_id};
-#            $out->{class_id} = $class_id;
-#        }
+        if ($set_class_id) {
+            $class_id = $image->{class_id};
+            $out->{component} = $class_id;
+        }
 
         # find the mask and weight images
@@ -248,6 +247,4 @@
             $out->{weight} = $ipprc->filename($weight_name, $base, $class_id) if $weight_name;
         }
-#        $out->{camera} = $camera;
-
         $out->{astrom} = find_astrometry($ipprc, $image_db, $image, $verbose) if $want_astrom;
 
@@ -441,4 +438,9 @@
 }
 
+# cache of results of ppConfigDump
+my %astromSources;
+my $last_exp_id = 0;
+my $lastAstromFile;
+
 # find the astrometry file for a given exposure
 # return undef if no completed camRun exists
@@ -449,4 +451,12 @@
     my $verbose = shift;
 
+    my $exp_id = $image->{exp_id};
+    if (($exp_id eq $last_exp_id) and $lastAstromFile) {
+        # running camtool 60 times is really expensive when the answer is the same
+        return $lastAstromFile;
+    }
+    $last_exp_id = 0;
+    $lastAstromFile = undef;
+
     my $missing_tools;
     my $camtool = can_run("camtool") or (warn "Can't find camtool" and $missing_tools = 1);
@@ -457,5 +467,5 @@
     }
 
-    my $command = "$camtool -dbname $image_db -processedexp -exp_id $image->{exp_id}";
+    my $command = "$camtool -dbname $image_db -processedexp -exp_id $exp_id";
     # run the tool and parse the output
     my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
@@ -487,6 +497,6 @@
     my $camRoot = $camdata->{path_base};
     my $camera = $image->{camera};
-    my $astromSource;
-    {
+    my $astromSource = $astromSources{$camera};
+    if (!$astromSource) {
        my $command = "$ppConfigDump -camera $camera -dump-recipe PSWARP -";
         my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
@@ -499,7 +509,12 @@
             die("Unable to parse metadata config doc");
         $astromSource = metadataLookupStr($metadata, 'ASTROM.SOURCE');
+        $astromSources{$camera} = $astromSource;
     }
 
     my $astromFile = $ipprc->filename($astromSource, $camRoot);
+    if ($astromFile) {
+        $lastAstromFile = $astromFile;
+        $last_exp_id = $exp_id;
+    }
 
     return $astromFile;
Index: /branches/czw_branch/cleanup/archive/ducttape/fix_compress.c
===================================================================
--- /branches/czw_branch/cleanup/archive/ducttape/fix_compress.c	(revision 25051)
+++ /branches/czw_branch/cleanup/archive/ducttape/fix_compress.c	(revision 25051)
@@ -0,0 +1,117 @@
+// Program to fix bug in FITS images written with psLib prior to trunk@r25002.  For these images, funpack
+// won't put a single compressed image back in the PHU because they are missing ZSIMPLE.  This program simply
+// reads the FITS file and writes it back out the way it came in, but since psLib is fixed, the output should
+// behave well with funpack.
+#include <stdio.h>
+#include <string.h>
+#include <pslib.h>
+
+int main(int argc, char *argv[])
+{
+    if (argc != 3) {
+        fprintf(stderr, "Insufficient arguments.  Please supply input FITS file and output FITS file.");
+        return PS_EXIT_CONFIG_ERROR;
+    }
+    const char *inName = argv[1];
+    const char *outName = argv[2];
+
+    if (strcmp(inName, outName) == 0) {
+        fprintf(stderr, "Can't overwrite input image.");
+        return PS_EXIT_CONFIG_ERROR;
+    }
+
+    psFits *inFits = psFitsOpen(inName, "r");
+    psFits *outFits = psFitsOpen(outName, "w");
+    outFits->options = psFitsOptionsAlloc();
+
+    int numExt = psFitsGetSize(inFits);
+    for (int i = 0; i < numExt; i++) {
+        if (!psFitsMoveExtNum(inFits, i, false)) {
+            psErrorStackPrint(stderr, "Can't move to extension %d\n", i);
+            return PS_EXIT_SYS_ERROR;
+        }
+
+        if (i == 0 && psFitsCheckCompressedImagePHU(inFits, NULL)) {
+            // We're now positioned on the image
+            i++;
+        }
+
+        psMetadata *header = psFitsReadHeader(NULL, inFits);
+        psString extname = psFitsGetExtName(inFits);
+        psFitsType type = psFitsGetExtType(inFits);
+        switch (type) {
+          case PS_FITS_TYPE_IMAGE: {
+              int naxis = psMetadataLookupS32(NULL, header, "NAXIS");
+              if (naxis == 0) {
+                  if (!psFitsWriteBlank(outFits, header, extname)) {
+                      psErrorStackPrint(stderr, "Can't write blank extension %d\n", i);
+                      return PS_EXIT_SYS_ERROR;
+                  }
+              } else {
+                  psString compType = psMetadataLookupStr(NULL, header, "ZCMPTYPE");
+                  if (compType) {
+                      psVector *tile = psVectorAlloc(3, PS_TYPE_S32);
+                      psVectorInit(tile, 0);
+                      for (int i = 0; i < naxis; i++) {
+                          psString name = NULL;
+                          psStringAppend(&name, "ZTILE%d", i + 1);
+                          tile->data.S32[i] = psMetadataLookupS32(NULL, header, name);
+                          psFree(name);
+                      }
+                      psFitsCompressionType type = psFitsCompressionTypeFromString(compType);
+                      psFitsSetCompression(outFits, type, tile, 8, 0, 0);
+                      psFree(tile);
+                  } else {
+                      psFitsSetCompression(outFits, PS_FITS_COMPRESS_NONE, NULL, 8, 0, 0);
+                  }
+
+                  outFits->options->bitpix = psMetadataLookupS32(NULL, header, "BITPIX");
+                  outFits->options->bscale = psMetadataLookupF64(NULL, header, "BSCALE");
+                  outFits->options->bzero = psMetadataLookupF64(NULL, header, "BZERO");
+                  if (isfinite(outFits->options->bscale) && isfinite(outFits->options->bzero)) {
+                      outFits->options->scaling = PS_FITS_SCALE_MANUAL;
+                  } else {
+                      outFits->options->scaling = PS_FITS_SCALE_NONE;
+                  }
+                  outFits->options->fuzz = false;
+
+                  psArray *cube = psFitsReadImageCube(inFits, psRegionSet(0,0,0,0));
+                  if (!cube) {
+                      psErrorStackPrint(stderr, "Can't read image(s) from extension %d\n", i);
+                      return PS_EXIT_SYS_ERROR;
+                  }
+                  if (!psFitsWriteImageCube(outFits, header, cube, extname)) {
+                      psErrorStackPrint(stderr, "Can't write image(s) to extension %d\n", i);
+                      return PS_EXIT_SYS_ERROR;
+                  }
+                  psFree(cube);
+              }
+              break;
+          }
+          case PS_FITS_TYPE_BINARY_TABLE:
+          case PS_FITS_TYPE_ASCII_TABLE: {
+              psArray *table = psFitsReadTable(inFits);
+              if (!table) {
+                  psErrorStackPrint(stderr, "Can't read table from extension %d\n", i);
+                  return PS_EXIT_SYS_ERROR;
+              }
+              if (!psFitsWriteTable(outFits, header, table, extname)) {
+                  psErrorStackPrint(stderr, "Can't write table to extension %d\n", i);
+                  return PS_EXIT_SYS_ERROR;
+              }
+              psFree(table);
+              break;
+          }
+          default:
+            psAbort("Unrecognised FITS extension type: %x\n", type);
+        }
+
+        psFree(header);
+        psFree(extname);
+    }
+
+    psFitsClose(inFits);
+    psFitsClose(outFits);
+
+    return PS_EXIT_SUCCESS;
+}
Index: /branches/czw_branch/cleanup/arclog/arclog.pl
===================================================================
--- /branches/czw_branch/cleanup/arclog/arclog.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/arclog/arclog.pl	(revision 25051)
@@ -19,8 +19,9 @@
 use Pod::Usage qw( pod2usage );
 
-my ($email);
+my ($debug, $email);
 
 GetOptions(
-    'email|s=s'    => \$email,
+    'debug|d'   => \$debug,
+    'email|s=s' => \$email,
 ) || pod2usage( 2 );
 
@@ -176,6 +177,8 @@
         = @$rec{qw( host time device event elapse_time errors )};
     # pack record
-    $query->execute("$host|$time|$device|$event|$elapse_time|$errors")
+    my $rec = "$host|$time|$device|$event|$elapse_time|$errors";
+    $query->execute($rec)
         or die "database error: $!";
+    warn "inserting $rec\n" if $debug;
 
     # do not print filtered records
Index: /branches/czw_branch/cleanup/arclog/arclog_readdb.pl
===================================================================
--- /branches/czw_branch/cleanup/arclog/arclog_readdb.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/arclog/arclog_readdb.pl	(revision 25051)
@@ -19,5 +19,5 @@
 pod2usage( -msg => "Unknown option: @ARGV", -exitval => 2 ) if @ARGV;
 
-my $filter_records = 1;
+my $filter_records = 0;
 
 my $rcfile = "$ENV{HOME}/.arclogrc";
@@ -30,5 +30,5 @@
 die "can not open logdb" unless $dbh;
 
-my $query = $dbh->prepare("SELECT * FROM log")
+my $query = $dbh->prepare("SELECT record, stamp FROM log")
     or die "database error: $!";
 $query->execute or die "database error: $!";
@@ -52,4 +52,5 @@
     @rec{qw( host time device event elapse_time errors )} 
         = split(/\|/, $row->[0]);
+    $rec{stamp} = $row->[1];
     $rec{time} = $strptime->parse_datetime($rec{time});
     push @records, \%rec;
@@ -60,6 +61,6 @@
 
 RECORDS: foreach my $rec (@records) {
-    my ($host, $time, $device, $event, $elapse_time, $errors)
-        = @$rec{qw( host time device event elapse_time errors )};
+    my ($host, $stamp, $time, $device, $event, $elapse_time, $errors)
+        = @$rec{qw( host stamp time device event elapse_time errors )};
 
     # do not print filtered records
@@ -71,5 +72,5 @@
 
     no warnings qw( uninitialized );
-    print "$host $time $device $event $elapse_time $errors\n";
+    print "$stamp - $host $time $device $event $elapse_time $errors\n";
     use warnings;
 }
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/CVS/Entries
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/CVS/Entries	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/CVS/Entries	(revision 25051)
@@ -0,0 +1,8 @@
+/installcd-2.6.19.config/1.2/Fri Apr  4 21:09:33 2008//
+/installcd-stage1-minimal.spec/1.3/Fri Apr  4 21:09:33 2008/-kb/
+/installcd-stage2-minimal.spec/1.6/Fri Apr  4 21:09:33 2008/-kb/
+D/portage////
+/stage1.spec/1.3/Tue Jul  8 21:05:13 2008/-kb/
+/stage2.spec/1.3/Tue Jul  8 21:05:23 2008/-kb/
+/stage3.spec/1.3/Tue Jul  8 21:05:30 2008/-kb/
+/stage4.spec/1.1/Tue Jul  8 21:07:50 2008//
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/CVS/Repository
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/CVS/Repository	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/CVS/Repository	(revision 25051)
@@ -0,0 +1,1 @@
+datasys/IPP/hw/livecds/2007.0-specs
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/CVS/Root
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/CVS/Root	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/CVS/Root	(revision 25051)
@@ -0,0 +1,1 @@
+jhoblitt@cvs.pan-starrs.ifa.hawaii.edu:/cvsroot/pan-starrs
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/installcd-2.6.19.config
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/installcd-2.6.19.config	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/installcd-2.6.19.config	(revision 25051)
@@ -0,0 +1,2658 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.19-gentoo-r5
+# Sat Mar 10 22:04:41 2007
+#
+CONFIG_X86_64=y
+CONFIG_64BIT=y
+CONFIG_X86=y
+CONFIG_ZONE_DMA32=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_DMI=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_IPC_NS=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+# CONFIG_TASK_DELAY_ACCT is not set
+CONFIG_UTS_NS=y
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_CPUSETS=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_TASK_XACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_STOP_MACHINE=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+CONFIG_LSF=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# Processor type and features
+#
+CONFIG_X86_PC=y
+# CONFIG_X86_VSMP is not set
+CONFIG_MK8=y
+# CONFIG_MPSC is not set
+# CONFIG_GENERIC_CPU is not set
+CONFIG_X86_L1_CACHE_BYTES=64
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_INTERNODE_CACHE_BYTES=64
+CONFIG_X86_TSC=y
+CONFIG_X86_GOOD_APIC=y
+CONFIG_MICROCODE=m
+CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_X86_MSR=m
+CONFIG_X86_CPUID=m
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_MTRR=y
+CONFIG_SMP=y
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT_BKL=y
+# CONFIG_NUMA is not set
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_RESOURCES_64BIT=y
+CONFIG_NR_CPUS=32
+CONFIG_HOTPLUG_CPU=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_HPET_TIMER=y
+CONFIG_IOMMU=y
+CONFIG_CALGARY_IOMMU=y
+CONFIG_SWIOTLB=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+CONFIG_KEXEC=y
+CONFIG_CRASH_DUMP=y
+CONFIG_PHYSICAL_START=0x200000
+CONFIG_SECCOMP=y
+# CONFIG_CC_STACKPROTECTOR is not set
+CONFIG_HZ_100=y
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+# CONFIG_REORDER is not set
+CONFIG_K8_NB=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_ISA_DMA_API=y
+CONFIG_GENERIC_PENDING_IRQ=y
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_SOFTWARE_SUSPEND=y
+CONFIG_PM_STD_PARTITION=""
+CONFIG_SUSPEND_SMP=y
+
+#
+# ACPI (Advanced Configuration and Power Interface) Support
+#
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_SLEEP_PROC_FS=y
+# CONFIG_ACPI_SLEEP_PROC_SLEEP is not set
+CONFIG_ACPI_AC=m
+CONFIG_ACPI_BATTERY=m
+CONFIG_ACPI_BUTTON=m
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI_HOTKEY=m
+CONFIG_ACPI_FAN=m
+CONFIG_ACPI_DOCK=m
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_THERMAL=m
+CONFIG_ACPI_ASUS=m
+CONFIG_ACPI_IBM=m
+CONFIG_ACPI_TOSHIBA=m
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=m
+# CONFIG_ACPI_SBS is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=m
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=m
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+
+#
+# CPUFreq processor drivers
+#
+CONFIG_X86_POWERNOW_K8=m
+CONFIG_X86_POWERNOW_K8_ACPI=y
+CONFIG_X86_SPEEDSTEP_CENTRINO=m
+CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
+CONFIG_X86_ACPI_CPUFREQ=m
+
+#
+# shared options
+#
+# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
+CONFIG_X86_P4_CLOCKMOD=m
+CONFIG_X86_SPEEDSTEP_LIB=m
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEAER=y
+CONFIG_PCI_MSI=y
+# CONFIG_PCI_DEBUG is not set
+CONFIG_HT_IRQ=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_PCCARD_NONSTATIC=m
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=m
+CONFIG_IA32_EMULATION=y
+# CONFIG_IA32_AOUT is not set
+CONFIG_COMPAT=y
+CONFIG_SYSVIPC_COMPAT=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_NET_KEY=m
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+# CONFIG_IP_ROUTE_FWMARK is not set
+CONFIG_IP_ROUTE_MULTIPATH=y
+# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+CONFIG_NETWORK_SECMARK=y
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+CONFIG_IP_NF_CT_ACCT=y
+CONFIG_IP_NF_CONNTRACK_MARK=y
+CONFIG_IP_NF_CONNTRACK_SECMARK=y
+CONFIG_IP_NF_CONNTRACK_EVENTS=y
+CONFIG_IP_NF_CONNTRACK_NETLINK=m
+CONFIG_IP_NF_CT_PROTO_SCTP=m
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+CONFIG_IP_NF_NETBIOS_NS=m
+CONFIG_IP_NF_TFTP=m
+CONFIG_IP_NF_AMANDA=m
+CONFIG_IP_NF_PPTP=m
+CONFIG_IP_NF_H323=m
+CONFIG_IP_NF_SIP=m
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_MATCH_HASHLIMIT=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_TARGET_TCPMSS=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
+CONFIG_IP_NF_NAT_FTP=m
+CONFIG_IP_NF_NAT_TFTP=m
+CONFIG_IP_NF_NAT_AMANDA=m
+CONFIG_IP_NF_NAT_PPTP=m
+CONFIG_IP_NF_NAT_H323=m
+CONFIG_IP_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+# CONFIG_NET_SCH_CLK_JIFFIES is not set
+CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
+# CONFIG_NET_SCH_CLK_CPU is not set
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+# CONFIG_NET_SCH_NETEM is not set
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_PEDIT=m
+# CONFIG_NET_ACT_SIMP is not set
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_ESTIMATOR=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+CONFIG_DONGLE=y
+CONFIG_ESI_DONGLE=m
+CONFIG_ACTISYS_DONGLE=m
+CONFIG_TEKRAM_DONGLE=m
+CONFIG_TOIM3232_DONGLE=m
+CONFIG_LITELINK_DONGLE=m
+CONFIG_MA600_DONGLE=m
+CONFIG_GIRBIL_DONGLE=m
+CONFIG_MCP2120_DONGLE=m
+CONFIG_OLD_BELKIN_DONGLE=m
+CONFIG_ACT200L_DONGLE=m
+
+#
+# Old SIR device drivers
+#
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+CONFIG_MCS_FIR=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+# CONFIG_BT_CMTP is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
+CONFIG_FIB_RULES=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+CONFIG_PARPORT_SERIAL=m
+CONFIG_PARPORT_PC_FIFO=y
+CONFIG_PARPORT_PC_SUPERIO=y
+CONFIG_PARPORT_PC_PCMCIA=m
+CONFIG_PARPORT_NOT_PC=y
+# CONFIG_PARPORT_GSC is not set
+CONFIG_PARPORT_AX88796=m
+CONFIG_PARPORT_1284=y
+
+#
+# Plug and Play support
+#
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=m
+CONFIG_PARIDE=m
+CONFIG_PARIDE_PARPORT=m
+
+#
+# Parallel IDE high-level drivers
+#
+CONFIG_PARIDE_PD=m
+CONFIG_PARIDE_PCD=m
+CONFIG_PARIDE_PF=m
+CONFIG_PARIDE_PT=m
+CONFIG_PARIDE_PG=m
+
+#
+# Parallel IDE protocol modules
+#
+CONFIG_PARIDE_ATEN=m
+CONFIG_PARIDE_BPCK=m
+CONFIG_PARIDE_COMM=m
+CONFIG_PARIDE_DSTR=m
+CONFIG_PARIDE_FIT2=m
+CONFIG_PARIDE_FIT3=m
+CONFIG_PARIDE_EPAT=m
+CONFIG_PARIDE_EPATC8=y
+CONFIG_PARIDE_EPIA=m
+CONFIG_PARIDE_FRIQ=m
+CONFIG_PARIDE_FRPW=m
+CONFIG_PARIDE_KBIC=m
+CONFIG_PARIDE_KTTI=m
+CONFIG_PARIDE_ON20=m
+CONFIG_PARIDE_ON26=m
+CONFIG_BLK_CPQ_DA=m
+CONFIG_BLK_CPQ_CISS_DA=m
+# CONFIG_CISS_SCSI_TAPE is not set
+CONFIG_BLK_DEV_DAC960=m
+CONFIG_BLK_DEV_UMEM=m
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_SX8=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+# CONFIG_IBM_ASM is not set
+# CONFIG_SGI_IOC4 is not set
+CONFIG_TIFM_CORE=m
+CONFIG_TIFM_7XX1=m
+CONFIG_MSI_LAPTOP=m
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=8
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+CONFIG_BLK_DEV_IDECS=m
+CONFIG_BLK_DEV_IDECD=y
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEFLOPPY=m
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_CMD640=y
+CONFIG_BLK_DEV_CMD640_ENHANCED=y
+CONFIG_BLK_DEV_IDEPNP=y
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+CONFIG_BLK_DEV_OPTI621=y
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+CONFIG_BLK_DEV_AEC62XX=y
+CONFIG_BLK_DEV_ALI15X3=y
+# CONFIG_WDC_ALI15X3 is not set
+CONFIG_BLK_DEV_AMD74XX=y
+CONFIG_BLK_DEV_ATIIXP=y
+CONFIG_BLK_DEV_CMD64X=y
+CONFIG_BLK_DEV_TRIFLEX=y
+CONFIG_BLK_DEV_CY82C693=y
+CONFIG_BLK_DEV_CS5520=y
+CONFIG_BLK_DEV_CS5530=y
+CONFIG_BLK_DEV_HPT34X=y
+# CONFIG_HPT34X_AUTODMA is not set
+CONFIG_BLK_DEV_HPT366=y
+CONFIG_BLK_DEV_JMICRON=m
+CONFIG_BLK_DEV_SC1200=y
+CONFIG_BLK_DEV_PIIX=y
+CONFIG_BLK_DEV_IT821X=y
+CONFIG_BLK_DEV_NS87415=y
+CONFIG_BLK_DEV_PDC202XX_OLD=y
+# CONFIG_PDC202XX_BURST is not set
+CONFIG_BLK_DEV_PDC202XX_NEW=y
+CONFIG_BLK_DEV_SVWKS=y
+CONFIG_BLK_DEV_SIIMAGE=m
+CONFIG_BLK_DEV_SIS5513=y
+CONFIG_BLK_DEV_SLC90E66=y
+CONFIG_BLK_DEV_TRM290=y
+CONFIG_BLK_DEV_VIA82CXXX=y
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+CONFIG_IDEDMA_IVB=y
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+CONFIG_RAID_ATTRS=m
+CONFIG_SCSI=y
+CONFIG_SCSI_NETLINK=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_LIBSAS=m
+# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_ACARD=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+CONFIG_SCSI_AIC79XX=m
+CONFIG_AIC79XX_CMDS_PER_DEVICE=32
+CONFIG_AIC79XX_RESET_DELAY_MS=5000
+# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_AIC94XX=m
+# CONFIG_AIC94XX_DEBUG is not set
+CONFIG_SCSI_ARCMSR=m
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_LEGACY=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_HPTIOP=m
+CONFIG_SCSI_BUSLOGIC=m
+# CONFIG_SCSI_OMIT_FLASHPOINT is not set
+CONFIG_SCSI_DMX3191D=m
+CONFIG_SCSI_EATA=m
+CONFIG_SCSI_EATA_TAGGED_QUEUE=y
+CONFIG_SCSI_EATA_LINKED_COMMANDS=y
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_FUTURE_DOMAIN=m
+CONFIG_SCSI_GDTH=m
+CONFIG_SCSI_IPS=m
+CONFIG_SCSI_INITIO=m
+CONFIG_SCSI_INIA100=m
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
+CONFIG_SCSI_STEX=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+# CONFIG_SCSI_IPR is not set
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+CONFIG_PCMCIA_FDOMAIN=m
+CONFIG_PCMCIA_QLOGIC=m
+CONFIG_PCMCIA_SYM53C500=m
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=m
+CONFIG_SATA_AHCI=m
+CONFIG_SATA_SVW=m
+CONFIG_ATA_PIIX=m
+CONFIG_SATA_MV=m
+CONFIG_SATA_NV=m
+CONFIG_PDC_ADMA=m
+CONFIG_SATA_QSTOR=m
+CONFIG_SATA_PROMISE=m
+CONFIG_SATA_SX4=m
+CONFIG_SATA_SIL=m
+CONFIG_SATA_SIL24=m
+CONFIG_SATA_SIS=m
+CONFIG_SATA_ULI=m
+CONFIG_SATA_VIA=m
+CONFIG_SATA_VITESSE=m
+CONFIG_SATA_INTEL_COMBINED=y
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+# CONFIG_PATA_ARTOP is not set
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PCMCIA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+CONFIG_BLK_DEV_DM_BBR=m
+
+#
+# Fusion MPT device support
+#
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=m
+CONFIG_FUSION_FC=m
+CONFIG_FUSION_SAS=m
+CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_CTL=m
+CONFIG_FUSION_LAN=m
+
+#
+# IEEE 1394 (FireWire) support
+#
+CONFIG_IEEE1394=m
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
+CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
+# CONFIG_IEEE1394_EXPORT_FULL_API is not set
+
+#
+# Device Drivers
+#
+# CONFIG_IEEE1394_PCILYNX is not set
+CONFIG_IEEE1394_OHCI1394=m
+
+#
+# Protocol Drivers
+#
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_SBP2=m
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_DV1394=m
+CONFIG_IEEE1394_RAWIO=m
+
+#
+# I2O device support
+#
+CONFIG_I2O=m
+# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
+CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
+CONFIG_I2O_CONFIG=m
+CONFIG_I2O_CONFIG_OLD_IOCTL=y
+CONFIG_I2O_BUS=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_IFB is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+CONFIG_NET_SB1000=m
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_FIXED_PHY=m
+CONFIG_FIXED_MII_10_FDX=y
+CONFIG_FIXED_MII_100_FDX=y
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+
+#
+# Tulip family network device support
+#
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+CONFIG_TULIP_MWI=y
+CONFIG_TULIP_MMIO=y
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_HP100=m
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+# CONFIG_PCNET32_NAPI is not set
+CONFIG_AMD8111_ETH=m
+# CONFIG_AMD8111E_NAPI is not set
+CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+# CONFIG_FORCEDETH_NAPI is not set
+CONFIG_DGRS=m
+# CONFIG_EEPRO100 is not set
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+CONFIG_8139TOO_TUNE_TWISTER=y
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+CONFIG_SUNDANCE_MMIO=y
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_VIA_RHINE_NAPI=y
+CONFIG_NET_POCKET=y
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
+
+#
+# Ethernet (1000 Mbit)
+#
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+# CONFIG_E1000_NAPI is not set
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+CONFIG_R8169_VLAN=y
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+CONFIG_SKY2=m
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
+
+#
+# Ethernet (10000 Mbit)
+#
+CONFIG_CHELSIO_T1=m
+CONFIG_IXGB=m
+# CONFIG_IXGB_NAPI is not set
+CONFIG_S2IO=m
+# CONFIG_S2IO_NAPI is not set
+CONFIG_MYRI10GE=m
+
+#
+# Token Ring devices
+#
+CONFIG_TR=y
+CONFIG_IBMOL=m
+CONFIG_3C359=m
+CONFIG_TMS380TR=m
+CONFIG_TMSPCI=m
+CONFIG_ABYSS=m
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+CONFIG_STRIP=m
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_PCMCIA_NETWAVE=m
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+CONFIG_PCMCIA_RAYCS=m
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_PCMCIA_WL3501=m
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_HOSTAP_CS=m
+CONFIG_BCM43XX=m
+CONFIG_BCM43XX_DEBUG=y
+CONFIG_BCM43XX_DMA=y
+CONFIG_BCM43XX_PIO=y
+CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
+# CONFIG_BCM43XX_DMA_MODE is not set
+# CONFIG_BCM43XX_PIO_MODE is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+
+#
+# Wan interfaces
+#
+CONFIG_WAN=y
+CONFIG_DSCC4=m
+CONFIG_DSCC4_PCISYNC=y
+CONFIG_DSCC4_PCI_RST=y
+CONFIG_LANMEDIA=m
+CONFIG_HDLC=m
+CONFIG_HDLC_RAW=m
+CONFIG_HDLC_RAW_ETH=m
+CONFIG_HDLC_CISCO=m
+CONFIG_HDLC_FR=m
+CONFIG_HDLC_PPP=m
+
+#
+# X.25/LAPB support is disabled
+#
+CONFIG_PCI200SYN=m
+CONFIG_WANXL=m
+CONFIG_PC300=m
+CONFIG_PC300_MLPPP=y
+
+#
+# Cyclades-PC300 MLPPP support is disabled.
+#
+
+#
+# Refer to the file README.mlppp, provided by PC300 package.
+#
+CONFIG_FARSYNC=m
+CONFIG_DLCI=m
+CONFIG_DLCI_COUNT=24
+CONFIG_DLCI_MAX=8
+CONFIG_SBNI=m
+CONFIG_SBNI_MULTILINE=y
+
+#
+# ATM drivers
+#
+# CONFIG_ATM_DUMMY is not set
+# CONFIG_ATM_TCP is not set
+# CONFIG_ATM_LANAI is not set
+# CONFIG_ATM_ENI is not set
+# CONFIG_ATM_FIRESTREAM is not set
+# CONFIG_ATM_ZATM is not set
+# CONFIG_ATM_IDT77252 is not set
+# CONFIG_ATM_AMBASSADOR is not set
+# CONFIG_ATM_HORIZON is not set
+# CONFIG_ATM_FORE200E_MAYBE is not set
+# CONFIG_ATM_HE is not set
+CONFIG_FDDI=y
+CONFIG_DEFXX=m
+CONFIG_SKFP=m
+CONFIG_HIPPI=y
+CONFIG_ROADRUNNER=m
+# CONFIG_ROADRUNNER_LARGE_RINGS is not set
+CONFIG_PLIP=m
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+CONFIG_SLIP_SMART=y
+CONFIG_SLIP_MODE_SLIP6=y
+CONFIG_NET_FC=y
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+CONFIG_ISDN=m
+
+#
+# Old ISDN4Linux
+#
+# CONFIG_ISDN_I4L is not set
+
+#
+# CAPI subsystem
+#
+CONFIG_ISDN_CAPI=m
+# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIFS=m
+
+#
+# CAPI hardware drivers
+#
+
+#
+# Active AVM cards
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+
+#
+# Active Eicon DIVA Server cards
+#
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=m
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_JOYDEV=y
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+CONFIG_KEYBOARD_SUNKBD=m
+CONFIG_KEYBOARD_LKKBD=m
+CONFIG_KEYBOARD_XTKBD=m
+CONFIG_KEYBOARD_NEWTON=m
+CONFIG_KEYBOARD_STOWAWAY=m
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_SERIAL=m
+# CONFIG_MOUSE_VSXXXAA is not set
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_ANALOG=m
+CONFIG_JOYSTICK_A3D=m
+CONFIG_JOYSTICK_ADI=m
+CONFIG_JOYSTICK_COBRA=m
+CONFIG_JOYSTICK_GF2K=m
+CONFIG_JOYSTICK_GRIP=m
+CONFIG_JOYSTICK_GRIP_MP=m
+CONFIG_JOYSTICK_GUILLEMOT=m
+CONFIG_JOYSTICK_INTERACT=m
+CONFIG_JOYSTICK_SIDEWINDER=m
+CONFIG_JOYSTICK_TMDC=m
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=y
+CONFIG_JOYSTICK_IFORCE_232=y
+CONFIG_JOYSTICK_WARRIOR=m
+CONFIG_JOYSTICK_MAGELLAN=m
+CONFIG_JOYSTICK_SPACEORB=m
+CONFIG_JOYSTICK_SPACEBALL=m
+CONFIG_JOYSTICK_STINGER=m
+CONFIG_JOYSTICK_TWIDJOY=m
+CONFIG_JOYSTICK_DB9=m
+CONFIG_JOYSTICK_GAMECON=m
+CONFIG_JOYSTICK_TURBOGRAFX=m
+# CONFIG_JOYSTICK_JOYDUMP is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_PCSPKR=m
+# CONFIG_INPUT_UINPUT is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_CT82C710=m
+CONFIG_SERIO_PARKBD=m
+CONFIG_SERIO_PCIPS2=m
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+CONFIG_GAMEPORT=m
+# CONFIG_GAMEPORT_NS558 is not set
+# CONFIG_GAMEPORT_L4 is not set
+# CONFIG_GAMEPORT_EMU10K1 is not set
+# CONFIG_GAMEPORT_FM801 is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+CONFIG_SERIAL_8250_RSA=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_PRINTER is not set
+CONFIG_PPDEV=m
+# CONFIG_TIPAR is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_INTEL=y
+CONFIG_HW_RANDOM_AMD=y
+CONFIG_HW_RANDOM_GEODE=y
+CONFIG_NVRAM=m
+CONFIG_RTC=m
+# CONFIG_GEN_RTC is not set
+CONFIG_DTLK=m
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+CONFIG_AGP=y
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_VIA=m
+CONFIG_DRM=m
+CONFIG_DRM_TDFX=m
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_I810=m
+CONFIG_DRM_I830=m
+CONFIG_DRM_I915=m
+CONFIG_DRM_MGA=m
+CONFIG_DRM_SIS=m
+CONFIG_DRM_VIA=m
+CONFIG_DRM_SAVAGE=m
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+CONFIG_MWAVE=m
+# CONFIG_PC8736x_GPIO is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
+# CONFIG_HANGCHECK_TIMER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_I810=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_ISA=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_OCORES=m
+CONFIG_I2C_PARPORT=m
+# CONFIG_I2C_PARPORT_LIGHT is not set
+CONFIG_I2C_PROSAVAGE=m
+CONFIG_I2C_SAVAGE4=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+CONFIG_I2C_VOODOO3=m
+CONFIG_I2C_PCA_ISA=m
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_SENSORS_DS1337=m
+CONFIG_SENSORS_DS1374=m
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+CONFIG_SENSORS_PCA9539=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_MAX6875=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+CONFIG_HWMON_VID=m
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_FSCHER=m
+CONFIG_SENSORS_FSCPOS=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_HDAPS=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_BT848 is not set
+# CONFIG_VIDEO_BWQCAM is not set
+# CONFIG_VIDEO_CQCAM is not set
+# CONFIG_VIDEO_W9966 is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_STRADIS is not set
+# CONFIG_VIDEO_ZORAN is not set
+# CONFIG_VIDEO_SAA7134 is not set
+# CONFIG_VIDEO_MXB is not set
+# CONFIG_VIDEO_DPC is not set
+# CONFIG_VIDEO_HEXIUM_ORION is not set
+# CONFIG_VIDEO_HEXIUM_GEMINI is not set
+# CONFIG_VIDEO_CX88 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+CONFIG_VIDEO_USBVIDEO=m
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+CONFIG_USB_QUICKCAM_MESSENGER=m
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+CONFIG_FB_VESA=y
+CONFIG_FB_VESA_STD=y
+# CONFIG_FB_VESA_TNG is not set
+CONFIG_VIDEO_SELECT=y
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_INTEL is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_GEODE is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_DEVICE=y
+CONFIG_FB_SPLASH=y
+
+#
+# Speakup console speech
+#
+CONFIG_SPEAKUP=y
+CONFIG_SPEAKUP_ACNTSA=y
+CONFIG_SPEAKUP_ACNTPC=y
+CONFIG_SPEAKUP_APOLLO=y
+CONFIG_SPEAKUP_AUDPTR=y
+CONFIG_SPEAKUP_BNS=y
+CONFIG_SPEAKUP_DECTLK=y
+CONFIG_SPEAKUP_DECEXT=y
+# CONFIG_SPEAKUP_DECPC is not set
+CONFIG_SPEAKUP_DTLK=y
+CONFIG_SPEAKUP_KEYPC=y
+CONFIG_SPEAKUP_LTLK=y
+CONFIG_SPEAKUP_SFTSYN=y
+CONFIG_SPEAKUP_SPKOUT=y
+CONFIG_SPEAKUP_TXPRT=y
+
+#
+# Enter the 3 to 6 character keyword from the list above, or none for no default synthesizer on boot up.
+#
+CONFIG_SPEAKUP_DEFAULT="none"
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_RTCTIMER=m
+CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_AC97_BUS=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+CONFIG_SND_MTS64=m
+# CONFIG_SND_SERIAL_U16550 is not set
+CONFIG_SND_MPU401=m
+
+#
+# PCI devices
+#
+CONFIG_SND_AD1889=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_FM801=m
+# CONFIG_SND_FM801_TEA575X_BOOL is not set
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_PCXHR=m
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+# CONFIG_SND_AC97_POWER_SAVE is not set
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
+
+#
+# PCMCIA devices
+#
+CONFIG_SND_VXPOCKET=m
+CONFIG_SND_PDAUDIOCF=m
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=m
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+CONFIG_USB_ISP116X_HCD=m
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+CONFIG_USB_U132_HCD=m
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_DPCM=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+CONFIG_USB_HIDINPUT_POWERBOOK=y
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+CONFIG_USB_ACECAD=m
+CONFIG_USB_KBTAB=m
+# CONFIG_USB_POWERMATE is not set
+CONFIG_USB_TOUCHSCREEN=m
+CONFIG_USB_TOUCHSCREEN_EGALAX=y
+CONFIG_USB_TOUCHSCREEN_PANJIT=y
+CONFIG_USB_TOUCHSCREEN_3M=y
+CONFIG_USB_TOUCHSCREEN_ITM=y
+CONFIG_USB_TOUCHSCREEN_ETURBO=y
+CONFIG_USB_TOUCHSCREEN_GUNZE=y
+# CONFIG_USB_YEALINK is not set
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+CONFIG_USB_ATI_REMOTE2=m
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+CONFIG_USB_APPLETOUCH=m
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_AIRPRIME=m
+CONFIG_USB_SERIAL_ARK3116=m
+# CONFIG_USB_SERIAL_BELKIN is not set
+CONFIG_USB_SERIAL_WHITEHEAT=m
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+CONFIG_USB_SERIAL_CP2101=m
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+CONFIG_USB_SERIAL_FUNSOFT=m
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+CONFIG_USB_SERIAL_IPW=m
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_AUERSWALD=m
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_IDMOUSE is not set
+CONFIG_USB_FTDI_ELAN=m
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_SISUSBVGA=m
+CONFIG_USB_SISUSBVGA_CON=y
+# CONFIG_USB_LD is not set
+CONFIG_USB_TRANCEVIBRATOR=m
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+CONFIG_USB_ATM=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_CXACRU=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_XUSBATM=m
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_SDHCI=m
+CONFIG_MMC_WBSD=m
+CONFIG_MMC_TIFM_SD=m
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+CONFIG_INFINIBAND=m
+# CONFIG_INFINIBAND_USER_MAD is not set
+# CONFIG_INFINIBAND_USER_ACCESS is not set
+CONFIG_INFINIBAND_ADDR_TRANS=y
+CONFIG_INFINIBAND_MTHCA=m
+# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
+CONFIG_INFINIBAND_IPATH=m
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+CONFIG_INFINIBAND_IPOIB=m
+# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
+CONFIG_INFINIBAND_SRP=m
+CONFIG_INFINIBAND_ISER=m
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+# CONFIG_EDAC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+CONFIG_RTC_DRV_DS1553=m
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+CONFIG_RTC_DRV_DS1742=m
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_M48T86=m
+# CONFIG_RTC_DRV_TEST is not set
+CONFIG_RTC_DRV_V3020=m
+
+#
+# DMA Engine support
+#
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+
+#
+# DMA Devices
+#
+CONFIG_INTEL_IOATDMA=m
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4DEV_FS=y
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=y
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_JFS_FS=m
+CONFIG_JFS_POSIX_ACL=y
+CONFIG_JFS_SECURITY=y
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=y
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_SECURITY=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+CONFIG_GFS2_FS=y
+CONFIG_GFS2_FS_LOCKING_NOLOCK=y
+CONFIG_GFS2_FS_LOCKING_DLM=y
+CONFIG_OCFS2_FS=y
+CONFIG_OCFS2_DEBUG_MASKLOG=y
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_QUOTACTL=y
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_ZISOFS_FS=y
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_VMCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+CONFIG_CONFIGFS_FS=y
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=y
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_SQUASHFS_VMALLOC is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+CONFIG_MINIX_SUBPARTITION=y
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_UNIXWARE_DISKLABEL=y
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+CONFIG_KARMA_PARTITION=y
+CONFIG_EFI_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+CONFIG_DLM=y
+
+#
+# Instrumentation Support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_UNUSED_SYMBOLS=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=15
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_FRAME_POINTER is not set
+# CONFIG_UNWIND_INFO is not set
+CONFIG_FORCED_INLINING=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_RODATA is not set
+# CONFIG_IOMMU_DEBUG is not set
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_TWOFISH_X86_64=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_AES_X86_64=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/installcd-stage1-minimal.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/installcd-stage1-minimal.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/installcd-stage1-minimal.spec	(revision 25051)
@@ -0,0 +1,96 @@
+subarch: amd64
+version_stamp: 2007.0
+target: livecd-stage1
+rel_type: default
+profile: default-linux/amd64/2007.0
+snapshot: 2007.0
+source_subpath: default/stage3-amd64-2007.0
+livecd/use:
+	-*
+	fbcon
+	ipv6
+	livecd
+	ncurses
+	nls
+	nptl
+	nptlonly
+	pam
+	readline
+	socks5
+	ssl
+	unicode
+
+livecd/packages:
+	net-misc/rsync
+	app-admin/passook
+	app-admin/pwgen
+	app-admin/syslog-ng
+	app-arch/unzip
+	app-editors/vim
+	app-misc/livecd-tools
+	app-misc/screen
+	app-misc/vlock
+	app-portage/mirrorselect
+	dev-lang/python
+	media-gfx/fbgrab
+	net-analyzer/tcptraceroute
+	net-analyzer/traceroute
+	net-dialup/bpalogin
+	net-dialup/mingetty
+#	net-dialup/penggy
+#	net-dialup/pptpclient
+#	net-dialup/rp-pppoe
+	net-fs/nfs-utils
+	net-irc/irssi
+	net-misc/dhcpcd
+	net-misc/iputils
+	net-misc/rdate
+	net-misc/vconfig
+#	net-wireless/ipw2100-firmware
+#	net-wireless/ipw2200-firmware
+	net-wireless/prism54-firmware
+	net-wireless/wireless-tools
+	net-wireless/wpa_supplicant
+#	net-wireless/zd1201-firmware
+	net-wireless/zd1211-firmware
+	sys-apps/apmd
+	sys-apps/eject
+	sys-apps/ethtool
+	sys-apps/fxload
+	sys-apps/hdparm
+	sys-apps/hwsetup
+	sys-apps/iproute2
+#	sys-apps/lssbus
+	sys-apps/memtester
+	sys-apps/netplug
+	sys-apps/parted
+#	sys-apps/powerpc-utils
+#	sys-apps/ibm-powerpc-utils
+#	sys-apps/ibm-powerpc-utils-papr
+	sys-apps/sdparm
+#	sys-block/partimage
+#	sys-block/qla-fc-firmware
+#	sys-boot/yaboot
+#	sys-devel/binutils-hppa64
+#	sys-devel/gcc-hppa64
+#	sys-fs/dmraid
+	sys-fs/dosfstools
+	sys-fs/e2fsprogs
+	sys-fs/evms
+#	sys-fs/hfsplusutils
+#	sys-fs/hfsutils
+#	sys-fs/iprutils
+	sys-fs/jfsutils
+	sys-fs/lsscsi
+	sys-fs/lvm2
+#	sys-fs/lvm-user
+#	sys-fs/mac-fdisk
+	sys-fs/mdadm
+#	sys-fs/multipath-tools
+	sys-fs/ntfsprogs
+	sys-fs/reiserfsprogs
+	sys-fs/xfsprogs
+	sys-libs/gpm
+	sys-power/acpid
+#	sys-power/apmd
+	www-client/links
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/installcd-stage2-minimal.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/installcd-stage2-minimal.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/installcd-stage2-minimal.spec	(revision 25051)
@@ -0,0 +1,344 @@
+subarch: amd64
+version_stamp: 2007.0-serial
+target: livecd-stage2
+rel_type: default
+profile: default-linux/amd64/2007.0
+snapshot: 2007.0
+source_subpath: default/livecd-stage1-amd64-2007.0
+portage_overlay: /usr/src/portage
+
+livecd/fstype: squashfs
+livecd/cdtar: /usr/lib/catalyst/livecd/cdtar/isolinux-3.09-memtest86+-cdtar.tar.bz2
+
+livecd/iso: /var/tmp/catalyst/builds/default/install-amd64-minimal-2007.0-serial.iso
+#livecd/splash_type: gensplash
+#livecd/splash_theme: livecd-2007.0
+
+livecd/volid: Gentoo Linux amd64 2007.0
+livecd/type: gentoo-release-minimal
+
+#livecd/overlay: /root/livecd/overlays/amd64-minimal
+
+#livecd/bootargs: dokeymap
+livecd/bootargs: console=tty0 console=ttyS0,115200
+livecd/gk_mainargs: --makeopts=-j16 --lvm2 --dmraid --evms2
+
+boot/kernel: gentoo
+boot/kernel/gentoo/sources: gentoo-sources
+
+#boot/kernel/gentoo/config: /root/livecd/kconfig/2007.0/amd64/installcd-2.6.19.config
+boot/kernel/gentoo/config: /root/2007.0-specs/installcd-2.6.19.config
+
+boot/kernel/gentoo/use: pcmcia usb -X png truetype -qt
+
+boot/kernel/gentoo/packages:
+	media-gfx/splashutils
+	media-gfx/splash-themes-livecd
+	sys-apps/pcmciautils
+	sys-fs/cryptsetup-luks
+#	net-wireless/rt2500
+# These were not stable at time of snapshot/release.
+#	net-wireless/at76c503a
+#	net-wireless/rtl8180
+#	net-wireless/rtl8187
+#	net-wireless/adm8211
+#	net-wireless/acx
+#	net-wireless/ipw3945
+
+livecd/unmerge:
+#	acl
+#	addpatches
+#	attr
+	alsa-headers
+	autoconf
+	autoconf-wrapper
+	automake
+	automake-wrapper
+#	bc
+#	bin86
+	binutils
+	binutils-config
+	bison
+	busybox
+#	ccache
+	cpio
+#	cronbase
+#	devfsd
+	diffutils
+#	distcc
+#	ed
+	expat
+	flex
+	gcc
+	gcc-config
+#	gcc-sparc64
+	genkernel
+	gentoo-sources
+	gettext
+	gnuconfig
+	groff
+#	grub
+	help2man
+	kgcc64
+#	lcms
+#	ld.so
+#	lib-compat
+#	libmng
+	libperl
+	libtool
+	linux-headers
+	m4
+	make
+	man
+	man-pages
+	miscfiles
+	pax-utils
+	patch
+	perl
+	perl-cleaner
+	perl-Test-Simple
+	PodParser
+	pycrypto
+	sandbox
+#	sash
+#	sysklogd
+#	tcp-wrappers
+	Test-Harness
+	texinfo
+#	ucl
+#	vanilla-sources
+
+livecd/empty:
+	/etc/bootsplash/gentoo
+	/etc/bootsplash/gentoo-highquality
+	/etc/cron.daily
+	/etc/cron.hourly
+	/etc/cron.monthly
+	/etc/cron.weekly
+	/etc/logrotate.d
+	/etc/modules.autoload.d
+	/etc/runlevels/single
+	/etc/skel
+	/etc/splash/emergence
+	/etc/splash/gentoo
+	/lib/dev-state
+	/lib/udev-state
+	/lib64/dev-state
+	/lib64/udev-state
+	/root/.ccache
+	/tmp
+	/usr/diet/include
+	/usr/diet/man
+	/usr/i386-gentoo-linux-uclibc
+	/usr/i386-pc-linux-gnu
+	/usr/i386-pc-linux-uclibc
+	/usr/include
+	/usr/lib/X11/config
+	/usr/lib/X11/doc
+	/usr/lib/X11/etc
+	/usr/lib/awk
+	/usr/lib/ccache
+	/usr/lib/gcc-config
+	/usr/lib/gconv
+	/usr/lib/nfs
+	/usr/lib/perl5
+	/usr/lib/portage
+	/usr/lib/python2.2
+	/usr/lib/python2.3
+	/usr/lib/python2.4/tests
+	/usr/lib64/X11/config
+	/usr/lib64/X11/doc
+	/usr/lib64/X11/etc
+	/usr/lib64/awk
+	/usr/lib64/ccache
+	/usr/lib64/gcc-config
+	/usr/lib64/gconv
+	/usr/lib64/nfs
+	/usr/lib64/perl5
+	/usr/lib64/portage
+	/usr/lib64/python2.2
+	/usr/lib64/python2.3
+	/usr/lib64/python2.4/tests
+	/usr/local
+	/usr/portage
+	/usr/powerpc-unknown-linux-gnu
+	/usr/powerpc64-unknown-linux-gnu
+	/usr/share/aclocal
+	/usr/share/baselayout
+	/usr/share/binutils-data
+	/usr/share/consolefonts/partialfonts
+	/usr/share/consoletrans
+	/usr/share/dict
+	/usr/share/doc
+	/usr/share/emacs
+	/usr/share/et
+	/usr/share/gcc-data
+	/usr/share/genkernel
+	/usr/share/gettext
+	/usr/share/glib-2.0
+	/usr/share/gnuconfig
+	/usr/share/gtk-doc
+	/usr/share/i18n
+	/usr/share/info
+	/usr/share/lcms
+	/usr/share/libtool
+	/usr/share/locale
+	/usr/share/man
+	/usr/share/perl
+	/usr/share/rfc
+	/usr/share/ss
+	/usr/share/state
+	/usr/share/texinfo
+	/usr/share/unimaps
+	/usr/share/zoneinfo
+	/usr/sparc-unknown-linux-gnu
+	/usr/src
+	/usr/x86_64-pc-linux-gnu
+	/var/cache
+	/var/db
+	/var/empty
+	/var/lib/portage
+	/var/lock
+	/var/log
+	/var/run
+	/var/spool
+	/var/state
+	/var/tmp
+
+livecd/rm:
+	/boot/System*
+	/boot/initr*
+	/boot/kernel*
+	/etc/*-
+	/etc/*.old
+	/etc/default/audioctl
+	/etc/dispatch-conf.conf
+	/etc/env.d/05binutils
+	/etc/env.d/05gcc
+	/etc/etc-update.conf
+	/etc/hosts.bck
+	/etc/issue*
+	/etc/genkernel.conf
+	/etc/make.conf
+	/etc/make.conf.example
+	/etc/make.globals
+	/etc/make.profile
+	/etc/man.conf
+	/etc/resolv.conf
+	/etc/splash/livecd-2007.0/12*
+	/etc/splash/livecd-2007.0/14*
+	/etc/splash/livecd-2007.0/16*
+	/etc/splash/livecd-2007.0/19*
+	/etc/splash/livecd-2007.0/6*
+	/etc/splash/livecd-2007.0/8*
+	/etc/splash/livecd-2007.0/images/background-12*
+	/etc/splash/livecd-2007.0/images/background-14*
+	/etc/splash/livecd-2007.0/images/background-16*
+	/etc/splash/livecd-2007.0/images/background-19*
+	/etc/splash/livecd-2007.0/images/background-6*
+	/etc/splash/livecd-2007.0/images/background-8*
+	/etc/splash/livecd-2007.0/images/verbose-12*
+	/etc/splash/livecd-2007.0/images/verbose-14*
+	/etc/splash/livecd-2007.0/images/verbose-16*
+	/etc/splash/livecd-2007.0/images/verbose-19*
+	/etc/splash/livecd-2007.0/images/verbose-6*
+	/etc/splash/livecd-2007.0/images/verbose-8*
+	/lib*/*.a
+	/lib*/*.la
+	/lib*/cpp
+	/lib*/security/pam_access.so
+	/lib*/security/pam_chroot.so
+	/lib*/security/pam_debug.so
+	/lib*/security/pam_ftp.so
+	/lib*/security/pam_issue.so
+	/lib*/security/pam_mail.so
+	/lib*/security/pam_mkhomedir.so
+	/lib*/security/pam_motd.so
+	/lib*/security/pam_postgresok.so
+	/lib*/security/pam_rhosts_auth.so
+	/lib*/security/pam_userdb.so
+	/root/.bash_history
+	/root/.viminfo
+	/sbin/fsck.cramfs
+	/sbin/fsck.minix
+	/sbin/mkfs.bfs
+	/sbin/mkfs.cramfs
+	/sbin/mkfs.minix
+	/usr/bin/addr2line
+	/usr/bin/ar
+	/usr/bin/as
+	/usr/bin/audioctl
+	/usr/bin/c++*
+	/usr/bin/cc
+	/usr/bin/cjpeg
+	/usr/bin/cpp
+	/usr/bin/djpeg
+	/usr/bin/ebuild
+	/usr/bin/emerge
+	/usr/bin/elftoaout
+	/usr/bin/f77
+	/usr/bin/g++*
+	/usr/bin/g77
+	/usr/bin/gcc*
+	/usr/bin/genkernel
+	/usr/bin/gprof
+	/usr/bin/i386-gentoo-linux-uclibc-*
+	/usr/bin/i386-pc-linux-*
+	/usr/bin/jpegtran
+	/usr/bin/ld
+	/usr/bin/libpng*
+	/usr/bin/nm
+	/usr/bin/objcopy
+	/usr/bin/objdump
+	/usr/bin/piggyback*
+	/usr/bin/portageq
+	/usr/bin/ranlib
+	/usr/bin/readelf
+	/usr/bin/repoman
+	/usr/bin/size
+	/usr/bin/powerpc-unknown-linux-gnu-*
+	/usr/bin/powerpc64-unknown-linux-gnu-*
+	/usr/bin/sparc-unknown-linux-gnu-*
+	/usr/bin/sparc64-unknown-linux-gnu-*
+	/usr/bin/strings
+	/usr/bin/strip
+	/usr/bin/tbz2tool
+	/usr/bin/x86_64-pc-linux-gnu-*
+	/usr/bin/xpak
+	/usr/bin/yacc
+	/usr/lib*/*.a
+	/usr/lib*/*.la
+	/usr/lib*/gcc-lib/*/*/libgcj*
+	/usr/sbin/archive-conf
+	/usr/sbin/bootsplash*
+	/usr/sbin/dispatch-conf
+	/usr/sbin/emaint
+	/usr/sbin/emerge-webrsync
+	/usr/sbin/env-update
+	/usr/sbin/fb*
+	/usr/sbin/fixpackages
+	/usr/sbin/quickpkg
+	/usr/sbin/regenworld
+	/usr/share/consolefonts/1*
+	/usr/share/consolefonts/7*
+	/usr/share/consolefonts/8*
+	/usr/share/consolefonts/9*
+	/usr/share/consolefonts/A*
+	/usr/share/consolefonts/C*
+	/usr/share/consolefonts/E*
+	/usr/share/consolefonts/G*
+	/usr/share/consolefonts/L*
+	/usr/share/consolefonts/M*
+	/usr/share/consolefonts/R*
+	/usr/share/consolefonts/a*
+	/usr/share/consolefonts/c*
+	/usr/share/consolefonts/dr*
+	/usr/share/consolefonts/g*
+	/usr/share/consolefonts/i*
+	/usr/share/consolefonts/k*
+	/usr/share/consolefonts/l*
+	/usr/share/consolefonts/r*
+	/usr/share/consolefonts/s*
+	/usr/share/consolefonts/t*
+	/usr/share/consolefonts/v*
+	/usr/share/misc/*.old
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/CVS/Entries
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/CVS/Entries	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/CVS/Entries	(revision 25051)
@@ -0,0 +1,2 @@
+/package.keywords/1.1.1.1/Thu Jul 19 03:12:23 2007/-kb/
+D
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/CVS/Repository
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/CVS/Repository	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/CVS/Repository	(revision 25051)
@@ -0,0 +1,1 @@
+datasys/IPP/hw/livecds/2007.0-specs/portage
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/CVS/Root
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/CVS/Root	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/CVS/Root	(revision 25051)
@@ -0,0 +1,1 @@
+jhoblitt@cvs.pan-starrs.ifa.hawaii.edu:/cvsroot/pan-starrs
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/package.keywords
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/package.keywords	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/portage/package.keywords	(revision 25051)
@@ -0,0 +1,1 @@
+sys-kernel/gentoo-sources ~amd64
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage1.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage1.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage1.spec	(revision 25051)
@@ -0,0 +1,10 @@
+subarch: amd64
+target: stage1
+version_stamp: 2007.0
+rel_type: default
+profile: default-linux/amd64/2007.0
+snapshot: 2007.0
+source_subpath: default/stage3-amd64-2007.0
+cflags: -O2 -pipe -march=k8
+portage_confdir: /etc/portage
+portage_overlay: /usr/src/portage_overlay
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage2.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage2.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage2.spec	(revision 25051)
@@ -0,0 +1,10 @@
+subarch: amd64
+target: stage2
+version_stamp: 2007.0
+rel_type: default
+profile: default-linux/amd64/2007.0
+snapshot: 2007.0
+source_subpath: default/stage1-amd64-2007.0
+cflags: -O2 -pipe -march=k8
+portage_confdir: /etc/portage
+portage_overlay: /usr/src/portage_overlay
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage3.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage3.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage3.spec	(revision 25051)
@@ -0,0 +1,10 @@
+subarch: amd64
+target: stage3
+version_stamp: 2007.0
+rel_type: default
+profile: default-linux/amd64/2007.0
+snapshot: 2007.0
+source_subpath: default/stage2-amd64-2007.0
+cflags: -O2 -pipe -march=k8
+portage_confdir: /etc/portage
+portage_overlay: /usr/src/portage_overlay
Index: /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage4.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage4.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2007.0-specs/stage4.spec	(revision 25051)
@@ -0,0 +1,11 @@
+subarch: amd64
+version_stamp: 2007.0
+target: stage4
+rel_type: default
+profile: default-linux/amd64/2007.0
+snapshot: 2007.0
+source_subpath: default/stage2-amd64-2007.0
+portage_confdir: /etc/portage
+portage_overlay: /usr/src/portage_overlay
+# stage4/use: ipv6 socks5 fbcon ncurses readline ssl
+stage4/packages: ipp-node
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/2.6.28-rc7-00105-gfeaf384.conf
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/2.6.28-rc7-00105-gfeaf384.conf	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/2.6.28-rc7-00105-gfeaf384.conf	(revision 25051)
@@ -0,0 +1,2076 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.28-rc7
+# Thu Dec  4 13:39:10 2008
+#
+CONFIG_64BIT=y
+# CONFIG_X86_32 is not set
+CONFIG_X86_64=y
+CONFIG_X86=y
+CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_FAST_CMPXCHG_LOCAL=y
+CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HAS_DEFAULT_IDLE=y
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_X86_SMP=y
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_X86_64_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_X86_TRAMPOLINE=y
+# CONFIG_KTIME_SCALAR is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_TREE=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=19
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_CGROUP_NS=y
+# CONFIG_CGROUP_FREEZER is not set
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
+CONFIG_GROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_RESOURCE_COUNTERS=y
+CONFIG_MM_OWNER=y
+CONFIG_CGROUP_MEM_RES_CTLR=y
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_RELAY=y
+CONFIG_NAMESPACES=y
+# CONFIG_UTS_NS is not set
+# CONFIG_IPC_NS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_COMPAT_BRK=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+# CONFIG_MARKERS is not set
+CONFIG_OPROFILE=y
+# CONFIG_OPROFILE_IBS is not set
+CONFIG_HAVE_OPROFILE=y
+CONFIG_KPROBES=y
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_KRETPROBES=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_STOP_MACHINE=y
+CONFIG_BLOCK=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+CONFIG_BLOCK_COMPAT=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_PREEMPT_NOTIFIERS=y
+CONFIG_CLASSIC_RCU=y
+CONFIG_FREEZER=y
+
+#
+# Processor type and features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_SMP=y
+CONFIG_X86_FIND_SMP_CONFIG=y
+CONFIG_X86_MPPARSE=y
+CONFIG_X86_PC=y
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_GENERICARCH is not set
+# CONFIG_X86_VSMP is not set
+# CONFIG_PARAVIRT_GUEST is not set
+CONFIG_MEMTEST=y
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_CPU=y
+CONFIG_X86_L1_CACHE_BYTES=128
+CONFIG_X86_INTERNODE_CACHE_BYTES=128
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_L1_CACHE_SHIFT=7
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_TSC=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_CENTAUR_64=y
+CONFIG_X86_DS=y
+CONFIG_X86_PTRACE_BTS=y
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+CONFIG_DMI=y
+CONFIG_GART_IOMMU=y
+# CONFIG_CALGARY_IOMMU is not set
+CONFIG_AMD_IOMMU=y
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
+CONFIG_NR_CPUS=32
+# CONFIG_SCHED_SMT is not set
+CONFIG_SCHED_MC=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+# CONFIG_I8K is not set
+CONFIG_MICROCODE=m
+CONFIG_MICROCODE_INTEL=y
+# CONFIG_MICROCODE_AMD is not set
+CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_X86_MSR=y
+CONFIG_X86_CPUID=y
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
+CONFIG_NUMA=y
+CONFIG_K8_NUMA=y
+CONFIG_X86_64_ACPI_NUMA=y
+CONFIG_NODES_SPAN_OTHER_NODES=y
+# CONFIG_NUMA_EMU is not set
+CONFIG_NODES_SHIFT=8
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_NEED_MULTIPLE_NODES=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+
+#
+# Memory hotplug is currently incompatible with Software Suspend
+#
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MIGRATION=y
+CONFIG_RESOURCES_64BIT=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_UNEVICTABLE_LRU=y
+CONFIG_MMU_NOTIFIER=y
+# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
+CONFIG_X86_RESERVE_LOW_64K=y
+CONFIG_MTRR=y
+# CONFIG_MTRR_SANITIZER is not set
+CONFIG_X86_PAT=y
+# CONFIG_EFI is not set
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+CONFIG_HZ_300=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=300
+CONFIG_SCHED_HRTICK=y
+CONFIG_KEXEC=y
+CONFIG_CRASH_DUMP=y
+CONFIG_PHYSICAL_START=0x200000
+CONFIG_RELOCATABLE=y
+CONFIG_PHYSICAL_ALIGN=0x200000
+CONFIG_HOTPLUG_CPU=y
+CONFIG_COMPAT_VDSO=y
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_ARCH_HIBERNATION_HEADER=y
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION="/dev/sda2"
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_PROCFS=y
+CONFIG_ACPI_PROCFS_POWER=y
+CONFIG_ACPI_SYSFS_POWER=y
+CONFIG_ACPI_PROC_EVENT=y
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_FAN=y
+CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_THERMAL=y
+CONFIG_ACPI_NUMA=y
+# CONFIG_ACPI_WMI is not set
+# CONFIG_ACPI_ASUS is not set
+# CONFIG_ACPI_TOSHIBA is not set
+# CONFIG_ACPI_CUSTOM_DSDT is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+# CONFIG_ACPI_PCI_SLOT is not set
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=y
+# CONFIG_ACPI_SBS is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+
+#
+# CPUFreq processor drivers
+#
+CONFIG_X86_ACPI_CPUFREQ=y
+CONFIG_X86_POWERNOW_K8=y
+CONFIG_X86_POWERNOW_K8_ACPI=y
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
+# CONFIG_X86_P4_CLOCKMOD is not set
+
+#
+# shared options
+#
+CONFIG_X86_ACPI_CPUFREQ_PROC_INTF=y
+# CONFIG_X86_SPEEDSTEP_LIB is not set
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# Memory power savings
+#
+# CONFIG_I7300_IDLE is not set
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_DMAR is not set
+# CONFIG_INTR_REMAP is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEAER=y
+# CONFIG_PCIEASPM is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_HT_IRQ is not set
+CONFIG_ISA_DMA_API=y
+CONFIG_K8_NB=y
+# CONFIG_PCCARD is not set
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_COMPAT_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_HAVE_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+CONFIG_IA32_EMULATION=y
+CONFIG_IA32_AOUT=y
+CONFIG_COMPAT=y
+CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
+CONFIG_SYSVIPC_COMPAT=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+CONFIG_INET_TUNNEL=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=y
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET6_XFRM_MODE_BEET is not set
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=y
+CONFIG_IPV6_NDISC_NODETYPE=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETLABEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+# CONFIG_SCTP_HMAC_SHA1 is not set
+CONFIG_SCTP_HMAC_MD5=y
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_TCPPROBE is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_PHONET is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_OLD_REGULATORY=y
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+# CONFIG_MTD is not set
+# CONFIG_PARPORT is not set
+CONFIG_PNP=y
+CONFIG_PNP_DEBUG_MESSAGES=y
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_FD=y
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+# CONFIG_BLK_DEV_XIP is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_IBM_ASM is not set
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_SONY_LAPTOP is not set
+# CONFIG_THINKPAD_ACPI is not set
+# CONFIG_INTEL_MENLOW is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_SGI_XP is not set
+# CONFIG_HP_ILO is not set
+# CONFIG_SGI_GRU is not set
+# CONFIG_C2PORT is not set
+CONFIG_HAVE_IDE=y
+CONFIG_IDE=y
+
+#
+# Please see Documentation/ide/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_IDE_GD=y
+CONFIG_IDE_GD_ATA=y
+# CONFIG_IDE_GD_ATAPI is not set
+CONFIG_BLK_DEV_IDECD=y
+CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+CONFIG_BLK_DEV_IDEACPI=y
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_PLATFORM is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
+
+#
+# PCI IDE chipsets support
+#
+# CONFIG_BLK_DEV_GENERIC is not set
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_IT8213 is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_BLK_DEV_TC86C001 is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=y
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+CONFIG_SCSI_CONSTANTS=y
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=y
+CONFIG_SCSI_FC_ATTRS=y
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+CONFIG_SCSI_SAS_ATTRS=y
+CONFIG_SCSI_SAS_LIBSAS=m
+# CONFIG_SCSI_SAS_ATA is not set
+CONFIG_SCSI_SAS_HOST_SMP=y
+CONFIG_SCSI_SAS_LIBSAS_DEBUG=y
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_ACARD=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+CONFIG_AIC7XXX_DEBUG_ENABLE=y
+CONFIG_AIC7XXX_DEBUG_MASK=0
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+CONFIG_SCSI_AIC79XX=y
+CONFIG_AIC79XX_CMDS_PER_DEVICE=32
+CONFIG_AIC79XX_RESET_DELAY_MS=4000
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_AIC94XX=m
+CONFIG_AIC94XX_DEBUG=y
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_ARCMSR_AER=y
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=y
+CONFIG_MEGARAID_MAILBOX=y
+# CONFIG_MEGARAID_LEGACY is not set
+CONFIG_MEGARAID_SAS=y
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_MVSAS is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+# CONFIG_SCSI_DH is not set
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_ATA_ACPI=y
+CONFIG_SATA_PMP=y
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_SIL24=y
+CONFIG_ATA_SFF=y
+CONFIG_SATA_SVW=y
+CONFIG_ATA_PIIX=y
+# CONFIG_SATA_MV is not set
+CONFIG_SATA_NV=y
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+CONFIG_SATA_SIL=y
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=y
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ACPI is not set
+# CONFIG_PATA_ALI is not set
+CONFIG_PATA_AMD=y
+# CONFIG_PATA_ARTOP is not set
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+CONFIG_ATA_GENERIC=y
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NINJA32 is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_NS87415 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+CONFIG_PATA_SERVERWORKS=y
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+CONFIG_PATA_VIA=y
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_SCH is not set
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_AUTODETECT=y
+CONFIG_MD_LINEAR=y
+CONFIG_MD_RAID0=y
+CONFIG_MD_RAID1=y
+CONFIG_MD_RAID10=y
+CONFIG_MD_RAID456=y
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=y
+# CONFIG_MD_FAULTY is not set
+CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=y
+# CONFIG_FUSION_FC is not set
+CONFIG_FUSION_SAS=y
+CONFIG_FUSION_MAX_SGE=128
+# CONFIG_FUSION_CTL is not set
+# CONFIG_FUSION_LOGGING is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# Enable only one of the two stacks, unless you know what you are doing
+#
+# CONFIG_FIREWIRE is not set
+CONFIG_IEEE1394=y
+CONFIG_IEEE1394_OHCI1394=y
+# CONFIG_IEEE1394_PCILYNX is not set
+# CONFIG_IEEE1394_SBP2 is not set
+# CONFIG_IEEE1394_ETH1394_ROM_ENTRY is not set
+# CONFIG_IEEE1394_ETH1394 is not set
+CONFIG_IEEE1394_RAWIO=y
+# CONFIG_IEEE1394_VIDEO1394 is not set
+# CONFIG_IEEE1394_DV1394 is not set
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_I2O is not set
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=y
+# CONFIG_VETH is not set
+# CONFIG_NET_SB1000 is not set
+# CONFIG_ARCNET is not set
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+# CONFIG_ENC28J60 is not set
+CONFIG_NET_TULIP=y
+# CONFIG_DE2104X is not set
+CONFIG_TULIP=y
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_TULIP_NAPI is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_DM9102 is not set
+# CONFIG_ULI526X is not set
+# CONFIG_HP100 is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+CONFIG_AMD8111_ETH=m
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_FORCEDETH=m
+# CONFIG_FORCEDETH_NAPI is not set
+# CONFIG_EEPRO100 is not set
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_R6040 is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_SC92031 is not set
+# CONFIG_ATL2 is not set
+CONFIG_NETDEV_1000=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IP1000=m
+CONFIG_IGB=m
+# CONFIG_IGB_LRO is not set
+CONFIG_IGB_DCA=y
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+# CONFIG_YELLOWFIN is not set
+CONFIG_R8169=m
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
+# CONFIG_ATL1 is not set
+# CONFIG_ATL1E is not set
+# CONFIG_JME is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_IWLWIFI_LEDS is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+CONFIG_NETCONSOLE=y
+# CONFIG_NETCONSOLE_DYNAMIC is not set
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+# CONFIG_ISDN is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+CONFIG_INPUT_POLLDEV=m
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_NOZOMI is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_CONSOLE_POLL=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_IPMI_HANDLER=m
+CONFIG_IPMI_PANIC_EVENT=y
+CONFIG_IPMI_PANIC_STRING=y
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_INTEL=y
+CONFIG_HW_RANDOM_AMD=y
+CONFIG_NVRAM=y
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_MWAVE is not set
+# CONFIG_PC8736x_GPIO is not set
+CONFIG_RAW_DRIVER=y
+CONFIG_MAX_RAW_DEVS=256
+CONFIG_HPET=y
+CONFIG_HPET_MMAP=y
+CONFIG_HANGCHECK_TIMER=m
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=m
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+# CONFIG_I2C_AMD756_S4882 is not set
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+# CONFIG_I2C_ISCH is not set
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+# CONFIG_I2C_NFORCE2_S4985 is not set
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_OCORES=m
+CONFIG_I2C_SIMTEC=m
+
+#
+# External I2C/SMBus adapter drivers
+#
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_TAOS_EVM=m
+CONFIG_I2C_TINY_USB=m
+
+#
+# Graphics adapter I2C/DDC channel drivers
+#
+CONFIG_I2C_VOODOO3=m
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+CONFIG_I2C_STUB=m
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_DS1682=m
+# CONFIG_AT24 is not set
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_MAX6875=m
+CONFIG_SENSORS_TSL2550=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+# CONFIG_GPIOLIB is not set
+# CONFIG_W1 is not set
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PDA_POWER is not set
+# CONFIG_BATTERY_DS2760 is not set
+# CONFIG_BATTERY_BQ27x00 is not set
+CONFIG_HWMON=y
+CONFIG_HWMON_VID=m
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ABITUGURU3=m
+# CONFIG_SENSORS_AD7414 is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_SENSORS_ADCXX is not set
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1029=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+# CONFIG_SENSORS_ADT7462 is not set
+CONFIG_SENSORS_ADT7470=m
+# CONFIG_SENSORS_ADT7473 is not set
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_I5K_AMB=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_F71882FG=m
+CONFIG_SENSORS_F75375S=m
+CONFIG_SENSORS_FSCHER=m
+CONFIG_SENSORS_FSCPOS=m
+CONFIG_SENSORS_FSCHMD=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_CORETEMP=m
+# CONFIG_SENSORS_IBMAEM is not set
+CONFIG_SENSORS_IBMPEX=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+# CONFIG_SENSORS_LM70 is not set
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_LM93=m
+# CONFIG_SENSORS_MAX1111 is not set
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_DME1737=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+# CONFIG_SENSORS_ADS7828 is not set
+CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83L785TS=m
+# CONFIG_SENSORS_W83L786NG is not set
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_HDAPS=m
+# CONFIG_SENSORS_LIS3LV02D is not set
+CONFIG_SENSORS_APPLESMC=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_ACQUIRE_WDT=m
+CONFIG_ADVANTECH_WDT=m
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_SC520_WDT=m
+CONFIG_EUROTECH_WDT=m
+CONFIG_IB700_WDT=m
+CONFIG_IBMASR=m
+CONFIG_WAFER_WDT=m
+CONFIG_I6300ESB_WDT=m
+CONFIG_ITCO_WDT=m
+# CONFIG_ITCO_VENDOR_SUPPORT is not set
+# CONFIG_IT8712F_WDT is not set
+# CONFIG_IT87_WDT is not set
+# CONFIG_HP_WATCHDOG is not set
+CONFIG_SC1200_WDT=m
+CONFIG_PC87413_WDT=m
+CONFIG_60XX_WDT=m
+CONFIG_SBC8360_WDT=m
+CONFIG_CPU5_WDT=m
+CONFIG_SMSC37B787_WDT=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83697HF_WDT=m
+# CONFIG_W83697UG_WDT is not set
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+CONFIG_MACHZ_WDT=m
+CONFIG_SBC_EPX_C3_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB=m
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+# CONFIG_SSB_B43_PCI_BRIDGE is not set
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_REGULATOR is not set
+
+#
+# Multimedia devices
+#
+
+#
+# Multimedia core support
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_VIDEO_MEDIA is not set
+
+#
+# Multimedia drivers
+#
+CONFIG_DAB=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_AGP=y
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_VIA is not set
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_VGACON_SOFT_SCROLLBACK=y
+CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=256
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_SOUND is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# Special HID drivers
+#
+CONFIG_HID_COMPAT=y
+CONFIG_HID_A4TECH=y
+CONFIG_HID_APPLE=y
+CONFIG_HID_BELKIN=y
+CONFIG_HID_BRIGHT=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+CONFIG_HID_CYPRESS=y
+CONFIG_HID_DELL=y
+CONFIG_HID_EZKEY=y
+CONFIG_HID_GYRATION=y
+CONFIG_HID_LOGITECH=y
+# CONFIG_LOGITECH_FF is not set
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+CONFIG_HID_PANTHERLORD=y
+# CONFIG_PANTHERLORD_FF is not set
+CONFIG_HID_PETALYNX=y
+CONFIG_HID_SAMSUNG=y
+CONFIG_HID_SONY=y
+CONFIG_HID_SUNPLUS=y
+# CONFIG_THRUSTMASTER_FF is not set
+# CONFIG_ZEROPLUS_FF is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+CONFIG_USB_MON=y
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_WHCI_HCD is not set
+# CONFIG_USB_HWA_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+CONFIG_USB_PRINTER=y
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
+#
+
+#
+# see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
+# CONFIG_USB_GADGET is not set
+# CONFIG_UWB is not set
+# CONFIG_MMC is not set
+# CONFIG_MEMSTICK is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_HP_DISK is not set
+# CONFIG_LEDS_CLEVO_MAIL is not set
+# CONFIG_LEDS_PCA955X is not set
+
+#
+# LED Triggers
+#
+# CONFIG_LEDS_TRIGGERS is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_MAX6900=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_S35390A=m
+CONFIG_RTC_DRV_FM3130=m
+# CONFIG_RTC_DRV_RX8581 is not set
+
+#
+# SPI RTC drivers
+#
+CONFIG_RTC_DRV_M41T94=m
+CONFIG_RTC_DRV_DS1305=m
+# CONFIG_RTC_DRV_DS1390 is not set
+CONFIG_RTC_DRV_MAX6902=m
+CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RS5C348=m
+# CONFIG_RTC_DRV_DS3234 is not set
+
+#
+# Platform RTC drivers
+#
+CONFIG_RTC_DRV_CMOS=m
+# CONFIG_RTC_DRV_DS1286 is not set
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_STK17TA8=m
+CONFIG_RTC_DRV_M48T86=m
+# CONFIG_RTC_DRV_M48T35 is not set
+CONFIG_RTC_DRV_M48T59=m
+# CONFIG_RTC_DRV_BQ4802 is not set
+CONFIG_RTC_DRV_V3020=m
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_DMADEVICES=y
+
+#
+# DMA Devices
+#
+CONFIG_INTEL_IOATDMA=m
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+# CONFIG_DMATEST is not set
+CONFIG_DCA=m
+# CONFIG_UIO is not set
+# CONFIG_STAGING is not set
+CONFIG_STAGING_EXCLUDE_BUILD=y
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+CONFIG_FIRMWARE_MEMMAP=y
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS is not set
+CONFIG_DMIID=y
+# CONFIG_ISCSI_IBFT_FIND is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FILE_LOCKING=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_POSIX_ACL=y
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_DEBUG is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+# CONFIG_QUOTA_NETLINK_INTERFACE is not set
+CONFIG_PRINT_QUOTA_WARNING=y
+CONFIG_QFMT_V1=m
+CONFIG_QFMT_V2=m
+CONFIG_QUOTACTL=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+CONFIG_GENERIC_ACL=y
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_VMCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NFSD=y
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_REGISTER_V4 is not set
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+CONFIG_NLS_ISO8859_15=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+CONFIG_FRAME_WARN=2048
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_UNUSED_SYMBOLS=y
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_SCHED_DEBUG is not set
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_DEBUG_MUTEXES=y
+CONFIG_DEBUG_LOCK_ALLOC=y
+# CONFIG_PROVE_LOCKING is not set
+CONFIG_LOCKDEP=y
+# CONFIG_LOCK_STAT is not set
+CONFIG_DEBUG_LOCKDEP=y
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_FRAME_POINTER is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_KPROBES_SANITY_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_LKDTM is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_SYSCTL_SYSCALL_CHECK=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+
+#
+# Tracers
+#
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_SYSPROF_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_BOOT_TRACER is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
+# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+CONFIG_KGDB=y
+CONFIG_KGDB_SERIAL_CONSOLE=y
+# CONFIG_KGDB_TESTS is not set
+# CONFIG_STRICT_DEVMEM is not set
+CONFIG_X86_VERBOSE_BOOTUP=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EARLY_PRINTK_DBGP is not set
+CONFIG_DEBUG_STACKOVERFLOW=y
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_X86_PTDUMP is not set
+CONFIG_DEBUG_RODATA=y
+# CONFIG_DIRECT_GBPAGES is not set
+# CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_NX_TEST is not set
+# CONFIG_IOMMU_DEBUG is not set
+# CONFIG_MMIOTRACE is not set
+CONFIG_IO_DELAY_TYPE_0X80=0
+CONFIG_IO_DELAY_TYPE_0XED=1
+CONFIG_IO_DELAY_TYPE_UDELAY=2
+CONFIG_IO_DELAY_TYPE_NONE=3
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+CONFIG_DEFAULT_IO_DELAY_TYPE=0
+# CONFIG_DEBUG_BOOT_PARAMS is not set
+# CONFIG_CPA_DEBUG is not set
+# CONFIG_OPTIMIZE_INLINING is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+CONFIG_SECURITY=y
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_NETWORK is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_SECURITY_ROOTPLUG is not set
+CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
+CONFIG_XOR_BLOCKS=y
+CONFIG_ASYNC_CORE=y
+CONFIG_ASYNC_MEMCPY=y
+CONFIG_ASYNC_XOR=y
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+# CONFIG_CRYPTO_FIPS is not set
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_MANAGER=y
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
+
+#
+# Digest
+#
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CRC32C_INTEL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+CONFIG_CRYPTO_SHA1=m
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_AES_X86_64 is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SALSA20_X86_64 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_LZO is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_HIFN_795X is not set
+CONFIG_HAVE_KVM=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM=m
+CONFIG_KVM_INTEL=m
+CONFIG_KVM_AMD=m
+# CONFIG_VIRTIO_PCI is not set
+# CONFIG_VIRTIO_BALLOON is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage1-nomultilib.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage1-nomultilib.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage1-nomultilib.spec	(revision 25051)
@@ -0,0 +1,9 @@
+subarch: amd64
+target: stage1
+version_stamp: hardened+nomultilib-2008.0
+rel_type: hardened
+profile: hardened/linux/amd64/2008.0/no-multilib
+snapshot: 2008.0
+source_subpath: hardened/stage3-amd64-hardened-2007.0
+cflags: -O2 -pipe -fforce-addr
+cxxflags: -O2 -pipe -fforce-addr
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage1.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage1.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage1.spec	(revision 25051)
@@ -0,0 +1,9 @@
+subarch: amd64
+target: stage1
+version_stamp: hardened-2008.0
+rel_type: hardened
+profile: hardened/linux/amd64/2008.0
+snapshot: 2008.0
+source_subpath: hardened/stage3-amd64-hardened-multilib-2007.0
+cflags: -O2 -pipe -fforce-addr
+cxxflags: -O2 -pipe -fforce-addr
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage2-nomultilib.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage2-nomultilib.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage2-nomultilib.spec	(revision 25051)
@@ -0,0 +1,9 @@
+subarch: amd64
+target: stage2
+version_stamp: hardened+nomultilib-2008.0
+rel_type: hardened
+profile: hardened/linux/amd64/2008.0/no-multilib
+snapshot: 2008.0
+source_subpath: hardened/stage1-amd64-hardened+nomultilib-2008.0
+cflags: -O2 -pipe -fforce-addr
+cxxflags: -O2 -pipe -fforce-addr
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage2.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage2.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage2.spec	(revision 25051)
@@ -0,0 +1,9 @@
+subarch: amd64
+target: stage2
+version_stamp: hardened-2008.0
+rel_type: hardened
+profile: hardened/linux/amd64/2008.0
+snapshot: 2008.0
+source_subpath: hardened/stage1-amd64-hardened-2008.0
+cflags: -O2 -pipe -fforce-addr
+cxxflags: -O2 -pipe -fforce-addr
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage3-nomultilib.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage3-nomultilib.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage3-nomultilib.spec	(revision 25051)
@@ -0,0 +1,9 @@
+subarch: amd64
+target: stage3
+version_stamp: hardened+nomultilib-2008.0
+rel_type: hardened
+profile: hardened/linux/amd64/2008.0/no-multilib
+snapshot: 2008.0
+source_subpath: hardened/stage2-amd64-hardened+nomultilib-2008.0
+cflags: -O2 -pipe -fforce-addr
+cxxflags: -O2 -pipe -fforce-addr
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage3.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage3.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/hardened/stage3.spec	(revision 25051)
@@ -0,0 +1,9 @@
+subarch: amd64
+target: stage3
+version_stamp: hardened-2008.0
+rel_type: hardened
+profile: hardened/linux/amd64/2008.0
+snapshot: 2008.0
+source_subpath: hardened/stage2-amd64-hardened-2008.0
+cflags: -O2 -pipe -fforce-addr
+cxxflags: -O2 -pipe -fforce-addr
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/installcd-stage1.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/installcd-stage1.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/installcd-stage1.spec	(revision 25051)
@@ -0,0 +1,123 @@
+subarch: amd64
+version_stamp: 2008.0
+target: livecd-stage1
+rel_type: default
+profile: default/linux/amd64/2008.0/no-multilib
+snapshot: 2008.0
+source_subpath: default/stage3-amd64-2008.0
+livecd/use:
+	-*
+	deprecated
+	fbcon
+	ipv6
+	livecd
+	loop-aes
+	lvm1
+	ncurses
+	nls
+	nptl
+	nptlonly
+	pam
+	readline
+	socks5
+	ssl
+	unicode
+
+livecd/packages:
+        net-misc/rsync
+	app-accessibility/brltty
+	app-admin/hddtemp
+	app-admin/passook
+	app-admin/pwgen
+	app-admin/syslog-ng
+	app-arch/unzip
+	app-editors/vim
+	app-misc/screen
+	app-misc/vlock
+	app-portage/mirrorselect
+	app-text/wgetpaste
+	media-gfx/fbgrab
+	net-analyzer/tcptraceroute
+	net-analyzer/traceroute
+	net-dialup/mingetty
+### Masked (no keywords)
+#	net-dialup/penggy
+	net-dialup/pptpclient
+	net-dialup/rp-pppoe
+	net-fs/nfs-utils
+	net-irc/irssi
+	net-misc/dhcpcd
+	net-misc/iputils
+	net-misc/ntp
+	net-misc/rdate
+	net-misc/vconfig
+	net-proxy/dante
+	net-proxy/ntlmaps
+	net-proxy/tsocks
+### Masked (~amd64)
+#	net-wireless/b43-fwcutter
+### Masked (~amd64)
+#	net-wireless/bcm43xx-fwcutter
+#	net-wireless/ipw2100-firmware
+#	net-wireless/ipw2200-firmware
+#	net-wireless/iwl3945-ucode
+#	net-wireless/iwl4965-ucode
+#	net-wireless/prism54-firmware
+#	net-wireless/wireless-tools
+#	net-wireless/wpa_supplicant
+#	net-wireless/zd1201-firmware
+#	net-wireless/zd1211-firmware
+	sys-apps/apmd
+	sys-apps/eject
+	sys-apps/ethtool
+	sys-apps/fxload
+	sys-apps/hdparm
+	sys-apps/hwsetup
+	sys-apps/iproute2
+### Masked (no keywords)
+#	sys-apps/lssbus
+	sys-apps/memtester
+	sys-apps/netplug
+	sys-apps/parted
+### Masked (no keywords)
+#	sys-apps/powerpc-utils
+### Masked (no keywords)
+#	sys-apps/ibm-powerpc-utils
+### Masked (no keywords)
+#	sys-apps/ibm-powerpc-utils-papr
+	sys-apps/sdparm
+### Masked (~amd64)
+#	sys-block/partimage
+	sys-block/qla-fc-firmware
+### Masked (no keywords)
+#	sys-boot/yaboot
+### Masked (no keywords)
+#	sys-devel/binutils-hppa64
+### Masked (no keywords)
+#	sys-devel/gcc-hppa64
+	sys-fs/cryptsetup
+	sys-fs/dmraid
+	sys-fs/dosfstools
+	sys-fs/e2fsprogs
+	sys-fs/evms
+	sys-boot/syslinux
+# commented by JH as the ebuilds were masked
+#	sys-fs/hfsplusutils
+#	sys-fs/hfsutils
+### Masked (no keywords)
+#	sys-fs/iprutils
+	sys-fs/jfsutils
+	sys-fs/lsscsi
+	sys-fs/lvm2
+#	sys-fs/lvm-user
+	sys-fs/mac-fdisk
+	sys-fs/mdadm
+	sys-fs/multipath-tools
+	sys-fs/ntfsprogs
+	sys-fs/reiserfsprogs
+	sys-fs/xfsprogs
+	sys-libs/gpm
+	sys-power/acpid
+### Masked (no keywords)
+#	sys-power/apmd
+	www-client/links
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/installcd-stage2-minimal.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/installcd-stage2-minimal.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/installcd-stage2-minimal.spec	(revision 25051)
@@ -0,0 +1,313 @@
+subarch: amd64
+version_stamp: 2008.0
+target: livecd-stage2
+rel_type: default
+profile: default/linux/amd64/2008.0/no-multilib
+snapshot: 2008.0
+source_subpath: default/livecd-stage1-amd64-2008.0
+
+livecd/bootargs: console=tty0 console=ttyS0,115200
+livecd/cdtar: /usr/lib/catalyst/livecd/cdtar/isolinux-elilo-memtest86+-cdtar.tar.bz2
+livecd/fstype: squashfs
+livecd/gk_mainargs: --lvm --dmraid --evms --mdadm --makeopts=-j8
+livecd/iso: /var/tmp/catalyst/builds/default/install-amd64-minimal-2008.0.iso
+livecd/type: gentoo-release-minimal
+livecd/volid: Gentoo Linux amd64 2008.0
+
+boot/kernel: gentoo
+
+boot/kernel/gentoo/sources: gentoo-sources
+boot/kernel/gentoo/config: /root/2008.0-specs/2.6.28-rc7-00105-gfeaf384.conf
+boot/kernel/gentoo/use:
+	-*
+	atm
+	deprecated
+	fbcon
+	fbcondecor
+	ipv6
+	livecd
+	loop-aes
+	lvm1
+	mng
+	ncurses
+	nls
+	nptl
+	nptlonly
+	pam
+	png
+	readline
+	socks5
+	ssl
+	truetype
+	unicode
+	usb
+
+boot/kernel/gentoo/packages:
+	net-dialup/globespan-adsl
+# These were not stable at time of snapshot/release.
+#	net-wireless/rtl8180
+#	net-wireless/rtl8187
+#	net-wireless/adm8211
+#	net-wireless/acx
+#	net-wireless/ipw3945
+#	net-wireless/rt2500
+	sys-apps/pcmciautils
+
+livecd/unmerge:
+	app-admin/eselect
+	app-admin/eselect-ctags
+	app-admin/eselect-vi
+	app-admin/perl-cleaner
+	app-admin/python-updater
+	app-arch/cpio
+	dev-libs/gmp
+	dev-libs/libxml2
+	dev-libs/mpfr
+	dev-libs/popt
+	dev-python/pycrypto
+	dev-util/pkgconfig
+	perl-core/PodParser
+	perl-core/Test-Harness
+	sys-apps/debianutils
+	sys-apps/diffutils
+	sys-apps/file
+	sys-apps/groff
+	sys-apps/man
+	sys-apps/man-pages
+	sys-apps/miscfiles
+#	sys-apps/portage
+#	sys-apps/sandbox
+	sys-apps/texinfo
+	sys-devel/autoconf
+	sys-devel/autoconf-wrapper
+	sys-devel/automake
+	sys-devel/automake-wrapper
+	sys-devel/binutils
+	sys-devel/binutils-config
+	sys-devel/bison
+	sys-devel/flex
+	sys-devel/gcc
+	sys-devel/gcc-config
+	sys-devel/gettext
+	sys-devel/gnuconfig
+	sys-devel/libtool
+	sys-devel/m4
+	sys-devel/make
+	sys-devel/patch
+	sys-libs/db
+	sys-libs/gdbm
+	sys-libs/libkudzu
+	sys-kernel/genkernel
+	sys-kernel/linux-headers
+
+livecd/empty:
+	/etc/cron.daily
+	/etc/cron.hourly
+	/etc/cron.monthly
+	/etc/cron.weekly
+	/etc/logrotate.d
+	/etc/modules.autoload.d
+	/etc/rsync
+	/etc/runlevels/single
+	/etc/skel
+	/lib/dev-state
+	/lib/udev-state
+	/lib64/dev-state
+	/lib64/udev-state
+	/root/.ccache
+	/tmp
+	/usr/diet/include
+	/usr/diet/man
+	/usr/i386-gentoo-linux-uclibc
+	/usr/i386-pc-linux-gnu
+	/usr/i386-pc-linux-uclibc
+	/usr/include
+	/usr/lib/X11/config
+	/usr/lib/X11/doc
+	/usr/lib/X11/etc
+	/usr/lib/awk
+	/usr/lib/ccache
+	/usr/lib/gcc-config
+	/usr/lib/gconv
+	/usr/lib/nfs
+	/usr/lib/perl5/site_perl
+	/usr/lib/portage
+	/usr/lib/python2.2
+	/usr/lib/python2.3
+	/usr/lib/python2.4/test
+	/usr/lib64/X11/config
+	/usr/lib64/X11/doc
+	/usr/lib64/X11/etc
+	/usr/lib64/awk
+	/usr/lib64/ccache
+	/usr/lib64/gcc-config
+	/usr/lib64/gconv
+	/usr/lib64/nfs
+	/usr/lib64/perl5/site_perl
+	/usr/lib64/portage
+	/usr/lib64/python2.2
+	/usr/lib64/python2.3
+	/usr/lib64/python2.4/test
+	/usr/local
+	/usr/portage
+	/usr/powerpc-unknown-linux-gnu
+	/usr/powerpc64-unknown-linux-gnu
+	/usr/share/aclocal
+	/usr/share/baselayout
+	/usr/share/binutils-data
+	/usr/share/consolefonts/partialfonts
+	/usr/share/consoletrans
+	/usr/share/dict
+	/usr/share/doc
+	/usr/share/emacs
+	/usr/share/et
+	/usr/share/gcc-data
+	/usr/share/genkernel
+	/usr/share/gettext
+	/usr/share/glib-2.0
+	/usr/share/gnuconfig
+	/usr/share/gtk-doc
+	/usr/share/i18n
+	/usr/share/info
+	/usr/share/lcms
+	/usr/share/libtool
+	/usr/share/locale
+	/usr/share/man
+	/usr/share/rfc
+	/usr/share/ss
+	/usr/share/state
+	/usr/share/texinfo
+	/usr/share/unimaps
+	/usr/share/zoneinfo
+	/usr/sparc-unknown-linux-gnu
+	/usr/src
+	/usr/x86_64-pc-linux-gnu
+	/var/cache
+	/var/empty
+	/var/lib/portage
+	/var/lock
+	/var/log
+	/var/run
+	/var/spool
+	/var/state
+	/var/tmp
+
+livecd/rm:
+	/boot/System*
+	/boot/initr*
+	/boot/kernel*
+	/etc/*-
+	/etc/*.old
+	/etc/default/audioctl
+	/etc/dispatch-conf.conf
+	/etc/env.d/05binutils
+	/etc/env.d/05gcc
+	/etc/etc-update.conf
+	/etc/hosts.bck
+	/etc/issue*
+	/etc/genkernel.conf
+	/etc/make.conf*
+	/etc/make.globals
+	/etc/make.profile
+	/etc/man.conf
+	/etc/resolv.conf
+	/lib*/*.a
+	/lib*/*.la
+	/lib*/cpp
+	/lib*/security/pam_access.so
+	/lib*/security/pam_chroot.so
+	/lib*/security/pam_debug.so
+	/lib*/security/pam_ftp.so
+	/lib*/security/pam_issue.so
+	/lib*/security/pam_mail.so
+	/lib*/security/pam_mkhomedir.so
+	/lib*/security/pam_motd.so
+	/lib*/security/pam_postgresok.so
+	/lib*/security/pam_rhosts_auth.so
+	/lib*/security/pam_userdb.so
+	/root/.bash_history
+	/root/.viminfo
+	/sbin/*.static
+	/sbin/fsck.cramfs
+	/sbin/fsck.minix
+	/sbin/mkfs.bfs
+	/sbin/mkfs.cramfs
+	/sbin/mkfs.minix
+	/usr/bin/addr2line
+	/usr/bin/ar
+	/usr/bin/as
+	/usr/bin/audioctl
+	/usr/bin/c++*
+	/usr/bin/cc
+	/usr/bin/cjpeg
+	/usr/bin/cpp
+	/usr/bin/djpeg
+	/usr/bin/ebuild
+	/usr/bin/emerge
+	/usr/bin/elftoaout
+	/usr/bin/f77
+	/usr/bin/g++*
+	/usr/bin/g77
+	/usr/bin/gcc*
+	/usr/bin/genkernel
+	/usr/bin/gprof
+	/usr/bin/i386-gentoo-linux-uclibc-*
+	/usr/bin/i386-pc-linux-*
+	/usr/bin/jpegtran
+	/usr/bin/ld
+	/usr/bin/libpng*
+	/usr/bin/nm
+	/usr/bin/objcopy
+	/usr/bin/objdump
+	/usr/bin/piggyback*
+	/usr/bin/portageq
+	/usr/bin/ranlib
+	/usr/bin/readelf
+	/usr/bin/repoman
+	/usr/bin/size
+	/usr/bin/powerpc-unknown-linux-gnu-*
+	/usr/bin/powerpc64-unknown-linux-gnu-*
+	/usr/bin/sparc-unknown-linux-gnu-*
+	/usr/bin/sparc64-unknown-linux-gnu-*
+	/usr/bin/strings
+	/usr/bin/strip
+	/usr/bin/tbz2tool
+	/usr/bin/x86_64-pc-linux-gnu-*
+	/usr/bin/xpak
+	/usr/bin/yacc
+	/usr/lib*/*.a
+	/usr/lib*/*.la
+	/usr/lib*/perl5/site_perl
+	/usr/lib*/gcc-lib/*/*/libgcj*
+	/usr/sbin/archive-conf
+	/usr/sbin/dispatch-conf
+	/usr/sbin/emaint
+	/usr/sbin/emerge-webrsync
+	/usr/sbin/env-update
+	/usr/sbin/fb*
+	/usr/sbin/fixpackages
+	/usr/sbin/quickpkg
+	/usr/sbin/regenworld
+	/usr/share/consolefonts/1*
+	/usr/share/consolefonts/7*
+	/usr/share/consolefonts/8*
+	/usr/share/consolefonts/9*
+	/usr/share/consolefonts/A*
+	/usr/share/consolefonts/C*
+	/usr/share/consolefonts/E*
+	/usr/share/consolefonts/G*
+	/usr/share/consolefonts/L*
+	/usr/share/consolefonts/M*
+	/usr/share/consolefonts/R*
+	/usr/share/consolefonts/a*
+	/usr/share/consolefonts/c*
+	/usr/share/consolefonts/dr*
+	/usr/share/consolefonts/g*
+	/usr/share/consolefonts/i*
+	/usr/share/consolefonts/k*
+	/usr/share/consolefonts/l*
+	/usr/share/consolefonts/r*
+	/usr/share/consolefonts/s*
+	/usr/share/consolefonts/t*
+	/usr/share/consolefonts/v*
+	/usr/share/misc/*.old
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/livecd-stage1.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/livecd-stage1.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/livecd-stage1.spec	(revision 25051)
@@ -0,0 +1,167 @@
+subarch: amd64
+version_stamp: installer-2008.0
+target: livecd-stage1
+rel_type: default
+profile: default/linux/amd64/2008.0/desktop
+snapshot: 2008.0
+source_subpath: default/stage3-amd64-desktop-2008.0
+livecd/use:
+	branding
+	livecd
+	loop-aes
+	socks5
+
+livecd/packages:
+	app-accessibility/brltty
+	app-admin/hddtemp
+	app-admin/ide-smart
+	app-admin/logrotate
+	app-admin/passook
+	app-admin/pwgen
+	app-admin/sudo
+	app-admin/syslog-ng
+	app-arch/mt-st
+	app-benchmarks/cpuburn
+#	app-cdr/cdrkit
+	app-crypt/gnupg
+#	app-editors/emacs
+	app-editors/vim
+	app-misc/mc
+	app-misc/screen
+	app-misc/vlock
+#	app-office/openoffice-bin
+#	app-office/openoffice
+	app-portage/gentoolkit
+	app-portage/mirrorselect
+	app-portage/ufed
+	app-text/wgetpaste
+	dev-util/ccache
+	dev-util/cvs
+	dev-util/git
+	dev-util/subversion
+	gnome-base/gdm
+#	gnome-base/gnome
+	xfce-base/xfce4
+	mail-client/mozilla-thunderbird
+#	mail-client/mozilla-thunderbird-bin
+	media-gfx/fbgrab
+#	media-sound/audacious
+	net-analyzer/netcat
+	net-analyzer/nmap
+	net-analyzer/tcpdump
+#	net-analyzer/tcptraceroute
+	net-analyzer/traceroute
+	net-dialup/mingetty
+	net-dialup/minicom
+### Masked (no keywords)
+#	net-dialup/penggy
+	net-dialup/pptpclient
+	net-dialup/rp-pppoe
+	net-firewall/iptables
+	net-fs/mount-cifs
+	net-fs/nfs-utils
+	net-im/pidgin
+	net-irc/irssi
+	net-irc/xchat
+	net-misc/bridge-utils
+	net-misc/dhcpcd
+	net-misc/iputils
+	net-misc/ntp
+	net-misc/rdate
+	net-misc/rdesktop
+	net-misc/vconfig
+	net-misc/vpnc
+	net-misc/whois
+	net-p2p/bittorrent
+	net-proxy/dante
+	net-proxy/ntlmaps
+	net-proxy/tsocks
+### Masked (~amd64)
+#	net-wireless/b43-fwcutter
+### Masked (~amd64)
+#	net-wireless/bcm43xx-fwcutter
+	net-wireless/ipw2100-firmware
+	net-wireless/ipw2200-firmware
+	net-wireless/iwl3945-ucode
+	net-wireless/iwl4965-ucode
+	net-wireless/prism54-firmware
+	net-wireless/wireless-tools
+	net-wireless/wpa_supplicant
+	net-wireless/zd1201-firmware
+	net-wireless/zd1211-firmware
+### Masked (no keywords)
+#	sys-apps/apmd
+	sys-apps/eject
+	sys-apps/ethtool
+	sys-apps/fxload
+	sys-apps/gli
+	sys-apps/hdparm
+	sys-apps/hwsetup
+### Masked (no keywords)
+#	sys-apps/ibm-powerpc-utils
+### Masked (no keywords)
+#	sys-apps/ibm-powerpc-utils-papr
+	sys-apps/iproute2
+### Masked (no keywords)
+#	sys-apps/lssbus
+	sys-apps/memtester
+	sys-apps/netplug
+	sys-apps/parted
+### Masked (no keywords)
+#	sys-apps/powerpc-utils
+	sys-apps/sdparm
+	sys-apps/sg3_utils
+	sys-apps/slocate
+	sys-apps/smartmontools
+	sys-block/aoetools
+	sys-block/disktype
+### Masked (-amd64)
+#	sys-block/gpart
+### Masked (~amd64)
+#	sys-block/partimage
+	sys-block/qla-fc-firmware
+### Masked (no keywords)
+#	sys-boot/aboot
+### Masked (no keywords)
+#	sys-boot/elilo
+	sys-boot/grub
+#	sys-boot/lilo
+	sys-boot/syslinux
+### Masked (no keywords)
+#	sys-boot/yaboot
+### Masked (no keywords)
+#	sys-devel/binutils-hppa64
+	sys-devel/distcc
+### Masked (no keywords)
+#	sys-devel/gcc-hppa64
+	sys-fs/cryptsetup
+	sys-fs/dmraid
+	sys-fs/dosfstools
+	sys-fs/e2fsprogs
+	sys-fs/evms
+	sys-fs/hfsplusutils
+	sys-fs/hfsutils
+### Masked (no keywords)
+#	sys-fs/iprutils
+	sys-fs/jfsutils
+	sys-fs/lsscsi
+	sys-fs/lvm2
+#	sys-fs/lvm-user
+	sys-fs/mac-fdisk
+	sys-fs/mdadm
+	sys-fs/ntfsprogs
+	sys-fs/reiserfsprogs
+	sys-fs/xfsprogs
+	sys-kernel/genkernel
+	sys-libs/gpm
+	sys-power/acpid
+	sys-process/htop
+	sys-process/vixie-cron
+	www-client/links
+	www-client/mozilla-firefox
+#	www-client/mozilla-firefox-bin
+	x11-base/xorg-server
+	x11-base/xorg-x11
+	x11-drivers/synaptics
+	x11-themes/gdm-themes-livecd
+	x11-themes/gentoo-artwork-livecd
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/livecd-stage2.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/livecd-stage2.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/livecd-stage2.spec	(revision 25051)
@@ -0,0 +1,66 @@
+subarch: amd64
+version_stamp: 2008.0
+target: livecd-stage2
+rel_type: default
+profile: default/linux/amd64/2008.0/desktop
+snapshot: 2008.0
+source_subpath: default/livecd-stage1-amd64-installer-2008.0
+
+livecd/bootargs: dokeymap
+livecd/cdtar: /usr/lib/catalyst/livecd/cdtar/isolinux-elilo-memtest86+-cdtar.tar.bz2
+livecd/fsscript: /var/svnroot/releng/trunk/releases/2008.0/scripts/livecd.sh
+livecd/fstype: squashfs
+livecd/gk_mainargs: --lvm --dmraid --evms --mdadm --makeopts=-j8
+livecd/iso: /release/buildroot/amd64-default/builds/default/livecd-amd64-installer-2008.0.iso
+livecd/type: gentoo-release-livecd
+livecd/volid: Gentoo Linux 2008.0 amd64 LiveCD
+livecd/xsession: xfce
+livecd/xdm: gdm
+
+livecd/overlay: /var/svnroot/releng/trunk/releases/2008.0/overlays/common/overlay/livecd
+livecd/root_overlay: /var/svnroot/releng/trunk/releases/2008.0/overlays/common/root_overlay
+
+boot/kernel: gentoo
+boot/kernel/gentoo/sources: gentoo-sources
+boot/kernel/gentoo/config: /var/svnroot/releng/trunk/releases/2008.0/kconfig/amd64/livecd-2.6.24.config
+boot/kernel/gentoo/use: atm fbcondecor mng png truetype usb
+boot/kernel/gentoo/packages:
+	media-libs/alsa-oss
+	media-sound/alsa-utils
+### Masked (~amd64)
+#	net-dialup/fcdsl
+### Masked (~amd64)
+#	net-dialup/fritzcapi
+	net-dialup/globespan-adsl
+### Masked (~amd64)
+#	net-dialup/slmodem
+	net-misc/br2684ctl
+### Masked (~amd64)
+#	net-wireless/acx
+	net-wireless/hostap-utils
+#	net-wireless/ipw3945
+#	net-wireless/madwifi-ng-tools
+#	net-wireless/rt2500
+### Masked (~amd64)
+#	net-wireless/rtl8187
+	sys-apps/pcmciautils
+	sys-fs/ntfs3g
+
+livecd/empty:
+	/var/tmp
+	/var/empty
+	/var/run
+	/var/state
+	/var/cache/edb/dep
+	/tmp
+	/usr/portage
+	/usr/src
+	/root/.ccache
+	/usr/share/genkernel/pkg/x86/cpio
+
+livecd/rm:
+	/etc/*-
+	/etc/*.old
+	/root/.viminfo
+	/var/log/*.log
+	/usr/share/genkernel/pkg/x86/*.bz2
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/livedvd-stage1.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/livedvd-stage1.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/livedvd-stage1.spec	(revision 25051)
@@ -0,0 +1,300 @@
+subarch: amd64
+version_stamp: installer-2008.0
+target: livecd-stage1
+rel_type: default
+profile: default/linux/amd64/2008.0/desktop
+snapshot: 2008.0
+source_subpath: default/stage3-amd64-desktop-2008.0
+livecd/use:
+	branding
+	livecd
+	loop-aes
+	socks5
+
+livecd/packages:
+	app-accessibility/brltty
+	app-admin/gkrellm
+	app-admin/hddtemp
+	app-admin/ide-smart
+	app-admin/logrotate
+	app-admin/passook
+	app-admin/pwgen
+	app-admin/quickswitch
+	app-admin/sudo
+	app-admin/superadduser
+	app-admin/syslog-ng
+### Masked (~amd64)
+#	app-admin/testdisk
+	app-arch/alien
+	app-arch/mt-st
+	app-arch/unrar
+	app-arch/unzip
+	app-benchmarks/cpuburn
+	app-cdr/bin2iso
+	app-cdr/cdrdao
+	app-cdr/cdrkit
+	app-cdr/dvd+rw-tools
+	app-cdr/gnomebaker
+	app-cdr/k3b
+	app-cdr/nrg2iso
+	app-crypt/gnupg
+	app-editors/bluefish
+	app-editors/emacs
+	app-editors/gvim
+	app-editors/vim
+	app-editors/xemacs
+	app-forensics/chkrootkit
+	app-laptop/i8kutils
+### Compile fails
+#	app-misc/beagle
+	app-misc/mc
+	app-misc/pax-utils
+	app-misc/screen
+### Masked (~amd64)
+#	app-misc/splitvt
+	app-misc/vlock
+	app-office/dia
+	app-office/gnucash
+	app-office/gnumeric
+	app-office/koffice
+	app-office/openoffice
+#	app-office/openoffice-bin
+	app-office/scribus
+	app-pda/gtkpod
+	app-pda/ipodslave
+	app-portage/herdstat
+	app-portage/genlop
+	app-portage/gentoolkit
+	app-portage/gentoolkit-dev
+	app-portage/layman
+	app-portage/mirrorselect
+	app-portage/portage-utils
+	app-portage/ufed
+	app-shells/bash-completion
+	app-shells/gentoo-bashcomp
+	app-shells/tcsh
+	app-shells/zsh
+	app-shells/zsh-completion
+	app-text/tetex
+	app-text/wgetpaste
+	dev-util/anjuta
+	dev-util/ccache
+	dev-util/cvs
+	dev-util/git
+	dev-util/indent
+	dev-util/kdbg
+	dev-util/kdesvn
+	dev-util/kdevelop
+	dev-util/ltrace
+	dev-util/strace
+	dev-util/subversion
+	dev-util/valgrind
+	gnome-base/gnome
+	gnome-extra/evolution-exchange
+	gnome-base/gdm
+### Masked (~amd64)
+#	gnome-extra/gsynaptics
+	gnome-extra/sensors-applet
+	kde-base/kde-meta
+	kde-base/kooka
+	mail-client/evolution
+	mail-client/mozilla-thunderbird
+	mail-client/mozilla-thunderbird-bin
+	mail-client/sylpheed
+	mail-client/claws-mail
+### Masked (~amd64)
+#	media-gfx/blender
+	media-gfx/digikam
+	media-gfx/fbgrab
+	media-gfx/gimp
+	media-gfx/gimp-print
+	media-gfx/gtkam
+	media-gfx/inkscape
+	media-gfx/xsane
+	media-sound/amarok
+	media-sound/audacious
+	media-sound/audacity
+	media-sound/easytag
+	media-sound/gnomeradio
+	media-sound/grip
+	media-sound/hydrogen
+	media-sound/rhythmbox
+	media-video/dvdrip
+	media-video/gqcam
+#	media-video/gxine
+	media-video/lsdvd
+	media-video/mplayer
+### Masked (~amd64)
+#	media-video/mplayer-bin
+	media-video/ogle-gui
+	media-video/vlc
+	media-video/xine-ui
+	media-video/kmplayer
+	net-analyzer/ettercap
+	net-analyzer/netcat
+	net-analyzer/nmap
+	net-analyzer/snort
+	net-analyzer/tcpdump
+	net-analyzer/tcptraceroute
+	net-analyzer/traceroute
+	net-analyzer/wireshark
+	net-dialup/mingetty
+	net-dialup/minicom
+### Masked (no keyword)
+#	net-dialup/penggy
+	net-dialup/pptpclient
+	net-dialup/rp-pppoe
+	net-firewall/iptables
+	net-firewall/kmyfirewall
+	net-ftp/ncftp
+	net-fs/mount-cifs
+	net-fs/nfs-utils
+	net-fs/samba
+	net-im/pidgin
+	net-irc/irssi
+	net-irc/xchat
+	net-misc/bridge-utils
+	net-misc/dhcpcd
+	net-misc/iputils
+	net-misc/ntp
+	net-misc/rdate
+	net-misc/rdesktop
+	net-misc/tightvnc
+	net-misc/vconfig
+	net-misc/vpnc
+	net-misc/whois
+	net-nntp/pan
+	net-p2p/bittorrent
+	net-p2p/limewire
+	net-print/cups
+	net-proxy/dante
+	net-proxy/ntlmaps
+	net-proxy/tsocks
+### Masked (~amd64)
+#	net-wireless/aircrack-ng
+### Masked (~amd64)
+#	net-wireless/airsnort
+### Masked (~amd64)
+#	net-wireless/b43-fwcutter
+### Masked (~amd64)
+#	net-wireless/bcm43xx-fwcutter
+	net-wireless/gnome-bluetooth
+	net-wireless/ipw2100-firmware
+	net-wireless/ipw2200-firmware
+	net-wireless/iwl3945-ucode
+	net-wireless/iwl4965-ucode
+	net-wireless/kdebluetooth
+	net-wireless/prism54-firmware
+	net-wireless/wepattack
+	net-wireless/wireless-tools
+	net-wireless/wpa_supplicant
+	net-wireless/zd1201-firmware
+	net-wireless/zd1211-firmware
+	rox-base/rox
+### Masked
+#	sys-apps/apmd
+	sys-apps/dmidecode
+	sys-apps/eject
+	sys-apps/ethtool
+	sys-apps/fxload
+	sys-apps/gli
+	sys-apps/gradm
+	sys-apps/hdparm
+	sys-apps/hwsetup
+### Masked (no keyword)
+#	sys-apps/ibm-powerpc-utils
+### Masked (no keyword)
+#	sys-apps/ibm-powerpc-utils-papr
+	sys-apps/iproute2
+	sys-apps/ivman
+### Masked (no keyword)
+#	sys-apps/lssbus
+	sys-apps/memtester
+	sys-apps/netplug
+	sys-apps/parted
+	sys-apps/pcsc-lite
+	sys-apps/pmount
+### Masked (no keyword)
+#	sys-apps/powerpc-utils
+### Masked (~amd64)
+#	sys-apps/qtparted
+### Compile fails
+#	sys-apps/rsbac-admin
+	sys-apps/sdparm
+	sys-apps/sg3_utils
+	sys-apps/slocate
+	sys-apps/smartmontools
+### Masked (~amd64)
+#	sys-apps/tuxonice-userui
+	sys-block/aoetools
+	sys-block/disktype
+### Masked (-amd64)
+#	sys-block/gpart
+	sys-block/gparted
+	sys-block/mpt-status
+### Masked (~amd64)
+#	sys-block/partimage
+	sys-block/qla-fc-firmware
+### Masked (no keyword)
+#	sys-boot/aboot
+### Masked (no keyword)
+#	sys-boot/elilo
+	sys-boot/grub
+	sys-boot/lilo
+	sys-boot/syslinux
+### Masked (no keyword)
+#	sys-boot/yaboot
+### Masked (no keyword)
+#	sys-devel/binutils-hppa64
+	sys-devel/distcc
+### Masked (no keyword)
+#	sys-devel/gcc-hppa64
+	sys-devel/gdb
+	sys-fs/cryptsetup
+	sys-fs/dmraid
+	sys-fs/dosfstools
+	sys-fs/e2fsprogs
+	sys-fs/evms
+### Masked (~amd64)
+#	sys-fs/hfsplusutils
+	sys-fs/hfsutils
+### Masked (no keyword)
+#	sys-fs/iprutils
+	sys-fs/jfsutils
+	sys-fs/lsscsi
+	sys-fs/lvm2
+	sys-fs/mac-fdisk
+	sys-fs/mdadm
+	sys-fs/multipath-tools
+	sys-fs/ntfsprogs
+	sys-fs/reiserfsprogs
+	sys-fs/quota
+	sys-fs/xfsprogs
+	sys-fs/xfsdump
+	sys-kernel/genkernel
+	sys-libs/gpm
+	sys-power/acpid
+	sys-power/apcupsd
+	sys-process/htop
+	sys-process/lsof
+	sys-process/vixie-cron
+	www-client/epiphany-extensions
+	www-client/galeon
+	www-client/links
+	www-client/mozilla-firefox
+	www-client/mozilla-firefox-bin
+	www-client/opera
+	www-client/seamonkey
+	www-client/seamonkey-bin
+	x11-base/xorg-x11
+	x11-drivers/synaptics
+	x11-misc/xscreensaver
+### Masked (no keyword)
+#	x11-plugins/gkrellm-plugins
+	x11-themes/gdm-themes-livecd
+	x11-themes/gentoo-artwork-livecd
+	x11-wm/afterstep
+	x11-wm/enlightenment
+	x11-wm/fluxbox
+	x11-wm/windowmaker
+	xfce-base/xfce4
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/livedvd-stage2.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/livedvd-stage2.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/livedvd-stage2.spec	(revision 25051)
@@ -0,0 +1,66 @@
+subarch: amd64
+version_stamp: 2008.0
+target: livecd-stage2
+rel_type: default
+profile: default/linux/amd64/2008.0/desktop
+snapshot: 2008.0
+source_subpath: default/livecd-stage1-amd64-installer-2008.0
+
+livecd/bootargs: dokeymap
+livecd/cdtar: /usr/lib/catalyst/livecd/cdtar/isolinux-elilo-memtest86+-cdtar.tar.bz2
+livecd/fsscript: /var/svnroot/releng/trunk/releases/2008.0/scripts/livecd.sh
+livecd/fstype: squashfs
+livecd/gk_mainargs: --lvm --dmraid --evms --mdadm --makeopts=-j8
+livecd/iso: /var/tmp/catalyst/builds/default/livedvd-amd64-installer-2008.0.iso
+livecd/type: gentoo-release-livecd
+livecd/volid: Gentoo Linux AMD64 LiveDVD
+livecd/xdm: gdm
+livecd/xsession: xfce
+
+livecd/overlay: /var/svnroot/releng/trunk/releases/2008.0/overlays/common/overlay/livedvd
+livecd/root_overlay: /var/svnroot/releng/trunk/releases/2008.0/overlays/common/root_overlay
+
+boot/kernel: gentoo
+
+boot/kernel/gentoo/sources: gentoo-sources
+boot/kernel/gentoo/config: /var/svnroot/releng/trunk/releases/2008.0/kconfig/amd64/livecd-2.6.24.config
+boot/kernel/gentoo/use: atm fbcondecor mng png truetype usb
+boot/kernel/gentoo/packages:
+	media-libs/alsa-oss
+	media-sound/alsa-utils
+### Masked (no keyword)
+#	net-dialup/fcdsl
+### Masked (~amd64)
+#	net-dialup/fritzcapi
+	net-dialup/globespan-adsl
+### Masked (~amd64)
+#	net-dialup/slmodem
+	net-misc/br2684ctl
+### Masked (~amd64)
+#	net-wireless/acx
+	net-wireless/hostap-utils
+#	net-wireless/ipw3945
+#	net-wireless/madwifi-ng-tools
+#	net-wireless/rt2500
+### Masked (~amd64)
+#	net-wireless/rtl8187
+	sys-apps/pcmciautils
+
+livecd/empty:
+	/var/tmp
+	/var/empty
+	/var/run
+	/var/state
+	/var/cache/edb/dep
+	/tmp
+	/usr/portage
+	/usr/src
+	/root/.ccache
+	/usr/share/genkernel/pkg/amd64/cpio
+
+livecd/rm:
+	/etc/*-
+	/etc/*.old
+	/root/.viminfo
+	/var/log/*.log
+	/usr/share/genkernel/pkg/amd64/*.bz2
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage1.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage1.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage1.spec	(revision 25051)
@@ -0,0 +1,10 @@
+subarch: amd64
+target: stage1
+version_stamp: 2008.0
+rel_type: default
+profile: default/linux/amd64/2008.0
+snapshot: 2008.0
+source_subpath: default/stage3-amd64-2007.0
+cflags: -O2 -pipe -march=k8
+portage_confdir: /etc/portage
+portage_overlay: /usr/src/portage_overlay
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage2-desktop.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage2-desktop.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage2-desktop.spec	(revision 25051)
@@ -0,0 +1,7 @@
+subarch: amd64
+target: stage2
+version_stamp: desktop-2008.0
+rel_type: default
+profile: default/linux/amd64/2008.0/desktop
+snapshot: 2008.0
+source_subpath: default/stage1-amd64-2008.0
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage2.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage2.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage2.spec	(revision 25051)
@@ -0,0 +1,10 @@
+subarch: amd64
+target: stage2
+version_stamp: 2008.0
+rel_type: default
+profile: default/linux/amd64/2008.0
+snapshot: 2008.0
+source_subpath: default/stage1-amd64-2008.0
+cflags: -O2 -pipe -march=k8
+portage_confdir: /etc/portage
+portage_overlay: /usr/src/portage_overlay
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage3-desktop.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage3-desktop.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage3-desktop.spec	(revision 25051)
@@ -0,0 +1,7 @@
+subarch: amd64
+target: stage3
+version_stamp: desktop-2008.0
+rel_type: default
+profile: default/linux/amd64/2008.0/desktop
+snapshot: 2008.0
+source_subpath: default/stage2-amd64-desktop-2008.0
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage3.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage3.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage3.spec	(revision 25051)
@@ -0,0 +1,10 @@
+subarch: amd64
+target: stage3
+version_stamp: 2008.0
+rel_type: default
+profile: default/linux/amd64/2008.0
+snapshot: 2008.0
+source_subpath: default/stage2-amd64-2008.0
+cflags: -O2 -pipe -march=k8
+portage_confdir: /etc/portage
+portage_overlay: /usr/src/portage_overlay
Index: /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage4.spec
===================================================================
--- /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage4.spec	(revision 25051)
+++ /branches/czw_branch/cleanup/catalyst/2008.0-specs/stage4.spec	(revision 25051)
@@ -0,0 +1,10 @@
+subarch: amd64
+target: stage3
+version_stamp: 2008.0
+rel_type: default
+profile: default/linux/amd64/2008.0
+snapshot: 2008.0
+source_subpath: default/stage2-amd64-2008.0
+portage_confdir: /etc/portage
+portage_overlay: /usr/src/portage_overlay
+stage4/packages: ipp-node
Index: /branches/czw_branch/cleanup/console/scripts/console
===================================================================
--- /branches/czw_branch/cleanup/console/scripts/console	(revision 25050)
+++ /branches/czw_branch/cleanup/console/scripts/console	(revision 25051)
@@ -63,73 +63,12 @@
 =over 4
 
-=item * --db|-d <db name>
+=item * --user|-u
 
-Name of database (C<namespace>) to write too.
+The C<ssh> username to use when connecting to the console port.
 
-Optional if defined in the F<.nebdiskdrc> file or the appropriate environment
-variable is set.
-
-=item * --user|-u <db username>
-
-Username to authenticate with.
-
-Optional if defined in the F<.nebdiskdrc> file or the appropriate environment
-variable is set.
-
-=item * --pass|-p <db password>
-
-Password to authenticate with.
-
-Optional if defined in the F<.nebdiskdrc> file or the appropriate environment
-variable is set.
-
-=item * --debug
-
-This flag prevents the program from "daemonizing" so output can be sent to
-C<stdout>/C<stderr> and a debugger used on the running process.
-
-=item * --pidfile <filename>
-
-Filename to log the running daemon's PID too.
-
-Optional, if this option is omitted and no value is defined in the
-F<.nebdiskrc> then no pidfile is created.
-
-=item * --stop|-s
-
-Uses the pidfile to kill an already running daemon.
-
-=item * --restart|-r
-
-Uses the pidfile to kill an already running daemon and then starts a new
-instance.
-
-=item * --verbose|-r
+=item * --verbose|-v
 
 Turns on informational/debugging messages to be sent to the
-C<stderr>/C<stdout>.  This option is probably not very usefully unless combined
-with C<--debug>.
-
-=back
-
-=head1 ENVIRONMENT
-
-These environment variables may be used in place of the specified command line
-options.  All command line option will override the corresponding environment
-value.
-
-=over 4
-
-=item * C<NEB_DB>
-
-Equivalent to --db|-d
-
-=item * C<NEB_USER>
-
-Equivalent to --user|-u
-
-=item * C<NEB_PASS>
-
-Equivalent to --pass|-p 
+C<stderr>/C<stdout>.
 
 =back
@@ -137,41 +76,5 @@
 =head1 RCFILE
 
-This program will attempt to read an C<rcfile> from F<$HOME/.nebdiskrc> and if
-found will use it's values to override program defaults.  Please not that the
-precedence for values is: command line, rcfile, environment variables.
-
-The format of the C<rcfile> is in L<YAML> format and uses the following values:
-
-    ---
-    db: nebulous
-    dbpass: '@neb@'
-    dbuser: nebulous
-    mounts:
-      - /mnt
-      - /tmp
-      - /usr
-    pidfile: /var/tmp/nebdiskd
-    poll_interval: 5
-
-The values C<db>, C<dbpass>, C<dbuser>, and C<pidfile> have the same semantics
-as their command line and/or environment variable equivalents.
-
-=over 4
-
-=item * C<mounts>
-
-A list of "paths" to C<stat(2)> before mounted volumes are polled.  The propose
-of this option is to attempt to keep "automounted" volumes mounted while this
-program is running.
-
-This value may be omitted or left blank.
-
-=item * C<poll_interval>
-
-The number of seconds to wait between checks for mounted volumes.
-
-This value may be omitted or left blank.  The default value is C<60>s.
-
-=back
+This program will attempt to read an C<rcfile> from F<$HOME/.Consolerc>.
 
 =head1 CREDITS
@@ -209,5 +112,5 @@
 =head1 SEE ALSO
 
-L<Config::YAML>
+L<Config::YAML>, L<Console>, L<console-config>, L<console-ipp-defaults>
 
 =cut
Index: /branches/czw_branch/cleanup/console/scripts/console-config
===================================================================
--- /branches/czw_branch/cleanup/console/scripts/console-config	(revision 25050)
+++ /branches/czw_branch/cleanup/console/scripts/console-config	(revision 25051)
@@ -152,39 +152,5 @@
 =head1 RCFILE
 
-This program will attempt to read an C<rcfile> from F<$HOME/.Consolerc>
-
-The format of the C<rcfile> is in L<YAML> format and uses the following values:
-
-    ---
-    db: nebulous
-    dbpass: '@neb@'
-    dbuser: nebulous
-    mounts:
-      - /mnt
-      - /tmp
-      - /usr
-    pidfile: /var/tmp/nebdiskd
-    poll_interval: 5
-
-The values C<db>, C<dbpass>, C<dbuser>, and C<pidfile> have the same semantics
-as their command line and/or environment variable equivalents.
-
-=over 4
-
-=item * C<mounts>
-
-A list of "paths" to C<stat(2)> before mounted volumes are polled.  The propose
-of this option is to attempt to keep "automounted" volumes mounted while this
-program is running.
-
-This value may be omitted or left blank.
-
-=item * C<poll_interval>
-
-The number of seconds to wait between checks for mounted volumes.
-
-This value may be omitted or left blank.  The default value is C<60>s.
-
-=back
+This program will attempt to read an C<rcfile> from F<$HOME/.Consolerc>.
 
 =head1 CREDITS
@@ -222,5 +188,5 @@
 =head1 SEE ALSO
 
-L<Config::YAML>
+L<Config::YAML>, L<Console>, L<console>, L<console-ipp-defaults>
 
 =cut
Index: /branches/czw_branch/cleanup/console/scripts/console-ipp-defaults
===================================================================
--- /branches/czw_branch/cleanup/console/scripts/console-ipp-defaults	(revision 25050)
+++ /branches/czw_branch/cleanup/console/scripts/console-ipp-defaults	(revision 25051)
@@ -139,5 +139,5 @@
 =over 4
 
-=item * --verbose|-r
+=item * --verbose|-v
 
 Turns on informational/debugging messages to be sent to the
@@ -180,5 +180,5 @@
 =head1 SEE ALSO
 
-L<Config::YAML>, L<Console>
+L<Config::YAML>, L<Console>, L<console>, L<console-config>
 
 =cut
Index: /branches/czw_branch/cleanup/dbconfig/changes.txt
===================================================================
--- /branches/czw_branch/cleanup/dbconfig/changes.txt	(revision 25050)
+++ /branches/czw_branch/cleanup/dbconfig/changes.txt	(revision 25051)
@@ -1201,2 +1201,7 @@
 ALTER TABLE distTarget DROP KEY clean;
 ALTER TABLE distTarget ADD CONSTRAINT UNIQUE(label, filter, stage, clean);
+
+ALTER TABLE pstampJob DROP COLUMN args;
+ALTER TABLE pstampJob DROP COLUMN uri;
+ALTER TABLE magicDSRun ADD COLUMN inv_magic_id BIGINT AFTER magic_id;
+ALTER TABLE magicDSRun ADD FOREIGN KEY (inv_magic_id) REFERENCES magicRun(magic_id);
Index: /branches/czw_branch/cleanup/dbconfig/magic.md
===================================================================
--- /branches/czw_branch/cleanup/dbconfig/magic.md	(revision 25050)
+++ /branches/czw_branch/cleanup/dbconfig/magic.md	(revision 25051)
@@ -47,4 +47,5 @@
     magic_ds_id S64         0       # Primary Key
     magic_id    S64         0       # Primary Key fkey(magic_id) ref magicRun(magic_id)
+    inv_magic_id S64        0      # Primary Key fkey(inverse_magic_id) ref magicRun(magic_id)
     state       STR         0       # Key
     stage       STR         64
Index: /branches/czw_branch/cleanup/dbconfig/pstamp.md
===================================================================
--- /branches/czw_branch/cleanup/dbconfig/pstamp.md	(revision 25050)
+++ /branches/czw_branch/cleanup/dbconfig/pstamp.md	(revision 25051)
@@ -36,7 +36,5 @@
     jobType     STR         16
     fault       S32         0
-    uri         STR         255
     exp_id      S64         0
     outputBase  STR         255
-    args        STR         511
 END
Index: /branches/czw_branch/cleanup/doc/misc/docgen.pl
===================================================================
--- /branches/czw_branch/cleanup/doc/misc/docgen.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/doc/misc/docgen.pl	(revision 25051)
@@ -4,5 +4,4 @@
 #Run Doxygen and copy the html files produced to alala web server
 #Called daily by cron
-#Bill Giebink 12/08
 
 use strict;
@@ -11,9 +10,14 @@
 use File::Copy;
 
-my $srcDir = "/data/ipp003.0/ippTests/src/ipp";
+my $srcDir = "/data/ipp002.0/ippDoxygen/ipp";
+system `rm -rf /data/ipp002.0/ippDoxygen/ipp`;
+system `svn co http://svn.pan-starrs.ifa.hawaii.edu/repo/ipp/trunk/ /data/ipp002.0/ippDoxygen/ipp`;
 my $destDir = "/data/alala.0/ippDocs";
 system `rm -rf $destDir/*`;
 
 finddepth(\&wanted, $srcDir);
+chdir $srcDir;
+system `/usr/bin/doxygen`;
+system ("cp -r $srcDir/docs/html/* $destDir");
 
 sub wanted {
@@ -27,7 +31,4 @@
     my $currDir = $File::Find::dir;
     system ("$currDir/autogen.sh");
-    system ("doxygen");
-    system ("mkdir $destDir/$subDir");
-    system ("cp $currDir/docs/html/* $destDir/$subDir");
   }
 }
Index: /branches/czw_branch/cleanup/ippScripts/scripts/magic_destreak.pl
===================================================================
--- /branches/czw_branch/cleanup/ippScripts/scripts/magic_destreak.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/ippScripts/scripts/magic_destreak.pl	(revision 25051)
@@ -38,5 +38,5 @@
 
 # Parse the command-line arguments
-my ($magic_ds_id, $camera, $streaks, $stage, $stage_id, $component, $uri, $path_base, $inverse, $cam_path_base);
+my ($magic_ds_id, $camera, $streaks, $inv_streaks, $stage, $stage_id, $component, $uri, $path_base, $cam_path_base);
 my ($outroot, $recoveryroot);
 my ($replace, $release);
@@ -47,4 +47,5 @@
            'camera=s'       => \$camera,     # camera for evaluating file rules
            'streaks=s'      => \$streaks,    # file containing the list of streaks
+           'inv_streaks=s'  => \$inv_streaks,# file containing the list of streaks from the inverse diff
            'stage=s'        => \$stage,      # raw, chip, warp, or diff
            'stage_id=s'     => \$stage_id,   # exp_id, chip_id, warp_id, or diff_id
@@ -52,5 +53,4 @@
            'uri=s'          => \$uri,        # uri of the input image
            'path_base=s'    => \$path_base,  # path_base of the input
-           'inverse'        => \$inverse,    # Inverse subtraction?
            'cam_path_base=s'=> \$cam_path_base,  # path_base from camera stage (for chip and raw)
            'outroot=s'      => \$outroot,     # "directory" for temporary images (may be nebulous)
@@ -94,5 +94,6 @@
 } elsif ($stage ne "camera") {
     &my_die("Invalid value for stage: $stage", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
-}
+}    
+$inv_streaks = undef if defined($inv_streaks) and ($inv_streaks eq "NULL");
 
 my $mdcParser = PS::IPP::Metadata::Config->new; # Parser for metadata config files
@@ -205,4 +206,8 @@
 
     my ($image, $mask, $ch_mask, $weight, $astrom, $sources);
+
+    # if we're destreaking a bothways diff need to combine the
+    # two streaks files
+    my ($allstreaks_fh, $allstreaks_name);
 
     if ($stage eq "raw") {
@@ -234,9 +239,20 @@
         $sources    = $ipprc->filename("PSWARP.OUTPUT.SOURCES", $path_base);
     } elsif ($stage eq "diff") {
-        my $name = $inverse ? "PPSUB.INVERSE" : "PPSUB.OUTPUT"; # Base name for images
-        $image  = $ipprc->filename($name, $path_base);
-        $mask   = $ipprc->filename("$name.MASK", $path_base);
-        $weight = $ipprc->filename("$name.VARIANCE", $path_base);
+        $image  = $ipprc->filename("PPSUB.OUTPUT", $path_base);
+        $mask   = $ipprc->filename("PPSUB.OUTPUT.MASK", $path_base);
+        $weight = $ipprc->filename("PPSUB.OUTPUT.VARIANCE", $path_base);
         $sources    = $ipprc->filename("PPSUB.OUTPUT.SOURCES", $path_base);
+
+        if ($inv_streaks) {
+            # create a temporary file containing the contents of the 
+            # two streaks files
+            ($allstreaks_fh, $allstreaks_name) = tempfile ("/tmp/all.streaks.XXXX",
+                    UNLINK => !$save_temps);
+
+            combine_streaks($allstreaks_fh, $streaks, $inv_streaks);
+
+            # apply the combined streaks to both the forward and inverse diffs
+            $streaks = $allstreaks_name;
+        }
     }
 
@@ -266,4 +282,30 @@
         }
     }
+    if (($stage eq "diff") and $inv_streaks) {
+        $image   = $ipprc->filename("PPSUB.INVERSE", $path_base);
+        $mask    = $ipprc->filename("PPSUB.INVERSE.MASK", $path_base);
+        $weight  = $ipprc->filename("PPSUB.INVERSE.VARIANCE", $path_base);
+        $sources = $ipprc->filename("PPSUB.INVERSE.SOURCES", $path_base);
+
+        my $command = "$streaksremove -stage $stage -tmproot $tmproot -streaks $streaks -image $image";
+
+        $command .= " -recovery $recoveryroot" if defined $recoveryroot;
+        $command .= " -mask $mask" if defined $mask;
+        $command .= " -weight $weight" if defined $weight;
+        $command .= " -sources $sources" if defined $sources;
+        $command .= " -replace" if $replace;
+        $command .= " -release" if $release;
+        $command .= " -dbname $dbname" if defined $dbname;
+        unless (defined $no_op) {
+            my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
+                run(command => $command, verbose => $verbose);
+            unless ($success) {
+                $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR);
+                &my_die("Unable to perform streaksremove: $error_code", $magic_ds_id, $component, $error_code);
+            }
+        } else {
+            print "skipping command $command\n";
+        }
+    }
 } else {
     # camera stage. The only work to do is to censor the detections file
@@ -376,4 +418,52 @@
 }
 
+sub combine_streaks
+{
+    my $fout = shift;
+    my $fn1 = shift;
+    my $fn2 = shift;
+
+    my ($n1, @streaks1) = read_streaks_file($fn1);
+    my_die("failed to read streaks from $fn1", $magic_ds_id, $component,
+        $PS_EXIT_UNKNOWN_ERROR) if $n1 < 0;
+
+    my ($n2, @streaks2) = read_streaks_file($fn2);
+    my_die("failed to read streaks from $fn2", $magic_ds_id, $component,
+        $PS_EXIT_UNKNOWN_ERROR) if $n2 < 0;
+
+    print $fout $n1 + $n2 . "\n";
+
+    foreach my $line (@streaks1, @streaks2) {
+        print $fout $line;
+    }
+
+    close $fout 
+        or my_die("failed to close combined streaks file", $magic_ds_id,
+                     $component, $PS_EXIT_UNKNOWN_ERROR);
+}
+
+sub read_streaks_file
+{
+    my $filename = shift;
+    my $fh;
+    open $fh, "<$filename" or my_die("failed to open $filename",
+                    $magic_ds_id, $component, $PS_EXIT_UNKNOWN_ERROR);
+
+    # first line is the number of streaks
+    my $line = <$fh>;
+    chomp $line;
+    my $nstreaks = $line;
+
+    my @streaks;
+
+    foreach $line (<$fh>) {
+        push @streaks, $line;
+    }
+
+    close $fh;
+
+    return ($nstreaks, @streaks);
+}
+
 
 sub my_die
Index: /branches/czw_branch/cleanup/ippScripts/scripts/magic_destreak_revert.pl
===================================================================
--- /branches/czw_branch/cleanup/ippScripts/scripts/magic_destreak_revert.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/ippScripts/scripts/magic_destreak_revert.pl	(revision 25051)
@@ -180,53 +180,28 @@
     $bsources = $ipprc->filename("PSWARP.OUTPUT.SOURCES", $backup_path_base);
 } elsif ($stage eq "diff") {
-    my $name = $inverse ? "PPSUB.INVERSE" : "PPSUB.OUTPUT"; # Base name for images
+    my $name = "PPSUB.OUTPUT";
     $image  = $ipprc->filename($name, $path_base);
     $mask   = $ipprc->filename("$name.MASK", $path_base);
     $weight = $ipprc->filename("$name.VARIANCE", $path_base);
-    $sources = $ipprc->filename("PPSUB.OUTPUT.SOURCES", $path_base);
+    $sources = $ipprc->filename("$name.SOURCES", $path_base);
     $bimage  = $ipprc->filename($name, $backup_path_base);
     $bmask   = $ipprc->filename("$name.MASK", $backup_path_base);
     $bweight = $ipprc->filename("$name.VARIANCE", $backup_path_base);
-    $bsources = $ipprc->filename("PPSUB.OUTPUT.SOURCES", $backup_path_base);
-}
-
-if ($image) {
-    revert_file($image, $bimage) or
-        &my_die("failed to restore image file", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
-}
-
-if ($mask) {
-    if (!revert_file($mask, $bmask)) {
-        if ($stage eq 'chip') {
-            # don't fail if the mask file (from the camera stage) fails to revert.
-            # It probably doesn't exist
-            # XXX: Handle this properly
-            print STDERR "failure to revert mask file, ignored\n";
-        } else {
-            &my_die("failed to restore mask file", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
-        }
-    }
-}
-
-if ($ch_mask) {
-    if (!revert_file($ch_mask, $bch_mask)) {
-        &my_die("failed to restore chip mask file", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
-    }
-} 
-
-
-if ($weight) {
-    revert_file($weight, $bweight) or
-        &my_die("failed to restore variance image", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
-}
-
-if ($sources) {
-    revert_file($sources, $bsources) or
-        &my_die("failed to restore sources file", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
-}
-
-if ($astrom) {
-    revert_file($astrom, $bastrom) or
-        &my_die("failed to restore astrometry file", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
+    $bsources = $ipprc->filename("$name.SOURCES", $backup_path_base);
+}
+
+revert_files($image, $mask, $weight, $sources, $astrom, $bimage, $bmask, $bweight, $bsources, $bastrom);
+
+if ($stage eq "diff") {
+    my $name = "PPSUB.INVERSE";
+    $image  = $ipprc->filename($name, $path_base);
+    $mask   = $ipprc->filename("$name.MASK", $path_base);
+    $weight = $ipprc->filename("$name.VARIANCE", $path_base);
+    $sources = $ipprc->filename("$name.SOURCES", $path_base);
+    $bimage  = $ipprc->filename($name, $backup_path_base);
+    $bmask   = $ipprc->filename("$name.MASK", $backup_path_base);
+    $bweight = $ipprc->filename("$name.VARIANCE", $backup_path_base);
+    $bsources = $ipprc->filename("$name.SOURCES", $backup_path_base);
+    revert_files($image, $mask, $weight, $sources, undef, $bimage, $bmask, $bweight, $bsources, undef);
 }
 
@@ -254,4 +229,57 @@
 
 ### Pau.
+
+sub revert_files {
+    my $image = shift;
+    my $mask = shift;
+    my $weight = shift;
+    my $sources = shift;
+    my $astrom = shift;
+    my $bimage = shift;
+    my $bmask = shift;
+    my $bweight = shift;
+    my $bsources = shift;
+    my $bastrom = shift;
+
+    if ($image) {
+        revert_file($image, $bimage) or
+            &my_die("failed to restore image file", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
+    }
+
+    if ($mask) {
+        if (!revert_file($mask, $bmask)) {
+            if ($stage eq 'chip') {
+                # don't fail if the mask file (from the camera stage) fails to revert.
+                # It probably doesn't exist
+                # XXX: Handle this properly
+                print STDERR "failure to revert mask file, ignored\n";
+            } else {
+                &my_die("failed to restore mask file", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
+            }
+        }
+    }
+
+    if ($ch_mask) {
+        if (!revert_file($ch_mask, $bch_mask)) {
+            &my_die("failed to restore chip mask file", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
+        }
+    } 
+
+
+    if ($weight) {
+        revert_file($weight, $bweight) or
+            &my_die("failed to restore variance image", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
+    }
+
+    if ($sources) {
+        revert_file($sources, $bsources) or
+            &my_die("failed to restore sources file", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
+    }
+
+    if ($astrom) {
+        revert_file($astrom, $bastrom) or
+            &my_die("failed to restore astrometry file", $magic_ds_id, $component, $PS_EXIT_CONFIG_ERROR);
+    }
+}
 
 sub check_keyword
Index: /branches/czw_branch/cleanup/ippScripts/scripts/publish_file.pl
===================================================================
--- /branches/czw_branch/cleanup/ippScripts/scripts/publish_file.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/ippScripts/scripts/publish_file.pl	(revision 25051)
@@ -134,5 +134,5 @@
     my $file = $ipprc->file_resolve( $files{$comp} ) or
         &my_die("Unable to resolve file $files{$comp}", $pub_id, $PS_EXIT_SYS_ERROR);
-    my_die("Unable to find file $file", $pub_id, $PS_EXIT_PROG_ERROR) unless $ipprc->file_exists( $file );
+    my_die("Unable to find file $file", $pub_id, $PS_EXIT_SYS_ERROR) unless $ipprc->file_exists( $file );
 
     my $zp = $zp{$comp};
Index: /branches/czw_branch/cleanup/ippTasks/dist.pro
===================================================================
--- /branches/czw_branch/cleanup/ippTasks/dist.pro	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTasks/dist.pro	(revision 25051)
@@ -4,5 +4,5 @@
 check.globals
 
-#$LOGSUBDIR = $LOGDIR/dist
+$LOGSUBDIR = $LOGDIR/dist
 mkdir $LOGSUBDIR
 
Index: /branches/czw_branch/cleanup/ippTasks/magic.pro
===================================================================
--- /branches/czw_branch/cleanup/ippTasks/magic.pro	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTasks/magic.pro	(revision 25051)
@@ -104,4 +104,29 @@
     end
 end
+macro magic.ds.off
+    task magic.destreak.load
+        active false
+    end
+    task magic.destreak.run
+        active false
+    end
+end
+macro magic.ds.on
+    task magic.destreak.load
+        active true
+    end
+    task magic.destreak.run
+        active true
+    end
+end
+
+macro magic.ds.status
+    echo magicToDS
+    book listbook magicToDS
+    echo ""
+    echo magicDSToRevert
+    book listbook magicDSToRevert
+end
+
 
 
@@ -380,6 +405,7 @@
 
   periods      -poll $LOADPOLL
-  periods      -exec $LOADEXEC
-  periods      -timeout 20
+  # this query can take a long time
+  periods      -exec 10
+  periods      -timeout 120
   npending     1
 
@@ -388,5 +414,5 @@
 
   task.exec
-    $run = magicdstool -todestreak -limit 32
+    $run = magicdstool -todestreak -limit 120
     if ($DB:n == 0)
       option DEFAULT
@@ -449,4 +475,5 @@
     book getword magicToDS $pageName camera -var CAMERA
     book getword magicToDS $pageName streaks_uri -var STREAKS
+    book getword magicToDS $pageName inv_streaks_uri -var INV_STREAKS
     book getword magicToDS $pageName stage -var STAGE
     book getword magicToDS $pageName stage_id -var STAGE_ID
@@ -454,5 +481,4 @@
     book getword magicToDS $pageName uri -var URI
     book getword magicToDS $pageName path_base -var PATH_BASE
-    book getword magicToDS $pageName inverse -var INVERSE
     book getword magicToDS $pageName cam_path_base -var CAM_PATH_BASE
     book getword magicToDS $pageName outroot -var OUTROOT
@@ -473,9 +499,5 @@
     # TODO: do not add recoveryroot or replace if they are null or zero
 
-    $run = magic_destreak.pl --magic_ds_id $MAGIC_DS_ID --camera $CAMERA --streaks $STREAKS --stage $STAGE --stage_id $STAGE_ID --component $COMPONENT --uri $URI --path_base $PATH_BASE --cam_path_base $CAM_PATH_BASE --outroot $OUTROOT --logfile $logfile --recoveryroot $RECROOT --replace $REPLACE
-    if ("$INVERSE" == "T")
-       # Inverse subtraction
-       $run = $run --inverse
-    end
+    $run = magic_destreak.pl --magic_ds_id $MAGIC_DS_ID --camera $CAMERA --streaks $STREAKS --inv_streaks $INV_STREAKS --stage $STAGE --stage_id $STAGE_ID --component $COMPONENT --uri $URI --path_base $PATH_BASE --cam_path_base $CAM_PATH_BASE --outroot $OUTROOT --logfile $logfile --recoveryroot $RECROOT --replace $REPLACE
 
     add_standard_args run
Index: /branches/czw_branch/cleanup/ippTasks/pstamp.pro
===================================================================
--- /branches/czw_branch/cleanup/ippTasks/pstamp.pro	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTasks/pstamp.pro	(revision 25051)
@@ -14,5 +14,7 @@
 # example:
 # $PSDBSERVER = -dbserver hostname
-$PS_DBSERVER = ""
+if ($?PSDBSERVER == 0)
+    $PS_DBSERVER = ""
+end
 
 macro pstamp.reset
@@ -363,4 +365,6 @@
         book setword pstampJob $pageName pantaskState RUN
         book getword pstampJob $pageName job_id -var JOB_ID
+        book getword pstampJob $pageName jobType -var JOB_TYPE
+        book getword pstampJob $pageName rownum -var ROWNUM
         book getword pstampJob $pageName dbname -var DBNAME
         book getword pstampJob $pageName outputBase -var OUTPUT_BASE
@@ -371,5 +375,5 @@
 
 
-        $run = pstamp_job_run.pl --job_id $JOB_ID --redirect-output --output_base $OUTPUT_BASE
+        $run = pstamp_job_run.pl --job_id $JOB_ID --job_type $JOB_TYPE --rownum $ROWNUM --output_base $OUTPUT_BASE --redirect-output 
         add_standard_args run
 
Index: /branches/czw_branch/cleanup/ippTasks/survey.pro
===================================================================
--- /branches/czw_branch/cleanup/ippTasks/survey.pro	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTasks/survey.pro	(revision 25051)
@@ -4,37 +4,123 @@
 check.globals
 
-list DIFF_WW
-  ThreePi_SouthernRegion.090724
-end
-
-$DIFF_WW_CNT = 0
-
-task diff.check
+book create SURVEY_DIFF
+book create SURVEY_MAGIC
+
+$SURVEY_DIFF_DB = 0
+$SURVEY_MAGIC_DB = 0
+
+$SURVEY_EXEC = 120
+$SURVEY_POLL = 10
+$SURVEY_TIMEOUT = 600
+
+
+# user functions to manipulate diff labels
+macro survey.add.diff
+  if ($0 != 3)
+    echo "USAGE: survey.add.diff (label) (workdir base)"
+    break
+  end
+  book newpage SURVEY_DIFF $1
+  book setword SURVEY_DIFF $1 WORKDIR $2
+  book setword SURVEY_DIFF $1 STATE PENDING
+end
+
+macro survey.del.diff
+  if ($0 != 2)
+    echo "USAGE: survey.del.diff (label)"
+    break
+  end
+  book delpage SURVEY_DIFF $1
+end
+
+macro survey.show.diff
+  if ($0 != 1)
+    echo "USAGE: survey.show.diff"
+    break
+  end
+  book listbook SURVEY_DIFF
+end
+
+# user functions to manipulate magic labels
+macro survey.add.magic
+  if ($0 != 3)
+    echo "USAGE: survey.add.magic (label) (workdir base)"
+    break
+  end
+  book newpage SURVEY_MAGIC $1
+  book setword SURVEY_MAGIC $1 WORKDIR $2
+  book setword SURVEY_MAGIC $1 STATE PENDING
+end
+
+macro survey.del.magic
+  if ($0 != 2)
+    echo "USAGE: survey.del.magic (label)"
+    break
+  end
+  book delpage SURVEY_MAGIC $1
+end
+
+macro survey.show.magic
+  if ($0 != 1)
+    echo "USAGE: survey.show.magic"
+    break
+  end
+  book listbook SURVEY_MAGIC
+end
+
+
+task survey.diff
   host local
  
-  periods      -poll 10
-  periods      -exec 120
-  periods      -timeout 600
+  periods      -poll $SURVEY_POLL
+  periods      -exec $SURVEY_EXEC
+  periods      -timeout $SURVEY_TIMEOUT
   npending     1
 
-  stdout $LOGDIR/diffcheck.log
-  stderr $LOGDIR/diffcheck.log
+  stdout $LOGDIR/survey.diff.log
+  stderr $LOGDIR/survey.diff.log
 
   # generate diff warp-warp runs
   task.exec
-    if ($DIFF_WW:n == 0) break
-    $run = difftool -dbname gpc1 -definewarpwarp -distance 0.1 -good_frac 0.1 -timediff 3600
-    $run = $run -input_label $DIFF_WW:$DIFF_WW_CNT
-    $run = $run -template_label $DIFF_WW:$DIFF_WW_CNT
-    $run = $run -label $DIFF_WW:$DIFF_WW_CNT
-    $run = $run -workdir neb://@HOST@.0/gpc1/$DIFF_WW:$DIFF_WW_CNT
-    $run = $run -reduction WARPWARP
-
-    $DIFF_WW_CNT ++
-    if ($DIFF_WW_CNT >= $DIFF_WW:n) 
-      echo "reset DIFF_WW_CNT (was $DIFF_WW_CNT)"
-      set DIFF_WW_CNT = 0
-    end
-
+    book npages SURVEY_DIFF -var N
+    if ($N == 0)
+#      echo "No labels for processing"
+      break
+    endif
+
+    book getpage SURVEY_DIFF 0 -var label -key STATE NEW
+    if ("$label" == "NULL")
+      # All labels have been done --- reset
+#      echo "Resetting labels"
+      for i 0 $N
+        book getpage SURVEY_DIFF $i -var label
+	book setword SURVEY_DIFF $label STATE NEW
+      end
+      book getpage SURVEY_DIFF 0 -var label -key STATE NEW
+
+      # Select different database
+      $SURVEY_DIFF_DB ++
+      if ($SURVEY_DIFF_DB >= $DB:n)
+        $SURVEY_DIFF_DB = 0
+      end
+    end
+
+    book setword SURVEY_DIFF $label STATE DONE
+    book getword SURVEY_DIFF $label WORKDIR -var workdir
+
+    $run = difftool -definewarpwarp -distance 0.1 -good_frac 0.1 -timediff 3600
+    $run = $run -input_label $label
+    $run = $run -template_label $label
+    $run = $run -label $label
+    $run = $run -workdir $workdir/$label/
+
+    if ($DB:n == 0)
+      option DEFAULT
+    else
+      $run = $run -dbname $DB:$SURVEY_DIFF_DB
+      option $DB:$SURVEY_DIFF_DB
+    end
+    
+#    echo $run
     command $run
   end
@@ -42,5 +128,5 @@
   # success
   task.exit    0
-    echo "checked for new diff runs"
+#    echo "Success"
   end
 
@@ -59,2 +145,77 @@
   end
 end
+
+
+
+task survey.magic
+  host local
+ 
+  periods      -poll $SURVEY_POLL
+  periods      -exec $SURVEY_EXEC
+  periods      -timeout $SURVEY_TIMEOUT
+  npending     1
+
+  stdout $LOGDIR/survey.magic.log
+  stderr $LOGDIR/survey.magic.log
+
+  # generate magic warp-warp runs
+  task.exec
+    book npages SURVEY_MAGIC -var N
+    if ($N == 0)
+#      echo "No labels for processing"
+      break
+    endif
+
+    book getpage SURVEY_MAGIC 0 -var label -key STATE NEW
+    if ("$label" == "NULL")
+      # All labels have been done --- reset
+#      echo "Resetting labels"
+      for i 0 $N
+        book getpage SURVEY_MAGIC $i -var label
+	book setword SURVEY_MAGIC $label STATE NEW
+      end
+      book getpage SURVEY_MAGIC 0 -var label -key STATE NEW
+
+      # Select different database
+      $SURVEY_MAGIC_DB ++
+      if ($SURVEY_MAGIC_DB >= $DB:n)
+        set $SURVEY_MAGIC_DB = 0
+      end
+    end
+
+    book setword SURVEY_MAGIC $label STATE DONE
+    book getword SURVEY_MAGIC $label WORKDIR -var workdir
+
+    $run = magictool -definebyquery -label $label -diff_label $label -workdir $workdir/$label/
+
+    if ($DB:n == 0)
+      option DEFAULT
+    else
+      $run = $run -dbname $DB:$SURVEY_MAGIC_DB
+      option $DB:$SURVEY_MAGIC_DB
+    end
+    
+#    echo $run
+    command $run
+  end
+
+  # success
+  task.exit    0
+#    echo "Success"
+  end
+
+  # locked list
+  task.exit    default
+    showcommand failure
+  end
+
+  task.exit    crash
+    showcommand crash
+  end
+
+  # operation times out?
+  task.exit    timeout
+    showcommand timeout
+  end
+end
+
Index: /branches/czw_branch/cleanup/ippTests/tap/mailTestResults.pl
===================================================================
--- /branches/czw_branch/cleanup/ippTests/tap/mailTestResults.pl	(revision 25051)
+++ /branches/czw_branch/cleanup/ippTests/tap/mailTestResults.pl	(revision 25051)
@@ -0,0 +1,34 @@
+#!/usr/bin/perl -w
+
+use strict;
+use warnings;
+
+use Email::Send;
+
+my $email="giebink\@ifa.hawaii.edu";
+
+my $today = `date -u +%Y%m%d`;
+my $logfile = "/data/ipp001.0/ippTests/tap/summary";
+
+my @logcontents;
+
+#check existence of log file
+if (open (FPTR, $logfile)) {
+  @logcontents = <FPTR>;
+  } else {
+  @logcontents = "FAIL: Can't Open File: $logfile\n";
+}
+close (FPTR);
+
+my $message =<<END;
+To: $email
+From: giebink\@ifa.hawaii.edu
+Subject: $ARGV[0] test summary $today
+
+@logcontents
+
+END
+
+my $sender = Email::Send->new({mailer => 'SMTP'});
+$sender->mailer_args([Host => 'hale.ifa.hawaii.edu']);
+$sender->send($message);
Index: /branches/czw_branch/cleanup/ippTests/tap/proveParser.pl
===================================================================
--- /branches/czw_branch/cleanup/ippTests/tap/proveParser.pl	(revision 25051)
+++ /branches/czw_branch/cleanup/ippTests/tap/proveParser.pl	(revision 25051)
@@ -0,0 +1,24 @@
+#!/usr/bin/perl -w
+#parse tap test output
+#write summary portion to file
+
+use strict;
+use warnings;
+
+open (IF,"</data/ipp001.0/ippTests/tap/out") or die "Cannot open out file";
+open (OF, ">/data/ipp001.0/ippTests/tap/summary") or die "Cannot open summary file";
+
+my $flag = 0;
+
+while (<IF>) {
+  print $_;
+  if (/Failed Test                      Stat Wstat Total Fail  List of Failed/) {
+    $flag = 1;
+  }
+  if ($flag == 1) {
+    print OF $_;
+  }
+}
+
+close (IF);
+close (OF);
Index: /branches/czw_branch/cleanup/ippTests/tap/tapTest.pl
===================================================================
--- /branches/czw_branch/cleanup/ippTests/tap/tapTest.pl	(revision 25051)
+++ /branches/czw_branch/cleanup/ippTests/tap/tapTest.pl	(revision 25051)
@@ -0,0 +1,46 @@
+#!/usr/bin/perl -w
+#run weekly by cron
+
+#define directories with TAP tests
+my @testDirs = ('psLib', 'psModules', 'Nebulous-Server', 'Nebulous');
+
+#delete modules with tap tests
+system `rm -rf /data/ipp001.0/ippTests/tap/ipp/Nebulous/*`;
+
+#delete Nebulous binaries
+system `rm -rf /data/ipp001.0/ippTests/tap/usr/*`;
+
+#check out new versions, build the tests
+#run the tests and save output to file
+#parse the output and mail the results to IPP-DEV
+my $dir;
+foreach $dir (@testDirs) {
+    system `svn co http://svn.pan-starrs.ifa.hawaii.edu/repo/ipp/trunk/$dir /data/ipp001.0/ippTests/tap/ipp/$dir`;
+    chdir "/data/ipp001.0/ippTests/tap/ipp/$dir";
+    
+    if ($dir =~ m/^Nebulous-Server$/) {
+        system ("perl Build.PL --prefix=/data/ipp001.0/ippTests/tap/usr");
+        system ("Build install");
+        system ("Build test > /data/ipp001.0/ippTests/tap/summary");
+        system ("/data/ipp001.0/ippTests/tap/mailTestResults.pl $dir");
+        
+    } elsif ($dir =~ m/^Nebulous$/) {
+        chdir "/data/ipp001.0/ippTests/tap/ipp/$dir/nebclient";
+        system ("autogen.sh --prefix=/data/ipp001.0/ippTests/tap/usr");
+        system ("make");
+        chdir "/data/ipp001.0/ippTests/tap/ipp/$dir";
+        system ("perl Build.PL --prefix=/data/ipp001.0/ippTests/tap/usr");
+        system ("Build install");
+        system ("Build test > /data/ipp001.0/ippTests/tap/summary");
+        system ("/data/ipp001.0/ippTests/tap/mailTestResults.pl $dir");
+        
+    } else {
+        system ("autogen.sh --enable-tests");
+        system ("make");
+        chdir "/data/ipp001.0/ippTests/tap/ipp/$dir/test";
+        system ("./test.pl > /data/ipp001.0/ippTests/tap/out");
+        system ("/data/ipp001.0/ippTests/tap/proveParser.pl");
+        system ("/data/ipp001.0/ippTests/tap/mailTestResults.pl $dir");
+    }
+}
+
Index: /branches/czw_branch/cleanup/ippTools/share/Makefile.am
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/Makefile.am	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/Makefile.am	(revision 25051)
@@ -151,4 +151,5 @@
      magictool_tomask.sql \
      magictool_toprocess_inputs.sql \
+     magictool_toprocess_runs.sql \
      magictool_toprocess_tree.sql \
      magictool_toskyfilemask.sql \
Index: /branches/czw_branch/cleanup/ippTools/share/chiptool_processedimfile.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/chiptool_processedimfile.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/chiptool_processedimfile.sql	(revision 25051)
@@ -8,4 +8,5 @@
     chipProcessedImfile.bg_mean_stdev,
     chipProcessedImfile.path_base,
+    chipProcessedImfile.magicked,
     chipRun.state,
     chipRun.workdir,
Index: /branches/czw_branch/cleanup/ippTools/share/difftool_definewarpstack_part1.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/difftool_definewarpstack_part1.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/difftool_definewarpstack_part1.sql	(revision 25051)
@@ -15,4 +15,5 @@
     SELECT DISTINCT
         diffRun.*,
+        warp_id,
         exp_id
     FROM diffRun
@@ -24,5 +25,5 @@
     JOIN chipRun USING(chip_id)
     WHERE warp1 IS NOT NULL
-) AS diffExp USING(exp_id)
+) AS diffExp USING(exp_id, warp_id)
 WHERE
     warpSkyfile.fault = 0
Index: /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_camera.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_camera.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_camera.sql	(revision 25051)
@@ -6,5 +6,7 @@
     camRun.cam_id,
     magicRun.label,
-    magicRun.workdir
+    magicRun.workdir,
+    CAST(NULL AS SIGNED) AS inv_magic_id,
+    CAST(NULL AS SIGNED) AS inv_exp_id
 FROM magicRun
     JOIN magicMask USING(magic_id)
Index: /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_chip.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_chip.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_chip.sql	(revision 25051)
@@ -6,5 +6,7 @@
     camRun.cam_id,
     magicRun.label,
-    magicRun.workdir
+    magicRun.workdir,
+    CAST(NULL AS SIGNED) AS inv_magic_id,
+    CAST(NULL AS SIGNED) AS inv_exp_id
 FROM magicRun
     JOIN magicMask USING(magic_id)
Index: /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_diff.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_diff.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_diff.sql	(revision 25051)
@@ -1,2 +1,4 @@
+SELECT *
+FROM (
 SELECT
     magicRun.magic_id,
@@ -6,5 +8,7 @@
     0 AS cam_id,
     magicRun.label,
-    magicRun.workdir
+    magicRun.workdir,
+    CAST(NULL AS SIGNED) AS inv_magic_id,
+    CAST(NULL AS SIGNED) AS inv_exp_id
 FROM magicRun
     JOIN magicMask USING(magic_id)
@@ -15,5 +19,50 @@
     AND ( -- rerun HOOK magicdstool sends "\n1 " if rerun else "\n0 " %s
         OR magicDSRun.magic_ds_id IS NULL)
+    AND diffRun.bothways = 0
     AND diffRun.magicked  = 0
     AND diffRun.state = 'full'
+    -- WHERE hook %s
+UNION
+SELECT
+    forwardRun.magic_id,
+    forwardRun.exp_id,
+    'diff' AS stage,
+    forwardRun.diff_id AS stage_id,
+    0 AS cam_id,
+    forwardRun.label,
+    forwardRun.workdir,
+    inverseRun.magic_id AS inv_magic_id,
+    inverseRun.exp_id AS inv_exp_id
+FROM (
+    SELECT
+        magicRun.magic_id,
+        exp_id,
+        diff_id,
+        magicRun.label,
+        magicRun.workdir
+    FROM magicRun
+        JOIN magicMask USING(magic_id)
+        JOIN diffRun USING(diff_id)
+        LEFT JOIN magicDSRun ON magicRun.magic_id = magicDSRun.magic_id
+                             AND magicDSRun.stage  = 'diff'
+    WHERE magicRun.state = 'full'
+        AND magicRun.inverse = 0
+        AND ( -- rerun HOOK magicdstool sends "\n1 " if rerun else "\n0 " %s
+            OR magicDSRun.magic_ds_id IS NULL)
+        AND diffRun.state = 'full'
+        AND diffRun.bothways
+        AND diffRun.magicked  = 0
+        -- WHERE hook %s
+) AS forwardRun
+JOIN (
+    SELECT
+        magic_id,
+        exp_id,
+        diff_id
+    FROM magicRun
+        JOIN magicMask USING(magic_id)
+    WHERE magicRun.state = 'full'
+        AND magicRun.inverse = 1
+) AS inverseRun USING(diff_id)
 
+) AS Foo
Index: /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_raw.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_raw.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_raw.sql	(revision 25051)
@@ -6,5 +6,7 @@
     0 AS cam_id,
     magicRun.label,
-    magicRun.workdir
+    magicRun.workdir,
+    CAST(NULL AS SIGNED) AS inv_magic_id,
+    CAST(NULL AS SIGNED) AS inv_exp_id
 FROM magicRun
     JOIN magicMask USING(magic_id)
Index: /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_warp.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_warp.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/magicdstool_definebyquery_warp.sql	(revision 25051)
@@ -6,5 +6,7 @@
     0 AS cam_id,
     magicRun.label,
-    magicRun.workdir
+    magicRun.workdir,
+    CAST(NULL AS SIGNED) AS inv_magic_id,
+    CAST(NULL AS SIGNED) AS inv_exp_id
 FROM magicRun
     JOIN magicMask USING(magic_id)
Index: /branches/czw_branch/cleanup/ippTools/share/magicdstool_todestreak.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/magicdstool_todestreak.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/magicdstool_todestreak.sql	(revision 25051)
@@ -8,4 +8,5 @@
     camera,
     magicMask.uri as streaks_uri,
+    NULL AS inv_streaks_uri,
     stage,
     stage_id,
@@ -40,4 +41,5 @@
     camera,
     magicMask.uri as streaks_uri,
+    NULL AS inv_streaks_uri,
     stage,
     stage_id,
@@ -77,4 +79,5 @@
     camera,
     magicMask.uri as streaks_uri,
+    NULL AS inv_streaks_uri,
     stage,
     stage_id,
@@ -115,4 +118,5 @@
     camera,
     magicMask.uri as streaks_uri,
+    NULL AS inv_streaks_uri,
     stage,
     stage_id,
@@ -143,5 +147,5 @@
     AND magicDSFile.component IS NULL
 UNION
--- diffSkyfiles
+-- regular diffSkyfiles
 SELECT DISTINCT
     magicDSRun.magic_ds_id,
@@ -151,4 +155,5 @@
     rawExp.camera,
     magicMask.uri as streaks_uri,
+    NULL AS inv_streaks_uri,
     stage,
     magicRun.diff_id as stage_id,
@@ -167,4 +172,5 @@
 JOIN magicDSRun USING(magic_id)
 JOIN magicInputSkyfile USING(magic_id)
+JOIN diffRun USING(diff_id)
 JOIN diffSkyfile
     ON  magicRun.diff_id = diffSkyfile.diff_id
@@ -176,6 +182,47 @@
     magicDSRun.state = 'new'
     AND magicDSRun.stage = 'diff'
+    AND diffRun.bothways = 0
     AND diffSkyfile.fault = 0
     AND diffSkyfile.quality = 0
     AND magicDSFile.component IS NULL
+-- bothways diffSkyfiles
+UNION
+SELECT DISTINCT
+    magicDSRun.magic_ds_id,
+    magicRun.magic_id,
+    magicRun.exp_id,
+    magicDSRun.label,
+    rawExp.camera,
+    magicMask.uri as streaks_uri,
+    (SELECT uri from magicMask where magic_id = inv_magic_id) AS inv_streaks_uri,
+    stage,
+    magicRun.diff_id as stage_id,
+    diffSkyfile.skycell_id as component,
+    NULL AS uri,
+    diffSkyfile.path_base,
+    magicRun.inverse,
+    NULL as cam_path_base,
+    outroot,
+    recoveryroot,
+    re_place,
+    remove
+FROM rawExp
+JOIN magicRun USING (exp_id)
+JOIN magicMask USING (magic_id)
+JOIN magicDSRun USING(magic_id)
+JOIN magicInputSkyfile USING(magic_id)
+JOIN diffRun USING(diff_id)
+JOIN diffSkyfile
+    ON  magicRun.diff_id = diffSkyfile.diff_id
+    AND magicInputSkyfile.node = diffSkyfile.skycell_id
+LEFT JOIN magicDSFile
+    ON magicDSRun.magic_ds_id = magicDSFile.magic_ds_id
+    AND magicDSFile.component = diffSkyfile.skycell_id
+WHERE
+    magicDSRun.state = 'new'
+    AND magicDSRun.stage = 'diff'
+    AND diffRun.bothways
+    AND diffSkyfile.fault = 0
+    AND diffSkyfile.quality = 0
+    AND magicDSFile.component IS NULL
 ) as Foo
Index: /branches/czw_branch/cleanup/ippTools/share/magictool_toprocess_runs.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/magictool_toprocess_runs.sql	(revision 25051)
+++ /branches/czw_branch/cleanup/ippTools/share/magictool_toprocess_runs.sql	(revision 25051)
@@ -0,0 +1,11 @@
+SELECT DISTINCT
+    magic_id
+FROM magicTree
+JOIN magicRun USING(magic_id)
+LEFT JOIN magicNodeResult USING(magic_id, node)
+WHERE
+    magicRun.state = 'new'
+AND magicNodeResult.magic_id IS NULL
+-- WHERE hook %s
+ORDER BY
+    magicRun.magic_id
Index: /branches/czw_branch/cleanup/ippTools/share/pstamptool_addjob_otherjob.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/pstamptool_addjob_otherjob.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/pstamptool_addjob_otherjob.sql	(revision 25051)
@@ -1,3 +1,3 @@
 INSERT INTO pstampJob
- (req_id, rownum, state, jobType, uri, exp_id, outputBase, fault)
- VALUES( %lld, '%s', '%s', '%s', '%s', %lld, '%s', %s)
+ (req_id, rownum, state, jobType, exp_id, outputBase, fault)
+ VALUES( %lld, '%s', '%s', '%s', %lld, '%s', %s)
Index: /branches/czw_branch/cleanup/ippTools/share/pstamptool_addjob_stampjob.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/pstamptool_addjob_stampjob.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/pstamptool_addjob_stampjob.sql	(revision 25051)
@@ -1,3 +1,3 @@
 INSERT INTO pstampJob
- (req_id, rownum, state, jobType, uri, exp_id, outputBase, fault, args)
- VALUES( %lld, '%s', '%s', '%s', '%s', %lld, '%s', %s, '%s')
+ (req_id, rownum, state, jobType, exp_id, outputBase, fault)
+ VALUES( %lld, '%s', '%s', '%s', %lld, '%s', %s)
Index: /branches/czw_branch/cleanup/ippTools/share/pxadmin_create_tables.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/pxadmin_create_tables.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/pxadmin_create_tables.sql	(revision 25051)
@@ -1071,4 +1071,5 @@
         magic_ds_id BIGINT AUTO_INCREMENT,
         magic_id BIGINT,
+        inv_magic_id BIGINT,
         state VARCHAR(64),
         stage VARCHAR(64),
@@ -1086,4 +1087,5 @@
         KEY(label),
         FOREIGN KEY(magic_id) REFERENCES magicRun(magic_id)
+        FOREIGN KEY(inv_magic_id) REFERENCES magicRun(magic_id)
 ) ENGINE=innodb DEFAULT CHARSET=latin1;
 
@@ -1203,8 +1205,6 @@
         jobType VARCHAR(16),
         fault SMALLINT,
-        uri VARCHAR(255),
         exp_id BIGINT,
         outputBase VARCHAR(255),
-        args VARCHAR(511),
         PRIMARY KEY(job_id, req_id),
         KEY(job_id),
Index: /branches/czw_branch/cleanup/ippTools/share/stacktool_sumskyfile.sql
===================================================================
--- /branches/czw_branch/cleanup/ippTools/share/stacktool_sumskyfile.sql	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/share/stacktool_sumskyfile.sql	(revision 25051)
@@ -2,6 +2,9 @@
     stackSumSkyfile.*,
     stackRun.state,
+    stackRun.tess_id,
     stackRun.skycell_id,
+    stackRun.filter,
     stackRun.workdir,
+    stackRun.label,
     (SELECT rawExp.camera FROM 
         stackInputSkyfile 
Index: /branches/czw_branch/cleanup/ippTools/src/difftool.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/difftool.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/difftool.c	(revision 25051)
@@ -582,5 +582,5 @@
     PXOPT_COPY_STR(config->args, where, "-skycell_id", "diffInputSkyfile.skycell_id", "==");
     PXOPT_COPY_S64(config->args, where,  "-diff_skyfile_id", "diffInputSkyfile.diff_skyfile_id", "==");
-    PXOPT_COPY_STR(config->args, where, "-tess_id", "diffSkyfile.tess_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-tess_id", "diffRun.tess_id", "==");
     PXOPT_COPY_S16(config->args, where, "-fault", "diffSkyfile.fault", "==");
     PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "==");
Index: /branches/czw_branch/cleanup/ippTools/src/disttool.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/disttool.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/disttool.c	(revision 25051)
@@ -384,6 +384,9 @@
         psStringAppend(&outroot, "%s/%s/%s", workdir, run_tag, stage); 
 
-        if (set_label == NULL) {
-            set_label = target_label;
+        psString new_label;
+        if (set_label != NULL) {
+            new_label = set_label;
+        } else {
+            new_label = target_label;
         }
         distRunRow *row = distRunRowAlloc(
@@ -392,5 +395,5 @@
                 stage,
                 stage_id,
-                set_label,
+                new_label,
                 outroot,
                 clean,
Index: /branches/czw_branch/cleanup/ippTools/src/magicdstool.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/magicdstool.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/magicdstool.c	(revision 25051)
@@ -160,23 +160,50 @@
         return false;
     }
-
-    if (psListLength(where->list)) {
-        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
-        psStringAppend(&query, "\n AND %s", whereClause);
-        psFree(whereClause);
-    }
-    psFree(where);
-
-    // treat limit == 0 as "no limit"
-    if (limit) {
-        psString limitString = psDBGenerateLimitSQL(limit);
-        psStringAppend(&query, " %s", limitString);
-        psFree(limitString);
-    }
-
-    if (!p_psDBRunQueryF(config->dbh, query, rerun ? "\n1 " : "\n0 ")) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        psFree(query);
-        return false;
+    char *rerun_flag =  rerun ? "\n1 " : "\n0" ;
+
+    if (stageNum != IPP_STAGE_DIFF) {
+        if (psListLength(where->list)) {
+            psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+            psStringAppend(&query, "\nAND %s", whereClause);
+            psFree(whereClause);
+        }
+        psFree(where);
+
+        // treat limit == 0 as "no limit"
+        if (limit) {
+            psString limitString = psDBGenerateLimitSQL(limit);
+            psStringAppend(&query, " %s", limitString);
+            psFree(limitString);
+        }
+        if (!p_psDBRunQueryF(config->dbh, query, rerun_flag)) {
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            psFree(query);
+            return false;
+        }
+    } else {
+        // diff stage query has two types bothways and !bothways
+        // so we need to send the rerun flag and the where data twice
+        psString whereString = psStringCopy("");
+        if (psListLength(where->list)) {
+            psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+            psStringAppend(&whereString, "\nAND %s", whereClause);
+            psFree(whereClause);
+        }
+        psFree(where);
+
+        // treat limit == 0 as "no limit"
+        if (limit) {
+            psString limitString = psDBGenerateLimitSQL(limit);
+            psStringAppend(&query, " %s", limitString);
+            psFree(limitString);
+        }
+
+        if (!p_psDBRunQueryF(config->dbh, query, rerun_flag, whereString, rerun_flag, whereString)) {
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            psFree(whereString);
+            psFree(query);
+            return false;
+        }
+        psFree(whereString);
     }
     psFree(query);
@@ -215,4 +242,5 @@
         psS64 exp_id = psMetadataLookupS64(NULL, row, "exp_id");
         psS64 magic_id = psMetadataLookupS64(NULL, row, "magic_id");
+        psS64 inv_magic_id = psMetadataLookupS64(NULL, row, "inv_magic_id");
         psS64 cam_id = psMetadataLookupS64(NULL, row, "cam_id");
         psString magicRunLabel = psMetadataLookupStr(NULL, row, "label");
@@ -232,4 +260,5 @@
                 0, // magic_ds_id
                 magic_id,
+                inv_magic_id,
                 "new",
                 stage,
@@ -309,4 +338,5 @@
             0,          // ID
             magic_id,
+            0,          // inv_magic_id
             "new",      // state
             stage,
Index: /branches/czw_branch/cleanup/ippTools/src/magictool.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/magictool.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/magictool.c	(revision 25051)
@@ -582,4 +582,5 @@
     PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "==");
     PXOPT_COPY_S16(config->args, where, "-fault", "fault", "==");
+    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
 
     psString query = psStringCopy("UPDATE magicRun SET fault = 0, state = 'new' WHERE fault != 0");
@@ -803,5 +804,7 @@
     // treat limit == 0 as "no limit"
     if (limit) {
-        psString limitString = psDBGenerateLimitSQL(limit);
+        // cut limit in half
+        // hack to prevent pending leaf nodes from blocking branch nodes
+        psString limitString = psDBGenerateLimitSQL((limit + 1) / 2);
         psStringAppend(&query, " %s", limitString);
         psFree(limitString);
@@ -849,7 +852,5 @@
 
     // look for tree nodes that need to be processed
-    // XXX: This gets all nodes from all magicRuns that are in 'new'state
-    // That doens't seem particularly efficient
-    query = pxDataGet("magictool_toprocess_tree.sql");
+    query = pxDataGet("magictool_toprocess_runs.sql");
     if (!query) {
         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
@@ -857,4 +858,9 @@
     }
 
+    {
+        psString limitString = psDBGenerateLimitSQL( 100 );
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
 
     if (!p_psDBRunQueryF(config->dbh, query, whereString ? whereString :  "")) {
@@ -867,6 +873,6 @@
     psFree(query);
 
-    psArray *magicTree = p_psDBFetchResult(config->dbh);
-    if (!magicTree) {
+    psArray *magicRuns = p_psDBFetchResult(config->dbh);
+    if (!magicRuns) {
         psErrorCode err = psErrorCodeLast();
         switch (err) {
@@ -881,42 +887,60 @@
         return false;
     }
-    if (!psArrayLength(magicTree)) {
+    if (!psArrayLength(magicRuns)) {
         psTrace("magictool", PS_LOG_INFO, "no rows found");
-        psFree(magicTree);
+        psFree(magicRuns);
         return true;
     }
 
-    // entries are ordered by magic_id
-    long index = 0;
-    while (index <  psArrayLength(magicTree)) {
-        bool status;
+    query = pxDataGet("magictool_toprocess_tree.sql");
+    if (!query) {
+        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
+        return false;
+    }
+
+    for (psS64 index = 0; index < psArrayLength(magicRuns); index++) {
         if (limit && (psArrayLength(output) >= limit)) {
             break;
         }
-        psS64 current_magic_id = psMetadataLookupS64(&status, magicTree->data[index], "magic_id");
+        bool status;
+        psS64 magic_id = psMetadataLookupS64(&status, magicRuns->data[index], "magic_id");
         if (!status) {
             psAbort("failed to lookup value for magic_id column");
         }
-
-        // find the end of this block
-        long first = index;
-        long last = index;
-        for (long i = index + 1; i < psArrayLength(magicTree); i++) {
-            psS64 magic_id = psMetadataLookupS64(&status, magicTree->data[i], "magic_id");
-            if (!status) {
-                psAbort("failed to lookup value for magic_id column");
+        
+        whereString = NULL;
+        psStringAppend(&whereString, "\nAND (magic_id = %" PRId64 ")", magic_id);
+        if (!p_psDBRunQueryF(config->dbh, query, whereString )) {
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            psFree(whereString);
+            psFree(query);
+            return false;
+        }
+        psFree(whereString);
+        psArray *magicTree = p_psDBFetchResult(config->dbh);
+        if (!magicTree) {
+            psErrorCode err = psErrorCodeLast();
+            switch (err) {
+                case PS_ERR_DB_CLIENT:
+                    psError(PXTOOLS_ERR_SYS, false, "database error");
+                case PS_ERR_DB_SERVER:
+                    psError(PXTOOLS_ERR_PROG, false, "database error");
+                default:
+                    psError(PXTOOLS_ERR_PROG, false, "unknown error");
             }
-            if (magic_id != current_magic_id) {
-                break;
-            }
-            last = i;
-        }
-
-        index = last + 1;
-
-        psHash *forest = psHashAlloc(last - first + 1);
+
+            return false;
+        }
+        psS64 length = psArrayLength(magicTree);
+        if (!length) {
+            psTrace("magictool", PS_LOG_INFO, "no rows found for magic_id %" PRId64, magic_id);
+            psFree(magicTree);
+            continue;
+        }
+
+        psHash *forest = psHashAlloc(length);
 
         // convert the array of metadata into a pxTree structure
-        for (long i = first; i <= last; i++) {
+        for (long i = 0; i < length; i++) {
             bool status;
             psString node = psMetadataLookupStr(&status, magicTree->data[i], "node");
@@ -943,7 +967,6 @@
         pxTreeCrawl(root, findReadyNodes, output);
         psFree(root);
-
-    }
-    psFree(magicTree);
+        psFree(magicTree);
+    }
 
     if (psArrayLength(output)) {
Index: /branches/czw_branch/cleanup/ippTools/src/magictoolConfig.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/magictoolConfig.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/magictoolConfig.c	(revision 25051)
@@ -108,4 +108,5 @@
     psMetadataAddS64(reverttreeArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magictool ID", 0);
     psMetadataAddS16(reverttreeArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0);
+    psMetadataAddStr(reverttreeArgs, PS_LIST_TAIL, "-label", 0, "search by label", NULL);
 
     // -inputs
Index: /branches/czw_branch/cleanup/ippTools/src/pstamptool.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/pstamptool.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/pstamptool.c	(revision 25051)
@@ -500,10 +500,8 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    PXOPT_LOOKUP_S64(uri,         config->args, "-uri",        true, false);
     PXOPT_LOOKUP_S64(req_id,      config->args, "-req_id",     true, false);
     PXOPT_LOOKUP_STR(rownum,      config->args, "-rownum",     true, false);
     PXOPT_LOOKUP_STR(job_type,    config->args, "-job_type",   false, false);
     PXOPT_LOOKUP_STR(outputBase,  config->args, "-outputBase", true,  false);
-    PXOPT_LOOKUP_STR(argString,   config->args, "-args",       false, false);
     PXOPT_LOOKUP_STR(stateString, config->args, "-state",      false, false);
     PXOPT_LOOKUP_STR(fault,       config->args, "-fault",      false, false);
@@ -519,10 +517,4 @@
 	return false;
     }
-
-    if (stampJob && !argString) {
-	psError(PS_ERR_UNKNOWN, true, "-args is required for stamp job");
-	return false;
-    }
-
     if (stampJob) {
 	query = pxDataGet("pstamptool_addjob_stampjob.sql");
@@ -535,5 +527,5 @@
     }
 
-    if (!p_psDBRunQueryF(config->dbh, query, req_id, rownum, stateString, job_type, uri, exp_id, outputBase, fault, argString)) {
+    if (!p_psDBRunQueryF(config->dbh, query, req_id, rownum, stateString, job_type, exp_id, outputBase, fault)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
         return false;
Index: /branches/czw_branch/cleanup/ippTools/src/pstamptoolConfig.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/pstamptoolConfig.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/pstamptoolConfig.c	(revision 25051)
@@ -100,10 +100,8 @@
     // -addjob
     psMetadata *addjobArgs = psMetadataAlloc();
-    psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-uri", 0,            "define job file uri", NULL); 
     psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-req_id", 0,            "define job req_id", 0); 
     psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-rownum", 0,            "define job rownum", NULL); 
     psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-job_type", 0,            "define job job_type", "stamp"); 
     psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-outputBase", 0,            "define job outputBase", NULL); 
-    psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-args", 0,            "define job args", NULL); 
     psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-state", 0,            "new state", "run"); 
     psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-exp_id", 0,           "exposure id", 0); 
@@ -128,5 +126,4 @@
     psMetadataAddS64(updatejobArgs, PS_LIST_TAIL, "-job_id", 0,            "req_id for which to change state", 0); 
     psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-state", 0,            "new state", NULL); 
-    // psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-result", 0,            "new result", NULL); 
     psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-fault", 0,            "new result", NULL); 
 
Index: /branches/czw_branch/cleanup/ippTools/src/stacktool.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/stacktool.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/stacktool.c	(revision 25051)
@@ -857,4 +857,6 @@
     PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "==");
+    PXOPT_COPY_STR(config->args, where, "-tess_id", "stackRun.tess_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "==");
 
     PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
Index: /branches/czw_branch/cleanup/ippTools/src/stacktoolConfig.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/stacktoolConfig.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/stacktoolConfig.c	(revision 25051)
@@ -159,4 +159,6 @@
     psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,            "search by stack ID", 0);
     psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,            "search by warp ID", 0);
+    psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-tess_id", 0,            "search by tess ID", 0);
+    psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0,         "search by skycell ID", 0);
     psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-exp_id", 0,            "search by exposure ID", 0);
     psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-exp_name", 0,          "search by exposure name", NULL);
Index: /branches/czw_branch/cleanup/ippTools/src/warptool.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/warptool.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/warptool.c	(revision 25051)
@@ -1192,4 +1192,6 @@
     PXOPT_COPY_S64(config->args, where, "-warp_id",    "warpSkyfile.warp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpSkyfile.skycell_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-warp_skyfile_id", "warpImfile.warp_skyfile_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpSkyfile.skycell_id", "==");
     PXOPT_COPY_STR(config->args, where, "-tess_id",    "warpSkyfile.tess_id", "==");
     PXOPT_COPY_S64(config->args, where, "-exp_id",     "rawExp.exp_id", "==");
Index: /branches/czw_branch/cleanup/ippTools/src/warptoolConfig.c
===================================================================
--- /branches/czw_branch/cleanup/ippTools/src/warptoolConfig.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ippTools/src/warptoolConfig.c	(revision 25051)
@@ -208,12 +208,13 @@
     // -warped
     psMetadata *warpedArgs = psMetadataAlloc();
-    psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-warp_id", 0,            "search by warptool ID", 0);
-    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-skycell_id",  0,            "define skycell ID", NULL);
-    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-tess_id",  0,            "define tessellation ID", NULL);
-    psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-exp_id", 0,            "define exposure tag", 0);
-    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-exp_name", 0,          "define exposure tag", 0);
-    psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-fake_id", 0,            "define phase 3 version of exposure tag", 0);
+    psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-warp_id", 0,           "search by warptool ID", 0);
+    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-skycell_id",  0,       "search by skycell ID", NULL);
+    psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-warp_skyfile_id", 0,   "search by skyfile ID", 0);
+    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-tess_id",  0,          "search by tessellation ID", NULL);
+    psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-exp_id", 0,            "search by exposure tag", 0);
+    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-exp_name", 0,          "search by exposure tag", 0);
+    psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-fake_id", 0,           "search by phase 3 version of exposure tag", 0);
     psMetadataAddU64(warpedArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
-    psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
+    psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-simple",  0,          "use the simple output format", false);
 
     // -revertwarped
Index: /branches/czw_branch/cleanup/ippconfig/vysos5/psastro.config
===================================================================
--- /branches/czw_branch/cleanup/ippconfig/vysos5/psastro.config	(revision 25050)
+++ /branches/czw_branch/cleanup/ippconfig/vysos5/psastro.config	(revision 25051)
@@ -12,5 +12,5 @@
 PSASTRO.GRID.NSTAR.MAX S32     800 # max stars accepted for fitting
 
-PSASTRO.MAX.NRAW      S32       500   # max stars accepted for fitting (0 for all)
+PSASTRO.MAX.NRAW      S32      1000   # max stars accepted for fitting (0 for all)
 PSASTRO.MAX.NREF      S32      2000   # max stars accepted for fitting (0 for all)
 
@@ -26,12 +26,12 @@
 # PSASTRO.GRID.MAX.ANGLE F32 360.0
 # PSASTRO.GRID.DEL.ANGLE F32  1.0
-PSASTRO.GRID.MIN.ANGLE F32 -10.0 # start angle (degrees)
+PSASTRO.GRID.MIN.ANGLE F32 +6.0 # start angle (degrees)
 PSASTRO.GRID.MAX.ANGLE F32 +10.0
-PSASTRO.GRID.DEL.ANGLE F32  2.5
+PSASTRO.GRID.DEL.ANGLE F32  1.0
 
 #
-PSASTRO.GRID.MIN.SCALE F32  0.90
-PSASTRO.GRID.MAX.SCALE F32  1.10
-PSASTRO.GRID.DEL.SCALE F32  0.025
+PSASTRO.GRID.MIN.SCALE F32  0.99
+PSASTRO.GRID.MAX.SCALE F32  1.01
+PSASTRO.GRID.DEL.SCALE F32  0.01
 
 # single-chip radius match in pixels
@@ -71,7 +71,23 @@
 DVO.GETSTAR.PHOTCODE        STR      r
 
+PHOTCODE.DATA MULTI
+PHOTCODE.DATA METADATA
+  FILTER   STR r
+  ZEROPT   F32 19.0
+  PHOTCODE STR r_SYNTH
+  GHOST_MAX_MAG                   F32 -20.0
+END
+PHOTCODE.DATA METADATA
+  FILTER   STR g
+  ZEROPT   F32 15.0
+  PHOTCODE STR g_SYNTH
+  GHOST_MAX_MAG                   F32 -20.0
+END
+
 PSASTRO.PLOT.REF.MAG.MIN  F32 +5.0
 PSASTRO.PLOT.REF.MAG.MAX  F32 +12.0
 
+# PSASTRO.MATCH.LUMFUNC  BOOL     TRUE
+
 # DVO.GETSTAR.MAG.MAX         F32      20.0
 # XXX need to be able to limit the density!
Index: /branches/czw_branch/cleanup/magic/remove/src/Line.c
===================================================================
--- /branches/czw_branch/cleanup/magic/remove/src/Line.c	(revision 25050)
+++ /branches/czw_branch/cleanup/magic/remove/src/Line.c	(revision 25051)
@@ -444,9 +444,5 @@
                 if (y >= 0 && y < numRows)
                 {
-                    pixel = psAlloc (sizeof(PixelPos));
-                    pixel->x = (unsigned int) x;
-                    pixel->y = (unsigned int) y;
-                    psArrayAdd (pixels, 1024, pixel);
-                    psFree (pixel);
+                    psImageSet(pixels, x, y, 1);
                 }
             }
@@ -494,9 +490,5 @@
                 if (x >=0 && x < numCols)
                 {
-                    pixel = psAlloc (sizeof(PixelPos));
-                    pixel->x = (unsigned int) x;
-                    pixel->y = (unsigned int) y;
-                    psArrayAdd (pixels, 1024, pixel);
-                    psFree (pixel);
+                    psImageSet(pixels, x, y, 1);
                 }
             }
Index: /branches/czw_branch/cleanup/magic/remove/src/streaksextern.c
===================================================================
--- /branches/czw_branch/cleanup/magic/remove/src/streaksextern.c	(revision 25050)
+++ /branches/czw_branch/cleanup/magic/remove/src/streaksextern.c	(revision 25051)
@@ -34,5 +34,6 @@
     int i;
     Line line;
-    StreakPixels *pixels = psArrayAllocEmpty (1024);
+    StreakPixels *pixels = psImageAlloc(numCols, numRows, PS_TYPE_U8);
+    psImageInit(pixels, 0);
     int streaksOnComponent = 0;
 
Index: /branches/czw_branch/cleanup/magic/remove/src/streaksextern.h
===================================================================
--- /branches/czw_branch/cleanup/magic/remove/src/streaksextern.h	(revision 25050)
+++ /branches/czw_branch/cleanup/magic/remove/src/streaksextern.h	(revision 25051)
@@ -4,5 +4,5 @@
 /** psLib includes */
 
-#include "psArray.h"
+#include "psImage.h"
 
 /** streakremove includes */
@@ -36,5 +36,5 @@
 /** For now, use psArray to define a list of PixelPos pointers */
 
-typedef psArray StreakPixels;
+typedef psImage StreakPixels;
 
 /** Create a list of pixel positions from a Streaks pointer list
Index: /branches/czw_branch/cleanup/magic/remove/src/streaksremove.c
===================================================================
--- /branches/czw_branch/cleanup/magic/remove/src/streaksremove.c	(revision 25050)
+++ /branches/czw_branch/cleanup/magic/remove/src/streaksremove.c	(revision 25051)
@@ -13,5 +13,5 @@
 static bool readAndCopyToOutput(streakFiles *sf, bool exciseAll);
 static void exciseNonWarpedPixels(streakFiles *sfiles, double newMaskValue);
-static bool warpedPixel(streakFiles *sfiles, PixelPos *cellCoord);
+static bool warpedPixel(streakFiles *sfiles, int x, int y);
 static void excisePixel(streakFiles *sfiles, unsigned int x, unsigned int y, bool streak, double newMaskValue);
 static void writeImages(streakFiles *sf, bool exciseImageCube);
@@ -146,21 +146,20 @@
                 }
 
-                totalStreakPixels +=  psArrayLength(pixels);
 
                 psTimerStart("REMOVE_STREAKS");
 
-                // for each pixel covered by the streak
-                for (int i = 0; i < psArrayLength (pixels); ++i) {
-                    PixelPos *pixelPos = psArrayGet (pixels, i);
-
-                    // if this pixel was not part of the warp, skip because it has already been
-                    // excised (unless we weren't asked to check)
-                    if (!checkNonWarpedPixels || warpedPixel(sfiles, pixelPos)) {
-
-                        excisePixel(sfiles, pixelPos->x, pixelPos->y, true, maskStreak);
-
-                    } else {
-                        // This pixel was not included in any warp and has thus already excised
-                        // by exciseNonWarpedPixels
+                for (int y=0 ; y < sfiles->inImage->numRows; y++) {
+                    for (int x = 0; x < sfiles->inImage->numCols; x++) {
+                        if (psImageGet(pixels, x, y)) {
+                            ++totalStreakPixels;
+                            if (!checkNonWarpedPixels || warpedPixel(sfiles, x, y)) {
+
+                                excisePixel(sfiles, x, y, true, maskStreak);
+
+                            } else {
+                                // This pixel was not included in any warp and has thus already excised
+                                // by exciseNonWarpedPixels
+                            }
+                        }
                     }
                 }
@@ -178,5 +177,4 @@
                 exciseImageCube = true;
             }
-            psArrayElementsFree (pixels);
             psFree(pixels);
         }
@@ -756,5 +754,5 @@
 
 static bool
-warpedPixel(streakFiles *sfiles, PixelPos *cellCoord)
+warpedPixel(streakFiles *sfiles, int x, int y)
 {
     PixelPos chipCoord;
@@ -767,10 +765,10 @@
     // we clip so that the streak calculation code doesn't have to
     // clipping here insures that we don't touch the overscan regions
-    if ((cellCoord->x < 0) || (cellCoord->x >= sfiles->inImage->numCols) ||
-        (cellCoord->y < 0) || (cellCoord->y >= sfiles->inImage->numRows)) {
+    if ((x < 0) || (x >= sfiles->inImage->numCols) ||
+        (y < 0) || (y >= sfiles->inImage->numRows)) {
         return false;
     }
 
-    cellToChipInt(&chipCoord.x, &chipCoord.y, sfiles->astrom, cellCoord->x, cellCoord->y);
+    cellToChipInt(&chipCoord.x, &chipCoord.y, sfiles->astrom, x, y);
 
     if (chipCoord.x < 0 || chipCoord.x >= sfiles->warpedPixels->numCols) {
@@ -839,13 +837,20 @@
     }
 
-    printf("Censored %d sources\n", numCensored);
-
     // get rid of unused elements (don't know if this is necessary)
     psArrayRealloc(outTable, j);
 
     addDestreakKeyword(in->header);
-    if (! psFitsWriteTable(out->fits, in->header, outTable, extname)) {
-        psError(PS_ERR_IO, false, "failed to write table to %s", out->resolved_name);
-        streaksExit("", PS_EXIT_DATA_ERROR);
+    if (psArrayLength(outTable) > 0) {
+        printf("Censored %d sources\n", numCensored);
+        if (! psFitsWriteTable(out->fits, in->header, outTable, extname)) {
+            psError(PS_ERR_IO, false, "failed to write table to %s", out->resolved_name);
+            streaksExit("", PS_EXIT_DATA_ERROR);
+        }
+    } else {
+        printf("Censored ALL %d sources\n", numCensored);
+        if (! psFitsWriteTableEmpty(out->fits, in->header, inTable->data[0], extname)) {
+            psError(PS_ERR_IO, false, "failed to write empty table to %s", out->resolved_name);
+            streaksExit("", PS_EXIT_DATA_ERROR);
+        }
     }
 
Index: /branches/czw_branch/cleanup/ppMops/src/ppMops.c
===================================================================
--- /branches/czw_branch/cleanup/ppMops/src/ppMops.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ppMops/src/ppMops.c	(revision 25051)
@@ -139,6 +139,6 @@
         psMetadataAddF64(outHeader, PS_LIST_TAIL, "TEL_ALT", 0, "Telescope altitude", alt);
         psMetadataAddF64(outHeader, PS_LIST_TAIL, "TEL_AZ", 0, "Telescope azimuth", az);
-        psMetadataAddF64(outHeader, PS_LIST_TAIL, "DIFFIMID", 0, "Difference image identifier", imageid);
-        psMetadataAddF64(outHeader, PS_LIST_TAIL, "FPA_ID", 0, "Exposure identifier", fpaid);
+        psMetadataAddS32(outHeader, PS_LIST_TAIL, "DIFFIMID", 0, "Difference image identifier", imageid);
+        psMetadataAddS32(outHeader, PS_LIST_TAIL, "FPA_ID", 0, "Exposure identifier", fpaid);
         psMetadataAddStr(outHeader, PS_LIST_TAIL, "OBSCODE", 0, "IAU Observatory code", OBSERVATORY_CODE);
         psMetadataAddF32(outHeader, PS_LIST_TAIL, "STARPSF", 0, "Stellar PSF (arcsec)", psf);
Index: /branches/czw_branch/cleanup/ppStack/src/ppStackMatch.c
===================================================================
--- /branches/czw_branch/cleanup/ppStack/src/ppStackMatch.c	(revision 25050)
+++ /branches/czw_branch/cleanup/ppStack/src/ppStackMatch.c	(revision 25051)
@@ -222,18 +222,4 @@
             }
             psFitsClose(fits);
-
-            // Add in variance factor
-            pmSubtractionKernels *kernels = psMetadataLookupPtr(NULL, conv->analysis,
-                                                                PM_SUBTRACTION_ANALYSIS_KERNEL); // Kernels
-            float vf = pmSubtractionVarianceFactor(kernels, 0.0, 0.0, false); // Variance factor
-            psMetadataItem *vfItem = psMetadataLookup(readout->parent->concepts, "CELL.VARFACTOR");
-            if (!isfinite(vf)) {
-                vf = 1.0;
-            }
-            if (isfinite(vfItem->data.F32)) {
-                vfItem->data.F32 *= vf;
-            } else {
-                vfItem->data.F32 = vf;
-            }
 
             if (!readImage(&readout->image, options->imageNames->data[index], config) ||
@@ -413,16 +399,4 @@
             }
 
-            // Set the variance factor
-            psMetadataItem *vfItem = psMetadataLookup(readout->parent->concepts, "CELL.VARFACTOR");
-            float vf = psMetadataLookupF32(NULL, conv->analysis, PM_SUBTRACTION_ANALYSIS_VARFACTOR_1);
-            if (!isfinite(vf)) {
-                vf = 1.0;
-            }
-            if (isfinite(vfItem->data.F32)) {
-                vfItem->data.F32 *= vf;
-            } else {
-                vfItem->data.F32 = vf;
-            }
-
             // Replace original images with convolved
             psFree(readout->image);
@@ -512,5 +486,5 @@
         psBinaryOp(readout->variance, readout->variance, "*", psScalarAlloc(PS_SQR(norm), PS_TYPE_F32));
     }
-   
+
     // Ensure the background value is zero
     psStats *bg = psStatsAlloc(PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); // Statistics for background
@@ -521,11 +495,11 @@
     } else {
       if (!psMetadataLookupBool(NULL, config->arguments, "PPSTACK.SKIP.BG.SUB")) {
-	psLogMsg("ppStack", PS_LOG_INFO, "Correcting convolved image background by %lf (+/- %lf)",
-		 psStatsGetValue(bg, PS_STAT_ROBUST_MEDIAN), psStatsGetValue(bg, PS_STAT_ROBUST_STDEV));
-	(void)psBinaryOp(readout->image, readout->image, "-",
-			 psScalarAlloc(psStatsGetValue(bg, PS_STAT_ROBUST_MEDIAN), PS_TYPE_F32));
+        psLogMsg("ppStack", PS_LOG_INFO, "Correcting convolved image background by %lf (+/- %lf)",
+                 psStatsGetValue(bg, PS_STAT_ROBUST_MEDIAN), psStatsGetValue(bg, PS_STAT_ROBUST_STDEV));
+        (void)psBinaryOp(readout->image, readout->image, "-",
+                         psScalarAlloc(psStatsGetValue(bg, PS_STAT_ROBUST_MEDIAN), PS_TYPE_F32));
       }
     }
-    
+
 
     // Measure the variance level for the weighting
Index: /branches/czw_branch/cleanup/psLib/src/fits/psFits.c
===================================================================
--- /branches/czw_branch/cleanup/psLib/src/fits/psFits.c	(revision 25050)
+++ /branches/czw_branch/cleanup/psLib/src/fits/psFits.c	(revision 25051)
@@ -150,8 +150,8 @@
             char errorBuf[MAX_STRING_LENGTH], *errorMsg;
 #if ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE)
-            errorMsg = strerror_r(thisErrno, errorBuf, MAX_STRING_LENGTH);
-#else
             strerror_r(thisErrno, errorBuf, MAX_STRING_LENGTH);
             errorMsg = errorBuf;
+#else
+            errorMsg = strerror_r(thisErrno, errorBuf, MAX_STRING_LENGTH);
 #endif
             psError(PS_ERR_IO, true, "Directory (%s) for requested file is not accessible: %s",
@@ -209,11 +209,12 @@
                 char errorBuf[64], *errorMsg;
 # if ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE)
-                errorMsg = strerror_r (errno, errorBuf, 64);
-# else
                 strerror_r (errno, errorBuf, 64);
                 errorMsg = errorBuf;
+# else
+                errorMsg = strerror_r (errno, errorBuf, 64);
 # endif
-                psError (PS_ERR_IO, true, "Failed to delete a previously-existing file: %s", errorMsg);
-                fprintf (stderr, "errno: %d, %s, %s : %lx, %lx\n", thisErrno, errorMsg, errorBuf, (long int) errorMsg, (long int) errorBuf);
+                psError(PS_ERR_IO, true, "Failed to delete a previously-existing file (%s), error %d: %s",
+                        name, thisErrno, errorMsg);
+                //fprintf(stderr, "errno: %d, %s, %s : %lx, %lx\n", thisErrno, errorMsg, errorBuf, (long int) errorMsg, (long int) errorBuf);
                 return NULL;
             }
Index: /branches/czw_branch/cleanup/psLib/src/fits/psFitsHeader.c
===================================================================
--- /branches/czw_branch/cleanup/psLib/src/fits/psFitsHeader.c	(revision 25050)
+++ /branches/czw_branch/cleanup/psLib/src/fits/psFitsHeader.c	(revision 25051)
@@ -147,5 +147,4 @@
     return keyword;
 }
-
 
 bool psFitsCheckCompressedImagePHU(const psFits *fits, psMetadata *header)
@@ -497,11 +496,14 @@
 static bool fitsWriteHeader(psFits *fits, // The FITS file handle
                             const psMetadata *output, // Metadata that is to be output into the FITS file
-                            bool keyStarts // Write out the key starts?
+                            bool keyStarts, // Write out the key starts?
+                            bool phuImage   // Are we writing a PHU image?
                            )
 {
     int status = 0;                     // Status of cfitsio calls
+    int extnum = psFitsGetExtNum(fits); // Number of extension
     bool simple = true;                 // If SIMPLE is T, then the file should conform to the FITS standard
     psFitsCompressionType compress = psFitsCompressionGetType(fits); // Compression type
-    if (psFitsGetExtNum(fits) == 0) {
+    if (extnum == 0) {
+
         // We allow the user to write SIMPLE, but it must be boolean
         psMetadataItem *simpleItem = psMetadataLookup(output, "SIMPLE"); // SIMPLE in the header
@@ -526,5 +528,4 @@
     bool compressing = ((!fits->options || fits->options->conventions.compression) &&
                         compress != PS_FITS_COMPRESS_NONE) ? true : false; // Are we compressing?
-
     if (compressing) {
         psMetadataItem *simpleItem = psMetadataLookup(output, "SIMPLE"); // SIMPLE in the header
@@ -538,7 +539,14 @@
             }
         }
-        //        int value = simple;             // Temporary holder for boolean
-        //        fits_update_key(fits->fd, TLOGICAL, "ZSIMPLE", &value,
-        //                        "Uncompressed file's conformance to FITS standard", &status);
+        if (simple && phuImage && extnum == 1) {
+            // ZSIMPLE is required for decompression with funpack, etc.  For funpack to work, ZSIMPLE needs to
+            // go early in the FITS header (otherwise we get "Extension doesn't start with SIMPLE or XTENSION
+            // keyword.").  We put it after ZIMAGE by reading ZIMAGE (which sets the insertion pointer) and
+            // then inserting ZSIMPLE.
+            char comment[FLEN_CARD];    // Comment for ZIMAGE; unused
+            int value;                  // Value for ZIMAGE; unused
+            fits_read_key(fits->fd, TLOGICAL, "ZIMAGE", &value, comment, &status);
+            fits_insert_key_log(fits->fd, "ZSIMPLE", simple, "Uncompressed file's conforms to FITS", &status);
+        }
     }
 
@@ -699,5 +707,17 @@
     PS_ASSERT_METADATA_NON_NULL(output, false);
 
-    return fitsWriteHeader(fits, output, true);
+    return fitsWriteHeader(fits, output, true, false);
+}
+
+bool psFitsWriteHeaderImage(psFits *fits,
+                            const psMetadata *output,
+                            bool phuImage
+                            )
+{
+    PS_ASSERT_FITS_NON_NULL(fits, false);
+    PS_ASSERT_FITS_WRITABLE(fits, false);
+    PS_ASSERT_METADATA_NON_NULL(output, false);
+
+    return fitsWriteHeader(fits, output, true, phuImage);
 }
 
@@ -733,5 +753,5 @@
     }
 
-    if (output && !fitsWriteHeader(fits, output, false)) {
+    if (output && !fitsWriteHeader(fits, output, false, false)) {
         psError(PS_ERR_IO, false, "Unable to write FITS header.\n");
         return false;
Index: /branches/czw_branch/cleanup/psLib/src/fits/psFitsHeader.h
===================================================================
--- /branches/czw_branch/cleanup/psLib/src/fits/psFitsHeader.h	(revision 25050)
+++ /branches/czw_branch/cleanup/psLib/src/fits/psFitsHeader.h	(revision 25051)
@@ -66,4 +66,14 @@
 );
 
+/** Write a header for an image
+ *  Principal difference with psFitsWriteHeader is this allows writing ZSIMPLE for uncompressing a single image
+ */
+bool psFitsWriteHeaderImage(
+    psFits *fits,                       ///< FITS file
+    const psMetadata *output,           ///< Header to output
+    bool phuImage                       ///< Is this image supposed to be in the PHU?
+    );
+
+
 /** Writes a "blank" --- a header only, with no image or table.
  *
Index: /branches/czw_branch/cleanup/psLib/src/fits/psFitsImage.c
===================================================================
--- /branches/czw_branch/cleanup/psLib/src/fits/psFitsImage.c	(revision 25050)
+++ /branches/czw_branch/cleanup/psLib/src/fits/psFitsImage.c	(revision 25051)
@@ -616,4 +616,6 @@
     }
 
+    bool createPHU = false;             // Are we creating a PHU?
+
     // Create the image HDU
     int hdus = psFitsGetSize(fits);     // Number of HDUs in file
@@ -621,4 +623,5 @@
         // We're creating the first image
         fits_create_img(fits->fd, bitPix, naxis, naxes, &status);
+        createPHU = true;
     } else {
         if (!after) {
@@ -627,4 +630,5 @@
                 // Set status to signal fits_insert_img to insert a new primary HDU
                 status = PREPEND_PRIMARY;
+                createPHU = true;
             } else {
                 // Move back one to perform an insert after the previous HDU
@@ -641,5 +645,5 @@
 
     // write the header, if any.
-    if (header && !psFitsWriteHeader(fits, header)) {
+    if (header && !psFitsWriteHeaderImage(fits, header, createPHU)) {
         psError(PS_ERR_IO, false, "Unable to write FITS header.\n");
         success = false;
Index: /branches/czw_branch/cleanup/psLib/src/math/psStats.c
===================================================================
--- /branches/czw_branch/cleanup/psLib/src/math/psStats.c	(revision 25050)
+++ /branches/czw_branch/cleanup/psLib/src/math/psStats.c	(revision 25051)
@@ -129,15 +129,15 @@
 
 # define COUNT_WARNING(LIMIT, INTERVAL, ...) { \
-	static int nCalls = 1; \
-	if (nCalls < LIMIT) { \
-	    psWarning(__VA_ARGS__); \
-	} \
-	if (!(nCalls % INTERVAL)) { \
-	    psWarning(__VA_ARGS__); \
+        static int nCalls = 1; \
+        if (nCalls < LIMIT) { \
+            psWarning(__VA_ARGS__); \
+        } \
+        if (!(nCalls % INTERVAL)) { \
+            psWarning(__VA_ARGS__); \
             psWarning("(warning raised %d times)", nCalls); \
-	} \
-	nCalls ++; \
+        } \
+        nCalls ++; \
 }
- 
+
 
 /*****************************************************************************/
@@ -217,6 +217,6 @@
     for (long i = 0; i < numData; i++) {
         // Check if the data is with the specified range
-	if (!isfinite(data[i])) 
-	    continue;
+        if (!isfinite(data[i]))
+            continue;
         if (useRange && (data[i] < stats->min))
             continue;
@@ -242,5 +242,5 @@
 
     if (!isnan(mean)) {
-	stats->results |= PS_STAT_SAMPLE_MEAN;
+        stats->results |= PS_STAT_SAMPLE_MEAN;
     }
     return true;
@@ -278,6 +278,6 @@
     for (long i = 0; i < num; i++) {
         // Check if the data is with the specified range
-	if (!isfinite(vector[i])) 
-	    continue;
+        if (!isfinite(vector[i]))
+            continue;
         if (useRange && (vector[i] < stats->min))
             continue;
@@ -329,6 +329,6 @@
     // into the temporary vectors.
     for (long i = 0; i < inVector->n; i++) {
-	if (!isfinite(input[i])) 
-	    continue;
+        if (!isfinite(input[i]))
+            continue;
         if (useRange && (input[i] < stats->min))
             continue;
@@ -353,5 +353,5 @@
     // Sort the temporary vector.
     if (!psVectorSort(outVector, outVector)) { // Sort in-place (since it's a copy, it's OK)
-	// an error in psVectorSort is a serious error
+        // an error in psVectorSort is a serious error
         psError(PS_ERR_UNEXPECTED_NULL, false, _("Failed to sort input data."));
         stats->sampleUQ = NAN;
@@ -407,5 +407,5 @@
     // If the mean is NAN, then generate a warning and set the stdev to NAN.
     if (isnan(stats->sampleMean)) {
-	COUNT_WARNING(10, 100, "WARNING: vectorSampleStdev(): sample mean is NAN. Setting stats->sampleStdev = NAN.");
+        COUNT_WARNING(10, 100, "WARNING: vectorSampleStdev(): sample mean is NAN. Setting stats->sampleStdev = NAN.");
         stats->sampleStdev = NAN;
         return true;
@@ -425,6 +425,6 @@
     for (long i = 0; i < myVector->n; i++) {
         // Check if the data is with the specified range
-	if (!isfinite(data[i])) 
-	    continue;
+        if (!isfinite(data[i]))
+            continue;
         if (useRange && (data[i] < stats->min)) {
             continue;
@@ -502,6 +502,6 @@
     for (long i = 0; i < myVector->n; i++) {
         // Check if the data is with the specified range
-	if (!isfinite(data[i])) 
-	    continue;
+        if (!isfinite(data[i]))
+            continue;
         if (useRange && (data[i] < stats->min)) {
             continue;
@@ -771,5 +771,5 @@
             stats->robustLQ = min;
             stats->robustN50 = numValid;
-	    // XXX this is sort of an invalid / out-of-bounds result: to set or not to set these bits:
+            // XXX this is sort of an invalid / out-of-bounds result: to set or not to set these bits:
             stats->results |= PS_STAT_ROBUST_MEDIAN;
             stats->results |= PS_STAT_ROBUST_STDEV;
@@ -801,12 +801,12 @@
         // XXXXX we need to consider this step if errors -> variance
         if (!psVectorHistogram(histogram, myVector, errors, mask, maskVal)) {
-	    // if psVectorHistogram returns false, we have a programming error
+            // if psVectorHistogram returns false, we have a programming error
             psError(PS_ERR_UNKNOWN, false, "Unable to generate histogram for robust statistics.\n");
-	    psFree(histogram);
-	    psFree(cumulative);
-	    psFree(statsMinMax);
-	    psFree(mask);
-
-	    return false;
+            psFree(histogram);
+            psFree(cumulative);
+            psFree(statsMinMax);
+            psFree(mask);
+
+            return false;
         }
         if (psTraceGetLevel("psLib.math") >= 8) {
@@ -838,9 +838,9 @@
 
         // ADD step 3: Interpolate to the exact 50% position in bin units
-	stats->robustMedian = fitQuadraticSearchForYThenReturnBin(cumulative->bounds, cumulative->nums, binMedian, totalDataPoints/2.0);
-	// float robustBin = fitQuadraticSearchForYThenReturnXusingValues(cumulative->bounds, cumulative->nums, binMedian, totalDataPoints/2.0);
-	// fprintf (stderr, "robustBin : %f vs %f\n", robustBin, stats->robustMedian);
-
-	// convert bin to bin value: this is the robust histogram median.
+        stats->robustMedian = fitQuadraticSearchForYThenReturnBin(cumulative->bounds, cumulative->nums, binMedian, totalDataPoints/2.0);
+        // float robustBin = fitQuadraticSearchForYThenReturnXusingValues(cumulative->bounds, cumulative->nums, binMedian, totalDataPoints/2.0);
+        // fprintf (stderr, "robustBin : %f vs %f\n", robustBin, stats->robustMedian);
+
+        // convert bin to bin value: this is the robust histogram median.
         if (isnan(stats->robustMedian)) {
             COUNT_WARNING(10, 100, "Failed to fit a quadratic and calculate the 50-percent position.\n");
@@ -1054,6 +1054,6 @@
         if (!vectorRobustStats(myVector, errors, mask, maskVal, stats)) {
             psError(PS_ERR_UNKNOWN, false, "failure to measure robust stats\n");
-	    return false;
-	}
+            return false;
+        }
     }
 
@@ -1107,5 +1107,5 @@
         psHistogram *histogram = psHistogramAlloc(min, max, numBins); // A new histogram (without outliers)
         if (!psVectorHistogram(histogram, myVector, errors, mask, maskVal)) {
-	    // if psVectorHistogram returns false, we have a programming error
+            // if psVectorHistogram returns false, we have a programming error
             psError(PS_ERR_UNKNOWN, false, "Unable to generate histogram for fitted statistics.\n");
             psFree(histogram);
@@ -1172,6 +1172,6 @@
             PS_VECTOR_PRINT_F32(y);
         }
-	
-	// psMinimizeLMChi2 can return false for bad data as well as for serious failures
+
+        // psMinimizeLMChi2 can return false for bad data as well as for serious failures
         if (!psMinimizeLMChi2(minimizer, NULL, params, NULL, x, y, NULL, minimizeLMChi2Gauss1D)) {
             psError(PS_ERR_UNKNOWN, false, "Failed to fit a gaussian to the robust histogram.\n");
@@ -1235,6 +1235,6 @@
         if (!vectorRobustStats(myVector, errors, mask, maskVal, stats)) {
             psError(PS_ERR_UNKNOWN, false, "failure to measure robust stats\n");
-	    return false;
-	}
+            return false;
+        }
     }
 
@@ -1355,5 +1355,5 @@
         // psVectorInit (fitMask, 0);
 
-	// XXX not sure if these should result in errors or not...
+        // XXX not sure if these should result in errors or not...
         if (!psVectorFitPolynomial1D (poly, NULL, 0, y, NULL, x)) {
             psError(PS_ERR_UNKNOWN, false, "Failed to fit a gaussian to the robust histogram.\n");
@@ -1432,6 +1432,6 @@
         if (!vectorRobustStats(myVector, errors, mask, maskVal, stats)) {
             psError(PS_ERR_UNKNOWN, false, "failure to measure robust stats\n");
-	    return false;
-	}
+            return false;
+        }
     }
 
@@ -1729,6 +1729,6 @@
         if (!vectorRobustStats(myVector, errors, mask, maskVal, stats)) {
             psError(PS_ERR_UNKNOWN, false, "failure to measure robust stats\n");
-	    return false;
-	}
+            return false;
+        }
     }
 
@@ -1766,5 +1766,5 @@
             COUNT_WARNING(10, 100, "Failed to calculate the min/max of the input vector.\n");
             psFree(statsMinMax);
-	    goto escape;
+            goto escape;
         }
 
@@ -1774,6 +1774,6 @@
             stats->fittedMean = min;
             stats->fittedStdev = 0.0;
-	    stats->results |= PS_STAT_FITTED_MEAN_V4;
-	    stats->results |= PS_STAT_FITTED_STDEV_V4;
+            stats->results |= PS_STAT_FITTED_MEAN_V4;
+            stats->results |= PS_STAT_FITTED_STDEV_V4;
             return true;
         }
@@ -1793,5 +1793,5 @@
             psFree(histogram);
             psFree(statsMinMax);
-	    goto escape;
+            goto escape;
         }
         if (psTraceGetLevel("psLib.math") >= 8) {
@@ -1825,5 +1825,5 @@
             COUNT_WARNING(10, 100, "Failed to calculate the min/max of the input vector.\n");
             psFree(statsMinMax);
-	    goto escape;
+            goto escape;
         }
 
@@ -1886,6 +1886,6 @@
 
             // fit 2nd order polynomial to ln(y) = -(x-xo)^2/2sigma^2
-	    // XXX this fit may fail with an error for an ill-conditioned matrix (bad data)
-	    // we probably should be able to handle the data errors gracefully
+            // XXX this fit may fail with an error for an ill-conditioned matrix (bad data)
+            // we probably should be able to handle the data errors gracefully
             psPolynomial1D *poly = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, 2);
             bool status = psVectorFitPolynomial1D (poly, NULL, 0, y, NULL, x);
@@ -1898,5 +1898,5 @@
                 psFree(histogram);
                 psFree(statsMinMax);
-		goto escape;
+                goto escape;
             }
 
@@ -1917,5 +1917,5 @@
 
                 COUNT_WARNING(10, 100, "fit did not converge\n");
-		goto escape;
+                goto escape;
             }
 
@@ -1987,5 +1987,5 @@
                 psFree(histogram);
                 psFree(statsMinMax);
-		goto escape;
+                goto escape;
             }
 
@@ -2898,7 +2898,7 @@
 *****************************************************************************/
 static psF32 fitQuadraticSearchForYThenReturnBin(const psVector *xVec,
-						 psVector *yVec,
-						 psS32 binNum,
-						 psF32 yVal
+                                                 psVector *yVec,
+                                                 psS32 binNum,
+                                                 psF32 yVal
     )
 {
@@ -2982,27 +2982,35 @@
         }
 
-	// I believe that mathematically the fitted bin position must be between binNum - 1 and binNum + 1
-	assert (binValue >= binNum - 1);
-	assert (binValue <= binNum + 1);
-
-	int fitBin = binValue;
-	float dX = xVec->data.F32[fitBin+1] - xVec->data.F32[fitBin];
-	float dY = binValue - fitBin;
-	tmpFloat = xVec->data.F32[fitBin] + dY * dX;
+        // I believe that mathematically the fitted bin position must be between binNum - 1 and binNum + 1
+        assert (binValue >= binNum - 1);
+        assert (binValue <= binNum + 1);
+
+        int fitBin = binValue;
+        float dX = xVec->data.F32[fitBin+1] - xVec->data.F32[fitBin];
+        float dY = binValue - fitBin;
+        tmpFloat = xVec->data.F32[fitBin] + dY * dX;
     } else {
         // These are special cases where the bin is at the beginning or end of the vector.
         if (binNum == 0) {
             // We have two points only at the beginning of the vectors x and y.
-	    // X = (dX/dY)(Y - Yo) + Xo
-	    float dX = xVec->data.F32[1] - xVec->data.F32[0];
-	    float dY = yVec->data.F32[1] - yVec->data.F32[0];	    
-	    tmpFloat = (yVal - yVec->data.F32[0]) * (dX / dY) + xVec->data.F32[0];
+            // X = (dX/dY)(Y - Yo) + Xo
+            float dX = xVec->data.F32[1] - xVec->data.F32[0];
+            float dY = yVec->data.F32[1] - yVec->data.F32[0];
+            if (dY == 0.0) {
+                tmpFloat = xVec->data.F32[0];
+            } else {
+                tmpFloat = (yVal - yVec->data.F32[0]) * (dX / dY) + xVec->data.F32[0];
+            }
         } else if (binNum == (xVec->n - 1)) {
             // We have two points only at the end of the vectors x and y.
-	    // X = (dX/dY)(Y - Yo) + Xo
-	    float dX = xVec->data.F32[binNum] - xVec->data.F32[binNum-1];
-	    float dY = yVec->data.F32[binNum] - yVec->data.F32[binNum-1];	    
-	    tmpFloat = (yVal - yVec->data.F32[binNum-1]) * (dX / dY) + xVec->data.F32[binNum-1];
-        } 
+            // X = (dX/dY)(Y - Yo) + Xo
+            float dX = xVec->data.F32[binNum] - xVec->data.F32[binNum-1];
+            float dY = yVec->data.F32[binNum] - yVec->data.F32[binNum-1];
+            if (dY == 0.0) {
+                tmpFloat = xVec->data.F32[binNum-1];
+            } else {
+                tmpFloat = (yVal - yVec->data.F32[binNum-1]) * (dX / dY) + xVec->data.F32[binNum-1];
+            }
+        }
     }
 
Index: /branches/czw_branch/cleanup/psModules/src/concepts/pmConcepts.c
===================================================================
--- /branches/czw_branch/cleanup/psModules/src/concepts/pmConcepts.c	(revision 25050)
+++ /branches/czw_branch/cleanup/psModules/src/concepts/pmConcepts.c	(revision 25051)
@@ -377,5 +377,4 @@
         conceptRegisterS32("CELL.XWINDOW", "Start of cell window (pixels)",p_pmConceptParse_Positions,p_pmConceptFormat_Positions, NULL, true, PM_FPA_LEVEL_CELL);
         conceptRegisterS32("CELL.YWINDOW", "Start of cell window (pixels)",p_pmConceptParse_Positions,p_pmConceptFormat_Positions, NULL, true, PM_FPA_LEVEL_CELL);
-        conceptRegisterF32("CELL.VARFACTOR", "Variance factor for conversion from large to small scales", NULL, NULL, NULL, true, PM_FPA_LEVEL_CELL);
 
         // CELL.TRIMSEC
@@ -485,27 +484,27 @@
         concept[length - 1] = '\0';
 
-	// special variants:
-	if (!strcmp(concept, "FPA.DATE")) {
-	  psTime *fpaTime = psMetadataLookupPtr(NULL, fpa->concepts, "FPA.TIME");
-	  if (!fpaTime) {
-	    psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Missing concept FPA.TIME needed for FPA.DATE");
-	    psFree(string);
-	    return NULL;
-	  }
-	  psString dateTimeString = psTimeToISO(fpaTime); // String representation
-	  psList *dateTime = psStringSplit(dateTimeString, "T", true);
-	  psFree(dateTimeString);
-	  psString dateString = psMemIncrRefCounter(psListGet(dateTime, PS_LIST_HEAD)); // The date string
-	  psFree (dateTime);
-
-	  if (!psStringSubstitute(&string, dateString, "{FPA.DATE}")) {
-	      psError(PS_ERR_UNKNOWN, false, "Unable to replace concept %s", concept);
-	      psFree(string); 
-	      psFree(dateString);
-	      return NULL; 
-	  }
-	  psFree (dateString);
-	  continue;
-	}
+        // special variants:
+        if (!strcmp(concept, "FPA.DATE")) {
+          psTime *fpaTime = psMetadataLookupPtr(NULL, fpa->concepts, "FPA.TIME");
+          if (!fpaTime) {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Missing concept FPA.TIME needed for FPA.DATE");
+            psFree(string);
+            return NULL;
+          }
+          psString dateTimeString = psTimeToISO(fpaTime); // String representation
+          psList *dateTime = psStringSplit(dateTimeString, "T", true);
+          psFree(dateTimeString);
+          psString dateString = psMemIncrRefCounter(psListGet(dateTime, PS_LIST_HEAD)); // The date string
+          psFree (dateTime);
+
+          if (!psStringSubstitute(&string, dateString, "{FPA.DATE}")) {
+              psError(PS_ERR_UNKNOWN, false, "Unable to replace concept %s", concept);
+              psFree(string);
+              psFree(dateString);
+              return NULL;
+          }
+          psFree (dateString);
+          continue;
+        }
 
         psTrace("psModules.concepts", 7, "Interpolating concept %s", concept);
Index: /branches/czw_branch/cleanup/psModules/src/imcombine/pmSubtractionAnalysis.c
===================================================================
--- /branches/czw_branch/cleanup/psModules/src/imcombine/pmSubtractionAnalysis.c	(revision 25050)
+++ /branches/czw_branch/cleanup/psModules/src/imcombine/pmSubtractionAnalysis.c	(revision 25051)
@@ -129,42 +129,4 @@
 
 
-    // Set the variance factors
-    float vf1 = 1.0, vf2 = 1.0;         // Variance factors for each image
-    switch (kernels->mode) {
-      case PM_SUBTRACTION_MODE_1:
-        vf1 = pmSubtractionVarianceFactor(kernels, 0.5, 0.5, false);
-        break;
-      case PM_SUBTRACTION_MODE_2:
-        vf2 = pmSubtractionVarianceFactor(kernels, 0.5, 0.5, false);
-        break;
-      case PM_SUBTRACTION_MODE_DUAL:
-        vf1 = pmSubtractionVarianceFactor(kernels, 0.5, 0.5, false);
-        vf2 = pmSubtractionVarianceFactor(kernels, 0.5, 0.5, true);
-        break;
-      default:
-        psAbort("Invalid subtraction mode: %x", kernels->mode);
-    }
-
-    // Weight by the area
-    if (region) {
-        float norm = (region->x1 - region->x0 + 1) * (region->y1 - region->y0 + 1) / (numCols * numRows);
-        vf1 *= norm;
-        vf2 *= norm;
-    }
-
-    // Update the variance factor
-#define UPDATE_VARFACTOR(VF, ANALYSIS) { \
-    psMetadataItem *vfItem = psMetadataLookup(analysis, ANALYSIS); \
-    if (vfItem) { \
-        psAssert(vfItem->type == PS_TYPE_F32, "Should be the type we said."); \
-        vfItem->data.F32 += VF; \
-    } else { \
-        psMetadataAddF32(analysis, PS_LIST_TAIL, ANALYSIS, 0, "Variance factor weighted by the area", VF); \
-    } \
-}
-
-    UPDATE_VARFACTOR(vf1, PM_SUBTRACTION_ANALYSIS_VARFACTOR_1);
-    UPDATE_VARFACTOR(vf2, PM_SUBTRACTION_ANALYSIS_VARFACTOR_2);
-
     // Kernel shape
     {
Index: /branches/czw_branch/cleanup/psconfig/pschecklibs
===================================================================
--- /branches/czw_branch/cleanup/psconfig/pschecklibs	(revision 25050)
+++ /branches/czw_branch/cleanup/psconfig/pschecklibs	(revision 25051)
@@ -100,4 +100,11 @@
 # search for, and drop, existing libdir entry in libpath?
 unshift @libpath, $libdir;
+
+# XXX a temporary hack for libreadline (this failed... needed to modify libreadline/support/shobj-conf
+# $shlib_libs = $ENV{'SHLIB_LIBS'};
+# unless ($shlib_libs =~ m|-lncurses|) {
+#     $shlib_libs .= " -lncurses";
+# }
+# $ENV{'SHLIB_LIBS'} = $shlib_libs;
 
 # add the path defined by PATH
Index: /branches/czw_branch/cleanup/psconfig/tagsets/ipp-2.9.libs
===================================================================
--- /branches/czw_branch/cleanup/psconfig/tagsets/ipp-2.9.libs	(revision 25050)
+++ /branches/czw_branch/cleanup/psconfig/tagsets/ipp-2.9.libs	(revision 25051)
@@ -29,5 +29,5 @@
 lib libpthread           NONE           NONE   NONE                     NONE             N NONE NONE NONE
 lib libncurses           curses,termcap NONE   ncurses-5.6.tar.gz       ncurses-5.6      N NONE NONE NONE
-lib libreadline          NONE           NONE   readline-5.2-p12.tar.gz  readline-5.2-p12 Y NONE NONE NONE
+lib libreadline          NONE           NONE   readline-5.2-p13.tar.gz  readline-5.2-p13 Y NONE NONE NONE
 lib libz                 NONE           NONE   zlib-1.2.3.tar.gz        zlib-1.2.3       N --shared NONE NONE
 lib libpng               NONE           NONE   libpng-1.2.15.tar.gz     libpng-1.2.15    N NONE NONE NONE
Index: /branches/czw_branch/cleanup/psphot/doc/notes.20090523.txt
===================================================================
--- /branches/czw_branch/cleanup/psphot/doc/notes.20090523.txt	(revision 25050)
+++ /branches/czw_branch/cleanup/psphot/doc/notes.20090523.txt	(revision 25051)
@@ -1,19 +1,58 @@
 
-20090523 : extended source analysis -- further development
+20090725 : extended source radial profiles
 
- issues to address:
+ I need to fix the Petrosian and similar code.  There are several issues:
 
- * quality of moments used for initial psf selection
-   - what is the behavior of moments with Gaussian windowing as function of S/N & size?
-   - can we choose a sigma value that will give reliable moments for an expected range of seeing?
+ 1) correct implementation of the actual Petrosian radius / Petrosian flux measurement:
 
- * moments for galaxy model guesses
-   - trade-off between Gaussian windowing, tophat windowing, and S/N windowing in footprint area
+    R_p : Given F(R) : F(0) / F(R_p) = 0.9 ?? (something like this...)
 
- initial dev work:
+    Actually implemented by calculating the average surface brightness in annullii:
 
- * add Gaussian windowing, S/N windowing, (tophat windowing) and options to select
+    R_p : Given F(R) -> define f(R) = \sum_{R-dR}^{R+dR}F(R) / 4\pi R dR
+    R_p : f(dR) / F(R_p) = P_ratio
 
- * check visualization of moments
+ 2) need to construct a clean, normalized radial profile to make this measurement
+
+    * generate radial profiles for each of N annular wedges
+    * find R_50 : f(0) / f(R_50) = 0.5
+    $ fit the ellipse of R_50 to Rmaj sin(T) + Rmin cos(T) 
+
+
+    cos(a+b) = cos(a) cos(b) - sin(a) sin(b)
+    sin(a+b) = cos(a) sin(b) + cos(b) sin(a)
+
+    cos(theta+To) = cos(theta) cos(To) - sin(theta) sin(To)
+    sin(theta+To) = cos(theta) sin(To) + sin(theta) cos(To)
+
+    R_x = R_maj cos(theta + theta_o) = R_maj cos(theta) cos(theta_o) - Rmaj sin(theta) sin(theta_o)
+    R_y = R_min sin(theta + theta_o) = R_min cos(theta) sin(theta_o) + Rmin sin(theta) cos(theta_o)
+
+    R_X = R_x cos(phi) - R_y sin(phi)
+    R_Y = R_x sin(phi) + R_y cos(phi)
+
+    R_X = R_maj cos(phi) cos(theta + To) - R_min sin(phi) sin(theta + To)
+    R_Y = R_maj sin(phi) cos(theta + To) + R_min cos(phi) sin(theta + To)
+
+    R_X = (R_maj cos(phi) cos (To) - R_min sin(phi) sin(To)) cos(theta) - (Rmaj cos(phi) sin(To) + Rmin sin(phi) cos(To)) sin(theta)
+    R_Y = (R_maj sin(phi) cos (To) + R_min cos(phi) sin(To)) cos(theta) - (Rmaj cos(phi) sin(To) + Rmin sin(phi) cos(To)) sin(theta)
+    
+
+    R_X = Ax cos(theta) + Bx sin(theta)
+    R_Y = Ay cos(theta) + By sin(theta)
+    
+    Ax = \sum (R_X * cos(theta))
+    Bx = \sum (R_X * sin(theta))
+    Ay = \sum (R_Y * cos(theta))
+    By = \sum (R_Y * sin(theta))
+
+    R_maj = sqrt(Ax^2 + Ay^2)
+    R_min = sqrt(Bx^2 + By^2)
+
+    phi = atan2(Bx + By, Ax + Ay)
+
+    *** get rest of math from my notebook...
+
+
 
 20090525 : some clarity of issues:
@@ -40,2 +79,20 @@
    
  * QGAUSS with see 
+
+20090523 : extended source analysis -- further development
+
+ issues to address:
+
+ * quality of moments used for initial psf selection
+   - what is the behavior of moments with Gaussian windowing as function of S/N & size?
+   - can we choose a sigma value that will give reliable moments for an expected range of seeing?
+
+ * moments for galaxy model guesses
+   - trade-off between Gaussian windowing, tophat windowing, and S/N windowing in footprint area
+
+ initial dev work:
+
+ * add Gaussian windowing, S/N windowing, (tophat windowing) and options to select
+
+ * check visualization of moments
+
Index: /branches/czw_branch/cleanup/pstamp/scripts/pstamp_finish.pl
===================================================================
--- /branches/czw_branch/cleanup/pstamp/scripts/pstamp_finish.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/pstamp/scripts/pstamp_finish.pl	(revision 25051)
@@ -173,4 +173,6 @@
     }
 
+    my $exp_info;
+    my $last_exp_id = -1;
     foreach my $job (@jobs) {
         my $job_id = $job->{job_id};
@@ -181,10 +183,18 @@
 
         my ($row, $req_info, $project) = get_request_info($rows, $rownum);
-        my $proj_hash = resolve_project($ipprc, $project, $dbname);
+
+        my $proj_hash = resolve_project($ipprc, $project, $dbname, $dbserver);
         my $image_db = $proj_hash->{dbname};
-
-        # get the metadata for the exposure (if any i.e. stack) 
-        # returns an appropriate string if !$exp_id
-        my $exp_info = get_exposure_info($image_db, $exp_id);
+        if (!$image_db) {
+            carp("failed to find imagedb for project: $project");
+            stop_request($req_id, $PS_EXIT_CONFIG_ERROR);
+        }
+
+        if ($exp_id ne $last_exp_id) {
+            # get the metadata for the exposure (if any i.e. stack) 
+            # returns an appropriate string if !$exp_id
+            $exp_info = get_exposure_info($image_db, $exp_id);
+            $last_exp_id = $exp_id;
+        }
 
         if (($job_type eq "stamp") || ($job_type eq "get_image")) {
@@ -292,5 +302,5 @@
     # Create a results file module and provide a list of the names (we have the data in the columns)
     my $rowinfo = "$row->{PROJECT}|$row->{JOB_TYPE}|$row->{REQ_TYPE}|$row->{IMG_TYPE}|";
-    $rowinfo   .= "$row->{ID}|$row->{CLASS_ID}|$row->{OPTION_MASK}|$row->{MJD_MIN}|$row->{MJD_MAX}|";
+    $rowinfo   .= "$row->{ID}|$row->{TESS_ID}|$row->{COMPONENT}|$row->{OPTION_MASK}|$row->{MJD_MIN}|$row->{MJD_MAX}|";
     $rowinfo   .= "$row->{REQFILT}|$row->{COORD_MASK}|$row->{CENTER_X}|$row->{CENTER_Y}|";
     $rowinfo   .= "$row->{WIDTH}|$row->{HEIGHT}";
Index: /branches/czw_branch/cleanup/pstamp/scripts/pstamp_job_run.pl
===================================================================
--- /branches/czw_branch/cleanup/pstamp/scripts/pstamp_job_run.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/pstamp/scripts/pstamp_job_run.pl	(revision 25051)
@@ -14,25 +14,29 @@
 use Digest::MD5::File qw( file_md5_hex );
 use PS::IPP::PStamp::RequestFile qw( :standard );
-
-my $verbose;
-my $dbname;
-my $dbserver;
-my $job_id;
-my $redirect_output;
-my $output_base;
-
-my $host = hostname();
-
+use IPC::Cmd 0.36 qw( can_run run );
+
+use PS::IPP::Metadata::Config;
+#use PS::IPP::Metadata::Stats;
+#use PS::IPP::Metadata::List qw( parse_md_list );
+
+use PS::IPP::Config qw( :standard );
+
+my ($job_id, $redirect_output, $outputBase, $rownum, $jobType); 
+my ($verbose, $dbname, $dbserver, $no_update);
 
 GetOptions(
     'job_id=s'          =>  \$job_id,
-    'output_base=s'     =>  \$output_base,
-    'redirect-output'   => \$redirect_output,
+    'job_type=s'        =>  \$jobType,
+    'rownum=s'          =>  \$rownum,
+    'output_base=s'     =>  \$outputBase,
+    'redirect-output'   =>  \$redirect_output,
     'dbname=s'          =>  \$dbname,
     'dbserver=s'        =>  \$dbserver,
     'verbose'           =>  \$verbose,
+    'no-update'         =>  \$no_update,
 );
 
 
+my $host = hostname();
 if ($verbose) {
     print "\n\n";
@@ -41,29 +45,17 @@
 
 die "job_id is required" if !$job_id;
-die "output_base is required" if !$output_base;
-
-use IPC::Cmd 0.36 qw( can_run run );
-
-use PS::IPP::Metadata::Config;
-use PS::IPP::Metadata::Stats;
-use PS::IPP::Metadata::List qw( parse_md_list );
-
-use PS::IPP::Config qw($PS_EXIT_SUCCESS
-		       $PS_EXIT_UNKNOWN_ERROR
-		       $PS_EXIT_SYS_ERROR
-		       $PS_EXIT_CONFIG_ERROR
-		       $PS_EXIT_PROG_ERROR
-		       $PS_EXIT_DATA_ERROR
-		       $PS_EXIT_TIMEOUT_ERROR
-		       metadataLookupStr
-		       metadataLookupBool
-		       caturi
-		       );
+
+my_die( "job_type is required", $job_id, $PS_EXIT_PROG_ERROR) if !$jobType;
+my_die("rownum is required", $job_id, $PS_EXIT_PROG_ERROR) if !$rownum;
+my_die("output_base is required", $job_id, $PS_EXIT_PROG_ERROR) if !$outputBase;
+
+
 my $ipprc = PS::IPP::Config->new(); # IPP Configuration
-
 if ($redirect_output) {
-    my $logDest = "$output_base.log";
-    $ipprc->redirect_output($logDest);
-}
+    my $logDest = "$outputBase.log";
+    $ipprc->redirect_output($logDest)
+        or my_die ("unable to redirect output to $logDest", $job_id, $PS_EXIT_UNKNOWN_ERROR);
+}
+
 
 if (!$dbserver) {
@@ -78,87 +70,54 @@
 
 if ($missing_tools) {
-    warn("Can't find required tools.");
-    exit ($PS_EXIT_CONFIG_ERROR);
+    my_die("Can't find required tools", $job_id, $PS_EXIT_CONFIG_ERROR);
 }
 
 my $mdcParser = PS::IPP::Metadata::Config->new; # Parser for metadata config files
 
-my $psjob;
-#Look up the uri for the given job
-{
-    my $command = "$pstamptool -pendingjob -job_id $job_id";
+my $jobStatus;
+if ($jobType eq "stamp") {
+    my $argslist = "$outputBase.args";
+    open ARGSLIST, "<$argslist" or my_die("failed to open argslist file $argslist", $job_id, $PS_EXIT_UNKNOWN_ERROR);
+    my $argString = <ARGSLIST>;
+    close ARGSLIST;
+    chomp $argString;
+
+    # XXX: should we do any other sanity checking?
+    my_die("arglist file $argslist is empty", $job_id, $PS_EXIT_DATA_ERROR) if !$argString;
+
+    my $command = "$ppstamp $outputBase $argString";
     $command .= " -dbname $dbname" if $dbname;
     $command .= " -dbserver $dbserver" if $dbserver;
     my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
         run(command => $command, verbose => $verbose);
-    unless ($success) {
-        die("Unable to perform pstamptool -pendingjob: $error_code");
-    }
-
-    if (@$stdout_buf == 0) {
-        print STDERR "pending pstamp job id $job_id not found\n";
-        exit 0;
-    }
-    my $metadata = $mdcParser->parse(join "", @$stdout_buf) or
-        die("Unable to parse metdata config doc");
-
-    my $jobs = parse_md_list($metadata);
-    my $num = @$jobs;
-    die "unexpected number of jobs $num found for job: $job_id" if $num > 1;
-
-    $psjob = $jobs->[0];
-}
-
-if (!$psjob) {
-    print STDERR "postage stamp job $job_id not found\n";
-    exit 1;
-}
-
-my $rownum = $psjob->{rownum};
-my $uri = $psjob->{uri};
-my $outputBase = $psjob->{outputBase};
-my $argString = $psjob->{args};
-my $jobType = $psjob->{jobType};
-
-my $jobStatus;
-if ($jobType eq "stamp") {
-    my $command = "$ppstamp -file $uri $outputBase $argString";
-    $command .= " -dbname $dbname" if $dbname;
-    $command .= " -dbserver $dbserver" if $dbserver;
-    my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
-        run(command => $command, verbose => $verbose);
 
     if ($success) {
-        # XXX shouldn't need to do this, review schema`
         my $dir = dirname($outputBase);
 
         my $reglist = "$dir/reglist$job_id";
 
-        open F, ">$reglist" or die "can't open $reglist for output";
-
-        # figure out what output images we should expect
-
-        # Note: we are assuming the contents of the filerules here.
-        my @extensions = ( "fits", "mk.fits", "wt.fits");
-
-        # we always require an image
+        open F, ">$reglist" or my_die( "can't open $reglist for output", $job_id, $PS_EXIT_UNKNOWN_ERROR);
+
+        # Figure out what output images were produced
+
+        # Note: we are assuming the contents of the PSTAMP filerules here.
+        my %extensions = ( $PSTAMP_SELECT_IMAGE  => "fits", 
+                           $PSTAMP_SELECT_MASK   => "mk.fits",
+                           $PSTAMP_SELECT_WEIGHT => "wt.fits");
+
+        # we always create a stamp of the image
         my $output_mask = $PSTAMP_SELECT_IMAGE;
 
-        # we search the argString for -mask and -weight. 
+        # we search the argString for -mask and -variance. 
         # searching the arg string allows us to avoid adding a column in pstampJob
-        # XXX yeah but does this make us susceptible to user input fouling us up?
-        # For example, what if somebody sets the output base to file-mask-weight
-        # TODO: clean this up
-        $output_mask |= $PSTAMP_SELECT_MASK   if ($argString =~ /-mask/);
-        $output_mask |= $PSTAMP_SELECT_WEIGHT if ($argString =~ /-weight/);
-
-        # XXX we're getting a bit intimate with the bit field definitions here.
-        # do better use a hash
-
-        my $m = 1;
-        foreach my $extension (@extensions) {
-            my $do_this_one = $m & $output_mask;
-            $m = $m << 1;
+        $output_mask   |= $PSTAMP_SELECT_MASK   if ($argString =~ /-mask/);
+        $output_mask   |= $PSTAMP_SELECT_WEIGHT if ($argString =~ /-variance/);
+
+        foreach my $key (keys (%extensions)) {
+            my $do_this_one = $key & $output_mask;
+
             next if (! $do_this_one);
+
+            my $extension = $extensions{$key};
 
             my $basename = basename($outputBase);
@@ -175,7 +134,10 @@
     } else {
         $jobStatus = $error_code >> 8;
-        print STDERR "ppstamp failed with error code: $jobStatus\n";
+        my_die( "ppstamp failed with error code: $jobStatus", $job_id, $jobStatus);
     }
 } elsif ($jobType eq "get_image") {
+    my_die( "get_image jobs not working right now", $job_id, $PS_EXIT_CONFIG_ERROR);
+
+    my $uri = "";
     my $command = "$pstamp_get_image_job --job_id $job_id --uri $uri --out_dir $outputBase --rownum $rownum";
     $command .= " --dbname $dbname" if $dbname;
@@ -188,25 +150,29 @@
     } else {
         $jobStatus = $error_code >> 8;
-        print STDERR "ppstamp failed with error code: $jobStatus\n";
+        my_die( "pstamp_get_image_job failed with error code: $jobStatus", $job_id, $jobStatus);
     }
 } elsif ($jobType eq "detect_query") {
-    die("multiple detect_query jobs not supported yet");
+    my_die("detect_query jobs not supported yet", $job_id,$PS_EXIT_CONFIG_ERROR);
 } else {
-    die("unknown jobType $jobType found");
-}
-
-# stop the job and set the result value
+    my_die("unknown jobType $jobType found", $job_id, $PS_EXIT_PROG_ERROR);
+}
+
+# mark the job stopped in the database
 {
-    my $command = "$pstamptool -updatejob -job_id $job_id -state stop -fault $jobStatus";
+    my $command = "$pstamptool -updatejob -job_id $job_id -state stop"; 
     $command .= " -dbname $dbname" if $dbname;
     $command .= " -dbserver $dbserver" if $dbserver;
-    my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
-        run(command => $command, verbose => $verbose);
-    unless ($success) {
-        die("Unable to perform $command: $error_code");
-    }
-}
-
-exit $jobStatus;
+    if (!$no_update) {
+        my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
+            run(command => $command, verbose => $verbose);
+        unless ($success) {
+            die("Unable to perform $command: $error_code");
+        }
+    } else {
+        print STDERR "skipping command: $command\n"
+    }
+}
+
+exit 0;
 
 # create a string to be passed as input to dsreg when registering this file in a fileset
@@ -219,5 +185,5 @@
     if (-e $path) {
         my @finfo = stat($path);
-        die "failed to stat $path" unless (@finfo);    # XXX clean up
+        my_die("failed to stat $path", $job_id, $PS_EXIT_UNKNOWN_ERROR) unless (@finfo); 
         my $bytes = $finfo[7];
         my $md5sum = file_md5_hex($path);
@@ -225,5 +191,26 @@
         return "$filename|$bytes|$md5sum|$filetype|";
     } else {
-        die "$filename not found at $path";
-    }
-}
+        my_die("$filename not found at $path", $job_id, $PS_EXIT_UNKNOWN_ERROR);
+    }
+}
+
+sub my_die
+{
+    my $msg = shift;            # Warning message on die
+    my $job_id = shift;         # job identifier
+    my $exit_code = shift;      # Exit code to add
+
+    $exit_code = $PS_EXIT_PROG_ERROR unless defined $exit_code;
+
+    carp($msg);
+    if (defined $job_id and not $no_update) {
+        my $command = "$pstamptool -updatejob";
+        $command .= " -job_id $job_id";
+        $command .= " -fault $exit_code";
+        $command .= " -dbname $dbname" if defined $dbname;
+        $command .= " -dbserver $dbserver" if defined $dbserver;
+        system($command);
+    }
+    exit $exit_code;
+}
+
Index: /branches/czw_branch/cleanup/pstamp/scripts/pstamp_parser_run.pl
===================================================================
--- /branches/czw_branch/cleanup/pstamp/scripts/pstamp_parser_run.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/pstamp/scripts/pstamp_parser_run.pl	(revision 25051)
@@ -13,4 +13,5 @@
 use Getopt::Long qw( GetOptions );
 use File::Basename qw( basename dirname);
+use POSIX qw( strftime );
 
 my $req_id;
@@ -74,8 +75,13 @@
 }
 
-# workdir is where we download request files to and place any error output from the parser
+# workdir is where all of the files generated for this request are placed
 # NOTE: this location needs to be kept in sync with the web interface ( request.php )
-my $workdir = "$pstamp_workdir/$req_id";
-
+my $datestr = strftime "%Y%m%d", gmtime;
+my $datedir = "$pstamp_workdir/$datestr";
+if (! -e $datedir ) {
+    mkdir $datedir or die "failed to create working directory $datedir for request id $req_id";
+}
+
+my $workdir = "$datedir/$req_id";
 if (! -e $workdir ) {
     mkdir $workdir or die "failed to create working directory $workdir for request id $req_id";
Index: /branches/czw_branch/cleanup/pstamp/scripts/pstamp_results_file.pl
===================================================================
--- /branches/czw_branch/cleanup/pstamp/scripts/pstamp_results_file.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/pstamp/scripts/pstamp_results_file.pl	(revision 25051)
@@ -88,5 +88,6 @@
         { name => 'IMG_TYPE',   type => '16A', writetype => TSTRING },       
         { name => 'ID',         type => '16A', writetype => TSTRING },            
-        { name => 'CLASS_ID',   type => '16A', writetype => TSTRING },    
+        { name => 'TESS_ID',    type => '64A', writetype => TSTRING },    
+        { name => 'COMPONENT',  type => '64A', writetype => TSTRING },    
 
         # output parameters
Index: /branches/czw_branch/cleanup/pstamp/scripts/pstampparse.pl
===================================================================
--- /branches/czw_branch/cleanup/pstamp/scripts/pstampparse.pl	(revision 25050)
+++ /branches/czw_branch/cleanup/pstamp/scripts/pstampparse.pl	(revision 25051)
@@ -133,5 +133,5 @@
     # XXX: TODO: sanity check all parameters
 
-    # XXX: TODO: We shouldn't just die in this loop.
+    # XXX: TODO: We shouldn't really just die in this loop.
     # If we encounter an error for a particular row
     # add a job with the proper fault code. If there is a db or config error we should probably just
@@ -146,16 +146,16 @@
     $stage = $row->{IMG_TYPE};
     my $id       = $row->{ID};
-    my $class_id = $row->{CLASS_ID};
     my $component = $row->{COMPONENT};
+
     my $filter   = $row->{REQFILT};
     my $mjd_min = $row->{MJD_MIN};
     my $mjd_max = $row->{MJD_MAX};
+
     my $option_mask= $row->{OPTION_MASK};
 
-    die "region of interest is required to make postage stamps"
+    die "valid region of interest is required to make postage stamps"
         if (($job_type eq "stamp") and ! validROI($row));
 
     my $skycenter = $row->{skycenter} = ! ($row->{COORD_MASK} & $PSTAMP_CENTER_IN_PIXELS);
-    $class_id = "" if (defined($class_id) and ($class_id eq "null" or $class_id eq "all"));
     $component = "" if (defined($component) and ($component eq "null" or $component eq "all"));
     
@@ -163,6 +163,6 @@
 
 
-    # note: resolve_project remembers the last project returned so avoids running
-    # pstamptool every time
+    # note: resolve_project avoids running pstamptool every time by remembering the
+    # last project resolved
     my $proj_hash = resolve_project($ipprc, $project, $dbname, $dbserver);
     die "project $project not found\n" unless $proj_hash;
@@ -176,4 +176,5 @@
     if (@rowList) {
         my $firstRow = $rowList[0];
+        # XXX: the collecting might work with !$skycenter but I need to think about it
         if ($skycenter and same_images_of_interest($row, $firstRow)) {
             push @rowList, $row;
@@ -181,6 +182,6 @@
             next;
         } else {
-            # Process the jobs for this set of rows
-            $num_jobs += makeJobs($mode, $stage, $need_magic, \@rowList, $imageList);
+            # queue the jobs for this set of rows
+            $num_jobs += queueJobs($mode, \@rowList, $imageList);
             @rowList = ();
         }
@@ -195,5 +196,5 @@
         # request specification. An array reference is returned
         my ($x, $y);
-        $imageList = locate_images($ipprc, $image_db, $req_type, $stage, $id, $class_id, $skycenter,
+        $imageList = locate_images($ipprc, $image_db, $req_type, $stage, $id, $component, $skycenter,
                 $x, $y, $mjd_min, $mjd_max, $filter, $verbose);
     }
@@ -203,9 +204,10 @@
         next;
     }
+    $row->{need_magic} = $need_magic;
     push @rowList, $row;
 }
 
 if (@rowList) {
-    $num_jobs += makeJobs($mode, $stage, $need_magic, \@rowList, $imageList);
+    $num_jobs += queueJobs($mode, \@rowList, $imageList);
 }
 
@@ -223,7 +225,8 @@
 
 
-sub makeJobsForRow
+sub queueJobsForRow
 {
     my $row = shift;
+    my $stage = shift;
     my $imageList = shift;
     my $have_skycells = shift;
@@ -234,10 +237,8 @@
     foreach my $image (@$imageList) {
         my $component;
-        my $class_id;   # get rid of this use componet
         if ($have_skycells) {
             $component = $image->{skycell_id};
         } else {
             $component = $image->{class_id};
-            $class_id = $component;
         }
 
@@ -249,7 +250,5 @@
         my $roi_string;
 
-        # XXX we're depending on other code to insure valid values for roi components
-        # this is checked in and ppstamp but I should check here so that we don't get that far,
-        # but not today
+        # note values were insured to be numbers in validROI()
         my $x = $row->{CENTER_X};
         my $y = $row->{CENTER_Y};
@@ -270,7 +269,8 @@
         }
 
-        my $uri = $image->{image};
+        my $imagefile = $image->{image};
         if (($stage ne "stack") and ($need_magic and !$image->{magicked})) {
-            print STDERR "skippping non-magicked image $uri\n" if $verbose;
+            # XXX: should we add a faulted job so the client can know what happened?
+            print STDERR "skippping non-magicked image $imagefile\n" if $verbose;
             next;
         }
@@ -278,9 +278,9 @@
             
         my $args = $roi_string ? $roi_string : "";
-        $args .= " -class_id $class_id" if $class_id;
+        if ($stage eq "raw" or $stage eq "chip") {
+            $args .= " -class_id $component" if $component;
+        }
 
         $job_num++;
-
-        my $output_base = "$out_dir/${rownum}_${job_num}";
 
         # add astrometry file for raw and chip images if one is available
@@ -289,10 +289,20 @@
         }
 
+        $args .= " -file $imagefile";
+
         if (($row->{OPTION_MASK} & $PSTAMP_SELECT_MASK) &&  $image->{mask} ) {
             $args .= " -mask $image->{mask}";
         }
         if (($row->{OPTION_MASK} & $PSTAMP_SELECT_WEIGHT) and $image->{weight} ) {
-            $args .= " -weight $image->{weight}";
-        }
+            $args .= " -variance $image->{weight}";
+        }
+
+        my $output_base = "$out_dir/${rownum}_${job_num}";
+        my $argslist = "${output_base}.args";
+
+        # copy the argument list to a file
+        open ARGSLIST, ">$argslist" or die "failed to open $argslist";
+        print ARGSLIST "$args\n";
+        close ARGSLIST or die "failed to close $argslist";
 
         # XXX: TODO: here is where we need to check whether or not the source inputs still exist
@@ -302,7 +312,6 @@
 
         $num_jobs++;
-        my $command = "$pstamptool -addjob -req_id $req_id -job_type $row->{JOB_TYPE}"
-            . " -uri $uri -outputBase $output_base -args '$args' -rownum $rownum"
-            . " -state $newState";
+        my $command = "$pstamptool -addjob  -req_id $req_id -job_type $row->{JOB_TYPE}"
+                        . " -outputBase $output_base -rownum $rownum -state $newState";
         $command .= " -exp_id $exp_id" if $exp_id;
         $command .= " -dbname $dbname" if $dbname;
@@ -313,5 +322,5 @@
             # this is sort of like the mode -noupdate that some other tools support
             print "$command\n";
-        } else {
+        } elsif (!$no_update) {
             # mode eq "queue_job"
             my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
@@ -324,4 +333,6 @@
                 die "failed to queue job for request $req_id";
             }
+        } else {
+            print "skipping command: $command\n";
         }
     }
@@ -329,14 +340,14 @@
 }
 
-sub makeJobs
+sub queueJobs
 {
     my $mode = shift;
-    my $stage = shift;
-    my $need_magic = shift;
     my $rowList = shift;
     my $imageList = shift;
 
     my $firstRow = $rowList[0];
+    my $stage    = $firstRow->{IMG_TYPE};
     my $job_type = $firstRow->{JOB_TYPE};
+    my $need_magic = $firstRow->{need_magic};
 
     my $num_jobs = 0;
@@ -381,5 +392,6 @@
                     my $astrom = $thisRun->[0]->{astrom};
                     die "no astrometry file found" if !$astrom;
-                    $command .= " -astrom $astrom";
+                    my $astrom_resolved = $ipprc->file_resolve($astrom);
+                    $command .= " -astrom $astrom_resolved";
                 }
                 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
@@ -404,9 +416,6 @@
             }
             
-
-                # XXX TODO: for raw and chip level images and class_id "null" if there are multiple images
-                # use -list instead of -file
             foreach my $row (@$rowList) {
-                $num_jobs += makeJobsForRow($row, $thisRun, $have_skycells, $need_magic);
+                $num_jobs += queueJobsForRow($row, $stage, $thisRun, $have_skycells, $need_magic);
             }
         }
@@ -451,4 +460,5 @@
 
         my $image = shift @$imageList;
+        $image->{stage} = $stage;
         push @runList, $image;
         $last_run_id = $run_id;
@@ -461,22 +471,33 @@
     my $r2 = shift;
 
-    return 0 if ($r1->{project} ne $r2->{project});
-    return 0 if ($r1->{job_type} ne $r2->{job_type});
-    return 0 if ($r1->{req_type} ne $r2->{req_type});
-    return 0 if ($r1->{img_type} ne $r2->{img_type});
-    return 0 if ($r1->{id} ne $r2->{id});
-#    XXX: turn this on when we change the request file format to change class_id into component
-#    return false if ($r1->{component} ne $r2->{component});
+    return 0 if ($r1->{PROJECT}  ne $r2->{PROJECT});
+    return 0 if ($r1->{JOB_TYPE} ne $r2->{JOB_TYPE});
+    return 0 if ($r1->{REQ_TYPE} ne $r2->{REQ_TYPE});
+    return 0 if ($r1->{IMG_TYPE} ne $r2->{IMG_TYPE});
+    return 0 if ($r1->{ID} ne $r2->{ID});
+
+    if (defined($r1->{COMPONENT})) {
+        return 0 if !defined $r2->{COMPONENT} or ($r1->{COMPONENT} ne $r2->{COMPONENT});
+    } elsif (defined($r2->{COMPONENT})) {
+        return 0;
+    }
 
     return 1;
 }
 
+sub validNumber
+{
+    my $val = shift;
+
+    return $val =~ /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/;
+}
+
 sub validROI
 {
     my $row = shift;
-    return 0 if !defined $row->{CENTER_X};
-    return 0 if !defined $row->{CENTER_Y};
-    return 0 if !defined $row->{WIDTH};
-    return 0 if !defined $row->{HEIGHT};
+    return 0 if !validNumber($row->{CENTER_X});
+    return 0 if !validNumber($row->{CENTER_Y});
+    return 0 if !validNumber($row->{WIDTH});
+    return 0 if !validNumber($row->{HEIGHT});
 
     return 1;
Index: /branches/czw_branch/cleanup/pstamp/src/ppstampArguments.c
===================================================================
--- /branches/czw_branch/cleanup/pstamp/src/ppstampArguments.c	(revision 25050)
+++ /branches/czw_branch/cleanup/pstamp/src/ppstampArguments.c	(revision 25051)
@@ -22,7 +22,7 @@
     fprintf(stderr, "Optional arguments:\n");
     fprintf(stderr, "   [-class_id class_id]     selects class_id (only used with -pixcenter)\n");
-    fprintf(stderr, "   [-astrom astrom.cmp] : provide an alternative astrometry calibration\n");
-    fprintf(stderr, "   [-mask   mk_image] :   mask image\n");
-    fprintf(stderr, "   [-weight wt_image] :   weight image\n");
+    fprintf(stderr, "   [-astrom astrom.cmp] :   provide an alternative astrometry calibration\n");
+    fprintf(stderr, "   [-mask   mk_image] :     mask image\n");
+    fprintf(stderr, "   [-variance var_image] :  variance image\n");
     fprintf(stderr, "\n");
 
@@ -81,5 +81,5 @@
     pmConfigFileSetsMD(config->arguments, &argc, argv, "ASTROM", "-astrom", "-astromlist");
     pmConfigFileSetsMD(config->arguments, &argc, argv, "MASK",   "-mask", "-masklist");
-    pmConfigFileSetsMD(config->arguments, &argc, argv, "WEIGHT", "-weight", "-weightlist");
+    pmConfigFileSetsMD(config->arguments, &argc, argv, "VARIANCE", "-variance", "-variancelist");
 
     // the input file is a required argument; if not found, we will exit
Index: /branches/czw_branch/cleanup/pstamp/src/ppstampParseCamera.c
===================================================================
--- /branches/czw_branch/cleanup/pstamp/src/ppstampParseCamera.c	(revision 25050)
+++ /branches/czw_branch/cleanup/pstamp/src/ppstampParseCamera.c	(revision 25051)
@@ -18,5 +18,5 @@
     }
     if (doWeight) {
-        pmFPAfile *outWeight = pmFPAfileDefineSkycell(config, output->fpa, "PPSTAMP.OUTPUT.WEIGHT");
+        pmFPAfile *outWeight = pmFPAfileDefineSkycell(config, output->fpa, "PPSTAMP.OUTPUT.VARIANCE");
         outWeight->save = true;
     }
@@ -54,7 +54,7 @@
     }
     bool doWeight = false;
-    pmFPAfile *weight = pmFPAfileBindFromArgs (&status, input, config, "PPSTAMP.INPUT.WEIGHT", "WEIGHT");
+    pmFPAfile *weight = pmFPAfileBindFromArgs (&status, input, config, "PPSTAMP.INPUT.VARIANCE", "VARIANCE");
     if (!status) {
-        psError(PS_ERR_IO, false, "Failed to build FPA from PPSTAMP.INPUT.WEIGHT");
+        psError(PS_ERR_IO, false, "Failed to build FPA from PPSTAMP.INPUT.VARIANCE");
         return false;
     }
Index: /branches/czw_branch/cleanup/pstamp/test/pstamp_req_create
===================================================================
--- /branches/czw_branch/cleanup/pstamp/test/pstamp_req_create	(revision 25050)
+++ /branches/czw_branch/cleanup/pstamp/test/pstamp_req_create	(revision 25051)
@@ -26,6 +26,6 @@
 
 pod2usage( -msg => "Unknown option: @ARGV", -exitval => 2 ) if @ARGV;
-pod2usage( -msg => "Required options: --input --output",
-           -exitval => 3) unless defined $input and defined $output;
+pod2usage( -msg => "Required options: --input --output | --req_name",
+           -exitval => 3) unless defined $input and (defined $output or defined $req_name);
 
 # The header kewords
@@ -55,5 +55,6 @@
         { name => 'IMG_TYPE',   type => '16A', writetype => TSTRING },
         { name => 'ID',         type => '16A', writetype => TSTRING },           
-        { name => 'CLASS_ID',   type => '16A', writetype => TSTRING },
+        { name => 'TESS_ID',    type => '64A', writetype => TSTRING },
+        { name => 'COMPONENT',  type => '64A', writetype => TSTRING },
 
 
@@ -95,5 +96,11 @@
 if ($req_name) {
     $header->[0]->{value} = $req_name;
-}
+} else {
+    $req_name = $header->[0]->{value};
+}
+
+die "no request name defined" unless defined $req_name;
+
+$output = $req_name . ".fits" if !$output;
 
 my $status = make_fits_table($output, EXTNAME, $numRows, \@colData, $columns, $header);
Index: /branches/czw_branch/cleanup/pswarp/src/pswarpLoop.c
===================================================================
--- /branches/czw_branch/cleanup/pswarp/src/pswarpLoop.c	(revision 25050)
+++ /branches/czw_branch/cleanup/pswarp/src/pswarpLoop.c	(revision 25051)
@@ -315,20 +315,4 @@
 
 
-    // Set variance factor
-    {
-        bool mdok;                      // Status of MD lookup
-        float varFactor = psMetadataLookupF32(&mdok, output->analysis, PSWARP_ANALYSIS_VARFACTOR);
-        long goodPix = psMetadataLookupS64(&mdok, output->analysis, PSWARP_ANALYSIS_GOODPIX);
-        varFactor /= goodPix;
-
-        psMetadataItem *vfItem = psMetadataLookup(outCell->concepts, "CELL.VARFACTOR"); ///< Item to update
-        psAssert(vfItem && vfItem->type == PS_TYPE_F32, "Concept should be as specified.");
-        if (!isfinite(vfItem->data.F32)) {
-            vfItem->data.F32 = varFactor;
-        } else {
-            vfItem->data.F32 *= varFactor;
-        }
-    }
-
     // Set covariance matrix for output
     {
@@ -406,11 +390,4 @@
         pmFPAview *view = pmFPAviewAlloc(0); ///< View into skycell
         view->chip = view->cell = view->readout = 0;
-
-        // Need to adjust the weight --- the main operation in psphotReadoutFindPSF is not determining the
-        // signficance of sources, but looking at the significance of individual pixels.
-        // We can adjust the weight directly since this is a deep copy
-        pmReadout *photRO = pmFPAviewThisReadout(view, photFile->fpa);
-        float vf = psMetadataLookupF32(NULL, photRO->parent->concepts, "CELL.VARFACTOR"); // Variance factor
-        psBinaryOp(photRO->variance, photRO->variance, "*", psScalarAlloc(vf, PS_TYPE_F32));
 
         // grab the sources of interest from the storage location (pmFPAfile PSPHOT.INPUT.CMF)
Index: /branches/czw_branch/cleanup/pswarp/src/pswarpTransformReadout.c
===================================================================
--- /branches/czw_branch/cleanup/pswarp/src/pswarpTransformReadout.c	(revision 25050)
+++ /branches/czw_branch/cleanup/pswarp/src/pswarpTransformReadout.c	(revision 25051)
@@ -178,27 +178,4 @@
         psTrace("pswarp.transform", 1, "No overlap\n");
     }
-
-    // Store the variance factor and number of good pixels
-    if (goodPixels > 0) {
-        // Variance factor: large factor --> small scale
-        float varFactor = psImageInterpolateVarianceFactor(input->image->numCols / 2.0 + input->image->col0,
-                                                           input->image->numRows / 2.0 + input->image->row0,
-                                                           interp->mode);
-        psMetadataItem *vfItem = psMetadataLookup(output->analysis, PSWARP_ANALYSIS_VARFACTOR);
-        if (vfItem) {
-            psMetadataItem *goodpixItem = psMetadataLookup(output->analysis, PSWARP_ANALYSIS_GOODPIX);
-            psAssert(goodpixItem, "It should be where we left it!");
-            psAssert(vfItem->type == PS_TYPE_F32 && goodpixItem->type == PS_TYPE_S64,
-                     "Should be the type we said.");
-
-            vfItem->data.F32 += varFactor * goodPixels;
-            goodpixItem->data.S64 += goodPixels;
-        } else {
-            psMetadataAddF32(output->analysis, PS_LIST_TAIL, PSWARP_ANALYSIS_VARFACTOR, 0,
-                             "Variance factor weighted by the good pixels", varFactor * goodPixels);
-            psMetadataAddS64(output->analysis, PS_LIST_TAIL, PSWARP_ANALYSIS_GOODPIX, 0,
-                             "Number of good pixels", goodPixels);
-        }
-    }
     psFree(interp);
 
