srclib_dir = os.path.join(build_dir, 'srclib')
extlib_dir = os.path.join(build_dir, 'extlib')
- # Get all apps...
+ # Read all app and srclib metadata
allapps = metadata.read_metadata(xref=not options.onserver)
+ metadata.read_srclibs()
apps = common.read_app_args(args, allapps, True)
apps = [app for app in apps if (options.force or not app['Disabled']) and
def getsrclibvcs(name):
- srclib_path = os.path.join('srclibs', name + ".txt")
- if not os.path.exists(srclib_path):
+ if not name in metadata.srclibs:
raise VCSException("Missing srclib " + name)
- return metadata.parse_srclib(srclib_path)['Repo Type']
+ return metadata.srclibs[name]['Repo Type']
class vcs:
if '/' in name:
name, subdir = name.split('/', 1)
- srclib_path = os.path.join('srclibs', name + ".txt")
-
- if not os.path.exists(srclib_path):
+ if not name in metadata.srclibs:
raise BuildException('srclib ' + name + ' not found.')
- srclib = metadata.parse_srclib(srclib_path)
+ srclib = metadata.srclibs[name]
sdir = os.path.join(srclib_dir, name)
import cgi
import logging
-srclibs = []
+srclibs = {}
class MetaDataException(Exception):
def __init__(self, value):
return thisinfo
+def read_srclibs():
+ """Read all srclib metadata.
+
+ The information read will be accessible as metadata.srclibs, which is a
+ dictionary, keyed on srclib name, with the values each being a dictionary
+ in the same format as that returned by the parse_srclib function.
+
+ A MetaDataException is raised if there are any problems with the srclib
+ metadata.
+ """
+ global srclibs
+ srclibs = {}
+
+ srcdir = 'srclibs'
+ if not os.path.exists(srcdir):
+ os.makedirs(srcdir)
+
+ for metafile in sorted(glob.glob(os.path.join(srcdir, '*.txt'))):
+ srclibname = os.path.basename(metafile[:-4])
+ srclibs[srclibname] = parse_srclib(metafile)
+
+
# Read all metadata. Returns a list of 'app' objects (which are dictionaries as
# returned by the parse_metadata function.
def read_metadata(xref=True):
config = common.read_config(options)
- # Get all apps...
+ # Read all app and srclib metadata
allapps = metadata.read_metadata()
apps = common.read_app_args(args, allapps, True)
+ metadata.read_srclibs()
problems = []