Call get_version.sh early, add option, env for public urls.
authorPeter D. Barnes, Jr. <barnes26@llnl.gov>
Wed, 08 Aug 2012 12:52:30 -0700
changeset 8963 97f93bf462bd
parent 8962 b5b0643fc3be
child 8964 3a0af8a1c005
Call get_version.sh early, add option, env for public urls.
doc/ns3_html_theme/get_version.sh
wscript
--- a/doc/ns3_html_theme/get_version.sh	Wed Aug 08 12:41:56 2012 -0700
+++ b/doc/ns3_html_theme/get_version.sh	Wed Aug 08 12:52:30 2012 -0700
@@ -1,13 +1,13 @@
 #!/bin/bash
 
 # Get the current repo name and version
-# and format appropriately as a Javascript
-# variable for inclusion in html files.
+# to format urls appropriately via Javascript
+# variables for inclusion in html files.
 
 # Use cases:
 # 1.  Hosted on nsnam.org, tagged release.
 # 2.  Hosted on nsnam.org, ns-3-dev.
-# 3.  User repo, at modified from a tagged release (or ns-3-dev).
+# 3.  User repo, modified from a tagged release (or ns-3-dev).
 # 4.  User repo, at a release tag.
 # 5.  User repo, at a private tag.
 # 6.  Private web host, at a tag (or ns-3-dev, or local mod).
@@ -16,14 +16,20 @@
 # publicly hosted pages.  For all other cases, we want to point
 # to the built pages in the repo itself.
 #
+# For robustness, we attempt to identify cases 1 & 2
+# automatically.  (There is also an explicit switch '-p'
+# to force us into the public case.)
+#
 # The approach to identify cases 1 & 2 is to test:
 # a.  We're on nsnam.org (actually, nsnam.ece.gatech.edu), and
 # b.  We're in the tmp build directory, /tmp/daily-nsnam/
 #     (This is the directory used by the update-* scripts
 #     run by cron jobs.)
 #
-# If both a and b are true, we're building for nsnam.org.
-#
+# If both a and b are true, we're building for public urls.
+# (The newer update-docs script (through waf) sets the
+# -p switch explicitly.)
+# 
 # The repo version is either a tag name or a commit (short) id.
 #
 # If we're building for nsnam.org, and at a tag, we use just
@@ -35,10 +41,10 @@
 # directory name as the repo name.  (This will typically be
 # a name meaningful to the user doing the build, perhaps a
 # shorthand for the feature they are working on.)  For
-# example, this script was developed in a repo (mis)named
-# 'doxygen'.  We always use the repo version, resulting
-# in document version strings like 'doxygen @ ns-3.15' or
-# 'doxygen @ fd0f27a10eff'
+# example, this script was developed in a repo named
+# 'docs'.  We always use the repo version, resulting
+# in document version strings like 'docs @ ns-3.15' or
+# 'docs @ fd0f27a10eff'
 #
 
 me=`basename $0`
@@ -50,9 +56,11 @@
 function usage
 {
     cat <<-EOF
-	Usage:  $me                   normal versioning
+	Usage:  $me [-p]              normal versioning
 	        $me [-n] [-d] [-t]    test options
-	
+	  -p  build public urls, NS3_WWW_URLS=public is an alternative
+
+	Testing options:
 	  -n  pretend we are on nsnam.org
 	  -d  pretend we are in the automated build directory
 	  -t  pretend we are at a repo tag
@@ -63,19 +71,23 @@
 
 # script arguments
 say
+public=0
 nsnam=0
 daily=0
 tag=0
 
-while getopts ndth option ; do
+while getopts :pndth option ; do
     case $option in
-	(n)  nsnam=1 ;;
+	(p)  public=1 ;;
+	(n)  nsnam=1  ;;
 
-	(d)  daily=1 ;;
+	(d)  daily=1  ;;
+
+	(t)  tag=1    ;;
 
-	(t)  tag=1   ;;
-
-	(h | \? ) usage   ;;
+	(h)  usage ;;
+	(:)  say "Missing argument to -$OPTARG" ; usage ;;
+	(\?) say "Invalid option: -$OPTARG"     ; usage ;;
     esac
 done
 
@@ -106,7 +118,9 @@
     say
 fi
 
-if [[ ( $HOST == $NSNAM ) && ( $PWD =~ $DAILY ) ]] ; then
+if [[ ($public == 1) || \
+    ("${NS3_WWW_URLS:-}" == "public") || \
+    ( ($HOST == $NSNAM) && ($PWD =~ $DAILY) ) ]] ; then
     PUBLIC=1
     say "building public docs for nsnam.org"
 else
@@ -183,5 +197,3 @@
 say
 say "outf = $outf:"
 cat -n $outf
-
-
--- a/wscript	Wed Aug 08 12:41:56 2012 -0700
+++ b/wscript	Wed Aug 08 12:52:30 2012 -0700
@@ -1072,10 +1072,10 @@
         raise SystemExit(1)
     text_out.close()
 
+    _getVersion()
     doxygen_config = os.path.join('doc', 'doxygen.conf')
     if subprocess.Popen([env['DOXYGEN'], doxygen_config]).wait():
         raise SystemExit(1)
-    _getVersion()
 
 
 from waflib import Context, Build
@@ -1083,8 +1083,11 @@
 def _getVersion():
     """update the ns3_version.js file, when building documentation"""
 
-    if subprocess.Popen(["doc/ns3_html_theme/get_version.sh"]).wait() :
+    prog = "doc/ns3_html_theme/get_version.sh"
+    if subprocess.Popen([prog]).wait() :
+        print "ERROR: " + prog
         raise SystemExit(1)
+    print "SUCCESS: " + prog
 
 class Ns3DoxygenContext(Context.Context):
     """do a full build, generate the introspected doxygen and then the doxygen"""
@@ -1112,9 +1115,9 @@
             raise SystemExit(1)
 
     def execute(self):
+        _getVersion()
         for sphinxdir in ["manual", "models", "tutorial", "tutorial-pt-br"] :
             self.sphinx_build(os.path.join("doc", sphinxdir))
-        _getVersion()
      
 
 from waflib import Context, Build