chiark / gitweb /
Properly default to NDK r10e
[fdroidserver.git] / fdroidserver / metadata.py
index 0bf9f6028913e406c354b49e2361b3e62b48025d..09a5d07f6a9e0211b094516e781b5b7091755e39 100644 (file)
@@ -48,6 +48,7 @@ app_defaults = OrderedDict([
     ('Web Site', ''),
     ('Source Code', ''),
     ('Issue Tracker', ''),
+    ('Changelog', ''),
     ('Donate', None),
     ('FlattrID', None),
     ('Bitcoin', None),
@@ -102,7 +103,7 @@ flag_defaults = OrderedDict([
     ('scandelete', []),
     ('build', ''),
     ('buildjni', []),
-    ('ndk', 'r9b'),  # defaults to oldest
+    ('ndk', 'r10e'),  # defaults to latest
     ('preassemble', []),
     ('antcommands', None),
     ('novcheck', False),
@@ -169,7 +170,7 @@ valuetypes = {
 
     FieldValidator("HTTP link",
                    r'^http[s]?://', None,
-                   ["Web Site", "Source Code", "Issue Tracker", "Donate"], []),
+                   ["Web Site", "Source Code", "Issue Tracker", "Changelog", "Donate"], []),
 
     FieldValidator("Bitcoin address",
                    r'^[a-zA-Z0-9]{27,34}$', None,
@@ -339,8 +340,6 @@ class DescriptionFormatter:
                 else:
                     urltxt = url[index2 + 1:]
                     url = url[:index2]
-                if ':' not in url:
-                    raise MetaDataException("'%s' doesn't look like an URL" % url)
                 linkified_html += '<a href="' + url + '">' + cgi.escape(urltxt) + '</a>'
                 linkified_plain += urltxt
                 if urltxt != url:
@@ -416,7 +415,6 @@ def parse_srclib(metafile):
     thisinfo['Repo'] = ''
     thisinfo['Subdir'] = None
     thisinfo['Prepare'] = None
-    thisinfo['Srclibs'] = None
 
     if metafile is None:
         return thisinfo
@@ -552,6 +550,12 @@ def fill_build_defaults(build):
     build['ndk_path'] = common.get_ndk_path(build['ndk'])
 
 
+def split_list_values(s):
+    # Port legacy ';' separators
+    l = [v.strip() for v in s.replace(';', ',').split(',')]
+    return [v for v in l if v]
+
+
 # Parse metadata for a single application.
 #
 #  'metafile' - the filename to read. The package id for the application comes
@@ -582,6 +586,9 @@ def parse_metadata(metafile):
     linedesc = None
 
     def add_buildflag(p, thisbuild):
+        if not p.strip():
+            raise MetaDataException("Empty build flag at {1}"
+                                    .format(buildlines[0], linedesc))
         bv = p.split('=', 1)
         if len(bv) != 2:
             raise MetaDataException("Invalid build flag at {0} in {1}"
@@ -597,8 +604,7 @@ def parse_metadata(metafile):
                                     .format(p, linedesc))
         t = flagtype(pk)
         if t == 'list':
-            # Port legacy ';' separators
-            pv = [v.strip() for v in pv.replace(';', ',').split(',')]
+            pv = split_list_values(pv)
             if pk == 'gradle':
                 if len(pv) == 1 and pv[0] in ['main', 'yes']:
                     pv = ['yes']
@@ -727,7 +733,7 @@ def parse_metadata(metafile):
             elif fieldtype == 'string':
                 thisinfo[field] = value
             elif fieldtype == 'list':
-                thisinfo[field] = [v.strip() for v in value.replace(';', ',').split(',')]
+                thisinfo[field] = split_list_values(value)
             elif fieldtype == 'build':
                 if value.endswith("\\"):
                     mode = 2
@@ -828,6 +834,7 @@ def write_metadata(dest, app):
     writefield('Web Site')
     writefield('Source Code')
     writefield('Issue Tracker')
+    writefield_nonempty('Changelog')
     writefield_nonempty('Donate')
     writefield_nonempty('FlattrID')
     writefield_nonempty('Bitcoin')