[banshee] [build] new more flexible dependency build system



commit 3e240058ff09fd937e3144ee148b0a56eb88f915
Author: Aaron Bockover <abockover novell com>
Date:   Sun Dec 20 10:43:29 2009 -0500

    [build] new more flexible dependency build system
    
    Implemented a more flexible and simple system for building dependencies
    that will be able to more easily build Mono and GTK, which is not as
    straight forward as the other dependencies. Also a lot easier to maintain
    and update the dep stack.
    
    Should also be possible to extend the OS X profile to build a true bundle
    for Linux as well. Would be an interesting hack.

 build/bundle/build.py                              |  242 ++++++++++++++++++++
 build/bundle/packages/flac.py                      |   13 +
 build/bundle/packages/gst-plugins-bad.py           |   18 ++
 build/bundle/packages/gst-plugins-base.py          |   17 ++
 build/bundle/packages/gst-plugins-good.py          |   20 ++
 build/bundle/packages/gst-plugins-ugly.py          |   18 ++
 build/bundle/packages/gstreamer.py                 |   12 +
 build/bundle/packages/ige-mac-integration-sharp.py |    7 +
 build/bundle/packages/intltool.py                  |    7 +
 build/bundle/packages/libogg.py                    |    7 +
 build/bundle/packages/liboil.py                    |   12 +
 build/bundle/packages/libproxy.py                  |    7 +
 build/bundle/packages/libsoup.py                   |   14 ++
 build/bundle/packages/libtheora.py                 |    7 +
 build/bundle/packages/libvorbis.py                 |    7 +
 build/bundle/packages/libxml2.py                   |    7 +
 build/bundle/packages/ndesk-dbus-glib.py           |    7 +
 build/bundle/packages/ndesk-dbus.py                |    7 +
 build/bundle/packages/speex.py                     |    7 +
 build/bundle/packages/taglib-sharp.py              |   12 +
 build/bundle/packages/taglib.py                    |    7 +
 build/bundle/packages/wavpack.py                   |    7 +
 build/bundle/profile.osx.py                        |   75 ++++++
 23 files changed, 537 insertions(+), 0 deletions(-)
---
diff --git a/build/bundle/build.py b/build/bundle/build.py
new file mode 100755
index 0000000..f336c0a
--- /dev/null
+++ b/build/bundle/build.py
@@ -0,0 +1,242 @@
+#!/usr/bin/env python
+
+import os
+import sys
+import re
+import glob
+import shutil
+import urllib
+import subprocess
+
+def build_package (package, vars):
+	package_dir = os.path.dirname (package['_path'])
+	package_build_dir = os.path.join (config['build_root'],
+		'%s-%s' % (package['name'], package['version']))
+	build_success_file = os.path.join (config['build_root'],
+		'%s-%s.success' % (package['name'], package['version']))
+
+	if os.path.exists (build_success_file):
+		print 'Skipping %s - already built' % package['name']
+		return
+
+	print 'Building %s on %s (%s CPU)' % (package['name'], get_host (), get_cpu_count ())
+
+	# Set up the directories
+	if not os.path.exists (config['build_root']) or not os.path.isdir (config['build_root']):
+		os.makedirs (config['build_root'], 0755)
+
+	shutil.rmtree (package_build_dir, ignore_errors = True)
+	os.makedirs (package_build_dir)
+
+	# Copy/download sources into the build root, and adjust the
+	# sources list in the package object to be relative local
+	# filenames from the build root directory for later
+	log (0, 'Retrieving sources')
+	local_sources = []
+	for source in package['sources']:
+		source = expand_macros (source, vars)
+		local_source = os.path.join (package_dir, source)
+		local_source_file = os.path.basename (local_source)
+		local_sources.append (local_source_file)
+		local_dest_file = os.path.join (package_build_dir, local_source_file)
+
+		if os.path.isfile (local_source):
+			log (1, 'copying local source: %s' % local_source_file)
+			shutil.copy2 (local_source, local_dest_file)
+		elif source.startswith (('http', 'https', 'ftp')):
+			log (1, 'downloading remote source: %s' % source)
+			urllib.urlretrieve (source, local_dest_file)
+
+	package['sources'] = local_sources
+	
+	os.chdir (package_build_dir)
+
+	for phase in ['prep', 'build', 'install']:
+		log (0, '%sing %s' % (phase.capitalize (), package['name']))
+		for step in package[phase]:
+			step = expand_macros (step, package)
+			log (1, step)
+			if step.startswith ('cd '):
+				os.chdir (step[3:])
+			else:
+				run_shell (step)
+
+	open (build_success_file, 'w').close ()
+
+def load_package_defaults (config, package):
+	# path macros
+	package['_build_root'] = os.path.join (config['build_root'], '_install')
+	package['_prefix'] = package['_build_root']
+
+	# tool macros
+	package['__configure'] = './configure --prefix=%{_prefix}'
+	package['__make'] = 'make -j%s' % get_cpu_count ()
+	package['__makeinstall'] = '%{__make} install'
+
+	# install default sections if they are missing
+	if not 'prep' in package:
+		package['prep'] = ['tar xf @{sources:0}', 'cd %{name}-%{version}']
+	if not 'build' in package:
+		package['build'] = ['%{__configure}', '%{__make}']
+	if not 'install' in package:
+		package['install'] = ['%{__makeinstall}']
+
+#--------------------------------------
+# Package file parsing
+#--------------------------------------
+
+def parse_package (package):
+	load_package_defaults (config, package)
+
+	# walk the top level to collect and save variable tree
+	vars = {}
+	for k, v in package.iteritems ():
+		if k in ['prep', 'build', 'install']:
+			continue
+		vars[k] = v
+
+	# now process the package tree and substitute variables
+	package = expand_macros (package, vars, runtime = False)
+
+	for req in ['name', 'version', 'sources', 'prep', 'build', 'install']:
+		if not req in package:
+			sys.exit ('Invalid package %s: missing %s node' % (path, req))
+	
+	if not isinstance (package['sources'], (list, tuple)):
+		sys.exit ('Invalid package %s: \'sources\' node must be a list' % path)
+	elif len (package['sources']) <= 0:
+		sys.exit ('Invalid package %s: no sources defined (empty list)' % path)
+
+	return package, vars
+
+def expand_macros (node, vars, runtime = True):
+	macro_type = '%'
+	if runtime:
+		macro_type = '@'
+	def sub_macro (m):
+		macro = m.groups ()[0]
+		map = macro.split (':', 2)
+		if len (map) == 2 and map[0] in vars:
+			if isinstance (vars[map[0]], (list, tuple)):
+				map[1] = int (map[1])
+				if map[1] < len (vars[map[0]]):
+					return vars[map[0]][map[1]]
+			elif map[1] in vars[map[0]]:
+				return vars[map[0]][map[1]]
+			sys.exit ('Macro \'%s\' does not contain a child \'%s\'' % (map[0], map[1]))
+		if macro in vars:
+			return vars[macro]
+		sys.exit ('Macro \'%s\' is undefined' % macro)
+
+	if isinstance (node, dict):
+		for k, v in node.iteritems ():
+			node[k] = expand_macros (v, vars, runtime)
+	elif isinstance (node, (list, tuple)):
+		for i, v in enumerate (node):
+			node[i] = expand_macros (v, vars, runtime)
+	else:
+		orig_node = node
+		iters = 0
+		while True:
+			v = re.sub ('(?<!\\\)' + macro_type + '{([\w\:]+)}', sub_macro, node)
+			if v == node:
+				break
+			iters += 1
+			if iters >= 500:
+				sys.exit ('Too many macro substitutions, possible recursion: \'%s\'' % orig_node)
+			node = v
+
+	return node
+
+#--------------------------------------
+# Utility Functions
+#--------------------------------------
+
+def run_shell (cmd):
+	proc = subprocess.Popen (cmd, shell = True)
+	exit_code = os.waitpid (proc.pid, 0)[1]
+	if not exit_code == 0:
+		print
+		sys.exit ('ERROR: command exited with exit code %s: %s' % (exit_code, cmd))
+
+def backtick (cmd):
+	lines = []
+	for line in os.popen (cmd).readlines ():
+		lines.append (line.rstrip ('\r\n'))
+	return lines
+
+def get_host ():
+	search_paths = ['/usr/share', '/usr/local/share']
+	am_config_guess = []
+	for path in search_paths:
+		am_config_guess.extend (glob.glob (os.path.join (
+			path, os.path.join ('automake*', 'config.guess'))))
+	for config_guess in am_config_guess:
+		config_sub = os.path.join (os.path.dirname (config_guess), 'config.sub')
+		if os.access (config_guess, os.X_OK) and os.access (config_sub, os.X_OK):
+			return backtick ('%s %s' % (config_sub, backtick (config_guess)[0]))[0]
+	return 'python-%s' % os.name
+
+def get_cpu_count ():
+	try:
+		return os.sysconf ('SC_NPROCESSORS_CONF')
+	except:
+		return 1
+
+#--------------------------------------
+# Logging
+#--------------------------------------
+
+def log (level, message):
+	if level == 0:
+		print '--> %s' % message
+	elif level == 1:
+		print '    + %s' % message
+	elif level == 2:
+		print '      - %s' % message
+
+#--------------------------------------
+# Main Program
+#--------------------------------------
+
+__packages = []
+config = {
+	'build_root': os.path.join (os.getcwd (), 'build-root')
+}
+
+def load_file (path):
+	package = None
+	packages = None
+	build_env = None
+	if not os.path.isfile (path):
+		sys.exit ('Error: %s is not a file' % path)
+	exec open (path).read ()
+	if isinstance (package, dict):
+		package['_path'] = path
+		__packages.append (parse_package (package))
+	elif isinstance (packages, (list, tuple)):
+		pass
+		for package in packages:
+			load_file (package)
+	if isinstance (build_env, dict):
+		print '%s is overriding build_env config' % path
+		globals ()['config'] = build_env 
+
+if __name__ == '__main__':
+	for arg in sys.argv[1:]:
+		load_file (arg)
+	
+	config_vars = {}
+	for d in [config, config['environ']]:
+		for k, v in d.iteritems ():
+			config_vars[k] = v
+	config = expand_macros (config, config_vars, False)
+
+	if config['environ']:
+		log (0, 'Setting environment variables')
+		for k, v in config['environ'].iteritems ():
+			os.environ[k] = v
+			log (1, '%s = %s' % (k, os.getenv (k)))
+
+	for package, vars in __packages:
+		build_package (package, vars)
diff --git a/build/bundle/packages/flac.py b/build/bundle/packages/flac.py
new file mode 100644
index 0000000..15caf07
--- /dev/null
+++ b/build/bundle/packages/flac.py
@@ -0,0 +1,13 @@
+package = {
+	'name':    'flac',
+	'version': '1.2.1',
+	'sources': [
+		'http://downloads.xiph.org/releases/%{name}/%{name}-%{version}.tar.gz'
+	],
+	'build': [
+		'%{__configure}' \
+			' --disable-asm-optimizations' \
+			' --disable-cpplibs',
+		'%{__make}'
+	]
+}
diff --git a/build/bundle/packages/gst-plugins-bad.py b/build/bundle/packages/gst-plugins-bad.py
new file mode 100644
index 0000000..2720992
--- /dev/null
+++ b/build/bundle/packages/gst-plugins-bad.py
@@ -0,0 +1,18 @@
+package = {
+	'name':    'gst-plugins-bad',
+	'version': '0.10.17',
+	'sources': [
+		'http://gstreamer.freedesktop.org/src/%{name}/%{name}-%{version}.tar.gz'
+	],
+	'build': [
+		'%{__configure}' \
+			' --disable-gtk-doc' \
+			' --with-plugins=quicktime' \
+			' --disable-apexsink' \
+			' --disable-bz2' \
+			' --disable-metadata' \
+			' --disable-oss4' \
+			' --disable-theoradec',
+		'%{__make}'
+	]
+}
diff --git a/build/bundle/packages/gst-plugins-base.py b/build/bundle/packages/gst-plugins-base.py
new file mode 100644
index 0000000..acafcc9
--- /dev/null
+++ b/build/bundle/packages/gst-plugins-base.py
@@ -0,0 +1,17 @@
+package = {
+	'name':    'gst-plugins-base',
+	'version': '0.10.25',
+	'sources': [
+		'http://gstreamer.freedesktop.org/src/%{name}/%{name}-%{version}.tar.gz'
+	],
+	'build': [
+		'%{__configure}' \
+			' --disable-gtk-doc' \
+			' --disable-x' \
+			' --disable-xvideo' \
+			' --disable-xshm' \
+			' --disable-gio' \
+			' --disable-gnome_vfs',
+		'%{__make}'
+	]
+}
diff --git a/build/bundle/packages/gst-plugins-good.py b/build/bundle/packages/gst-plugins-good.py
new file mode 100644
index 0000000..184e2aa
--- /dev/null
+++ b/build/bundle/packages/gst-plugins-good.py
@@ -0,0 +1,20 @@
+package = {
+	'name':    'gst-plugins-good',
+	'version': '0.10.17',
+	'sources': [
+		'http://gstreamer.freedesktop.org/src/%{name}/%{name}-%{version}.tar.gz'
+	],
+	'build': [
+		'%{__configure}' \
+			' --disable-gtk-doc' \
+			' --disable-x' \
+			' --disable-xvideo' \
+			' --disable-xshm' \
+			' --disable-gdk_pixbuf' \
+			' --disable-cairo' \
+			' --disable-jpeg' \
+			' --disable-libpng' \
+			' --disable-annodex',
+		'%{__make}'
+	]
+}
diff --git a/build/bundle/packages/gst-plugins-ugly.py b/build/bundle/packages/gst-plugins-ugly.py
new file mode 100644
index 0000000..0959cc0
--- /dev/null
+++ b/build/bundle/packages/gst-plugins-ugly.py
@@ -0,0 +1,18 @@
+package = {
+	'name':    'gst-plugins-ugly',
+	'version': '0.10.13',
+	'sources': [
+		'http://gstreamer.freedesktop.org/src/%{name}/%{name}-%{version}.tar.gz'
+	],
+	'build': [
+		'%{__configure}' \
+			' --disable-gtk-doc' \
+			' --disable-asfdemux' \
+			' --disable-dvdsub' \
+			' --disable-dvdlpcmdec' \
+			' --disable-iec958' \
+			' --disable-mpegstream' \
+			' --disable-realmedia',
+		'%{__make}'
+	]
+}
diff --git a/build/bundle/packages/gstreamer.py b/build/bundle/packages/gstreamer.py
new file mode 100644
index 0000000..27b740b
--- /dev/null
+++ b/build/bundle/packages/gstreamer.py
@@ -0,0 +1,12 @@
+package = {
+	'name':    'gstreamer',
+	'version': '0.10.25',
+	'sources': [
+		'http://gstreamer.freedesktop.org/src/%{name}/%{name}-%{version}.tar.gz'
+	],
+	'build': [
+		'%{__configure}' \
+			' --disable-gtk-doc',
+		'%{__make}'
+	]
+}
diff --git a/build/bundle/packages/ige-mac-integration-sharp.py b/build/bundle/packages/ige-mac-integration-sharp.py
new file mode 100644
index 0000000..4fc7aee
--- /dev/null
+++ b/build/bundle/packages/ige-mac-integration-sharp.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'ige-mac-integration-sharp',
+	'version': '0.8.2',
+	'sources': [
+		'http://randomrules.org/files/%{name}-%{version}.tar.gz'
+	]
+}
diff --git a/build/bundle/packages/intltool.py b/build/bundle/packages/intltool.py
new file mode 100644
index 0000000..e21b173
--- /dev/null
+++ b/build/bundle/packages/intltool.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'intltool',
+	'version': '0.40.6',
+	'sources': [
+		'http://ftp.gnome.org/pub/gnome/sources/intltool/0.40/%{name}-%{version}.tar.bz2'
+	]
+}
diff --git a/build/bundle/packages/libogg.py b/build/bundle/packages/libogg.py
new file mode 100644
index 0000000..c433102
--- /dev/null
+++ b/build/bundle/packages/libogg.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'libogg',
+	'version': '1.1.4',
+	'sources': [
+		'http://downloads.xiph.org/releases/ogg/%{name}-%{version}.tar.gz'
+	]
+}
diff --git a/build/bundle/packages/liboil.py b/build/bundle/packages/liboil.py
new file mode 100644
index 0000000..6243732
--- /dev/null
+++ b/build/bundle/packages/liboil.py
@@ -0,0 +1,12 @@
+package = {
+	'name':    'liboil',
+	'version': '0.3.16',
+	'sources': [
+		'http://liboil.freedesktop.org/download/%{name}-%{version}.tar.gz'
+	],
+	'build': [
+		'%{__configure}' \
+			' --disable-gtk-doc',
+		'%{__make}'
+	]
+}
diff --git a/build/bundle/packages/libproxy.py b/build/bundle/packages/libproxy.py
new file mode 100644
index 0000000..770d4f2
--- /dev/null
+++ b/build/bundle/packages/libproxy.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'libproxy',
+	'version': '0.3.1',
+	'sources': [
+		'http://libproxy.googlecode.com/files/%{name}-%{version}.tar.bz2'
+	]
+}
diff --git a/build/bundle/packages/libsoup.py b/build/bundle/packages/libsoup.py
new file mode 100644
index 0000000..8fbd4b7
--- /dev/null
+++ b/build/bundle/packages/libsoup.py
@@ -0,0 +1,14 @@
+package = {
+	'name':    'libsoup',
+	'version': '2.28.2',
+	'sources': [
+		'http://ftp.gnome.org/pub/gnome/sources/libsoup/2.28/%{name}-%{version}.tar.bz2'
+	],
+	'build': [
+		'%{__configure}' \
+			' --without-gnome' \
+			' --disable-gtk-doc' \
+			' --disable-ssl',
+		'%{__make}'
+	]
+}
diff --git a/build/bundle/packages/libtheora.py b/build/bundle/packages/libtheora.py
new file mode 100644
index 0000000..76260a4
--- /dev/null
+++ b/build/bundle/packages/libtheora.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'libtheora',
+	'version': '1.1beta3',
+	'sources': [
+		'http://downloads.xiph.org/releases/theora/%{name}-%{version}.tar.gz'
+	]
+}
diff --git a/build/bundle/packages/libvorbis.py b/build/bundle/packages/libvorbis.py
new file mode 100644
index 0000000..73a3e41
--- /dev/null
+++ b/build/bundle/packages/libvorbis.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'libvorbis',
+	'version': '1.2.3',
+	'sources': [
+		'http://downloads.xiph.org/releases/vorbis/%{name}-%{version}.tar.gz'
+	]
+}
diff --git a/build/bundle/packages/libxml2.py b/build/bundle/packages/libxml2.py
new file mode 100644
index 0000000..eb3e8df
--- /dev/null
+++ b/build/bundle/packages/libxml2.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'libxml2',
+	'version': '2.6.30',
+	'sources': [
+		'http://ftp.gnome.org/pub/gnome/sources/libxml2/2.6/%{name}-%{version}.tar.bz2'
+	]
+}
diff --git a/build/bundle/packages/ndesk-dbus-glib.py b/build/bundle/packages/ndesk-dbus-glib.py
new file mode 100644
index 0000000..33c8a92
--- /dev/null
+++ b/build/bundle/packages/ndesk-dbus-glib.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'ndesk-dbus-glib',
+	'version': '0.4.1',
+	'sources': [
+		'http://www.ndesk.org/archive/dbus-sharp/%{name}-%{version}.tar.gz'
+	]
+}
diff --git a/build/bundle/packages/ndesk-dbus.py b/build/bundle/packages/ndesk-dbus.py
new file mode 100644
index 0000000..758e850
--- /dev/null
+++ b/build/bundle/packages/ndesk-dbus.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'ndesk-dbus',
+	'version': '0.6.0',
+	'sources': [
+		'http://www.ndesk.org/archive/dbus-sharp/%{name}-%{version}.tar.gz'
+	]
+}
diff --git a/build/bundle/packages/speex.py b/build/bundle/packages/speex.py
new file mode 100644
index 0000000..b0fb308
--- /dev/null
+++ b/build/bundle/packages/speex.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'speex',
+	'version': '1.2rc1',
+	'sources': [
+		'http://downloads.xiph.org/releases/%{name}/%{name}-%{version}.tar.gz'
+	]
+}
diff --git a/build/bundle/packages/taglib-sharp.py b/build/bundle/packages/taglib-sharp.py
new file mode 100644
index 0000000..78d6ce8
--- /dev/null
+++ b/build/bundle/packages/taglib-sharp.py
@@ -0,0 +1,12 @@
+package = {
+	'name':    'taglib-sharp',
+	'version': '2.0.3.3',
+	'sources': [
+		'http://download.banshee-project.org/taglib-sharp/%{version}/%{name}-%{version}.tar.gz'
+	],
+	'build': [
+		'%{__configure}' \
+			' --disable-docs',
+		'%{__make}'
+	]
+}
diff --git a/build/bundle/packages/taglib.py b/build/bundle/packages/taglib.py
new file mode 100644
index 0000000..4c15493
--- /dev/null
+++ b/build/bundle/packages/taglib.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'taglib',
+	'version': '1.6',
+	'sources': [
+		'http://developer.kde.org/~wheeler/files/src/%{name}-%{version}.tar.gz'
+	]
+}
diff --git a/build/bundle/packages/wavpack.py b/build/bundle/packages/wavpack.py
new file mode 100644
index 0000000..8535f37
--- /dev/null
+++ b/build/bundle/packages/wavpack.py
@@ -0,0 +1,7 @@
+package = {
+	'name':    'wavpack',
+	'version': '4.60.1',
+	'sources': [
+		'http://www.wavpack.com/%{name}-%{version}.tar.bz2'
+	]
+}
diff --git a/build/bundle/profile.osx.py b/build/bundle/profile.osx.py
new file mode 100644
index 0000000..b0b5bd8
--- /dev/null
+++ b/build/bundle/profile.osx.py
@@ -0,0 +1,75 @@
+build_env = {
+	'build_root': os.path.join (os.getcwd (), 'build-root'),
+	'prefix': '%{build_root}/_install',
+	'mac_sdk_path': '/Developer/SDKs/MacOSX10.5.sdk',
+	'mono_sdk_path': '/Library/Frameworks/Mono.framework/Versions/Current',
+}
+
+search_paths = ['%{prefix}', '%{mono_sdk_path}']
+bin_paths = [os.path.join (p, 'bin') for p in search_paths]
+bin_paths.extend (['/usr/bin', '/bin'])
+lib_paths = [os.path.join (p, 'lib') for p in search_paths]
+aclocal_paths = [os.path.join (p, 'share', 'aclocal') for p in search_paths]
+
+gcc_flags = [
+	'-m32',
+	'-arch i386',
+	'-D_XOPEN_SOURCE',
+	'-isysroot %{mac_sdk_path}',
+	'-mmacosx-version-min=10.5',
+]
+gcc_flags.extend (['-I' + os.path.join (p, 'include') for p in search_paths])
+
+build_env['environ'] = {
+	'PATH': ':'.join (bin_paths),
+	'CFLAGS': ' '.join (gcc_flags),
+	'CXXFLAGS': '%{CFLAGS}',
+	'LD_LIBRARY_PATH': ':'.join (lib_paths),
+	'LDFLAGS': ' '.join (['-L' + p for p in lib_paths]),
+	'ACLOCAL_FLAGS': ' '.join (['-I' + p for p in aclocal_paths]),
+	'PKG_CONFIG_PATH': ':'.join ([
+		os.path.join (p, d, 'pkgconfig')
+			for p in search_paths
+			for d in ['lib', 'share'] 
+	])
+}
+
+packages = [
+	# Base dependencies
+	'packages/libxml2.py',
+	'packages/libproxy.py',
+	'packages/intltool.py',
+	'packages/libsoup.py',
+	
+	# Xiph codecs/formats
+	'packages/libogg.py',
+	'packages/libvorbis.py',
+	'packages/flac.py',
+	'packages/libtheora.py',
+	'packages/speex.py',
+
+	# Various formats
+	'packages/wavpack.py',
+	'packages/taglib.py',
+
+	# GStreamer
+	'packages/liboil.py',
+	'packages/gstreamer.py',
+	'packages/gst-plugins-base.py',
+	'packages/gst-plugins-good.py',
+	'packages/gst-plugins-bad.py',
+	'packages/gst-plugins-ugly.py',
+
+	# Managed Deps
+	'packages/ndesk-dbus.py',
+	'packages/ndesk-dbus-glib.py',
+	'packages/taglib-sharp.py',
+	'packages/ige-mac-integration-sharp.py'
+]
+
+if not os.path.isdir (build_env['mac_sdk_path']):
+	sys.exit ('Mac OS X SDK does not exist: %s' % build_env['mac_sdk_path'])
+
+if not os.path.isdir (build_env['mono_sdk_path']):
+	sys.exit ('Mono SDK does not exist: %s' % build_env['mono_sdk_path'])
+



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