[GRASS-SVN] r49265 - grass-addons/tools/addons

svn_grass at osgeo.org svn_grass at osgeo.org
Wed Nov 16 04:57:32 EST 2011


Author: martinl
Date: 2011-11-16 01:57:32 -0800 (Wed, 16 Nov 2011)
New Revision: 49265

Added:
   grass-addons/tools/addons/build-xml.py
   grass-addons/tools/addons/compile-xml.sh
Modified:
   grass-addons/tools/addons/compile.sh
Log:
addons: new tools for compiling addons, see http://trac.osgeo.org/grass/wiki/AddOnsManagement

Added: grass-addons/tools/addons/build-xml.py
===================================================================
--- grass-addons/tools/addons/build-xml.py	                        (rev 0)
+++ grass-addons/tools/addons/build-xml.py	2011-11-16 09:57:32 UTC (rev 49265)
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+
+import os
+import sys
+
+def get_list(addons):
+    mlist = os.listdir(os.path.join(addons, 'bin')) + \
+        os.listdir(os.path.join(addons, 'scripts'))
+    mlist.sort()
+    return mlist
+
+def start_grass(mlist, g7 = True):
+    if g7:
+        ver = 'grass_trunk'
+    else:
+        ver = 'grass6_devel'
+    gisbase = os.environ['GISBASE'] = os.path.join(os.getenv('HOME'),
+                                                   "src/%s/dist.x86_64-unknown-linux-gnu" % ver)
+    
+    gisdbase = os.path.join(gisbase)
+    location = "demolocation"
+    mapset   = "PERMANENT"
+ 
+    sys.path.append(os.path.join(os.environ['GISBASE'], "etc", "python"))
+    import grass.script as grass
+    import grass.script.setup as gsetup
+
+    gsetup.init(gisbase,
+                gisdbase, location, mapset)
+ 
+    os.environ['PATH'] += os.pathsep + os.path.join(sys.argv[1], 'bin') + os.pathsep + \
+        os.path.join(sys.argv[1], 'scripts')
+
+def parse_modules(fd, mlist):
+    indent = 4
+    for m in mlist:
+        print "Parsing <%s>..." % m,
+        desc, keyw = get_module_metadata(m)
+        fd.write('%s<task name="%s">\n' % (' ' * indent, m))
+        indent += 4
+        fd.write('%s<description>%s</description>\n' % (' ' * indent, desc))
+        fd.write('%s<keywords>%s</keywords>\n' % (' ' * indent, ','.join(keyw)))
+        indent -= 4
+        fd.write('%s</task>\n' % (' ' * indent))
+        if desc:
+            print " SUCCESS"
+        else:
+            print " FAILED"
+    
+def get_module_metadata(name):
+    import grass.script.task as gtask
+    try:
+        task = gtask.parse_interface(name)
+    except:
+        return '', ''
+    
+    return task.get_description(full = True), \
+        task.get_keywords()
+
+def header(fd):
+    import grass.script.core as grass
+    fd.write('<?xml version="1.0" encoding="UTF-8"?>\n')
+    fd.write('<!DOCTYPE task SYSTEM "grass-addons.dtd">\n') # TODO
+    fd.write('<modules version=%s>\n' % grass.version()['version'])
+
+def footer(fd):
+    fd.write('</modules>\n')
+
+def main():
+    if len(sys.argv) < 2:
+        sys.exit("Usage: %s path_to_addons" % sys.argv[0])
+        
+    addons = sys.argv[1]
+        
+    path = os.path.join(addons, 'modules.xml')
+    print "-----------------------------------------------------"
+    print "Creating XML file '%s'..." % path
+    print "-----------------------------------------------------"
+    fd = open(path, 'w')
+    start_grass(True)
+
+    header(fd)
+    parse_modules(fd, get_list(addons))
+    footer(fd)
+
+    fd.close()
+
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main())


Property changes on: grass-addons/tools/addons/build-xml.py
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + text/x-python
Added: svn:eol-style
   + native

Added: grass-addons/tools/addons/compile-xml.sh
===================================================================
--- grass-addons/tools/addons/compile-xml.sh	                        (rev 0)
+++ grass-addons/tools/addons/compile-xml.sh	2011-11-16 09:57:32 UTC (rev 49265)
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+compile() {
+    ./compile.sh $1 $2 $3
+}
+
+build_xml() {
+    ./build-xml.py $1
+}
+
+# recompile GRASS'es
+### $HOME/src/update-grass.sh
+
+# update GRASS Addons SVN
+# WARNING: create symlinks in grass6 first!
+(cd ..; svn up)
+
+# compile AddOns for GRASS 7 and GRASS 6.5
+compile ../../grass7 ~/src/grass_trunk/dist.x86_64-unknown-linux-gnu  ~/.grass7/addons
+compile ../../grass6 ~/src/grass6_devel/dist.x86_64-unknown-linux-gnu ~/.grass6/addons
+
+# create XML file for AddOns
+build_xml ~/.grass7/addons
+build_xml ~/.grass6/addons
+
+exit 0


Property changes on: grass-addons/tools/addons/compile-xml.sh
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + text/x-sh
Added: svn:eol-style
   + native

Modified: grass-addons/tools/addons/compile.sh
===================================================================
--- grass-addons/tools/addons/compile.sh	2011-11-16 06:54:16 UTC (rev 49264)
+++ grass-addons/tools/addons/compile.sh	2011-11-16 09:57:32 UTC (rev 49265)
@@ -18,6 +18,9 @@
 mkdir $ADDON_PATH/log
 touch $ADDON_PATH/make.log
 
+echo "-----------------------------------------------------"
+echo "AddOns '$ADDON_PATH'..."
+echo "-----------------------------------------------------"
 for c in "display" "general" "imagery" "raster" "vector"; do
     if [ ! -d $c ]; then
 	continue
@@ -25,7 +28,7 @@
     cd $c
     for m in `ls -d */ 2>/dev/null` ; do
 	m="${m%%/}"
-	echo "Compiling $m..."
+	echo -n "Compiling $m..."
 	cd $m
 	make MODULE_TOPDIR=$TOPDIR \
 	    BIN=$ADDON_PATH/bin \
@@ -36,8 +39,10 @@
 	    MANIFEST= WINDRES= MANIFEST_OBJ= >$ADDON_PATH/log/${m}.log 2>&1
 	if [ `echo $?` -eq 0 ] ; then
 	    printf "%-30s%s\n" "$c/$m" "SUCCESS" >> $ADDON_PATH/make.log
+	    echo " SUCCESS"
 	else
 	    printf "%-30s%s\n" "$c/$m" "FAILED" >> $ADDON_PATH/make.log
+	    echo " FAILED"
 	fi
 	cd ..
     done



More information about the grass-commit mailing list