aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cdbs.sm2
-rw-r--r--dev.sm38
-rwxr-xr-xgo2
-rw-r--r--init.sm3
-rw-r--r--pyetc.sm20
-rw-r--r--scripts/steuermann_report.cgi2
-rw-r--r--sm/A_astrolib.sm5
-rw-r--r--sm/A_cdbs.sm2
-rw-r--r--sm/A_dev.sm3
-rw-r--r--sm/A_pyetc.sm1
-rw-r--r--sm/A_x.sm11
-rw-r--r--sm/A_xb.sm2
-rw-r--r--sm/B_dev.sm5
-rw-r--r--sm/B_x.sm5
-rw-r--r--sm/assemble_astrolib.sm6
-rw-r--r--sm/assemble_common.sm10
-rw-r--r--sm/assemble_dev.sm19
-rw-r--r--sm/assemble_x.sm22
-rw-r--r--sm/build_astrolib.sm5
-rw-r--r--sm/build_dev.sm75
-rw-r--r--sm/build_x.sm80
-rw-r--r--sm/cdbs.sm13
-rw-r--r--sm/dist_dev.sm106
-rw-r--r--sm/dist_x.sm111
-rw-r--r--sm/init.sm5
-rw-r--r--sm/pyetc.sm20
-rw-r--r--sm/test_common.sm16
-rw-r--r--sm/test_dev.sm23
-rw-r--r--sm/test_import.sm12
-rw-r--r--sm/test_x.sm22
-rw-r--r--steuermann/hosts.ini7
-rw-r--r--steuermann/nodes.py36
-rw-r--r--steuermann/run.py26
-rw-r--r--steuermann/run_all.py15
-rw-r--r--steuermann/run_cron.py38
-rw-r--r--steuermann/specfile.exy2
-rw-r--r--x_build.sm6
-rw-r--r--x_dist.sm5
38 files changed, 717 insertions, 64 deletions
diff --git a/cdbs.sm b/cdbs.sm
index dfa9b0f..178ae0b 100644
--- a/cdbs.sm
+++ b/cdbs.sm
@@ -1,4 +1,4 @@
-TABLE cdbs HOST bond cadeau
+TABLE cdbs HOST bond cadeau banana
CMD local_copy RUN "cdbs_copy"
AFTER init/*
diff --git a/dev.sm b/dev.sm
index 0c640a3..b203010 100644
--- a/dev.sm
+++ b/dev.sm
@@ -1,32 +1,10 @@
## TODO:
## add builds on ssbwebv1 for those things that we actually care about
-####################
-####################
-
-# arzach assembles all the source code
-TABLE assemble HOST arzach
-
- CMD svnsync RUN "assemble_svnsync"
- AFTER init/*
- AFTER OPT irafx_update
-
- CMD dev.stsci_python RUN "assemble_stsci_python dev"
- AFTER init/*
- AFTER svnsync
-
- CMD dev.stsci_iraf RUN "assemble_stsci_iraf dev"
- AFTER init/*
- AFTER svnsync
-
- CMD dev.axe RUN "assemble_axe dev"
- AFTER init/*
- AFTER svnsync
-
- CMD dev.hstcal RUN "assemble_hstcal dev"
- AFTER init/*
- AFTER svnsync
+TABLE build HOST arzach
+ CMD dev.astrolib RUN "build_astrolib"
+ AFTER arzach:assemble/dev.astrolib
####################
####################
@@ -34,7 +12,7 @@ TABLE assemble HOST arzach
# install stsci_python into default environment
# build hstcal
# - everywhere
-TABLE build HOST herbert thor arzach bond cadeau
+TABLE build HOST herbert thor arzach bond cadeau banana
CMD dev.py2.7 RUN "build_stsci_python dev 2.7"
AFTER init/*
AFTER *:assemble/dev.stsci_python
@@ -79,7 +57,7 @@ TABLE build HOST thor arzach
CMD dev.stsci_iraf_64hack RUN "build_stsci_iraf_64hack dev herbert"
AFTER herbert:build/dev.stsci_iraf*
-TABLE build HOST cadeau
+TABLE build HOST cadeau banana
CMD dev.stsci_iraf_64hack RUN "build_stsci_iraf_64hack dev bond"
AFTER bond:build/dev.stsci_iraf*
@@ -96,7 +74,7 @@ TABLE build HOST thor
AFTER build/dev.py2.7
# stamp the IRAF banner file when the builds are complete
-TABLE stamp HOST herbert thor arzach bond cadeau
+TABLE stamp HOST herbert thor arzach bond cadeau banana
CMD dev RUN "build_stamp dev"
AFTER build/*
@@ -117,7 +95,7 @@ TABLE distribute HOST herbert thor arzach
CMD dev.motd RUN "synctool - irafdev/iraf/unix/hlib/motd"
AFTER distribute/dev.iraf
-TABLE distribute HOST bond cadeau
+TABLE distribute HOST bond cadeau banana
CMD irafdev.pkg RUN "cd $HOME/daily_build/mac_package; ./clean ; ./build dev " AFTER stamp/dev
CMD irafdev.dmg RUN "cd $HOME/daily_build/mac_package; ./distribute dev -" AFTER irafdev.pkg
@@ -211,7 +189,7 @@ TABLE distribute_other HOST thor
# This structure is meant to serialize the regtests so that nothing else
# is going on at the same time. The regtests can consume all the CPUs.
-TABLE regtest HOST herbert thor arzach bond cadeau
+TABLE regtest HOST herbert thor arzach bond cadeau banana
CMD okify RUN "test_okify"
AFTER distribute/*
CMD dev.test2.7 RUN "test_rt dev 2.7"
diff --git a/go b/go
index 7a9f5b5..c76b1de 100755
--- a/go
+++ b/go
@@ -1,6 +1,6 @@
#!/bin/sh
-n=3
+n=4
rm -rf build
diff --git a/init.sm b/init.sm
index 0646603..b19731f 100644
--- a/init.sm
+++ b/init.sm
@@ -1,6 +1,5 @@
-TABLE init HOST bond cadeau arzach thor herbert ssb aten grail jwcalibdev
+TABLE init HOST banana bond cadeau arzach thor herbert ssb aten jwcalibdev etcbrady
CMD sendscripts LOCAL "/eng/ssb/auto/steuermann_scripts/init_sendscripts %(hostname)s %(workdir)s"
CMD sysstat RUN "sysstat"
AFTER sendscripts
-
diff --git a/pyetc.sm b/pyetc.sm
new file mode 100644
index 0000000..d1b4419
--- /dev/null
+++ b/pyetc.sm
@@ -0,0 +1,20 @@
+####################
+####################
+
+TABLE pyetc HOST etcbrady
+
+ CMD trunk RUN "/data1/nightly/trunk/test-ppsetc -d trunk "
+ AFTER init/*
+
+ CMD refactored RUN "/data1/nightly/refactored/test-ppsetc -d refactored "
+ AFTER trunk
+ AFTER init/*
+
+ CMD jwst RUN "/data1/nightly/jwpetc_dev/test-ppsetc -d"
+ AFTER refactored
+ AFTER init/*
+
+ CMD rt RUN "/data1/nightly/rt/rt.csh 7"
+ AFTER jwst
+ AFTER init/*
+
diff --git a/scripts/steuermann_report.cgi b/scripts/steuermann_report.cgi
index 2c07c70..adb7f0b 100644
--- a/scripts/steuermann_report.cgi
+++ b/scripts/steuermann_report.cgi
@@ -19,7 +19,7 @@ cgitb.enable()
form = cgi.FieldStorage(keep_blank_values=1)
cginame = os.getenv("SCRIPT_NAME")
-permission_modify=1
+permission_modify=0
html_header='''Content-type: text/html
diff --git a/sm/A_astrolib.sm b/sm/A_astrolib.sm
new file mode 100644
index 0000000..9da7ffc
--- /dev/null
+++ b/sm/A_astrolib.sm
@@ -0,0 +1,5 @@
+IMPORT "init.sm"
+IMPORT "assemble_common.sm"
+IMPORT "assemble_astrolib.sm"
+IMPORT "build_astrolib.sm"
+
diff --git a/sm/A_cdbs.sm b/sm/A_cdbs.sm
new file mode 100644
index 0000000..f7b3c11
--- /dev/null
+++ b/sm/A_cdbs.sm
@@ -0,0 +1,2 @@
+IMPORT "init.sm"
+IMPORT "cdbs.sm"
diff --git a/sm/A_dev.sm b/sm/A_dev.sm
new file mode 100644
index 0000000..8ada106
--- /dev/null
+++ b/sm/A_dev.sm
@@ -0,0 +1,3 @@
+IMPORT "B_dev.sm"
+IMPORT "test_dev.sm"
+
diff --git a/sm/A_pyetc.sm b/sm/A_pyetc.sm
new file mode 100644
index 0000000..20be13d
--- /dev/null
+++ b/sm/A_pyetc.sm
@@ -0,0 +1 @@
+IMPORT "pyetc.sm"
diff --git a/sm/A_x.sm b/sm/A_x.sm
new file mode 100644
index 0000000..217f77d
--- /dev/null
+++ b/sm/A_x.sm
@@ -0,0 +1,11 @@
+IMPORT "B_x.sm"
+IMPORT "test_x.sm"
+
+TABLE assemble HOST arzach
+ CMD irafx_update RUN "/eng/ssb/auto/prog/irafx_update "
+ AFTER init/*
+
+ CMD irafx_age RUN "/eng/ssb/auto/prog/irafx_age.py"
+ AFTER irafx_update
+ AFTER OPT svnsync
+
diff --git a/sm/A_xb.sm b/sm/A_xb.sm
new file mode 100644
index 0000000..d8c1c7f
--- /dev/null
+++ b/sm/A_xb.sm
@@ -0,0 +1,2 @@
+IMPORT "B_x.sm"
+IMPORT "test_x.sm"
diff --git a/sm/B_dev.sm b/sm/B_dev.sm
new file mode 100644
index 0000000..8464322
--- /dev/null
+++ b/sm/B_dev.sm
@@ -0,0 +1,5 @@
+IMPORT "init.sm"
+IMPORT "assemble_common.sm"
+IMPORT "assemble_dev.sm"
+IMPORT "build_dev.sm"
+IMPORT "dist_dev.sm"
diff --git a/sm/B_x.sm b/sm/B_x.sm
new file mode 100644
index 0000000..a0183a7
--- /dev/null
+++ b/sm/B_x.sm
@@ -0,0 +1,5 @@
+IMPORT "init.sm"
+IMPORT "assemble_common.sm"
+IMPORT "assemble_x.sm"
+IMPORT "build_x.sm"
+IMPORT "dist_x.sm"
diff --git a/sm/assemble_astrolib.sm b/sm/assemble_astrolib.sm
new file mode 100644
index 0000000..16a1494
--- /dev/null
+++ b/sm/assemble_astrolib.sm
@@ -0,0 +1,6 @@
+TABLE assemble HOST arzach
+
+ CMD dev.astrolib RUN "assemble_astrolib"
+ AFTER init/*
+ AFTER svnsync
+
diff --git a/sm/assemble_common.sm b/sm/assemble_common.sm
new file mode 100644
index 0000000..03f36db
--- /dev/null
+++ b/sm/assemble_common.sm
@@ -0,0 +1,10 @@
+####################
+####################
+
+# arzach assembles all the source code
+TABLE assemble HOST arzach
+
+ CMD svnsync RUN "assemble_svnsync"
+ AFTER init/*
+ AFTER OPT irafx_update
+
diff --git a/sm/assemble_dev.sm b/sm/assemble_dev.sm
new file mode 100644
index 0000000..21af101
--- /dev/null
+++ b/sm/assemble_dev.sm
@@ -0,0 +1,19 @@
+# arzach assembles all the source code
+TABLE assemble HOST arzach
+
+ CMD dev.stsci_python RUN "assemble_stsci_python dev"
+ AFTER init/*
+ AFTER svnsync
+
+ CMD dev.stsci_iraf RUN "assemble_stsci_iraf dev"
+ AFTER init/*
+ AFTER svnsync
+
+ CMD dev.axe RUN "assemble_axe dev"
+ AFTER init/*
+ AFTER svnsync
+
+ CMD dev.hstcal RUN "assemble_hstcal dev"
+ AFTER init/*
+ AFTER svnsync
+
diff --git a/sm/assemble_x.sm b/sm/assemble_x.sm
new file mode 100644
index 0000000..68089c7
--- /dev/null
+++ b/sm/assemble_x.sm
@@ -0,0 +1,22 @@
+# arzach assembles all the source code
+TABLE assemble HOST arzach
+
+ CMD x.stsci_python RUN "assemble_stsci_python x"
+ AFTER init/*
+ AFTER svnsync
+
+ CMD x.stsci_iraf RUN "assemble_stsci_iraf x"
+ AFTER init/*
+ AFTER svnsync
+
+ CMD x.axe RUN "assemble_axe x"
+ AFTER init/*
+ AFTER svnsync
+
+ CMD x.hstcal RUN "assemble_hstcal x"
+ AFTER init/*
+ AFTER svnsync
+
+ CMD x.irafx_age RUN "irafx_age.py"
+ AFTER init/*
+
diff --git a/sm/build_astrolib.sm b/sm/build_astrolib.sm
new file mode 100644
index 0000000..fdeb5de
--- /dev/null
+++ b/sm/build_astrolib.sm
@@ -0,0 +1,5 @@
+
+TABLE build HOST arzach
+ CMD dev.astrolib RUN "build_astrolib"
+ AFTER arzach:assemble/dev.astrolib
+
diff --git a/sm/build_dev.sm b/sm/build_dev.sm
new file mode 100644
index 0000000..7011d5a
--- /dev/null
+++ b/sm/build_dev.sm
@@ -0,0 +1,75 @@
+## TODO:
+## add builds on ssbwebv1 for those things that we actually care about
+
+####################
+####################
+
+# install stsci_python into default environment
+# build hstcal
+# - everywhere
+TABLE build HOST herbert thor arzach bond cadeau banana
+ CMD dev.py2.7 RUN "build_stsci_python dev 2.7"
+ AFTER init/*
+ AFTER *:assemble/dev.stsci_python
+ CMD dev.hstcal RUN "build_hstcal dev"
+ AFTER init/*
+ AFTER *:assemble/dev.hstcal
+
+# older python environments
+# - arzach only
+TABLE build HOST arzach
+ CMD dev.py2.6 RUN "build_stsci_python dev 2.6"
+ AFTER init/*
+ AFTER *:assemble/dev.stsci_python
+
+ CMD dev.py2.5 RUN "build_stsci_python dev 2.5"
+ AFTER init/*
+ AFTER *:assemble/dev.stsci_python
+
+# stsdas and friends
+# - 32 bit only
+TABLE build HOST herbert bond
+ CMD dev.axe RUN "build_axe dev"
+ AFTER init/*
+ AFTER *:assemble/dev.axe
+
+ CMD dev.stsci_iraf RUN "build_stsci_iraf dev"
+ AFTER init/*
+ AFTER *:assemble/dev.stsci_iraf
+ AFTER build/dev.axe
+
+ CMD dev.stsci_iraf_log RUN "build_stsci_iraf_log dev"
+ AFTER init/*
+ AFTER build/dev.stsci_iraf
+
+ CMD dev.stsci_iraf_help RUN "build_stsci_iraf_help dev"
+ AFTER init/*
+ AFTER build/dev.stsci_iraf
+
+
+# stsdas for 64 bit machines - get it from a related 32 bit system
+TABLE build HOST thor arzach
+ CMD dev.stsci_iraf_64hack RUN "build_stsci_iraf_64hack dev herbert"
+ AFTER herbert:build/dev.stsci_iraf*
+
+TABLE build HOST cadeau banana
+ CMD dev.stsci_iraf_64hack RUN "build_stsci_iraf_64hack dev bond"
+ AFTER bond:build/dev.stsci_iraf*
+
+# stsci_python documentation
+# - one machine only
+TABLE build HOST arzach
+ CMD dev.stsci_python_sphinxdocs RUN "build_sphinxdocs dev 2.7"
+ AFTER build/dev.py2.7
+
+# old epydoc documentation - only works on thor; hope we can get rid of
+# epydoc sooner than we have to do anything about this.
+TABLE build HOST thor
+ CMD dev.stsci_python_epydoc RUN "/thor/data2/iraf/epydoc_test/nightly"
+ AFTER build/dev.py2.7
+
+# stamp the IRAF banner file when the builds are complete
+TABLE stamp HOST herbert thor arzach bond cadeau banana
+ CMD dev RUN "build_stamp dev"
+ AFTER build/*
+
diff --git a/sm/build_x.sm b/sm/build_x.sm
new file mode 100644
index 0000000..43377f7
--- /dev/null
+++ b/sm/build_x.sm
@@ -0,0 +1,80 @@
+## TODO:
+## add builds on ssbwebv1 for those things that we actually care about
+
+####################
+####################
+
+# arzach assembles all the source code
+TABLE assemble HOST arzach
+
+ CMD svnsync RUN "assemble_svnsync"
+ AFTER init/*
+ AFTER OPT irafx_update
+
+ CMD x.stsci_python RUN "assemble_stsci_python x"
+ AFTER init/*
+ AFTER svnsync
+
+ CMD x.stsci_iraf RUN "assemble_stsci_iraf x"
+ AFTER init/*
+ AFTER svnsync
+
+ CMD x.axe RUN "assemble_axe x"
+ AFTER init/*
+ AFTER svnsync
+
+ CMD x.hstcal RUN "assemble_hstcal x"
+ AFTER init/*
+ AFTER svnsync
+
+
+####################
+####################
+
+# install stsci_python into default environment
+# build hstcal
+# - everywhere
+TABLE build HOST herbert thor arzach bond cadeau banana
+ CMD x.py2.7 RUN "build_stsci_python x 2.7"
+ AFTER init/*
+ AFTER *:assemble/x.stsci_python
+ CMD x.hstcal RUN "build_hstcal x"
+ AFTER init/*
+ AFTER *:assemble/x.hstcal
+
+# stsdas and friends
+# - 32 bit only
+TABLE build HOST herbert bond
+ CMD x.axe RUN "build_axe x"
+ AFTER init/*
+ AFTER *:assemble/x.axe
+
+ CMD x.stsci_iraf RUN "build_stsci_iraf x"
+ AFTER init/*
+ AFTER *:assemble/x.stsci_iraf
+ AFTER build/x.axe
+
+ CMD x.stsci_iraf_log RUN "build_stsci_iraf_log x"
+ AFTER init/*
+ AFTER build/x.stsci_iraf
+
+ CMD x.stsci_iraf_help RUN "build_stsci_iraf_help x"
+ AFTER init/*
+ AFTER build/x.stsci_iraf
+
+
+# stsdas for 64 bit machines - get it from a related 32 bit system
+TABLE build HOST thor arzach
+ CMD x.stsci_iraf_64hack RUN "build_stsci_iraf_64hack x herbert"
+ AFTER herbert:build/x.stsci_iraf*
+
+TABLE build HOST cadeau banana
+ CMD x.stsci_iraf_64hack RUN "build_stsci_iraf_64hack x bond"
+ AFTER bond:build/x.stsci_iraf*
+
+
+# stamp the IRAF banner file when the builds are complete
+TABLE stamp HOST herbert thor arzach bond cadeau banana
+ CMD x RUN "build_stamp x"
+ AFTER build/*
+
diff --git a/sm/cdbs.sm b/sm/cdbs.sm
new file mode 100644
index 0000000..178ae0b
--- /dev/null
+++ b/sm/cdbs.sm
@@ -0,0 +1,13 @@
+TABLE cdbs HOST bond cadeau banana
+ CMD local_copy RUN "cdbs_copy"
+ AFTER init/*
+
+TABLE cdbs HOST bond
+ CMD mac_package RUN "/Users/iraf/daily_build/mac_package/make_packages cdbs"
+ AFTER cdbs/local_copy
+
+TABLE cdbs HOST arzach
+ CMD ftp RUN "cdbs_arc"
+ AFTER init/*
+
+
diff --git a/sm/dist_dev.sm b/sm/dist_dev.sm
new file mode 100644
index 0000000..1fd933b
--- /dev/null
+++ b/sm/dist_dev.sm
@@ -0,0 +1,106 @@
+####################
+####################
+
+# regular distributions
+
+TABLE distribute HOST herbert thor arzach
+ CMD dev.iraf RUN "synctool - irafdev"
+ AFTER stamp/dev
+ CMD dev.pyssg RUN "synctool - pyssgdev"
+ AFTER stamp/dev
+ CMD dev.stsci_iraf RUN "synctool - stsci_iraf_dev"
+ AFTER stamp/dev
+ CMD dev.hstcal RUN "synctool - hstcaldev"
+ AFTER stamp/dev
+ CMD dev.motd RUN "synctool - irafdev/iraf/unix/hlib/motd"
+ AFTER distribute/dev.iraf
+
+TABLE distribute HOST bond cadeau banana
+ CMD irafdev.pkg RUN "cd $HOME/daily_build/mac_package; ./clean ; ./build dev " AFTER stamp/dev
+ CMD irafdev.dmg RUN "cd $HOME/daily_build/mac_package; ./distribute dev -" AFTER irafdev.pkg
+
+# wads of special cases
+
+# jwcalibdev has local disk - some day it may do its own builds
+TABLE distribute HOST arzach
+ CMD jwcalibdev.iraf RUN "synctool jwcalibdev: irafdev"
+ AFTER stamp/dev
+ CMD jwcalibdev.pyssg RUN "synctool jwcalibdev: pyssgdev"
+ AFTER stamp/dev
+ CMD jwcalibdev.stsci_iraf RUN "synctool jwcalibdev: stsci_iraf_dev"
+ AFTER stamp/dev
+ CMD jwcalibdev.hstcal RUN "synctool jwcalibdev: hstcaldev"
+ AFTER stamp/dev
+ CMD jwcalibdev.motd RUN "synctool jwcalibdev: irafdev/iraf/unix/hlib/motd"
+ AFTER jwcalibdev.iraf
+
+# goods - has RHE 5 only now
+
+TABLE distribute_other HOST arzach
+ CMD goods.iraf RUN "synctool goods12: irafdev"
+ AFTER stamp/dev
+ CMD goods.pyssg RUN "synctool goods12: pyssgdev"
+ AFTER stamp/dev
+ CMD goods.stsci_iraf RUN "synctool goods12: stsci_iraf_dev"
+ AFTER stamp/dev
+ CMD goods.hstcal RUN "synctool goods12: hstcaldev"
+ AFTER stamp/dev
+ CMD goods.motd RUN "synctool goods12: irafdev/iraf/unix/hlib/motd"
+ AFTER goods.iraf
+
+# witserv1 - who are these guys?
+
+TABLE distribute_other HOST arzach
+ CMD witserv1.iraf RUN "synctool witserv1: irafdev"
+ AFTER stamp/dev
+ CMD witserv1.pyssg RUN "synctool witserv1: pyssgdev"
+ AFTER stamp/dev
+ CMD witserv1.stsci_iraf RUN "synctool witserv1: stsci_iraf_dev"
+ AFTER stamp/dev
+ CMD witserv1.hstcal RUN "synctool witserv1: hstcaldev"
+ AFTER stamp/dev
+ CMD witserv1.motd RUN "synctool witserv1: irafdev/iraf/unix/hlib/motd"
+ AFTER witserv1.iraf
+
+# dmsinsvm - have a pipeline and irafx/irafdev on the same machine for INS
+
+TABLE distribute_other HOST arzach
+ CMD dmsinsvm.iraf RUN "synctool dmsinsvm: irafdev"
+ AFTER stamp/dev
+ CMD dmsinsvm.pyssg RUN "synctool dmsinsvm: pyssgdev"
+ AFTER stamp/dev
+ CMD dmsinsvm.stsci_iraf RUN "synctool dmsinsvm: stsci_iraf_dev"
+ AFTER stamp/dev
+ CMD dmsinsvm.hstcal RUN "synctool dmsinsvm: hstcaldev"
+ AFTER stamp/dev
+ CMD dmsinsvm.motd RUN "synctool dmsinsvm: irafdev/iraf/unix/hlib/motd"
+ AFTER dmsinsvm.iraf
+
+# UDF - another funded project with their own machines
+
+TABLE distribute_other HOST thor
+ CMD udf1.iraf RUN "synctool udf1: irafdev"
+ AFTER stamp/dev
+ CMD udf1.pyssg RUN "synctool udf1: pyssgdev"
+ AFTER stamp/dev
+ CMD udf1.stsci_iraf RUN "synctool udf1: stsci_iraf_dev"
+ AFTER stamp/dev
+ CMD udf1.hstcal RUN "synctool udf1: hstcaldev"
+ AFTER stamp/dev
+ CMD udf1.motd RUN "synctool udf1: irafdev/iraf/unix/hlib/motd"
+ AFTER udf1.iraf
+
+# royal - a beowulf cluster
+
+TABLE distribute_other HOST thor
+ CMD royal.iraf RUN "synctool royal: irafdev"
+ AFTER stamp/dev
+ CMD royal.pyssg RUN "synctool royal: pyssgdev"
+ AFTER stamp/dev
+ CMD royal.stsci_iraf RUN "synctool royal: stsci_iraf_dev"
+ AFTER stamp/dev
+ CMD royal.hstcal RUN "synctool royal: hstcaldev"
+ AFTER stamp/dev
+ CMD royal.motd RUN "synctool royal: irafdev/iraf/unix/hlib/motd"
+ AFTER royal.iraf
+
diff --git a/sm/dist_x.sm b/sm/dist_x.sm
new file mode 100644
index 0000000..c18755a
--- /dev/null
+++ b/sm/dist_x.sm
@@ -0,0 +1,111 @@
+
+# we can make everything after this
+
+TABLE x_distribute HOST herbert thor arzach bond cadeau banana
+ CMD gate RUN "exit 0"
+ AFTER init/*
+ AFTER stamp/*
+
+# regular distributions
+
+TABLE x_distribute HOST herbert thor arzach
+ CMD x.iraf RUN "synctool - irafx"
+ AFTER x_distribute/gate
+ CMD x.pyssg RUN "synctool - pyssgx"
+ AFTER x_distribute/gate
+ CMD x.stsci_iraf RUN "synctool - stsci_iraf_x"
+ AFTER x_distribute/gate
+ CMD x.hstcal RUN "synctool - hstcalx"
+ AFTER x_distribute/gate
+ CMD x.motd RUN "synctool - irafx/iraf/unix/hlib/motd"
+ AFTER x_distribute/x.iraf
+
+TABLE x_distribute HOST bond cadeau banana
+ CMD irafx.pkg RUN "cd $HOME/daily_build/mac_package; ./clean ; ./build x " AFTER x_distribute/gate
+ CMD irafx.dmg RUN "cd $HOME/daily_build/mac_package; ./distribute x -" AFTER irafx.pkg
+
+# wads of special cases
+
+# jwcalibdev has local disk - some day it may do its own builds
+TABLE x_distribute HOST arzach
+ CMD x.jwcalibdev.iraf RUN "synctool jwcalibdev: irafx"
+ AFTER x_distribute/gate
+ CMD x.jwcalibdev.pyssg RUN "synctool jwcalibdev: pyssgx"
+ AFTER x_distribute/gate
+ CMD x.jwcalibdev.stsci_iraf RUN "synctool jwcalibdev: stsci_iraf_x"
+ AFTER x_distribute/gate
+ CMD x.jwcalibdev.hstcal RUN "synctool jwcalibdev: hstcalx"
+ AFTER x_distribute/gate
+ CMD x.jwcalibdev.motd RUN "synctool jwcalibdev: irafx/iraf/unix/hlib/motd"
+ AFTER x.jwcalibdev.iraf
+
+# goods - has RHE 5 only now
+
+TABLE x_distribute_other HOST arzach
+ CMD goods.iraf RUN "synctool goods12: irafx"
+ AFTER x_distribute/gate
+ CMD goods.pyssg RUN "synctool goods12: pyssgx"
+ AFTER x_distribute/gate
+ CMD goods.stsci_iraf RUN "synctool goods12: stsci_iraf_x"
+ AFTER x_distribute/gate
+ CMD goods.hstcal RUN "synctool goods12: hstcalx"
+ AFTER x_distribute/gate
+ CMD goods.motd RUN "synctool goods12: irafx/iraf/unix/hlib/motd"
+ AFTER goods.iraf
+
+# witserv1 - who are these guys?
+
+TABLE x_distribute_other HOST arzach
+ CMD witserv1.iraf RUN "synctool witserv1: irafx"
+ AFTER x_distribute/gate
+ CMD witserv1.pyssg RUN "synctool witserv1: pyssgx"
+ AFTER x_distribute/gate
+ CMD witserv1.stsci_iraf RUN "synctool witserv1: stsci_iraf_x"
+ AFTER x_distribute/gate
+ CMD witserv1.hstcal RUN "synctool witserv1: hstcalx"
+ AFTER x_distribute/gate
+ CMD witserv1.motd RUN "synctool witserv1: irafx/iraf/unix/hlib/motd"
+ AFTER witserv1.iraf
+
+# dmsinsvm - have a pipeline and irafx/irafdev on the same machine for INS
+
+TABLE x_distribute_other HOST arzach
+ CMD dmsinsvm.iraf RUN "synctool dmsinsvm: irafx"
+ AFTER x_distribute/gate
+ CMD dmsinsvm.pyssg RUN "synctool dmsinsvm: pyssgx"
+ AFTER x_distribute/gate
+ CMD dmsinsvm.stsci_iraf RUN "synctool dmsinsvm: stsci_iraf_x"
+ AFTER x_distribute/gate
+ CMD dmsinsvm.hstcal RUN "synctool dmsinsvm: hstcalx"
+ AFTER x_distribute/gate
+ CMD dmsinsvm.motd RUN "synctool dmsinsvm: irafx/iraf/unix/hlib/motd"
+ AFTER dmsinsvm.iraf
+
+# UDF - another funded project with their own machines
+
+TABLE x_distribute_other HOST thor
+ CMD udf1.iraf RUN "synctool udf1: irafx"
+ AFTER x_distribute/gate
+ CMD udf1.pyssg RUN "synctool udf1: pyssgx"
+ AFTER x_distribute/gate
+ CMD udf1.stsci_iraf RUN "synctool udf1: stsci_iraf_x"
+ AFTER x_distribute/gate
+ CMD udf1.hstcal RUN "synctool udf1: hstcalx"
+ AFTER x_distribute/gate
+ CMD udf1.motd RUN "synctool udf1: irafx/iraf/unix/hlib/motd"
+ AFTER udf1.iraf
+
+# royal - a beowulf cluster
+
+TABLE x_distribute_other HOST thor
+ CMD royal.iraf RUN "synctool royal: irafx"
+ AFTER x_distribute/gate
+ CMD royal.pyssg RUN "synctool royal: pyssgx"
+ AFTER x_distribute/gate
+ CMD royal.stsci_iraf RUN "synctool royal: stsci_iraf_x"
+ AFTER x_distribute/gate
+ CMD royal.hstcal RUN "synctool royal: hstcalx"
+ AFTER x_distribute/gate
+ CMD royal.motd RUN "synctool royal: irafx/iraf/unix/hlib/motd"
+ AFTER royal.iraf
+
diff --git a/sm/init.sm b/sm/init.sm
new file mode 100644
index 0000000..b19731f
--- /dev/null
+++ b/sm/init.sm
@@ -0,0 +1,5 @@
+TABLE init HOST banana bond cadeau arzach thor herbert ssb aten jwcalibdev etcbrady
+ CMD sendscripts LOCAL "/eng/ssb/auto/steuermann_scripts/init_sendscripts %(hostname)s %(workdir)s"
+ CMD sysstat RUN "sysstat"
+ AFTER sendscripts
+
diff --git a/sm/pyetc.sm b/sm/pyetc.sm
new file mode 100644
index 0000000..d1b4419
--- /dev/null
+++ b/sm/pyetc.sm
@@ -0,0 +1,20 @@
+####################
+####################
+
+TABLE pyetc HOST etcbrady
+
+ CMD trunk RUN "/data1/nightly/trunk/test-ppsetc -d trunk "
+ AFTER init/*
+
+ CMD refactored RUN "/data1/nightly/refactored/test-ppsetc -d refactored "
+ AFTER trunk
+ AFTER init/*
+
+ CMD jwst RUN "/data1/nightly/jwpetc_dev/test-ppsetc -d"
+ AFTER refactored
+ AFTER init/*
+
+ CMD rt RUN "/data1/nightly/rt/rt.csh 7"
+ AFTER jwst
+ AFTER init/*
+
diff --git a/sm/test_common.sm b/sm/test_common.sm
new file mode 100644
index 0000000..50b04cf
--- /dev/null
+++ b/sm/test_common.sm
@@ -0,0 +1,16 @@
+TABLE test_setup HOST herbert thor arzach bond cadeau banana
+ CMD okify RUN "test_okify"
+ AFTER distribute/*
+
+# each of test_run_* says AFTER test_setup/*
+
+TABLE test_final HOST ssb
+ CMD import RUN "test_import daily"
+ AFTER *:test_run_*/*
+ CMD notify RUN "test_notify daily"
+ AFTER import
+ CMD sqlite_watch RUN "test_sqlite_watch"
+ AFTER import
+ CMD mysql_watch RUN "test_mysql_watch"
+ AFTER import
+
diff --git a/sm/test_dev.sm b/sm/test_dev.sm
new file mode 100644
index 0000000..7d2b7ea
--- /dev/null
+++ b/sm/test_dev.sm
@@ -0,0 +1,23 @@
+####################
+####################
+
+IMPORT "test_common.sm"
+
+
+# This structure is meant to serialize the regtests so that nothing else
+# is going on at the same time. The regtests can consume all the CPUs.
+TABLE test_run_dev HOST herbert thor arzach bond cadeau banana
+ CMD test2.7 RUN "test_rt dev 2.7"
+ AFTER test_setup/okify
+ AFTER test_setup/*
+
+TABLE test_run_dev HOST arzach
+ CMD test2.6 RUN "test_rt dev 2.6"
+ AFTER test2.7
+ CMD test2.5 RUN "test_rt dev 2.5"
+ AFTER test2.6
+
+TABLE test_run_dev HOST thor
+ CMD contact RUN "test_contact"
+ AFTER test2.7
+
diff --git a/sm/test_import.sm b/sm/test_import.sm
new file mode 100644
index 0000000..6238aba
--- /dev/null
+++ b/sm/test_import.sm
@@ -0,0 +1,12 @@
+####################
+####################
+
+TABLE test_finale HOST ssb
+ CMD dev.import RUN "test_import daily"
+ AFTER *:test_run_*/*
+ CMD dev.notify RUN "test_notify daily"
+ AFTER dev.import
+ CMD dev.sqlite_watch RUN "test_sqlite_watch"
+ AFTER dev.import
+ CMD dev.mysql_watch RUN "test_mysql_watch"
+ AFTER dev.import
diff --git a/sm/test_x.sm b/sm/test_x.sm
new file mode 100644
index 0000000..be22da3
--- /dev/null
+++ b/sm/test_x.sm
@@ -0,0 +1,22 @@
+####################
+####################
+IMPORT "test_common.sm"
+
+# This structure is meant to serialize the regtests so that nothing else
+# is going on at the same time. The regtests can consume all the CPUs.
+TABLE test_run_x HOST herbert thor arzach bond cadeau banana
+ CMD test2.7 RUN "test_rt x 2.7"
+ AFTER test_setup/okify
+ AFTER test_setup/*
+ AFTER OPT test_run_dev/*
+
+TABLE test_run_x HOST arzach
+ CMD test2.6 RUN "test_rt x 2.6"
+ AFTER test2.7
+ CMD test2.5 RUN "test_rt x 2.5"
+ AFTER test2.6
+
+TABLE test_run_x HOST thor
+ CMD contact RUN "test_contact"
+ AFTER test2.7
+
diff --git a/steuermann/hosts.ini b/steuermann/hosts.ini
index abc114c..d750134 100644
--- a/steuermann/hosts.ini
+++ b/steuermann/hosts.ini
@@ -86,6 +86,13 @@ like=linux:csh
workdir=/arzach/data1/iraf/steuermann
maxproc=4
+[etcbrady]
+hostname=etcbrady
+like=linux:csh
+workdir=/home/iraf/sm_work
+; because each thing wants all the processors
+maxproc=1
+
[localhost]
like=ssb
diff --git a/steuermann/nodes.py b/steuermann/nodes.py
index 476734a..3ad4639 100644
--- a/steuermann/nodes.py
+++ b/steuermann/nodes.py
@@ -11,6 +11,11 @@ import fnmatch
class command_tree(object):
+ # list of additional files to import after this one; this is just
+ # here so we have a place to put it. It is appended by the parser
+ # and consumed by read_file_list()
+ import_list = [ ]
+
# a dict that maps currently known node names to node objects
node_index = None
@@ -315,11 +320,34 @@ current_file_name = None
def read_file_list( file_list ) :
global current_file_name
di = command_tree( )
- for x in file_list :
- current_file_name = x
- sc = specfile.specfileScanner( open(x,'r').read() )
+ imported = { }
+ while len(file_list) > 0 :
+
+ print "START",file_list
+ # first name off the list
+ current_file_name = file_list[0]
+ file_list = file_list[1:]
+ print "LIST",file_list
+
+ # see if it imported already
+ if current_file_name in imported :
+ print "SKIP",current_file_name
+ continue
+ imported[current_file_name] = 1
+
+ print "READING ",current_file_name
+ # read/parse
+ sc = specfile.specfileScanner( open(current_file_name,'r').read() )
p = specfile.specfile( scanner=sc, data=di )
+
result = specfile.wrap_error_reporter( p, 'start' )
+
+ # if there were any import statements in the file, add those files to the list
+ file_list += di.import_list
+ di.import_list = [ ]
+
+ print "END",file_list
+
di.finish()
return di
@@ -328,5 +356,3 @@ if __name__=='__main__':
n = read_file_list( sys.argv[1:] )
print show_nodes(n.node_index)
-
-
diff --git a/steuermann/run.py b/steuermann/run.py
index 388b366..77db2f1 100644
--- a/steuermann/run.py
+++ b/steuermann/run.py
@@ -29,9 +29,14 @@ import os.path
import traceback
import sys
import errno
-
import ConfigParser
+def config_yes_no(d,which) :
+ if not which in d :
+ return False
+ s = d[which]
+ return s.strip()[0].lower() in ( 'y', 't', '1' )
+
debug=0
#####
@@ -73,8 +78,15 @@ class runner(object):
# start a process
def run( self, node, run_name, logfile_name, no_run = False ):
+ '''run a process
+ return is:
+ D - host disabled
+ M - not run max proc limit
+ R - running
+'''
try :
+
try :
args = self.get_host_info(node.host)
except Exception, e :
@@ -83,13 +95,16 @@ class runner(object):
print e
raise
+ if ( config_yes_no(args,'disable') ) :
+ return 'D'
+
hostname = args['hostname']
if 'maxproc' in args :
n = int(self.howmany.get(hostname,0))
if n >= int(args['maxproc']) :
# print "decline to run %s - %d other already running"%(node.name,n)
- return False
+ return 'M'
n = n + 1
self.howmany[hostname] = n
@@ -154,8 +169,9 @@ class runner(object):
logfile.flush()
# debug - just say the name of the node we would run
- if no_run :
- run = [ 'echo', 'no_run - node=', node.name ]
+
+ if ( no_run ) :
+ run = [ 'echo', 'disable run - node=', node.name ]
# start running the process
if debug :
@@ -174,7 +190,7 @@ class runner(object):
# remember the process is running
self.all_procs[node.name] = n
- return True
+ return 'R'
except Exception, e :
log_traceback()
diff --git a/steuermann/run_all.py b/steuermann/run_all.py
index 0c81fbf..b87ba7d 100644
--- a/steuermann/run_all.py
+++ b/steuermann/run_all.py
@@ -451,10 +451,21 @@ def run_step( runner, xnodes, run_name, db ) :
no_sleep = 1
keep_running = 1
else :
- if tmp :
- # returns true/false whether it actually ran it - it may not because of resource limits
+ if tmp == 'R' :
db.execute("UPDATE sm_status SET start_time = ?, status = 'R' WHERE ( run = ? AND host = ? AND tablename = ? AND cmd = ? )",
( str(datetime.datetime.now()), run_name, host, table, cmd ) )
+ elif tmp == 'D' :
+ # same as skip above
+ x.finished = 1
+ no_sleep = 1
+ keep_running = 1
+ db.execute("UPDATE sm_status SET start_time = ?, status = 'S' WHERE ( run = ? AND host = ? AND tablename = ? AND cmd = ? )",
+ ( str(datetime.datetime.now()), run_name, host, table, cmd ) )
+ elif tmp == 'M' :
+ # hit max proc - not run, but try again later
+ pass
+ else :
+ print "WARNING: runner.run() returned unknown code %s"%str(tmp)
db.commit()
diff --git a/steuermann/run_cron.py b/steuermann/run_cron.py
index 5779e1e..f2a01b3 100644
--- a/steuermann/run_cron.py
+++ b/steuermann/run_cron.py
@@ -58,18 +58,32 @@ def main() :
node.script_type = 'r' # remote
runner = steuermann.run.runner( nodes = { node.name : node } )
- runner.run( node=node, run_name='', logfile_name = steuermann.config.logdir + '/cron/' + logfile )
-
- n = 0.1
- while 1 :
- exited = runner.poll()
- if exited :
- break
- if n < 2.0 :
- n = n * 2.0
- time.sleep(n)
-
- status = exited[1]
+ logname = logfile_name = steuermann.config.logdir + '/cron/' + logfile
+ st = runner.run( node=node, run_name='', logfile_name = logname )
+
+ if st == 'D' :
+ fp = open(logname,"w")
+ fp.write('execution on host is disabled in hosts.ini\n')
+ fp.close()
+ status = 'S'
+
+ elif st == 'M' :
+ fp = open(logname,"w")
+ fp.write('host is at max proc limit - how did this happen?')
+ fp.close()
+ status = '?'
+
+ elif st == 'R' :
+ n = 0.1
+ while 1 :
+ exited = runner.poll()
+ if exited :
+ break
+ if n < 2.0 :
+ n = n * 2.0
+ time.sleep(n)
+
+ status = exited[1]
end_time = datetime.datetime.now()
td = end_time - start_time
diff --git a/steuermann/specfile.exy b/steuermann/specfile.exy
index 7cdf1f3..cb2aa36 100644
--- a/steuermann/specfile.exy
+++ b/steuermann/specfile.exy
@@ -24,6 +24,7 @@ parser specfile:
token string: '"[^"]*"'
token SLASH: "/"
token COLON: ":"
+ token IMPORT: "IMPORT"
rule start: table_list END {{ return table_list }}
@@ -38,6 +39,7 @@ parser specfile:
command_list
# command_list is a list of (command, pos) where command is the text from the file and pos is the location in the file
{{ self.data.add_command_list( table_name, hostlist, command_list ) }}
+ | IMPORT string {{ self.data.import_list.append( string[1:-1] ) }}
rule command_list:
# one or more commands, appended together into a list
diff --git a/x_build.sm b/x_build.sm
index d5702ac..43377f7 100644
--- a/x_build.sm
+++ b/x_build.sm
@@ -34,7 +34,7 @@ TABLE assemble HOST arzach
# install stsci_python into default environment
# build hstcal
# - everywhere
-TABLE build HOST herbert thor arzach bond cadeau
+TABLE build HOST herbert thor arzach bond cadeau banana
CMD x.py2.7 RUN "build_stsci_python x 2.7"
AFTER init/*
AFTER *:assemble/x.stsci_python
@@ -68,13 +68,13 @@ TABLE build HOST thor arzach
CMD x.stsci_iraf_64hack RUN "build_stsci_iraf_64hack x herbert"
AFTER herbert:build/x.stsci_iraf*
-TABLE build HOST cadeau
+TABLE build HOST cadeau banana
CMD x.stsci_iraf_64hack RUN "build_stsci_iraf_64hack x bond"
AFTER bond:build/x.stsci_iraf*
# stamp the IRAF banner file when the builds are complete
-TABLE stamp HOST herbert thor arzach bond cadeau
+TABLE stamp HOST herbert thor arzach bond cadeau banana
CMD x RUN "build_stamp x"
AFTER build/*
diff --git a/x_dist.sm b/x_dist.sm
index f58aacd..c18755a 100644
--- a/x_dist.sm
+++ b/x_dist.sm
@@ -1,9 +1,10 @@
# we can make everything after this
-TABLE x_distribute HOST herbert thor arzach bond cadeau
+TABLE x_distribute HOST herbert thor arzach bond cadeau banana
CMD gate RUN "exit 0"
AFTER init/*
+ AFTER stamp/*
# regular distributions
@@ -19,7 +20,7 @@ TABLE x_distribute HOST herbert thor arzach
CMD x.motd RUN "synctool - irafx/iraf/unix/hlib/motd"
AFTER x_distribute/x.iraf
-TABLE x_distribute HOST bond cadeau
+TABLE x_distribute HOST bond cadeau banana
CMD irafx.pkg RUN "cd $HOME/daily_build/mac_package; ./clean ; ./build x " AFTER x_distribute/gate
CMD irafx.dmg RUN "cd $HOME/daily_build/mac_package; ./distribute x -" AFTER irafx.pkg