Index: trunk/ippTasks/stack.pro
===================================================================
--- trunk/ippTasks/stack.pro	(revision 16300)
+++ trunk/ippTasks/stack.pro	(revision 16743)
@@ -115,31 +115,22 @@
     book setword stackSumSkyfile $pageName pantaskState RUN
     book getword stackSumSkyfile $pageName stack_id -var STACK_ID
-    book getword stackSumSkyfile $pageName workdir -var WORKDIR
+    book getword stackSumSkyfile $pageName workdir -var WORKDIR_TEMPLATE
     book getword stackSumSkyfile $pageName dbname -var DBNAME
 
-    # specify choice of remote host
-    # XXX need to choose based on stacks
-    if ($PARALLEL)
-      host anyhost
-    else
-      host local
-    end
+    ### XXX Instead of setting these by camera, need to set by skycell_id
+    set.host.for.camera $CAMERA $STACK_ID
+    set.workdir.by.camera $CAMERA $STACK_ID $WORKDIR_TEMPLATE $default_host WORKDIR
 
-    ## generate output log based on filerule
-    if ("$WORKDIR" == "NULL")
-      $outroot = `pwd`
-    else
-      $outroot = `ipp_datapath.pl $WORKDIR`
-    end
-    sprintf outroot "%s/stack.%s" $outroot $STACK_ID
-    sprintf logfile "%s/skycell.log" $outroot
+    sprintf outroot "%s/tess_%s/%s/%s.%s.stk.%s" $WORKDIR $TESS_ID $SKYCELL_ID $TESS_ID $SKYCELL_ID $STACK_ID
+
+    ## generate output log based on filerule (convert the URI to a PATH)
+    $logfile = `ipp_filename.pl --filerule LOG.EXP --camera $CAMERA --class_id $STACK_ID --basename $outroot`
+
     stdout $logfile
     stderr $logfile
-    exec mkdir -p $outroot
+    dirname $logfile -var outpath
+    mkdir $outpath
 
-    $run = stack_skycell.pl --stack_id $STACK_ID
-    if ("$WORKDIR" != "NULL")
-      $run = $run --workdir $WORKDIR
-    end
+    $run = stack_skycell.pl --stack_id $STACK_ID --outroot $outroot
     add_standard_args run
 
