[buildj] Moved over from JSON to YAML



commit bd6f5e3fd9d7669bf149e4d368c21fe62856a249
Author: Alberto Ruiz <aruiz gnome org>
Date:   Tue Sep 28 23:54:00 2010 +0100

    Moved over from JSON to YAML

 buildj.py       |   22 ++++-------------
 cc/project.js   |   52 -----------------------------------------
 cc/project.yaml |   52 +++++++++++++++++++++++++++++++++++++++++
 project.js      |   69 -------------------------------------------------------
 project.yaml    |   63 ++++++++++++++++++++++++++++++++++++++++++++++++++
 wscript         |    3 +-
 6 files changed, 121 insertions(+), 140 deletions(-)
---
diff --git a/buildj.py b/buildj.py
index decb368..e91ea6e 100644
--- a/buildj.py
+++ b/buildj.py
@@ -1,15 +1,4 @@
-try:
-	import json
-except ImportError:
-	# Python < 2.6 doesn't have json
-	import simplejson as json
-
-try:
-	json.decoder
-except AttributeError:
-	# this is json-py and not Python's json
-	import simplejson as json
-
+import yaml
 import re
 
 WAF_TOOLS = {'cc':   'compiler_cc',
@@ -37,7 +26,7 @@ CC_TOOLCHAIN = {'ADDR2LINE': 'addr2line',
                 'STRINGS': 'strings', 'WINDRES': 'windres',
                 'AR': 'ar', 'RANLIB': 'ranlib', 'STRIP': 'strip'}
 
-DEFAULT_BUILDJ_FILE="project.js"
+DEFAULT_BUILDJ_FILE="project.yaml"
 
 def normalize_package_name (name):
 	name = name.upper ()
@@ -45,11 +34,10 @@ def normalize_package_name (name):
 	return nonalpha.sub ('_', name)
 
 class ProjectFile:
-	def __init__ (self, project="project.js"):
-		dec = json.decoder.JSONDecoder ()
+	def __init__ (self, project=DEFAULT_BUILDJ_FILE):
 		prj = open(project)
 		data = prj.read ()
-		self._project = dec.decode (data)
+		self._project = yaml.load (data)
 		prj.close ()
 
 		#TODO: try to raise some meaningful (and consistent) error
@@ -63,7 +51,7 @@ class ProjectFile:
 		for subdir in self._project.get ('subdirs', []):
 			prj = open ('%s/%s' % (subdir, project))
 			data = prj.read ()
-			subproject = dec.decode (data)
+			subproject = yaml.load (data)
 			for target_name, target_data in subproject['targets'].iteritems():
 				assert target_name not in self._project['targets']
 				if 'path' in target_data:
diff --git a/cc/project.yaml b/cc/project.yaml
new file mode 100644
index 0000000..231b445
--- /dev/null
+++ b/cc/project.yaml
@@ -0,0 +1,52 @@
+targets:
+  my_program:
+    type:    program
+    tool:    cc
+    input:
+      - program.c
+  
+  my_shared_lib:
+    type:    sharedlib
+    tool:    cc
+    input:   
+      - lib.c
+    version: 1.2.3
+  
+  my_static_lib:
+    type:  staticlib
+    tool:  cc
+    input:
+      - lib.c
+  
+  my_static_program:
+    type: program
+    tool: cc
+    input:
+      - program_with_lib.c
+    uses:
+      - my_static_lib
+  
+  my_shared_program:
+    type:  program
+    tool:  cc
+    input:
+      - program_with_lib.c
+    uses:
+      - my_shared_lib
+  
+  my_gtk_program:
+    type:      program
+    tool:      cc
+    input:
+      - gtk_program.c
+    packages:
+      - gtk+-2.0
+  
+  my_program_with_defines:
+    type:  program
+    tool:  cc
+    input:
+      - program_with_defines.c
+    defines:
+      - FOO
+      - BAR="123"
diff --git a/project.yaml b/project.yaml
new file mode 100644
index 0000000..ab9712b
--- /dev/null
+++ b/project.yaml
@@ -0,0 +1,63 @@
+project:
+  name:     CC Test
+  version:  0.0.1
+  url:      http://www.codethink.co.uk
+
+options:
+  foo:
+    description: Makes gtk+ mandatory
+    default:     True
+
+requires:
+  glib-2.0:
+    type:      package
+    mandatory: True
+  gtk+-2.0:
+    type:      package
+    version:   2.14
+    mandatory: ${foo}
+
+subdirs:
+  - cc
+
+targets:
+  my_cpp_program:
+      type: program
+      tool: c++
+      path: cpp
+      input:
+        - cpprogram.cpp
+      uses:
+        - my_static_lib
+    
+  my_vala_program:
+    type: program
+    tool: vala
+    input:
+      - vala_program.vala
+    uses:
+      - my_vala_shared_lib
+    packages:
+      - gtk+-2.0
+  
+  my_vala_shared_lib:
+    type: sharedlib
+    tool: vala
+    path: valalib
+    input:
+      - vala_library.vala
+    version: 12.4.5
+    gir: Bleh-1.0
+  
+  my_vala_static_lib:
+    type:  staticlib
+    tool:  vala
+    input:
+      - vala_library.vala
+  
+  my_cpp_program_data:
+    tool: data
+    input:
+      - data/buildj.svg
+    dir:
+      
diff --git a/wscript b/wscript
index a4ee3c1..48001d3 100644
--- a/wscript
+++ b/wscript
@@ -2,7 +2,7 @@ import os
 import Utils
 import Options
 from buildj import *
-import extra_tools
+#import extra_tools
 
 APPNAME = None
 VERSION = None
@@ -92,7 +92,6 @@ def configure (conf):
 			conf.check_cfg (package="glib-2.0", mandatory=True)
 
 	conf.write_config_header()
-	conf.write_config_vapi()
 
 def build(bld):
 	project = parse_project_file ()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]