chiark / gitweb /
Merge branch 'support-xml-json-yaml-for-metadata' into 'master'
authorDaniel Martí <mvdan@mvdan.cc>
Tue, 1 Sep 2015 17:29:11 +0000 (17:29 +0000)
committerDaniel Martí <mvdan@mvdan.cc>
Tue, 1 Sep 2015 17:29:11 +0000 (17:29 +0000)
Support XML, JSON, and YAML for metadata

Add support for app metadata files in JSON, XML, and YAML data formats.  All of the formats use the exact same metadata tags, so there is no translation layer needed.  They all just parse the data into the same internal data format: Python dicts.  Supporting these standard formats will make it much easier for people to write recipes since they can choose a data format that they are familiar with.  It also makes it much easier to generate metadata programmatically, since there are good libraries for working with all three formats in basically every language (unlike FDroid's .txt format).

Here are the same tags in .txt, JSON, XML, and YAML:

    Source Code:https://github.com/SMSSecure/SMSSecure
    "Source Code": "https://github.com/SMSSecure/SMSSecure",
    <string name="Source Code">https://github.com/SMSSecure/SMSSecure</string>
    Source Code: https://github.com/SMSSecure/SMSSecure

Looking for comments, suggestions, flames, etc. from @CiaranG, @mvdan, and everyone else.

See merge request !57

25 files changed:
docs/fdroid.texi
examples/config.py
fdroidserver/checkupdates.py
fdroidserver/common.py
fdroidserver/import.py
fdroidserver/metadata.py
fdroidserver/rewritemeta.py
fdroidserver/stats.py
fdroidserver/update.py
hooks/pre-commit
setup.py
tests/common.TestCase
tests/install.TestCase
tests/metadata.TestCase [new file with mode: 0755]
tests/metadata/net.osmand.plus.pickle [new file with mode: 0644]
tests/metadata/net.osmand.plus.xml [new file with mode: 0644]
tests/metadata/org.adaway.json [new file with mode: 0644]
tests/metadata/org.adaway.pickle [new file with mode: 0644]
tests/metadata/org.smssecure.smssecure.pickle [new file with mode: 0644]
tests/metadata/org.smssecure.smssecure.txt [new file with mode: 0644]
tests/metadata/org.videolan.vlc.pickle [new file with mode: 0644]
tests/metadata/org.videolan.vlc.yaml [new file with mode: 0644]
tests/metadata/update-pickle.py [new file with mode: 0755]
tests/run-tests
tests/update.TestCase

index 3ac3927c439f84eead6b8d26ac41164064eb30b2..0c9f95f8f84934bacd6cccb1e41a0cf480d722cd 100644 (file)
@@ -445,22 +445,31 @@ the APK files in the repo directory, and
 the metadata files in the metadata directory.
 @end enumerate
 
-The metadata files are simple, easy to edit text files, always named as the
-application's package ID with '.txt' appended.
-
-Note that although the metadata files are designed to be easily read and
-writable by humans, they are also processed and written by various scripts.
-They are capable of rewriting the entire file when necessary. Even so,
-the structure and comments will be preserved correctly, although the order
-of fields will be standardised. (In the event that the original file was
-in a different order, comments are considered as being attached to the field
-following them). In fact, you can standardise all the metadata in a single
-command, without changing the functional content, by running:
+The original metadata files are simple, easy to edit text files,
+always named as the application's package ID with '.txt' appended.
+Additionally, you can use JSON, XML, or YAML for app metadata, using
+the same fields as the original '.txt' format.
+
+Note that although the metadata files are designed to be easily read
+and writable by humans, they are also processed and written by various
+scripts.  The original '.txt' format can be automatically cleaned up
+when necessary.  The structure and comments will be preserved
+correctly, although the order of fields will be standardised. (In the
+event that the original file was in a different order, comments are
+considered as being attached to the field following them). In fact,
+you can standardise all the '.txt' metadata in a single command,
+without changing the functional content, by running:
 
 @example
 fdroid rewritemeta
 @end example
 
+Or just run it on a specific app:
+
+@example
+fdroid rewritemeta org.adaway
+@end example
+
 The following sections describe the fields recognised within the file.
 
 @menu
index 6026e5b4fc699a7a6748affd10b90f785106e3c7..427342be6c6b882ee74c97daf291489848df3121 100644 (file)
@@ -213,6 +213,11 @@ carbon_port = 2003
 # --server option on dedicated secure build server hosts.
 build_server_always = False
 
+# By default, fdroid will use YAML and the custom .txt metadata formats.  It
+# is also possible to have metadata in JSON and XML. You can enable your
+# preferred formats by setting them in a list:
+# accepted_formats = ['json', 'txt', 'xml', 'yaml']
+
 # Limit in number of characters that fields can take up
 # Only the fields listed here are supported, defaults shown
 char_limits = {
index 494a18342c1597659e078966388a902db4e13994..1962dded82df9be449c7b468d655b0bfe41296f5 100644 (file)
@@ -493,14 +493,14 @@ def checkupdates_app(app, first=True):
             logging.warn('Invalid auto update mode "' + mode + '" on ' + app['id'])
 
     if commitmsg:
-        metafile = os.path.join('metadata', app['id'] + '.txt')
-        metadata.write_metadata(metafile, app)
+        metadatapath = os.path.join('metadata', app['id'] + '.txt')
+        metadata.write_metadata(metadatapath, app)
         if options.commit:
-            logging.info("Commiting update for " + metafile)
+            logging.info("Commiting update for " + metadatapath)
             gitcmd = ["git", "commit", "-m", commitmsg]
             if 'auto_author' in config:
                 gitcmd.extend(['--author', config['auto_author']])
-            gitcmd.extend(["--", metafile])
+            gitcmd.extend(["--", metadatapath])
             if subprocess.call(gitcmd) != 0:
                 logging.error("Git commit failed")
                 sys.exit(1)
index d3c7f176fde191567f8512bc26bcdaea1de244b7..0bc1eb5c76da706382392b54e200a87ac587962f 100644 (file)
@@ -59,6 +59,7 @@ default_config = {
     'ant': "ant",
     'mvn3': "mvn",
     'gradle': 'gradle',
+    'accepted_formats': ['txt', 'yaml'],
     'sync_from_local_copy_dir': False,
     'per_app_repos': False,
     'make_current_version_link': True,
index 27a93ca6837615fa1cd85a3e3829ca561510e7ad..31757dbe7ce861d16559720dd3f47ec504540198 100644 (file)
@@ -198,7 +198,7 @@ def main():
         sys.exit(1)
 
     # Construct the metadata...
-    app = metadata.parse_metadata(None)[1]
+    app = metadata.parse_txt_metadata(None)[1]
     app['Web Site'] = website
     app['Source Code'] = sourcecode
     if issuetracker:
@@ -234,9 +234,9 @@ def main():
     with open('build/.fdroidvcs-' + package, 'w') as f:
         f.write(repotype + ' ' + repo)
 
-    metafile = os.path.join('metadata', package + '.txt')
-    metadata.write_metadata(metafile, app)
-    logging.info("Wrote " + metafile)
+    metadatapath = os.path.join('metadata', package + '.txt')
+    metadata.write_metadata(metadatapath, app)
+    logging.info("Wrote " + metadatapath)
 
 
 if __name__ == "__main__":
index 2ec38b0a5e67cfe39ee84e0129073a90104f321d..0ef93ef7f0fa4c10cce94e98e25516c33c35aa32 100644 (file)
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import json
 import os
 import re
+import sys
 import glob
 import cgi
 import logging
 
+import yaml
+# use libyaml if it is available
+try:
+    from yaml import CLoader
+    YamlLoader = CLoader
+except ImportError:
+    from yaml import Loader
+    YamlLoader = Loader
+
+# use the C implementation when available
+import xml.etree.cElementTree as ElementTree
+
 from collections import OrderedDict
 
 import common
@@ -41,7 +55,7 @@ class MetaDataException(Exception):
 # In the order in which they are laid out on files
 app_defaults = OrderedDict([
     ('Disabled', None),
-    ('AntiFeatures', None),
+    ('AntiFeatures', []),
     ('Provides', None),
     ('Categories', ['None']),
     ('License', 'Unknown'),
@@ -78,6 +92,8 @@ app_defaults = OrderedDict([
 
 # In the order in which they are laid out on files
 # Sorted by their action and their place in the build timeline
+# These variables can have varying datatypes. For example, anything with
+# flagtype(v) == 'list' is inited as False, then set as a list of strings.
 flag_defaults = OrderedDict([
     ('disable', False),
     ('commit', None),
@@ -188,14 +204,9 @@ valuetypes = {
                    ["Dogecoin"],
                    []),
 
-    FieldValidator("Boolean",
-                   ['Yes', 'No'], None,
-                   ["Requires Root"],
-                   []),
-
     FieldValidator("bool",
-                   ['yes', 'no'], None,
-                   [],
+                   r'([Yy]es|[Nn]o|[Tt]rue|[Ff]alse)', None,
+                   ["Requires Root"],
                    ['submodules', 'oldsdkloc', 'forceversion', 'forcevercode',
                     'novcheck']),
 
@@ -407,11 +418,9 @@ def description_html(lines, linkres):
     return ps.text_html
 
 
-def parse_srclib(metafile):
+def parse_srclib(metadatapath):
 
     thisinfo = {}
-    if metafile and not isinstance(metafile, file):
-        metafile = open(metafile, "r")
 
     # Defaults for fields that come from metadata
     thisinfo['Repo Type'] = ''
@@ -419,9 +428,11 @@ def parse_srclib(metafile):
     thisinfo['Subdir'] = None
     thisinfo['Prepare'] = None
 
-    if metafile is None:
+    if not os.path.exists(metadatapath):
         return thisinfo
 
+    metafile = open(metadatapath, "r")
+
     n = 0
     for line in metafile:
         n += 1
@@ -464,13 +475,13 @@ def read_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)
+    for metadatapath in sorted(glob.glob(os.path.join(srcdir, '*.txt'))):
+        srclibname = os.path.basename(metadatapath[:-4])
+        srclibs[srclibname] = parse_srclib(metadatapath)
 
 
 # Read all metadata. Returns a list of 'app' objects (which are dictionaries as
-# returned by the parse_metadata function.
+# returned by the parse_txt_metadata function.
 def read_metadata(xref=True):
 
     # Always read the srclibs before the apps, since they can use a srlib as
@@ -483,8 +494,16 @@ def read_metadata(xref=True):
         if not os.path.exists(basedir):
             os.makedirs(basedir)
 
-    for metafile in sorted(glob.glob(os.path.join('metadata', '*.txt'))):
-        appid, appinfo = parse_metadata(metafile)
+    # If there are multiple metadata files for a single appid, then the first
+    # file that is parsed wins over all the others, and the rest throw an
+    # exception. So the original .txt format is parsed first, at least until
+    # newer formats stabilize.
+
+    for metadatapath in sorted(glob.glob(os.path.join('metadata', '*.txt'))
+                               + glob.glob(os.path.join('metadata', '*.json'))
+                               + glob.glob(os.path.join('metadata', '*.xml'))
+                               + glob.glob(os.path.join('metadata', '*.yaml'))):
+        appid, appinfo = parse_metadata(apps, metadatapath)
         check_metadata(appinfo)
         apps[appid] = appinfo
 
@@ -510,7 +529,7 @@ def read_metadata(xref=True):
 def metafieldtype(name):
     if name in ['Description', 'Maintainer Notes']:
         return 'multiline'
-    if name in ['Categories']:
+    if name in ['Categories', 'AntiFeatures']:
         return 'list'
     if name == 'Build Version':
         return 'build'
@@ -560,9 +579,93 @@ def split_list_values(s):
     return [v for v in l if v]
 
 
+def get_default_app_info_list(apps, metadatapath):
+    appid = os.path.splitext(os.path.basename(metadatapath))[0]
+    if appid in apps:
+        logging.critical("'%s' is a duplicate! '%s' is already provided by '%s'"
+                         % (metadatapath, appid, apps[appid]['metadatapath']))
+        sys.exit(1)
+
+    thisinfo = {}
+    thisinfo.update(app_defaults)
+    thisinfo['metadatapath'] = metadatapath
+    if appid is not None:
+        thisinfo['id'] = appid
+
+    # General defaults...
+    thisinfo['builds'] = []
+    thisinfo['comments'] = []
+
+    return appid, thisinfo
+
+
+def post_metadata_parse(thisinfo):
+
+    supported_metadata = app_defaults.keys() + ['comments', 'builds', 'id', 'metadatapath']
+    for k, v in thisinfo.iteritems():
+        if k not in supported_metadata:
+            raise MetaDataException("Unrecognised metadata: {0}: {1}"
+                                    .format(k, v))
+        if type(v) in (float, int):
+            thisinfo[k] = str(v)
+
+    # convert to the odd internal format
+    for k in ('Description', 'Maintainer Notes'):
+        if isinstance(thisinfo[k], basestring):
+            text = thisinfo[k].rstrip().lstrip()
+            thisinfo[k] = text.split('\n')
+
+    supported_flags = (flag_defaults.keys()
+                       + ['vercode', 'version', 'versionCode', 'versionName'])
+    esc_newlines = re.compile('\\\\( |\\n)')
+
+    for build in thisinfo['builds']:
+        for k, v in build.items():
+            if k not in supported_flags:
+                raise MetaDataException("Unrecognised build flag: {0}={1}"
+                                        .format(k, v))
+
+            if k == 'versionCode':
+                build['vercode'] = str(v)
+                del build['versionCode']
+            elif k == 'versionName':
+                build['version'] = str(v)
+                del build['versionName']
+            elif type(v) in (float, int):
+                build[k] = str(v)
+            else:
+                keyflagtype = flagtype(k)
+                if keyflagtype == 'list':
+                    # these can be bools, strings or lists, but ultimately are lists
+                    if isinstance(v, basestring):
+                        build[k] = [v]
+                    elif isinstance(v, bool):
+                        if v:
+                            build[k] = ['yes']
+                        else:
+                            build[k] = ['no']
+                elif keyflagtype == 'script':
+                    build[k] = re.sub(esc_newlines, '', v).lstrip().rstrip()
+                elif keyflagtype == 'bool':
+                    # TODO handle this using <xsd:element type="xsd:boolean> in a schema
+                    if isinstance(v, basestring):
+                        if v == 'true':
+                            build[k] = True
+                        else:
+                            build[k] = False
+
+    if not thisinfo['Description']:
+        thisinfo['Description'].append('No description available')
+
+    for build in thisinfo['builds']:
+        fill_build_defaults(build)
+
+    thisinfo['builds'] = sorted(thisinfo['builds'], key=lambda build: int(build['vercode']))
+
+
 # Parse metadata for a single application.
 #
-#  'metafile' - the filename to read. The package id for the application comes
+#  'metadatapath' - the filename to read. The package id for the application comes
 #               from this filename. Pass None to get a blank entry.
 #
 # Returns a dictionary containing all the details of the application. There are
@@ -576,7 +679,7 @@ def split_list_values(s):
 #  'builds'           - a list of dictionaries containing build information
 #                       for each defined build
 #  'comments'         - a list of comments from the metadata file. Each is
-#                       a tuple of the form (field, comment) where field is
+#                       a list of the form [field, comment] where field is
 #                       the name of the field it preceded in the metadata
 #                       file. Where field is None, the comment goes at the
 #                       end of the file. Alternatively, 'build:version' is
@@ -584,9 +687,141 @@ def split_list_values(s):
 #  'descriptionlines' - original lines of description as formatted in the
 #                       metadata file.
 #
-def parse_metadata(metafile):
 
-    appid = None
+
+def _decode_list(data):
+    '''convert items in a list from unicode to basestring'''
+    rv = []
+    for item in data:
+        if isinstance(item, unicode):
+            item = item.encode('utf-8')
+        elif isinstance(item, list):
+            item = _decode_list(item)
+        elif isinstance(item, dict):
+            item = _decode_dict(item)
+        rv.append(item)
+    return rv
+
+
+def _decode_dict(data):
+    '''convert items in a dict from unicode to basestring'''
+    rv = {}
+    for key, value in data.iteritems():
+        if isinstance(key, unicode):
+            key = key.encode('utf-8')
+        if isinstance(value, unicode):
+            value = value.encode('utf-8')
+        elif isinstance(value, list):
+            value = _decode_list(value)
+        elif isinstance(value, dict):
+            value = _decode_dict(value)
+        rv[key] = value
+    return rv
+
+
+def parse_metadata(apps, metadatapath):
+    root, ext = os.path.splitext(metadatapath)
+    metadataformat = ext[1:]
+    accepted = common.config['accepted_formats']
+    if metadataformat not in accepted:
+        logging.critical('"' + metadatapath
+                         + '" is not in an accepted format, '
+                         + 'convert to: ' + ', '.join(accepted))
+        sys.exit(1)
+
+    if metadataformat == 'txt':
+        return parse_txt_metadata(apps, metadatapath)
+    elif metadataformat == 'json':
+        return parse_json_metadata(apps, metadatapath)
+    elif metadataformat == 'xml':
+        return parse_xml_metadata(apps, metadatapath)
+    elif metadataformat == 'yaml':
+        return parse_yaml_metadata(apps, metadatapath)
+    else:
+        logging.critical('Unknown metadata format: ' + metadatapath)
+        sys.exit(1)
+
+
+def parse_json_metadata(apps, metadatapath):
+
+    appid, thisinfo = get_default_app_info_list(apps, metadatapath)
+
+    # fdroid metadata is only strings and booleans, no floats or ints. And
+    # json returns unicode, and fdroidserver still uses plain python strings
+    # TODO create schema using https://pypi.python.org/pypi/jsonschema
+    jsoninfo = json.load(open(metadatapath, 'r'),
+                         object_hook=_decode_dict,
+                         parse_int=lambda s: s,
+                         parse_float=lambda s: s)
+    thisinfo.update(jsoninfo)
+    post_metadata_parse(thisinfo)
+
+    return (appid, thisinfo)
+
+
+def parse_xml_metadata(apps, metadatapath):
+
+    appid, thisinfo = get_default_app_info_list(apps, metadatapath)
+
+    tree = ElementTree.ElementTree(file=metadatapath)
+    root = tree.getroot()
+
+    if root.tag != 'resources':
+        logging.critical(metadatapath + ' does not have root as <resources></resources>!')
+        sys.exit(1)
+
+    supported_metadata = app_defaults.keys()
+    for child in root:
+        if child.tag != 'builds':
+            # builds does not have name="" attrib
+            name = child.attrib['name']
+            if name not in supported_metadata:
+                raise MetaDataException("Unrecognised metadata: <"
+                                        + child.tag + ' name="' + name + '">'
+                                        + child.text
+                                        + "</" + child.tag + '>')
+
+        if child.tag == 'string':
+            thisinfo[name] = child.text
+        elif child.tag == 'string-array':
+            items = []
+            for item in child:
+                items.append(item.text)
+            thisinfo[name] = items
+        elif child.tag == 'builds':
+            builds = []
+            for build in child:
+                builddict = dict()
+                for key in build:
+                    builddict[key.tag] = key.text
+                builds.append(builddict)
+            thisinfo['builds'] = builds
+
+    # TODO handle this using <xsd:element type="xsd:boolean> in a schema
+    if not isinstance(thisinfo['Requires Root'], bool):
+        if thisinfo['Requires Root'] == 'true':
+            thisinfo['Requires Root'] = True
+        else:
+            thisinfo['Requires Root'] = False
+
+    post_metadata_parse(thisinfo)
+
+    return (appid, thisinfo)
+
+
+def parse_yaml_metadata(apps, metadatapath):
+
+    appid, thisinfo = get_default_app_info_list(apps, metadatapath)
+
+    yamlinfo = yaml.load(open(metadatapath, 'r'), Loader=YamlLoader)
+    thisinfo.update(yamlinfo)
+    post_metadata_parse(thisinfo)
+
+    return (appid, thisinfo)
+
+
+def parse_txt_metadata(apps, metadatapath):
+
     linedesc = None
 
     def add_buildflag(p, thisbuild):
@@ -658,24 +893,11 @@ def parse_metadata(metafile):
         if not curcomments:
             return
         for comment in curcomments:
-            thisinfo['comments'].append((key, comment))
+            thisinfo['comments'].append([key, comment])
         del curcomments[:]
 
-    thisinfo = {}
-    if metafile:
-        if not isinstance(metafile, file):
-            metafile = open(metafile, "r")
-        appid = metafile.name[9:-4]
-
-    thisinfo.update(app_defaults)
-    thisinfo['id'] = appid
-
-    # General defaults...
-    thisinfo['builds'] = []
-    thisinfo['comments'] = []
-
-    if metafile is None:
-        return appid, thisinfo
+    appid, thisinfo = get_default_app_info_list(apps, metadatapath)
+    metafile = open(metadatapath, "r")
 
     mode = 0
     buildlines = []
@@ -788,13 +1010,7 @@ def parse_metadata(metafile):
     elif mode == 3:
         raise MetaDataException("Unterminated build in " + metafile.name)
 
-    if not thisinfo['Description']:
-        thisinfo['Description'].append('No description available')
-
-    for build in thisinfo['builds']:
-        fill_build_defaults(build)
-
-    thisinfo['builds'] = sorted(thisinfo['builds'], key=lambda build: int(build['vercode']))
+    post_metadata_parse(thisinfo)
 
     return (appid, thisinfo)
 
@@ -831,7 +1047,7 @@ def write_metadata(dest, app):
 
     mf = open(dest, 'w')
     writefield_nonempty('Disabled')
-    writefield_nonempty('AntiFeatures')
+    writefield('AntiFeatures')
     writefield_nonempty('Provides')
     writefield('Categories')
     writefield('License')
@@ -854,7 +1070,7 @@ def write_metadata(dest, app):
     mf.write('.\n')
     mf.write('\n')
     if app['Requires Root']:
-        writefield('Requires Root', 'Yes')
+        writefield('Requires Root', 'yes')
         mf.write('\n')
     if app['Repo Type']:
         writefield('Repo Type')
index b097e53c68256563d6ac716e0b39fdba775e96bf..5f6f190e3f8e0dd73a82873cd3ef43d74600a7e4 100644 (file)
@@ -2,6 +2,7 @@
 # -*- coding: utf-8 -*-
 #
 # rewritemeta.py - part of the FDroid server tools
+# This cleans up the original .txt metadata file format.
 # Copyright (C) 2010-12, Ciaran Gultnieks, ciaran@ciarang.com
 #
 # This program is free software: you can redistribute it and/or modify
@@ -46,8 +47,14 @@ def main():
     apps = common.read_app_args(args, allapps, False)
 
     for appid, app in apps.iteritems():
-        logging.info("Writing " + appid)
-        metadata.write_metadata(os.path.join('metadata', appid) + '.txt', app)
+        metadatapath = app['metadatapath']
+        ext = os.path.splitext(metadatapath)[1][1:]
+        if ext == 'txt':
+            logging.info("Rewriting " + metadatapath)
+            metadata.write_metadata(metadatapath, app)
+        else:
+            logging.info("Ignoring %s file at '%s'"
+                         % (ext.upper(), metadatapath))
 
     logging.info("Finished.")
 
index b320f9dbcbd470ced610f8a4f4c02c1df8605b94..5df006948176b9bfe0f8759e21f1b4a21107b483 100644 (file)
@@ -256,8 +256,7 @@ def main():
     for app in metaapps:
         if app['AntiFeatures'] is None:
             continue
-        antifeatures = [a.strip() for a in app['AntiFeatures'].split(',')]
-        for antifeature in antifeatures:
+        for antifeature in app['AntiFeatures']:
             afs[antifeature] += 1
     with open('stats/antifeatures.txt', 'w') as f:
         for antifeature, count in afs.most_common():
index 291861a3cda1d8a39497863b9c5aaddd01414ae9..7f32292229c6dae60055ed3c80a6912f0341d672 100644 (file)
@@ -92,9 +92,13 @@ def update_wiki(apps, sortedids, apks):
         wikidata = ''
         if app['Disabled']:
             wikidata += '{{Disabled|' + app['Disabled'] + '}}\n'
-        if app['AntiFeatures']:
-            for af in app['AntiFeatures'].split(','):
+        if 'AntiFeatures' in app:
+            for af in app['AntiFeatures']:
                 wikidata += '{{AntiFeature|' + af + '}}\n'
+        if app['Requires Root']:
+            requiresroot = 'Yes'
+        else:
+            requiresroot = 'No'
         wikidata += '{{App|id=%s|name=%s|added=%s|lastupdated=%s|source=%s|tracker=%s|web=%s|changelog=%s|donate=%s|flattr=%s|bitcoin=%s|litecoin=%s|dogecoin=%s|license=%s|root=%s}}\n' % (
             appid,
             app['Name'],
@@ -110,7 +114,7 @@ def update_wiki(apps, sortedids, apks):
             app['Litecoin'],
             app['Dogecoin'],
             app['License'],
-            app.get('Requires Root', 'No'))
+            requiresroot)
 
         if app['Provides']:
             wikidata += "This app provides: %s" % ', '.join(app['Summary'].split(','))
@@ -847,7 +851,7 @@ def make_index(apps, sortedids, apks, repodir, archive, categories):
         addElement('marketvercode', app['Current Version Code'], doc, apel)
 
         if app['AntiFeatures']:
-            af = app['AntiFeatures'].split(',')
+            af = app['AntiFeatures']
             if af:
                 addElementNonEmpty('antifeatures', ','.join(af), doc, apel)
         if app['Provides']:
index 371836311c605c77be6fefc7c01146295d18715b..891ad19b30a4e2185fb9aecfb06ba0faff071d4b 100755 (executable)
@@ -6,7 +6,7 @@
 # Redirect output to stderr.
 exec 1>&2
 
-PY_FILES="fdroid makebuildserver setup.py examples/*.py buildserver/*.py fdroidserver/*.py"
+PY_FILES="fdroid makebuildserver setup.py examples/*.py buildserver/*.py fdroidserver/*.py tests/*.TestCase"
 SH_FILES="hooks/pre-commit"
 BASH_FILES="fd-commit jenkins-build docs/update.sh completion/bash-completion"
 RB_FILES="buildserver/cookbooks/*/recipes/*.rb"
index 7b323f4b891951049590dc1921b9792cf093241f..a98fe264972a799687569285d6c293024022b826 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -33,6 +33,7 @@ setup(name='fdroidserver',
           'apache-libcloud >= 0.14.1',
           'pyasn1',
           'pyasn1-modules',
+          'PyYAML',
           'requests',
       ],
       classifiers=[
index 2b2496bc30d57471952042364a01e73e24883c25..9f80c1df93af75130dc9e2483db9d455cceecd0f 100755 (executable)
@@ -12,16 +12,16 @@ import sys
 import tempfile
 import unittest
 
-localmodule = os.path.realpath(os.path.join(
-        os.path.dirname(inspect.getfile(inspect.currentframe())),
-        '..'))
+localmodule = os.path.realpath(
+    os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..'))
 print('localmodule: ' + localmodule)
 if localmodule not in sys.path:
-    sys.path.insert(0,localmodule)
+    sys.path.insert(0, localmodule)
 
 import fdroidserver.common
 import fdroidserver.metadata
 
+
 class CommonTest(unittest.TestCase):
     '''fdroidserver/common.py'''
 
@@ -50,7 +50,7 @@ class CommonTest(unittest.TestCase):
     def test_find_sdk_tools_cmd(self):
         fdroidserver.common.config = dict()
         # TODO add this once everything works without sdk_path set in config
-        #self._find_all()
+        # self._find_all()
         sdk_path = os.getenv('ANDROID_HOME')
         if os.path.exists(sdk_path):
             fdroidserver.common.config['sdk_path'] = sdk_path
@@ -67,7 +67,7 @@ class CommonTest(unittest.TestCase):
         config = dict()
         config['sdk_path'] = os.getenv('ANDROID_HOME')
         fdroidserver.common.config = config
-        self._set_build_tools();
+        self._set_build_tools()
         config['aapt'] = fdroidserver.common.find_sdk_tools_cmd('aapt')
         # these are set debuggable
         testfiles = []
@@ -91,13 +91,13 @@ class CommonTest(unittest.TestCase):
         for name in ["org.fdroid.fdroid",
                      "org.f_droid.fdr0ID"]:
             self.assertTrue(fdroidserver.common.is_valid_package_name(name),
-                    "{0} should be a valid package name".format(name))
+                            "{0} should be a valid package name".format(name))
         for name in ["0rg.fdroid.fdroid",
                      ".f_droid.fdr0ID",
                      "org.fdroid/fdroid",
                      "/org.fdroid.fdroid"]:
             self.assertFalse(fdroidserver.common.is_valid_package_name(name),
-                    "{0} should not be a valid package name".format(name))
+                             "{0} should not be a valid package name".format(name))
 
     def test_prepare_sources(self):
         testint = 99999999
index f0a6a968ee3af4e52213fb68e747ec223e08985c..2734f132b0298eb9e28ab0a5e397c86c3cb59f00 100755 (executable)
@@ -9,16 +9,16 @@ import os
 import sys
 import unittest
 
-localmodule = os.path.realpath(os.path.join(
-        os.path.dirname(inspect.getfile(inspect.currentframe())),
-        '..'))
+localmodule = os.path.realpath(
+    os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..'))
 print('localmodule: ' + localmodule)
 if localmodule not in sys.path:
-    sys.path.insert(0,localmodule)
+    sys.path.insert(0, localmodule)
 
 import fdroidserver.common
 import fdroidserver.install
 
+
 class InstallTest(unittest.TestCase):
     '''fdroidserver/install.py'''
 
diff --git a/tests/metadata.TestCase b/tests/metadata.TestCase
new file mode 100755 (executable)
index 0000000..69f4c6e
--- /dev/null
@@ -0,0 +1,55 @@
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
+
+# http://www.drdobbs.com/testing/unit-testing-with-python/240165163
+
+import inspect
+import optparse
+import os
+import pickle
+import sys
+import unittest
+
+localmodule = os.path.realpath(
+    os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..'))
+print('localmodule: ' + localmodule)
+if localmodule not in sys.path:
+    sys.path.insert(0, localmodule)
+
+import fdroidserver.common
+import fdroidserver.metadata
+
+
+class MetadataTest(unittest.TestCase):
+    '''fdroidserver/metadata.py'''
+
+    def test_read_metadata(self):
+        testsdir = os.path.dirname(__file__)
+        os.chdir(testsdir)
+
+        self.maxDiff = None
+
+        # these need to be set to prevent code running on None, only
+        # 'accepted_formats' is actually used in metadata.py
+        config = dict()
+        config['sdk_path'] = '/opt/android-sdk'
+        config['ndk_paths'] = dict()
+        config['accepted_formats'] = ['json', 'txt', 'xml', 'yaml']
+        fdroidserver.common.config = config
+
+        apps = fdroidserver.metadata.read_metadata(xref=True)
+        for appid in ('org.smssecure.smssecure', 'org.adaway', 'net.osmand.plus', 'org.videolan.vlc'):
+            frompickle = pickle.load(open(os.path.join('metadata', appid + '.pickle')))
+            self.assertTrue(appid in apps.keys())
+            self.assertEquals(apps[appid], frompickle)
+
+
+if __name__ == "__main__":
+    parser = optparse.OptionParser()
+    parser.add_option("-v", "--verbose", action="store_true", default=False,
+                      help="Spew out even more information than normal")
+    (fdroidserver.common.options, args) = parser.parse_args(['--verbose'])
+
+    newSuite = unittest.TestSuite()
+    newSuite.addTest(unittest.makeSuite(MetadataTest))
+    unittest.main()
diff --git a/tests/metadata/net.osmand.plus.pickle b/tests/metadata/net.osmand.plus.pickle
new file mode 100644 (file)
index 0000000..e900a8e
--- /dev/null
@@ -0,0 +1,504 @@
+(dp0
+S'Update Check Data'
+p1
+NsS'Bitcoin'
+p2
+NsS'AntiFeatures'
+p3
+(lp4
+S'Tracking'
+p5
+aS'NonFreeNet'
+p6
+asS'Web Site'
+p7
+S'http://osmand.net'
+p8
+sS'Auto Update Mode'
+p9
+S'None'
+p10
+sS'Provides'
+p11
+NsS'Issue Tracker'
+p12
+S'https://github.com/osmandapp/Osmand/issues'
+p13
+sS'Donate'
+p14
+S'https://code.google.com/p/osmand/#Please_support_the_project'
+p15
+sS'id'
+p16
+S'net.osmand.plus'
+p17
+sS'Description'
+p18
+(lp19
+S"Osmand~'s features can be extended by enabling the plugins via the settings,"
+p20
+aS'which include online maps from many sources, tracking, OpenStreetMap (OSM) editing and'
+p21
+aS'accessibility enhancements.'
+p22
+aS''
+p23
+aS'Map data of both vector and raster types can be stored on the phone memory'
+p24
+aS'card for offline usage, and navigation by default uses offline methods. Map'
+p25
+aS'data packages for many territories can be downloaded from within the app and'
+p26
+aS'there is a desktop program available on the website as well for creating your'
+p27
+aS'own.'
+p28
+ag23
+aS'Anti-Features: Tracking - It will send your device and application specs to an'
+p29
+aS'Analytics server upon downloading the list of maps you can download.'
+p30
+ag23
+aS'[https://osmandapp.github.io/changes.html Changelog]'
+p31
+asS'Requires Root'
+p32
+I00
+sS'comments'
+p33
+(lp34
+sS'Repo Type'
+p35
+S'git'
+p36
+sS'Repo'
+p37
+S'https://github.com/mvdan/OsmAnd-submodules'
+p38
+sS'No Source Since'
+p39
+g23
+sS'Auto Name'
+p40
+g23
+sS'Categories'
+p41
+(lp42
+S'Navigation'
+p43
+asS'Source Code'
+p44
+S'https://github.com/osmandapp/Osmand'
+p45
+sS'Litecoin'
+p46
+NsS'Update Check Ignore'
+p47
+NsS'Name'
+p48
+S'OsmAnd~'
+p49
+sS'License'
+p50
+S'GPLv3'
+p51
+sS'Changelog'
+p52
+g23
+sS'Update Check Mode'
+p53
+S'None'
+p54
+sS'Summary'
+p55
+S'Offline/online maps and navigation'
+p56
+sS'Dogecoin'
+p57
+NsS'Maintainer Notes'
+p58
+(lp59
+S'No UCMs apply because git never contains actual releases, only pre-releses.'
+p60
+ag23
+aS'The build instructions have been moved to a script in the root of the repo,'
+p61
+aS"'build'. This way it can be updated along with the submodules."
+p62
+asS'Current Version Code'
+p63
+S'197'
+p64
+sS'Binaries'
+p65
+NsS'Archive Policy'
+p66
+NsS'builds'
+p67
+(lp68
+(dp69
+S'submodules'
+p70
+I01
+sS'vercode'
+p71
+S'182'
+p72
+sS'forceversion'
+p73
+I00
+sS'oldsdkloc'
+p74
+I00
+sS'gradleprops'
+p75
+(lp76
+sS'scanignore'
+p77
+(lp78
+sS'patch'
+p79
+(lp80
+sS'srclibs'
+p81
+(lp82
+sS'output'
+p83
+S'bin/OsmAnd-release-unsigned.apk'
+p84
+sS'encoding'
+p85
+NsS'extlibs'
+p86
+(lp87
+sS'init'
+p88
+g23
+sS'version'
+p89
+S'1.8.2'
+p90
+sS'build'
+p91
+S'./old-ndk-build.sh && ant -Dsdk.dir="$ANDROID_SDK" -Dndk.dir="$ANDROID_NDK" -DBLACKBERRY_BUILD=false -DBUILD_SUFFIX= -DAPK_NUMBER_VERSION=182 "-DFEATURES=+play_market +gps_status -parking_plugin -blackberry -amazon -route_nav" -DCLEAN_CPP=false -DPACKAGE_TO_BUILT=net.osmand.plus -DAPK_VERSION=1.8.2 -Dnet.osmand.plus= -Dbuild.version=1.8.2 -Dbuild.version.code=182 -Dnativeoff=false "-DversionFeatures=+play_market +gps_status -parking_plugin -blackberry -amazon -route_nav" clean release'
+p92
+sS'ndk_path'
+p93
+g23
+sS'kivy'
+p94
+I00
+sS'subdir'
+p95
+S'android/OsmAnd'
+p96
+sS'forcevercode'
+p97
+I00
+sS'preassemble'
+p98
+(lp99
+sS'update'
+p100
+(lp101
+S'auto'
+p102
+asS'maven'
+p103
+I00
+sS'disable'
+p104
+I00
+sS'rm'
+p105
+(lp106
+sS'scandelete'
+p107
+(lp108
+sS'buildjni'
+p109
+(lp110
+S'no'
+p111
+asS'ndk'
+p112
+S'r10e'
+p113
+sS'target'
+p114
+NsS'type'
+p115
+S'raw'
+p116
+sS'antcommands'
+p117
+NsS'gradle'
+p118
+I00
+sS'prebuild'
+p119
+S'sed -i \'s/"OsmAnd+"/"OsmAnd~"/g\' build.xml'
+p120
+sS'novcheck'
+p121
+I00
+sS'commit'
+p122
+S'76ada6c8a08afe69acb755503373ac36328ef665'
+p123
+sa(dp124
+S'submodules'
+p125
+I01
+sg71
+S'183'
+p126
+sg73
+I00
+sg74
+I00
+sg75
+(lp127
+sg77
+g78
+sg79
+g80
+sg81
+g82
+sS'output'
+p128
+S'bin/OsmAnd-release-unsigned.apk'
+p129
+sg85
+Nsg86
+g87
+sg88
+g23
+sg89
+S'1.8.3'
+p130
+sS'subdir'
+p131
+S'android/OsmAnd'
+p132
+sg93
+g23
+sg94
+I00
+sS'build'
+p133
+S'../../build'
+p134
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g106
+sg107
+g108
+sS'buildjni'
+p135
+(lp136
+S'no'
+p137
+asg112
+g113
+sg114
+Nsg115
+g116
+sg117
+Nsg118
+I00
+sS'prebuild'
+p138
+g23
+sg121
+I00
+sS'commit'
+p139
+S'1.8.3'
+p140
+sa(dp141
+S'submodules'
+p142
+I01
+sg71
+S'196'
+p143
+sg73
+I00
+sg74
+I00
+sg75
+(lp144
+sg77
+g78
+sg79
+g80
+sg81
+g82
+sS'output'
+p145
+S'bin/OsmAnd-release-unsigned.apk'
+p146
+sg85
+Nsg86
+g87
+sg88
+g23
+sg89
+S'1.9.4'
+p147
+sS'subdir'
+p148
+S'android/OsmAnd'
+p149
+sg93
+g23
+sg94
+I00
+sS'build'
+p150
+S'../../build'
+p151
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g106
+sg107
+g108
+sS'buildjni'
+p152
+(lp153
+S'no'
+p154
+asS'ndk'
+p155
+S'r10d'
+p156
+sg114
+Nsg115
+g116
+sg117
+Nsg118
+I00
+sg138
+g23
+sg121
+I00
+sS'commit'
+p157
+S'1.9.4'
+p158
+sa(dp159
+S'submodules'
+p160
+I01
+sg71
+S'197'
+p161
+sg73
+I00
+sg74
+I00
+sg75
+(lp162
+sg77
+g78
+sg79
+g80
+sg81
+g82
+sS'output'
+p163
+S'bin/OsmAnd-release-unsigned.apk'
+p164
+sg85
+Nsg86
+g87
+sg88
+g23
+sg89
+S'1.9.5'
+p165
+sS'subdir'
+p166
+S'android/OsmAnd'
+p167
+sg93
+g23
+sg94
+I00
+sS'build'
+p168
+S'../../build'
+p169
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g106
+sg107
+g108
+sS'buildjni'
+p170
+(lp171
+S'no'
+p172
+asS'ndk'
+p173
+S'r10d'
+p174
+sg114
+Nsg115
+g116
+sg117
+Nsg118
+I00
+sg138
+g23
+sg121
+I00
+sS'commit'
+p175
+S'1.9.5'
+p176
+sasS'FlattrID'
+p177
+NsS'metadatapath'
+p178
+S'metadata/net.osmand.plus.xml'
+p179
+sS'Disabled'
+p180
+NsS'Update Check Name'
+p181
+NsS'Vercode Operation'
+p182
+NsS'Current Version'
+p183
+S'1.9.5'
+p184
+s.
\ No newline at end of file
diff --git a/tests/metadata/net.osmand.plus.xml b/tests/metadata/net.osmand.plus.xml
new file mode 100644 (file)
index 0000000..4b7ac8a
--- /dev/null
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<resources>
+  <string-array name="AntiFeatures">
+    <item>Tracking</item>
+    <item>NonFreeNet</item>
+  </string-array>
+
+  <string-array name="Categories">
+    <item>Navigation</item>
+  </string-array>
+
+  <string name="License">GPLv3</string>
+  <string name="Web Site">http://osmand.net</string>
+  <string name="Source Code">https://github.com/osmandapp/Osmand</string>
+  <string name="Issue Tracker">https://github.com/osmandapp/Osmand/issues</string>
+  <string name="Donate">https://code.google.com/p/osmand/#Please_support_the_project</string>
+
+  <string name="Name">OsmAnd~</string>
+  <string name="Summary">Offline/online maps and navigation</string>
+  <string name="Description">Osmand~'s features can be extended by enabling the plugins via the settings,
+which include online maps from many sources, tracking, OpenStreetMap (OSM) editing and
+accessibility enhancements.
+
+Map data of both vector and raster types can be stored on the phone memory
+card for offline usage, and navigation by default uses offline methods. Map
+data packages for many territories can be downloaded from within the app and
+there is a desktop program available on the website as well for creating your
+own.
+
+Anti-Features: Tracking - It will send your device and application specs to an
+Analytics server upon downloading the list of maps you can download.
+
+[https://osmandapp.github.io/changes.html Changelog]
+</string>
+
+  <string name="Repo Type">git</string>
+  <string name="Repo">https://github.com/mvdan/OsmAnd-submodules</string>
+<!--  <string name="Repo">https://github.com/osmandapp/Osmand</string/ -->
+
+<!--
+# Old builds with the old repo
+#Build:0.6.5,34
+#    commit=v0.6.5
+#    subdir=OsmAnd
+#    encoding=utf-8
+#    prebuild=mkdir assets && \
+#        mkdir raw
+#
+#Build:0.6.6,36
+#    commit=v0.6.6_2
+#    subdir=OsmAnd
+#    encoding=utf-8
+#    prebuild=mkdir raw
+#
+#Build:0.6.7,37
+#    commit=v0.6.7
+#    subdir=OsmAnd
+#    encoding=utf-8
+#    patch=code37.patch
+#    prebuild=mkdir raw
+#
+#Build:0.6.8,39
+#    commit=v0.6.8
+#    subdir=OsmAnd
+#    encoding=utf-8
+#    prebuild=mkdir raw
+#
+#Build:0.6.8',41
+#    disable=No corresponding source for whatever this is
+#    commit=unknown - see disabled
+#
+#Build:0.6.9,42
+#    commit=v0.6.9
+#    subdir=OsmAnd
+#    encoding=utf-8
+#    prebuild=mkdir raw
+#
+#Build:0.6.9',43
+#    disable=No corresponding source for whatever this is
+#    commit=unknown - see disabled
+#
+#Build:0.8.1,65
+#    commit=d62472532d8
+#    subdir=OsmAnd
+#    target=android-8
+#    init=rm -f build.xml
+#    encoding=utf-8
+#    forceversion=yes
+#    prebuild=cd ../DataExtractionOSM && \
+#        ant compile build && \
+#        cd ../OsmAnd/ && \
+#        cp ../DataExtractionOSM/build/OsmAndMapCreator.jar libs/ && \
+#        zip -d libs/OsmAndMapCreator.jar net/osmand/LogUtil.class && \
+#        cp -r ../DataExtractionOSM/build/lib/ libs/
+#    buildjni=no
+#
+#Build:0.8.2,71
+#    commit=50a4733475cd
+#    subdir=OsmAnd
+#    submodules=yes
+#    target=android-8
+#    init=rm -f build.xml
+#    encoding=utf-8
+#    forceversion=yes
+#    forcevercode=yes
+#    prebuild=cd ../DataExtractionOSM && \
+#        ant compile build && \
+#        cd ../OsmAnd/ && \
+#        sed -i 's/app_version">[^<]*/app_version">0.8.2-fdroid/' res/values/no_translate.xml && \
+#        cp ../DataExtractionOSM/build/OsmAndMapCreator.jar libs/ && \
+#        zip -d libs/OsmAndMapCreator.jar net/osmand/LogUtil.class && \
+#        cp -r ../DataExtractionOSM/build/lib/ libs/
+#    buildjni=yes
+-->
+
+<builds>
+
+  <build>
+    <versionCode>182</versionCode>
+    <versionName>1.8.2</versionName>
+    <commit>76ada6c8a08afe69acb755503373ac36328ef665</commit>
+    <subdir>android/OsmAnd</subdir>
+    <submodules>true</submodules>
+    <output>bin/OsmAnd-release-unsigned.apk</output>
+    <prebuild>sed -i 's/"OsmAnd+"/"OsmAnd~"/g' build.xml</prebuild>
+    <build>./old-ndk-build.sh &amp;&amp; ant -Dsdk.dir="$ANDROID_SDK" -Dndk.dir="$ANDROID_NDK" -DBLACKBERRY_BUILD=false -DBUILD_SUFFIX= -DAPK_NUMBER_VERSION=182 "-DFEATURES=+play_market +gps_status -parking_plugin -blackberry -amazon -route_nav" -DCLEAN_CPP=false -DPACKAGE_TO_BUILT=net.osmand.plus -DAPK_VERSION=1.8.2 -Dnet.osmand.plus= -Dbuild.version=1.8.2 -Dbuild.version.code=182 -Dnativeoff=false "-DversionFeatures=+play_market +gps_status -parking_plugin -blackberry -amazon -route_nav" clean release</build>
+    <buildjni>no</buildjni>
+  </build>
+
+  <build>
+    <versionName>1.8.3</versionName>
+    <versionCode>183</versionCode>
+    <commit>1.8.3</commit>
+    <subdir>android/OsmAnd</subdir>
+    <submodules>true</submodules>
+    <output>bin/OsmAnd-release-unsigned.apk</output>
+    <build>../../build</build>
+    <buildjni>no</buildjni>
+  </build>
+
+  <build>
+    <versionName>1.9.4</versionName>
+    <versionCode>196</versionCode>
+    <commit>1.9.4</commit>
+    <subdir>android/OsmAnd</subdir>
+    <submodules>true</submodules>
+    <output>bin/OsmAnd-release-unsigned.apk</output>
+    <build>../../build</build>
+    <buildjni>no</buildjni>
+    <ndk>r10d</ndk>
+  </build>
+
+  <build>
+    <versionName>1.9.5</versionName>
+    <versionCode>197</versionCode>
+    <commit>1.9.5</commit>
+    <subdir>android/OsmAnd</subdir>
+    <submodules>true</submodules>
+    <output>bin/OsmAnd-release-unsigned.apk</output>
+    <build>../../build</build>
+    <buildjni>no</buildjni>
+    <ndk>r10d</ndk>
+  </build>
+
+</builds>
+
+  <string name="Maintainer Notes">
+No UCMs apply because git never contains actual releases, only pre-releses.
+
+The build instructions have been moved to a script in the root of the repo,
+'build'. This way it can be updated along with the submodules.
+  </string>
+
+  <string name="Auto Update Mode">None</string>
+  <string name="Update Check Mode">None</string>
+  <string name="Current Version">1.9.5</string>
+  <string name="Current Version Code">197</string>
+
+</resources>
\ No newline at end of file
diff --git a/tests/metadata/org.adaway.json b/tests/metadata/org.adaway.json
new file mode 100644 (file)
index 0000000..954b21c
--- /dev/null
@@ -0,0 +1,284 @@
+{
+    "Auto Name": "AdAway",
+    "Auto Update Mode": "Version v%v",
+    "Categories": ["System", "Security"],
+    "Current Version": "3.0",
+    "Current Version Code": 52,
+    "Description": [
+        "An ad blocker that uses the hosts file. The hosts file",
+        "contains a list of mappings between hostnames and IP addresses. When",
+        "an app requests an ad, that request is directed to 127.0.0.1 which does",
+        "nothing. There are options to run a web server",
+        "to respond to blocked hostnames and to direct requests to the IP",
+        "address of your choosing. You can download hosts files from the",
+        "app but it is possible to use your own and to add certain sites",
+        "to the white- and black-lists.",
+        "",
+        "[https://github.com/dschuermann/ad-away/raw/HEAD/CHANGELOG Changelog]",
+        "",
+        "Requires root: Yes. The hosts files is located in /system which is normally",
+        "read-only."
+    ],
+    "Donate": "http://sufficientlysecure.org/index.php/adaway",
+    "FlattrID": "369138",
+    "Issue Tracker": "https://github.com/dschuermann/ad-away/issues",
+    "License": "GPLv3",
+    "Provides": "org.sufficientlysecure.adaway",
+    "Repo": "https://github.com/dschuermann/ad-away.git",
+    "Repo Type": "git",
+    "Requires Root": true,
+    "Source Code": "https://github.com/dschuermann/ad-away",
+    "Summary": "Block advertisements",
+    "Update Check Mode": "Tags",
+    "Web Site": "http://sufficientlysecure.org/index.php/adaway",
+
+    "builds": [
+        {
+            "buildjni": true,
+            "commit": "ea5378a94ee0dc1d99d2cec95fae7e6d81afb2b9",
+            "subdir": "org_adaway/",
+            "versionCode": 13,
+            "versionName": "1.12"
+        },
+        {
+            "buildjni": true,
+            "commit": "4128e59da2eac5c2904c7c7568d298ca51e79540",
+            "patch": ["defprop.patch"],
+            "subdir": "org_adaway/",
+            "versionCode": 16,
+            "versionName": "1.15"
+        },
+        {
+            "buildjni": true,
+            "commit": "0b9985398b9eef7baf6aadd0dbb12002bc199d2e",
+            "patch": ["defprop.patch"],
+            "subdir": "org_adaway/",
+            "versionCode": 19,
+            "versionName": "1.18"
+        },
+        {
+            "buildjni": true,
+            "commit": "ab27f4dab5f3ea5e228cfb4a6b0e1fbf53695f22",
+            "patch": ["defprop.patch"],
+            "subdir": "org_adaway/",
+            "versionCode": 20,
+            "versionName": "1.19"
+        },
+        {
+            "buildjni": true,
+            "commit": "695e3801e4081026c8f7213a2345fc451d5eb89c",
+            "patch": ["defprop.patch"],
+            "subdir": "org_adaway/",
+            "versionCode": 21,
+            "versionName": "1.20"
+        },
+        {
+            "buildjni": true,
+            "commit": "65138c11cc8b6affd28b68e125fbc1dff0886a4e",
+            "patch": ["defprop.patch"],
+            "subdir": "org_adaway/",
+            "versionCode": 22,
+            "versionName": "1.21"
+        },
+        {
+            "commit": "unknown - see disabled",
+            "disable": "no source in repo",
+            "versionCode": 24,
+            "versionName": "1.23"
+        },
+        {
+            "buildjni": true,
+            "commit": "f811e53e1e1d2ee047b18715fd7d2072b90ae76b",
+            "prebuild": "android update project -p ../com_actionbarsherlock",
+            "subdir": "org_adaway/",
+            "versionCode": 25,
+            "versionName": "1.24"
+        },
+        {
+            "buildjni": true,
+            "commit": "ff97932761cdee68638dc2550751a64b2cbe18e7",
+            "prebuild": "android update project -p ../com_actionbarsherlock",
+            "subdir": "org_adaway/",
+            "versionCode": 26,
+            "versionName": "1.25"
+        },
+        {
+            "buildjni": true,
+            "commit": "33d4d80998f30bafc88c04c80cbae00b03916f99",
+            "prebuild": "android update project -p ../com_actionbarsherlock",
+            "subdir": "org_adaway/",
+            "versionCode": 27,
+            "versionName": "1.26"
+        },
+        {
+            "buildjni": true,
+            "commit": "743d25a7e287505461f33f4b8e57e4cf988fffea",
+            "prebuild": "android update project -p ../com_actionbarsherlock",
+            "subdir": "org_adaway/",
+            "versionCode": 28,
+            "versionName": "1.27"
+        },
+        {
+            "buildjni": true,
+            "commit": "eaa07f4",
+            "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/*",
+            "subdir": "org_adaway/",
+            "versionCode": 30,
+            "versionName": "1.29"
+        },
+        {
+            "buildjni": false,
+            "commit": "71ced3f",
+            "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && rm libs/android-support-v4.jar",
+            "subdir": "org_adaway/",
+            "versionCode": 33,
+            "versionName": "1.32"
+        },
+        {
+            "buildjni": false,
+            "commit": "9d63c18",
+            "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/*",
+            "subdir": "org_adaway/",
+            "versionCode": 34,
+            "versionName": "1.33"
+        },
+        {
+            "buildjni": false,
+            "commit": "f2568b1",
+            "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations",
+            "subdir": "org_adaway/",
+            "versionCode": 35,
+            "versionName": "1.34"
+        },
+        {
+            "buildjni": false,
+            "commit": "7442d5d",
+            "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations",
+            "subdir": "org_adaway/",
+            "versionCode": 36,
+            "versionName": "1.35"
+        },
+        {
+            "buildjni": false,
+            "commit": "83fc713",
+            "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations",
+            "subdir": "org_adaway/",
+            "versionCode": 37,
+            "versionName": "1.36"
+        },
+        {
+            "buildjni": false,
+            "commit": "70da32b567122b701cdcb1609b780eb85732028f",
+            "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations",
+            "subdir": "org_adaway/",
+            "versionCode": 38,
+            "versionName": "1.37"
+        },
+        {
+            "buildjni": true,
+            "commit": "v2.1",
+            "extlibs": ["htmlcleaner/htmlcleaner-2.2.jar"],
+            "init": "rm android-libs/Donations/custom_rules.xml && git clone https://github.com/dschuermann/HtmlSpanner android-libs/HtmlSpanner",
+            "prebuild": "rm -rf ../update_zip libs/root-commands-1.2.jar libs/htmlspanner-0.2-fork.jar && cp -f libs/htmlcleaner-2.2.jar android-libs/HtmlSpanner/htmlspanner/libs/ && echo \"android.library.reference.3=$$RootCommands$$\" >> project.properties && echo \"android.library.reference.4=android-libs/HtmlSpanner/htmlspanner\" >> project.properties && find . -type f -print0 | xargs -0 sed -i 's/org.rootcommands/org.sufficientlysecure.rootcommands/g' && cp android-libs/Donations/ant-templates/other/DonationsConfig.java android-libs/Donations/src/org/donations/",
+            "srclibs": ["RootCommands@c940b0e503"],
+            "subdir": "AdAway",
+            "update": [".",
+                       "android-libs/Donations",
+                       "android-libs/ActionBarSherlock",
+                       "android-libs/HtmlSpanner/htmlspanner"],
+            "versionCode": 40,
+            "versionName": "2.1"
+        },
+        {
+            "buildjni": true,
+            "commit": "v2.3",
+            "extlibs": ["htmlcleaner/htmlcleaner-2.2.jar"],
+            "init": "rm android-libs/Donations/custom_rules.xml && git clone https://github.com/dschuermann/HtmlSpanner android-libs/HtmlSpanner",
+            "prebuild": "rm -rf ../update_zip libs/root-commands-1.2.jar libs/htmlspanner-0.2-fork.jar && cp -f libs/htmlcleaner-2.2.jar android-libs/HtmlSpanner/htmlspanner/libs/ && echo \"android.library.reference.3=$$RootCommands$$\" >> project.properties && echo \"android.library.reference.4=android-libs/HtmlSpanner/htmlspanner\" >> project.properties && find . -type f -print0 | xargs -0 sed -i 's/org.rootcommands/org.sufficientlysecure.rootcommands/g' && cp android-libs/Donations/ant-templates/other/DonationsConfig.java android-libs/Donations/src/org/donations/",
+            "srclibs": ["RootCommands@c940b0e503"],
+            "subdir": "AdAway",
+            "update": [".",
+                       "android-libs/Donations",
+                       "android-libs/ActionBarSherlock",
+                       "android-libs/HtmlSpanner/htmlspanner"],
+            "versionCode": 42,
+            "versionName": "2.3"
+        },
+        {
+            "buildjni": true,
+            "commit": "v2.6",
+            "gradle": true,
+            "preassemble": ["renameExecutables"],
+            "subdir": "AdAway",
+            "versionCode": 45,
+            "versionName": "2.6"
+        },
+        {
+            "buildjni": true,
+            "commit": "v2.7",
+            "gradle": true,
+            "preassemble": ["renameExecutables"],
+            "subdir": "AdAway",
+            "versionCode": 46,
+            "versionName": "2.7"
+        },
+        {
+            "buildjni": true,
+            "commit": "v2.8",
+            "gradle": true,
+            "preassemble": ["renameExecutables"],
+            "subdir": "AdAway",
+            "versionCode": 47,
+            "versionName": "2.8"
+        },
+        {
+            "buildjni": true,
+            "commit": "v2.8.1",
+            "gradle": true,
+            "preassemble": ["renameExecutables"],
+            "subdir": "AdAway",
+            "versionCode": 48,
+            "versionName": "2.8.1"
+        },
+        {
+            "buildjni": true,
+            "commit": "v2.9",
+            "gradle": true,
+            "preassemble": ["renameExecutables"],
+            "subdir": "AdAway",
+            "versionCode": 49,
+            "versionName": "2.9"
+        },
+        {
+            "buildjni": true,
+            "commit": "v2.9.1",
+            "gradle": true,
+            "preassemble": ["renameExecutables"],
+            "subdir": "AdAway",
+            "versionCode": 50,
+            "versionName": "2.9.1"
+        },
+        {
+            "buildjni": true,
+            "commit": "v2.9.2",
+            "gradle": true,
+            "preassemble": ["renameExecutables"],
+            "subdir": "AdAway",
+            "versionCode": 51,
+            "versionName": "2.9.2"
+        },
+        {
+            "buildjni": true,
+            "commit": "v3.0",
+            "gradle": true,
+            "preassemble": ["renameExecutables"],
+            "subdir": "AdAway",
+            "versionCode": 52,
+            "versionName": "3.0"
+        }
+    ],
+    "comments": [
+        ["build:40", "#RootCommands srclib needs changing on fdroidserver"],
+        ["build:42", "#RootCommands srclib needs changing on fdroidserver"]
+    ]
+}
diff --git a/tests/metadata/org.adaway.pickle b/tests/metadata/org.adaway.pickle
new file mode 100644 (file)
index 0000000..4617b6c
--- /dev/null
@@ -0,0 +1,2295 @@
+(dp0
+S'Update Check Data'
+p1
+NsS'Bitcoin'
+p2
+NsS'AntiFeatures'
+p3
+(lp4
+sS'Web Site'
+p5
+S'http://sufficientlysecure.org/index.php/adaway'
+p6
+sS'Auto Update Mode'
+p7
+S'Version v%v'
+p8
+sS'Provides'
+p9
+S'org.sufficientlysecure.adaway'
+p10
+sS'Issue Tracker'
+p11
+S'https://github.com/dschuermann/ad-away/issues'
+p12
+sS'Donate'
+p13
+S'http://sufficientlysecure.org/index.php/adaway'
+p14
+sS'Repo Type'
+p15
+S'git'
+p16
+sS'Description'
+p17
+(lp18
+S'An ad blocker that uses the hosts file. The hosts file'
+p19
+aS'contains a list of mappings between hostnames and IP addresses. When'
+p20
+aS'an app requests an ad, that request is directed to 127.0.0.1 which does'
+p21
+aS'nothing. There are options to run a web server'
+p22
+aS'to respond to blocked hostnames and to direct requests to the IP'
+p23
+aS'address of your choosing. You can download hosts files from the'
+p24
+aS'app but it is possible to use your own and to add certain sites'
+p25
+aS'to the white- and black-lists.'
+p26
+aS''
+p27
+aS'[https://github.com/dschuermann/ad-away/raw/HEAD/CHANGELOG Changelog]'
+p28
+ag27
+aS'Requires root: Yes. The hosts files is located in /system which is normally'
+p29
+aS'read-only.'
+p30
+asS'Requires Root'
+p31
+I01
+sS'comments'
+p32
+(lp33
+(lp34
+S'build:40'
+p35
+aS'#RootCommands srclib needs changing on fdroidserver'
+p36
+aa(lp37
+S'build:42'
+p38
+aS'#RootCommands srclib needs changing on fdroidserver'
+p39
+aasS'id'
+p40
+S'org.adaway'
+p41
+sS'Repo'
+p42
+S'https://github.com/dschuermann/ad-away.git'
+p43
+sS'No Source Since'
+p44
+g27
+sS'Auto Name'
+p45
+S'AdAway'
+p46
+sS'Categories'
+p47
+(lp48
+S'System'
+p49
+aS'Security'
+p50
+asS'Source Code'
+p51
+S'https://github.com/dschuermann/ad-away'
+p52
+sS'Litecoin'
+p53
+NsS'Update Check Ignore'
+p54
+NsS'Name'
+p55
+NsS'License'
+p56
+S'GPLv3'
+p57
+sS'Changelog'
+p58
+g27
+sS'Update Check Mode'
+p59
+S'Tags'
+p60
+sS'Summary'
+p61
+S'Block advertisements'
+p62
+sS'Dogecoin'
+p63
+NsS'Maintainer Notes'
+p64
+(lp65
+sS'Current Version Code'
+p66
+S'52'
+p67
+sS'Binaries'
+p68
+NsS'Archive Policy'
+p69
+NsS'builds'
+p70
+(lp71
+(dp72
+S'submodules'
+p73
+I00
+sS'vercode'
+p74
+S'13'
+p75
+sS'forceversion'
+p76
+I00
+sS'oldsdkloc'
+p77
+I00
+sS'gradleprops'
+p78
+(lp79
+sS'scanignore'
+p80
+(lp81
+sS'gradle'
+p82
+I00
+sS'srclibs'
+p83
+(lp84
+sS'encoding'
+p85
+NsS'extlibs'
+p86
+(lp87
+sS'init'
+p88
+g27
+sS'version'
+p89
+S'1.12'
+p90
+sS'subdir'
+p91
+S'org_adaway/'
+p92
+sS'rm'
+p93
+(lp94
+sS'kivy'
+p95
+I00
+sS'build'
+p96
+g27
+sS'forcevercode'
+p97
+I00
+sS'preassemble'
+p98
+(lp99
+sS'update'
+p100
+(lp101
+S'auto'
+p102
+asS'maven'
+p103
+I00
+sS'disable'
+p104
+I00
+sS'ndk_path'
+p105
+g27
+sS'scandelete'
+p106
+(lp107
+sS'buildjni'
+p108
+(lp109
+S'yes'
+p110
+asS'ndk'
+p111
+S'r10e'
+p112
+sS'target'
+p113
+NsS'type'
+p114
+S'ant'
+p115
+sS'commit'
+p116
+S'ea5378a94ee0dc1d99d2cec95fae7e6d81afb2b9'
+p117
+sS'antcommands'
+p118
+NsS'patch'
+p119
+(lp120
+sS'prebuild'
+p121
+g27
+sS'novcheck'
+p122
+I00
+sS'output'
+p123
+Nsa(dp124
+g73
+I00
+sg74
+S'16'
+p125
+sg76
+I00
+sg77
+I00
+sg78
+(lp126
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.15'
+p127
+sS'subdir'
+p128
+S'org_adaway/'
+p129
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p130
+(lp131
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p132
+S'4128e59da2eac5c2904c7c7568d298ca51e79540'
+p133
+sg118
+NsS'patch'
+p134
+(lp135
+S'defprop.patch'
+p136
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp137
+g73
+I00
+sg74
+S'19'
+p138
+sg76
+I00
+sg77
+I00
+sg78
+(lp139
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.18'
+p140
+sS'subdir'
+p141
+S'org_adaway/'
+p142
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p143
+(lp144
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p145
+S'0b9985398b9eef7baf6aadd0dbb12002bc199d2e'
+p146
+sg118
+NsS'patch'
+p147
+(lp148
+S'defprop.patch'
+p149
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp150
+g73
+I00
+sg74
+S'20'
+p151
+sg76
+I00
+sg77
+I00
+sg78
+(lp152
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.19'
+p153
+sS'subdir'
+p154
+S'org_adaway/'
+p155
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p156
+(lp157
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p158
+S'ab27f4dab5f3ea5e228cfb4a6b0e1fbf53695f22'
+p159
+sg118
+NsS'patch'
+p160
+(lp161
+S'defprop.patch'
+p162
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp163
+g73
+I00
+sg74
+S'21'
+p164
+sg76
+I00
+sg77
+I00
+sg78
+(lp165
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.20'
+p166
+sS'subdir'
+p167
+S'org_adaway/'
+p168
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p169
+(lp170
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p171
+S'695e3801e4081026c8f7213a2345fc451d5eb89c'
+p172
+sg118
+NsS'patch'
+p173
+(lp174
+S'defprop.patch'
+p175
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp176
+g73
+I00
+sg74
+S'22'
+p177
+sg76
+I00
+sg77
+I00
+sg78
+(lp178
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.21'
+p179
+sS'subdir'
+p180
+S'org_adaway/'
+p181
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p182
+(lp183
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p184
+S'65138c11cc8b6affd28b68e125fbc1dff0886a4e'
+p185
+sg118
+NsS'patch'
+p186
+(lp187
+S'defprop.patch'
+p188
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp189
+g73
+I00
+sg74
+S'24'
+p190
+sg76
+I00
+sg77
+I00
+sg78
+(lp191
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.23'
+p192
+sS'subdir'
+p193
+Nsg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sS'disable'
+p194
+S'no source in repo'
+p195
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p196
+(lp197
+sg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p198
+S'unknown - see disabled'
+p199
+sg118
+Nsg119
+g120
+sg121
+g27
+sg122
+I00
+sg123
+Nsa(dp200
+g73
+I00
+sg74
+S'25'
+p201
+sg76
+I00
+sg77
+I00
+sg78
+(lp202
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.24'
+p203
+sS'subdir'
+p204
+S'org_adaway/'
+p205
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p206
+(lp207
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p208
+S'f811e53e1e1d2ee047b18715fd7d2072b90ae76b'
+p209
+sg118
+Nsg119
+g120
+sS'prebuild'
+p210
+S'android update project -p ../com_actionbarsherlock'
+p211
+sg122
+I00
+sg123
+Nsa(dp212
+g73
+I00
+sg74
+S'26'
+p213
+sg76
+I00
+sg77
+I00
+sg78
+(lp214
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.25'
+p215
+sS'subdir'
+p216
+S'org_adaway/'
+p217
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p218
+(lp219
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p220
+S'ff97932761cdee68638dc2550751a64b2cbe18e7'
+p221
+sg118
+Nsg119
+g120
+sS'prebuild'
+p222
+S'android update project -p ../com_actionbarsherlock'
+p223
+sg122
+I00
+sg123
+Nsa(dp224
+g73
+I00
+sg74
+S'27'
+p225
+sg76
+I00
+sg77
+I00
+sg78
+(lp226
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.26'
+p227
+sS'subdir'
+p228
+S'org_adaway/'
+p229
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p230
+(lp231
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p232
+S'33d4d80998f30bafc88c04c80cbae00b03916f99'
+p233
+sg118
+Nsg119
+g120
+sS'prebuild'
+p234
+S'android update project -p ../com_actionbarsherlock'
+p235
+sg122
+I00
+sg123
+Nsa(dp236
+g73
+I00
+sg74
+S'28'
+p237
+sg76
+I00
+sg77
+I00
+sg78
+(lp238
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.27'
+p239
+sS'subdir'
+p240
+S'org_adaway/'
+p241
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p242
+(lp243
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p244
+S'743d25a7e287505461f33f4b8e57e4cf988fffea'
+p245
+sg118
+Nsg119
+g120
+sS'prebuild'
+p246
+S'android update project -p ../com_actionbarsherlock'
+p247
+sg122
+I00
+sg123
+Nsa(dp248
+g73
+I00
+sg74
+S'30'
+p249
+sg76
+I00
+sg77
+I00
+sg78
+(lp250
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.29'
+p251
+sS'subdir'
+p252
+S'org_adaway/'
+p253
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p254
+(lp255
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p256
+S'eaa07f4'
+p257
+sg118
+Nsg119
+g120
+sS'prebuild'
+p258
+S'android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/*'
+p259
+sg122
+I00
+sg123
+Nsa(dp260
+g73
+I00
+sg74
+S'33'
+p261
+sg76
+I00
+sg77
+I00
+sg78
+(lp262
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.32'
+p263
+sS'subdir'
+p264
+S'org_adaway/'
+p265
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p266
+(lp267
+S'no'
+p268
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p269
+S'71ced3f'
+p270
+sg118
+Nsg119
+g120
+sS'prebuild'
+p271
+S'android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && rm libs/android-support-v4.jar'
+p272
+sg122
+I00
+sg123
+Nsa(dp273
+g73
+I00
+sg74
+S'34'
+p274
+sg76
+I00
+sg77
+I00
+sg78
+(lp275
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.33'
+p276
+sS'subdir'
+p277
+S'org_adaway/'
+p278
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p279
+(lp280
+g268
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p281
+S'9d63c18'
+p282
+sg118
+Nsg119
+g120
+sS'prebuild'
+p283
+S'android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/*'
+p284
+sg122
+I00
+sg123
+Nsa(dp285
+g73
+I00
+sg74
+S'35'
+p286
+sg76
+I00
+sg77
+I00
+sg78
+(lp287
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.34'
+p288
+sS'subdir'
+p289
+S'org_adaway/'
+p290
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p291
+(lp292
+g268
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p293
+S'f2568b1'
+p294
+sg118
+Nsg119
+g120
+sS'prebuild'
+p295
+S'android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations'
+p296
+sg122
+I00
+sg123
+Nsa(dp297
+g73
+I00
+sg74
+S'36'
+p298
+sg76
+I00
+sg77
+I00
+sg78
+(lp299
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.35'
+p300
+sS'subdir'
+p301
+S'org_adaway/'
+p302
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p303
+(lp304
+g268
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p305
+S'7442d5d'
+p306
+sg118
+Nsg119
+g120
+sS'prebuild'
+p307
+S'android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations'
+p308
+sg122
+I00
+sg123
+Nsa(dp309
+g73
+I00
+sg74
+S'37'
+p310
+sg76
+I00
+sg77
+I00
+sg78
+(lp311
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.36'
+p312
+sS'subdir'
+p313
+S'org_adaway/'
+p314
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p315
+(lp316
+g268
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p317
+S'83fc713'
+p318
+sg118
+Nsg119
+g120
+sS'prebuild'
+p319
+S'android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations'
+p320
+sg122
+I00
+sg123
+Nsa(dp321
+g73
+I00
+sg74
+S'38'
+p322
+sg76
+I00
+sg77
+I00
+sg78
+(lp323
+sg80
+g81
+sg82
+I00
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'1.37'
+p324
+sS'subdir'
+p325
+S'org_adaway/'
+p326
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p327
+(lp328
+g268
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p329
+S'70da32b567122b701cdcb1609b780eb85732028f'
+p330
+sg118
+Nsg119
+g120
+sS'prebuild'
+p331
+S'android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations'
+p332
+sg122
+I00
+sg123
+Nsa(dp333
+g73
+I00
+sg74
+S'40'
+p334
+sg76
+I00
+sg77
+I00
+sg78
+(lp335
+sg80
+g81
+sg82
+I00
+sS'srclibs'
+p336
+(lp337
+S'RootCommands@c940b0e503'
+p338
+asg85
+NsS'extlibs'
+p339
+(lp340
+S'htmlcleaner/htmlcleaner-2.2.jar'
+p341
+asS'init'
+p342
+S'rm android-libs/Donations/custom_rules.xml && git clone https://github.com/dschuermann/HtmlSpanner android-libs/HtmlSpanner'
+p343
+sg89
+S'2.1'
+p344
+sS'subdir'
+p345
+S'AdAway'
+p346
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sS'update'
+p347
+(lp348
+S'.'
+p349
+aS'android-libs/Donations'
+p350
+aS'android-libs/ActionBarSherlock'
+p351
+aS'android-libs/HtmlSpanner/htmlspanner'
+p352
+asg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p353
+(lp354
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p355
+S'v2.1'
+p356
+sg118
+Nsg119
+g120
+sS'prebuild'
+p357
+S'rm -rf ../update_zip libs/root-commands-1.2.jar libs/htmlspanner-0.2-fork.jar && cp -f libs/htmlcleaner-2.2.jar android-libs/HtmlSpanner/htmlspanner/libs/ && echo "android.library.reference.3=$$RootCommands$$" >> project.properties && echo "android.library.reference.4=android-libs/HtmlSpanner/htmlspanner" >> project.properties && find . -type f -print0 | xargs -0 sed -i \'s/org.rootcommands/org.sufficientlysecure.rootcommands/g\' && cp android-libs/Donations/ant-templates/other/DonationsConfig.java android-libs/Donations/src/org/donations/'
+p358
+sg122
+I00
+sg123
+Nsa(dp359
+g73
+I00
+sg74
+S'42'
+p360
+sg76
+I00
+sg77
+I00
+sg78
+(lp361
+sg80
+g81
+sg82
+I00
+sS'srclibs'
+p362
+(lp363
+S'RootCommands@c940b0e503'
+p364
+asg85
+NsS'extlibs'
+p365
+(lp366
+S'htmlcleaner/htmlcleaner-2.2.jar'
+p367
+asS'init'
+p368
+S'rm android-libs/Donations/custom_rules.xml && git clone https://github.com/dschuermann/HtmlSpanner android-libs/HtmlSpanner'
+p369
+sg89
+S'2.3'
+p370
+sS'subdir'
+p371
+S'AdAway'
+p372
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sg98
+g99
+sS'update'
+p373
+(lp374
+g349
+aS'android-libs/Donations'
+p375
+aS'android-libs/ActionBarSherlock'
+p376
+aS'android-libs/HtmlSpanner/htmlspanner'
+p377
+asg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p378
+(lp379
+g110
+asg111
+g112
+sg113
+Nsg114
+g115
+sS'commit'
+p380
+S'v2.3'
+p381
+sg118
+Nsg119
+g120
+sS'prebuild'
+p382
+S'rm -rf ../update_zip libs/root-commands-1.2.jar libs/htmlspanner-0.2-fork.jar && cp -f libs/htmlcleaner-2.2.jar android-libs/HtmlSpanner/htmlspanner/libs/ && echo "android.library.reference.3=$$RootCommands$$" >> project.properties && echo "android.library.reference.4=android-libs/HtmlSpanner/htmlspanner" >> project.properties && find . -type f -print0 | xargs -0 sed -i \'s/org.rootcommands/org.sufficientlysecure.rootcommands/g\' && cp android-libs/Donations/ant-templates/other/DonationsConfig.java android-libs/Donations/src/org/donations/'
+p383
+sg122
+I00
+sg123
+Nsa(dp384
+g73
+I00
+sg74
+S'45'
+p385
+sg76
+I00
+sg77
+I00
+sg78
+(lp386
+sg80
+g81
+sg119
+g120
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'2.6'
+p387
+sS'subdir'
+p388
+S'AdAway'
+p389
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sS'preassemble'
+p390
+(lp391
+S'renameExecutables'
+p392
+asg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p393
+(lp394
+g110
+asg111
+g112
+sg113
+Nsg114
+g82
+sS'commit'
+p395
+S'v2.6'
+p396
+sg118
+NsS'gradle'
+p397
+(lp398
+g110
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp399
+g73
+I00
+sg74
+S'46'
+p400
+sg76
+I00
+sg77
+I00
+sg78
+(lp401
+sg80
+g81
+sg119
+g120
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'2.7'
+p402
+sS'subdir'
+p403
+S'AdAway'
+p404
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sS'preassemble'
+p405
+(lp406
+S'renameExecutables'
+p407
+asg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p408
+(lp409
+g110
+asg111
+g112
+sg113
+Nsg114
+g82
+sS'commit'
+p410
+S'v2.7'
+p411
+sg118
+NsS'gradle'
+p412
+(lp413
+g110
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp414
+g73
+I00
+sg74
+S'47'
+p415
+sg76
+I00
+sg77
+I00
+sg78
+(lp416
+sg80
+g81
+sg119
+g120
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'2.8'
+p417
+sS'subdir'
+p418
+S'AdAway'
+p419
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sS'preassemble'
+p420
+(lp421
+S'renameExecutables'
+p422
+asg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p423
+(lp424
+g110
+asg111
+g112
+sg113
+Nsg114
+g82
+sS'commit'
+p425
+S'v2.8'
+p426
+sg118
+NsS'gradle'
+p427
+(lp428
+g110
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp429
+g73
+I00
+sg74
+S'48'
+p430
+sg76
+I00
+sg77
+I00
+sg78
+(lp431
+sg80
+g81
+sg119
+g120
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'2.8.1'
+p432
+sS'subdir'
+p433
+S'AdAway'
+p434
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sS'preassemble'
+p435
+(lp436
+S'renameExecutables'
+p437
+asg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p438
+(lp439
+g110
+asg111
+g112
+sg113
+Nsg114
+g82
+sS'commit'
+p440
+S'v2.8.1'
+p441
+sg118
+NsS'gradle'
+p442
+(lp443
+g110
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp444
+g73
+I00
+sg74
+S'49'
+p445
+sg76
+I00
+sg77
+I00
+sg78
+(lp446
+sg80
+g81
+sg119
+g120
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'2.9'
+p447
+sS'subdir'
+p448
+S'AdAway'
+p449
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sS'preassemble'
+p450
+(lp451
+S'renameExecutables'
+p452
+asg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p453
+(lp454
+g110
+asg111
+g112
+sg113
+Nsg114
+g82
+sS'commit'
+p455
+S'v2.9'
+p456
+sg118
+NsS'gradle'
+p457
+(lp458
+g110
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp459
+g73
+I00
+sg74
+S'50'
+p460
+sg76
+I00
+sg77
+I00
+sg78
+(lp461
+sg80
+g81
+sg119
+g120
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'2.9.1'
+p462
+sS'subdir'
+p463
+S'AdAway'
+p464
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sS'preassemble'
+p465
+(lp466
+S'renameExecutables'
+p467
+asg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p468
+(lp469
+g110
+asg111
+g112
+sg113
+Nsg114
+g82
+sS'commit'
+p470
+S'v2.9.1'
+p471
+sg118
+NsS'gradle'
+p472
+(lp473
+g110
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp474
+g73
+I00
+sg74
+S'51'
+p475
+sg76
+I00
+sg77
+I00
+sg78
+(lp476
+sg80
+g81
+sg119
+g120
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'2.9.2'
+p477
+sS'subdir'
+p478
+S'AdAway'
+p479
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sS'preassemble'
+p480
+(lp481
+S'renameExecutables'
+p482
+asg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p483
+(lp484
+g110
+asg111
+g112
+sg113
+Nsg114
+g82
+sS'commit'
+p485
+S'v2.9.2'
+p486
+sg118
+NsS'gradle'
+p487
+(lp488
+g110
+asg121
+g27
+sg122
+I00
+sg123
+Nsa(dp489
+g73
+I00
+sg74
+S'52'
+p490
+sg76
+I00
+sg77
+I00
+sg78
+(lp491
+sg80
+g81
+sg119
+g120
+sg83
+g84
+sg85
+Nsg86
+g87
+sg88
+g27
+sg89
+S'3.0'
+p492
+sS'subdir'
+p493
+S'AdAway'
+p494
+sg93
+g94
+sg95
+I00
+sg96
+g27
+sg97
+I00
+sS'preassemble'
+p495
+(lp496
+S'renameExecutables'
+p497
+asg100
+g101
+sg103
+I00
+sg104
+I00
+sg105
+g27
+sg106
+g107
+sS'buildjni'
+p498
+(lp499
+g110
+asg111
+g112
+sg113
+Nsg114
+g82
+sS'commit'
+p500
+S'v3.0'
+p501
+sg118
+NsS'gradle'
+p502
+(lp503
+g110
+asg121
+g27
+sg122
+I00
+sg123
+NsasS'FlattrID'
+p504
+S'369138'
+p505
+sS'metadatapath'
+p506
+S'metadata/org.adaway.json'
+p507
+sS'Disabled'
+p508
+NsS'Update Check Name'
+p509
+NsS'Vercode Operation'
+p510
+NsS'Current Version'
+p511
+S'3.0'
+p512
+s.
\ No newline at end of file
diff --git a/tests/metadata/org.smssecure.smssecure.pickle b/tests/metadata/org.smssecure.smssecure.pickle
new file mode 100644 (file)
index 0000000..f872fad
--- /dev/null
@@ -0,0 +1,777 @@
+(dp0
+S'Update Check Data'
+p1
+NsS'Bitcoin'
+p2
+NsS'AntiFeatures'
+p3
+(lp4
+sS'Web Site'
+p5
+S'http://www.smssecure.org'
+p6
+sS'Auto Update Mode'
+p7
+S'Version v%v'
+p8
+sS'Provides'
+p9
+NsS'Issue Tracker'
+p10
+S'https://github.com/SMSSecure/SMSSecure/issues'
+p11
+sS'Donate'
+p12
+NsS'Repo Type'
+p13
+S'git'
+p14
+sS'Description'
+p15
+(lp16
+S'SMSSecure is an SMS/MMS application that allows you to protect your privacy while communicating with friends.'
+p17
+aS'Using SMSSecure, you can send SMS messages and share media or attachments with complete privacy.'
+p18
+aS''
+p19
+aS"* Easy. SMSSecure works like any other SMS application. There's nothing to sign up for and no new service your friends need to join."
+p20
+aS'* Reliable. SMSSecure communicates using encrypted SMS messages. No servers or internet connection required.'
+p21
+aS'* Private. SMSSecure uses the TextSecure encryption protocol to provide privacy for every message, every time.'
+p22
+aS'* Safe. All messages are encrypted locally, so if your phone is lost or stolen, your messages are protected.'
+p23
+aS'* Open Source. SMSSecure is Free and Open Source, enabling anyone to verify its security by auditing the code.'
+p24
+asS'Requires Root'
+p25
+I00
+sS'comments'
+p26
+(lp27
+sS'id'
+p28
+S'org.smssecure.smssecure'
+p29
+sS'Repo'
+p30
+S'https://github.com/SMSSecure/SMSSecure'
+p31
+sS'No Source Since'
+p32
+g19
+sS'Auto Name'
+p33
+S'SMSSecure'
+p34
+sS'Categories'
+p35
+(lp36
+S'Phone & SMS'
+p37
+asS'Source Code'
+p38
+S'https://github.com/SMSSecure/SMSSecure'
+p39
+sS'Litecoin'
+p40
+NsS'Update Check Ignore'
+p41
+NsS'Name'
+p42
+NsS'License'
+p43
+S'GPLv3'
+p44
+sS'Changelog'
+p45
+g19
+sS'Update Check Mode'
+p46
+S'Tags'
+p47
+sS'Summary'
+p48
+S'Send encrypted text messages (SMS)'
+p49
+sS'Dogecoin'
+p50
+NsS'Maintainer Notes'
+p51
+(lp52
+sS'Current Version Code'
+p53
+S'102'
+p54
+sS'Binaries'
+p55
+NsS'Archive Policy'
+p56
+NsS'builds'
+p57
+(lp58
+(dp59
+S'submodules'
+p60
+I00
+sS'vercode'
+p61
+S'5'
+p62
+sS'forceversion'
+p63
+I00
+sS'oldsdkloc'
+p64
+I00
+sS'antcommands'
+p65
+NsS'scanignore'
+p66
+(lp67
+sS'patch'
+p68
+(lp69
+sS'srclibs'
+p70
+(lp71
+S'GradleWitness@10f1269c0aafdc1d478efc005ed48f3a47d44278'
+p72
+aS'PreferenceFragment@717a45433b927d2f0dfc5328f79e77c9682c37bc'
+p73
+aS'ShortcutBadger@3815ce2ec0c66acd7d7c0b4f2479df8fa70fed87'
+p74
+aS'AospMms@android-5.1.0_r3'
+p75
+asS'encoding'
+p76
+NsS'extlibs'
+p77
+(lp78
+sS'init'
+p79
+g19
+sS'version'
+p80
+S'0.3.3'
+p81
+sS'build'
+p82
+g19
+sS'ndk_path'
+p83
+g19
+sS'kivy'
+p84
+I00
+sS'subdir'
+p85
+NsS'forcevercode'
+p86
+I01
+sS'preassemble'
+p87
+(lp88
+sS'update'
+p89
+(lp90
+S'auto'
+p91
+asS'maven'
+p92
+I00
+sS'disable'
+p93
+S'builds, merge changes into upstream'
+p94
+sS'rm'
+p95
+(lp96
+S'libs/*'
+p97
+asS'scandelete'
+p98
+(lp99
+sS'buildjni'
+p100
+(lp101
+sS'ndk'
+p102
+S'r10e'
+p103
+sS'target'
+p104
+NsS'type'
+p105
+S'gradle'
+p106
+sS'commit'
+p107
+S'66367479a4f57f347b5cbe8f6f8f632adaae7727'
+p108
+sS'gradleprops'
+p109
+(lp110
+sS'gradle'
+p111
+(lp112
+S'yes'
+p113
+asS'prebuild'
+p114
+S"touch signing.properties && pushd $$GradleWitness$$ && gradle jar && popd && cp $$GradleWitness$$/build/libs/GradleWitness.jar libs/gradle-witness.jar && sed -i -e '20,22d' build.gradle && pushd $$PreferenceFragment$$ && gradle uploadArchives && popd && sed -i -e '/5470f5872514a6226fa1fc6f4e000991f38805691c534cf0bd2778911fc773ad/d' build.gradle && mkdir smil && pushd smil && wget -c http://www.w3.org/TR/smil-boston-dom/java-binding.zip && unzip java-binding.zip && popd && cp -fR smil/java/org src/ && rm -fR smil && sed -i -e '/org.w3c.smil/d' build.gradle && cp -fR $$AospMms$$/src/org src/"
+p115
+sS'novcheck'
+p116
+I00
+sS'output'
+p117
+Nsa(dp118
+S'submodules'
+p119
+I01
+sg61
+S'6'
+p120
+sg63
+I00
+sg64
+I00
+sg65
+Nsg66
+g67
+sg68
+g69
+sS'srclibs'
+p121
+(lp122
+S'GradleWitness@10f1269c0aafdc1d478efc005ed48f3a47d44278'
+p123
+asg76
+Nsg77
+g78
+sg79
+g19
+sg80
+S'0.3.3'
+p124
+sg82
+g19
+sg83
+g19
+sg84
+I00
+sg85
+NsS'forcevercode'
+p125
+I00
+sg87
+g88
+sg89
+g90
+sg92
+I00
+sS'disable'
+p126
+S'builds, wait for upstream'
+p127
+sS'rm'
+p128
+(lp129
+S'libs/*.jar'
+p130
+asg98
+g99
+sg100
+g101
+sg102
+g103
+sg104
+Nsg105
+g106
+sS'commit'
+p131
+S'9675ce5eecb929dcaddb43b3d9486fdb88b9ae1a'
+p132
+sg109
+(lp133
+sS'gradle'
+p134
+(lp135
+g113
+asS'prebuild'
+p136
+S'touch signing.properties && pushd $$GradleWitness$$ && gradle jar && popd && cp $$GradleWitness$$/build/libs/GradleWitness.jar libs/gradle-witness.jar'
+p137
+sg116
+I00
+sg117
+Nsa(dp138
+S'submodules'
+p139
+I01
+sg61
+S'9'
+p140
+sg63
+I00
+sg64
+I00
+sg65
+Nsg66
+g67
+sg68
+g69
+sS'srclibs'
+p141
+(lp142
+sg76
+Nsg77
+g78
+sg79
+g19
+sg80
+S'0.4.2'
+p143
+sg82
+g19
+sg83
+g19
+sg84
+I00
+sg85
+Nsg125
+I00
+sg87
+g88
+sg89
+g90
+sg92
+I00
+sS'disable'
+p144
+S'builds locally, but not on BS'
+p145
+sS'rm'
+p146
+(lp147
+S'libs/*.jar'
+p148
+asg98
+g99
+sg100
+g101
+sg102
+g103
+sg104
+Nsg105
+g106
+sS'commit'
+p149
+S'v0.4.2'
+p150
+sg109
+(lp151
+sS'gradle'
+p152
+(lp153
+g113
+asS'prebuild'
+p154
+S'touch signing.properties && ./build-witness.sh && rm -rf libs/gradle-witness/build && echo "org.gradle.jvmargs=-Xms512m -Xmx512m -XX:MaxPermSize=512m" >> gradle.properties'
+p155
+sg116
+I00
+sg117
+Nsa(dp156
+S'submodules'
+p157
+I01
+sg61
+S'11'
+p158
+sg63
+I00
+sg64
+I00
+sg65
+Nsg66
+g67
+sg68
+g69
+sg141
+g142
+sg76
+Nsg77
+g78
+sg79
+g19
+sg80
+S'0.5.1'
+p159
+sg82
+g19
+sg83
+g19
+sg84
+I00
+sg85
+Nsg125
+I00
+sg87
+g88
+sg89
+g90
+sg92
+I00
+sS'disable'
+p160
+I00
+sS'rm'
+p161
+(lp162
+S'libs/*.jar'
+p163
+asg98
+g99
+sg100
+g101
+sg102
+g103
+sg104
+Nsg105
+g106
+sS'commit'
+p164
+S'v0.5.1'
+p165
+sg109
+(lp166
+sS'gradle'
+p167
+(lp168
+g113
+asS'prebuild'
+p169
+S'touch signing.properties && ./build-witness.sh && rm -rf libs/gradle-witness/build && echo "org.gradle.jvmargs=-Xms512m -Xmx512m -XX:MaxPermSize=512m" >> gradle.properties'
+p170
+sg116
+I00
+sg117
+Nsa(dp171
+S'submodules'
+p172
+I01
+sg61
+S'12'
+p173
+sg63
+I00
+sg64
+I00
+sg65
+Nsg66
+g67
+sg68
+g69
+sg141
+g142
+sg76
+Nsg77
+g78
+sg79
+g19
+sg80
+S'0.5.2'
+p174
+sg82
+g19
+sg83
+g19
+sg84
+I00
+sg85
+Nsg125
+I00
+sg87
+g88
+sg89
+g90
+sg92
+I00
+sS'disable'
+p175
+S'broken in upstream'
+p176
+sS'rm'
+p177
+(lp178
+S'libs/*.jar'
+p179
+asg98
+g99
+sg100
+g101
+sg102
+g103
+sg104
+Nsg105
+g106
+sS'commit'
+p180
+S'v0.5.2'
+p181
+sg109
+(lp182
+sS'gradle'
+p183
+(lp184
+g113
+asS'prebuild'
+p185
+S'touch signing.properties && ./scripts/build-witness.sh && rm -rf libs/gradle-witness/build'
+p186
+sg116
+I00
+sg117
+Nsa(dp187
+S'submodules'
+p188
+I01
+sg61
+S'100'
+p189
+sg63
+I00
+sg64
+I00
+sg65
+Nsg66
+g67
+sg68
+g69
+sg141
+g142
+sg76
+Nsg77
+g78
+sg79
+g19
+sg80
+S'0.5.3'
+p190
+sg82
+g19
+sg83
+g19
+sg84
+I00
+sg85
+Nsg125
+I00
+sg87
+g88
+sg89
+g90
+sg92
+I00
+sg160
+I00
+sS'rm'
+p191
+(lp192
+S'libs/*.jar'
+p193
+asg98
+g99
+sg100
+g101
+sg102
+g103
+sg104
+Nsg105
+g106
+sS'commit'
+p194
+S'v0.5.3'
+p195
+sg109
+(lp196
+sS'gradle'
+p197
+(lp198
+g113
+asS'prebuild'
+p199
+S'touch signing.properties && ./scripts/build-witness.sh && rm -rf libs/gradle-witness/build'
+p200
+sg116
+I00
+sg117
+Nsa(dp201
+S'submodules'
+p202
+I01
+sg61
+S'101'
+p203
+sg63
+I00
+sg64
+I00
+sg65
+Nsg66
+g67
+sg68
+g69
+sg141
+g142
+sg76
+Nsg77
+g78
+sg79
+g19
+sg80
+S'0.5.4'
+p204
+sg82
+g19
+sg83
+g19
+sg84
+I00
+sg85
+Nsg125
+I00
+sg87
+g88
+sg89
+g90
+sg92
+I00
+sg160
+I00
+sS'rm'
+p205
+(lp206
+S'libs/*.jar'
+p207
+asg98
+g99
+sg100
+g101
+sg102
+g103
+sg104
+Nsg105
+g106
+sS'commit'
+p208
+S'v0.5.4'
+p209
+sg109
+(lp210
+sS'gradle'
+p211
+(lp212
+g113
+asS'prebuild'
+p213
+S'touch signing.properties && ./scripts/build-witness.sh && rm -rf libs/gradle-witness/build'
+p214
+sg116
+I00
+sg117
+Nsa(dp215
+S'submodules'
+p216
+I01
+sg61
+S'102'
+p217
+sg63
+I00
+sg64
+I00
+sg65
+Nsg66
+g67
+sg68
+g69
+sg141
+g142
+sg76
+Nsg77
+g78
+sg79
+g19
+sg80
+S'0.6.0'
+p218
+sg82
+g19
+sg83
+g19
+sg84
+I00
+sg85
+Nsg125
+I00
+sg87
+g88
+sg89
+g90
+sg92
+I00
+sg160
+I00
+sS'rm'
+p219
+(lp220
+S'libs/*.jar'
+p221
+asg98
+g99
+sg100
+g101
+sg102
+g103
+sg104
+Nsg105
+g106
+sS'commit'
+p222
+S'v0.6.0'
+p223
+sg109
+(lp224
+sS'gradle'
+p225
+(lp226
+g113
+asS'prebuild'
+p227
+S'touch signing.properties && ./scripts/build-witness.sh && rm -rf libs/gradle-witness/build'
+p228
+sg116
+I00
+sg117
+NsasS'FlattrID'
+p229
+NsS'metadatapath'
+p230
+S'metadata/org.smssecure.smssecure.txt'
+p231
+sS'Disabled'
+p232
+NsS'Update Check Name'
+p233
+NsS'Vercode Operation'
+p234
+NsS'Current Version'
+p235
+S'0.6.0'
+p236
+s.
\ No newline at end of file
diff --git a/tests/metadata/org.smssecure.smssecure.txt b/tests/metadata/org.smssecure.smssecure.txt
new file mode 100644 (file)
index 0000000..2f324b7
--- /dev/null
@@ -0,0 +1,125 @@
+Categories:Phone & SMS
+License:GPLv3
+Web Site:http://www.smssecure.org
+Source Code:https://github.com/SMSSecure/SMSSecure
+Issue Tracker:https://github.com/SMSSecure/SMSSecure/issues
+
+Auto Name:SMSSecure
+Summary:Send encrypted text messages (SMS)
+Description:
+SMSSecure is an SMS/MMS application that allows you to protect your privacy while communicating with friends.
+Using SMSSecure, you can send SMS messages and share media or attachments with complete privacy.
+
+* Easy. SMSSecure works like any other SMS application. There's nothing to sign up for and no new service your friends need to join.
+* Reliable. SMSSecure communicates using encrypted SMS messages. No servers or internet connection required.
+* Private. SMSSecure uses the TextSecure encryption protocol to provide privacy for every message, every time.
+* Safe. All messages are encrypted locally, so if your phone is lost or stolen, your messages are protected.
+* Open Source. SMSSecure is Free and Open Source, enabling anyone to verify its security by auditing the code.
+.
+
+Repo Type:git
+Repo:https://github.com/SMSSecure/SMSSecure
+
+Build:0.3.3,5
+    disable=builds, merge changes into upstream
+    commit=66367479a4f57f347b5cbe8f6f8f632adaae7727
+    gradle=yes
+    srclibs=GradleWitness@10f1269c0aafdc1d478efc005ed48f3a47d44278,PreferenceFragment@717a45433b927d2f0dfc5328f79e77c9682c37bc,ShortcutBadger@3815ce2ec0c66acd7d7c0b4f2479df8fa70fed87,AospMms@android-5.1.0_r3
+    forcevercode=yes
+    rm=libs/*
+    prebuild=touch signing.properties && \
+        pushd $$GradleWitness$$ && \
+        gradle jar && \
+        popd && \
+        cp $$GradleWitness$$/build/libs/GradleWitness.jar libs/gradle-witness.jar && \
+        sed -i -e '20,22d' build.gradle && \
+        pushd $$PreferenceFragment$$ && \
+        gradle uploadArchives && \
+        popd && \
+        sed -i -e '/5470f5872514a6226fa1fc6f4e000991f38805691c534cf0bd2778911fc773ad/d' build.gradle && \
+        mkdir smil && \
+        pushd smil && \
+        wget -c http://www.w3.org/TR/smil-boston-dom/java-binding.zip && \
+        unzip java-binding.zip && \
+        popd && \
+        cp -fR smil/java/org src/ && \
+        rm -fR smil && \
+        sed -i -e '/org.w3c.smil/d' build.gradle && \
+        cp -fR $$AospMms$$/src/org src/ 
+
+Build:0.3.3,6
+    disable=builds, wait for upstream
+    commit=9675ce5eecb929dcaddb43b3d9486fdb88b9ae1a
+    submodules=yes
+    gradle=yes
+    srclibs=GradleWitness@10f1269c0aafdc1d478efc005ed48f3a47d44278
+    rm=libs/*.jar
+    prebuild=touch signing.properties && \
+        pushd $$GradleWitness$$ && \
+        gradle jar && \
+        popd && \
+        cp $$GradleWitness$$/build/libs/GradleWitness.jar libs/gradle-witness.jar
+
+Build:0.4.2,9
+    disable=builds locally, but not on BS
+    commit=v0.4.2
+    submodules=yes
+    gradle=yes
+    rm=libs/*.jar
+    prebuild=touch signing.properties && \
+        ./build-witness.sh && \
+        rm -rf libs/gradle-witness/build && \
+        echo "org.gradle.jvmargs=-Xms512m -Xmx512m -XX:MaxPermSize=512m" >> gradle.properties
+
+Build:0.5.1,11
+    commit=v0.5.1
+    submodules=yes
+    gradle=yes
+    rm=libs/*.jar
+    prebuild=touch signing.properties && \
+        ./build-witness.sh && \
+        rm -rf libs/gradle-witness/build && \
+        echo "org.gradle.jvmargs=-Xms512m -Xmx512m -XX:MaxPermSize=512m" >> gradle.properties
+
+Build:0.5.2,12
+    disable=broken in upstream
+    commit=v0.5.2
+    submodules=yes
+    gradle=yes
+    rm=libs/*.jar
+    prebuild=touch signing.properties && \
+        ./scripts/build-witness.sh && \
+        rm -rf libs/gradle-witness/build
+
+Build:0.5.3,100
+    commit=v0.5.3
+    submodules=yes
+    gradle=yes
+    rm=libs/*.jar
+    prebuild=touch signing.properties && \
+        ./scripts/build-witness.sh && \
+        rm -rf libs/gradle-witness/build
+
+Build:0.5.4,101
+    commit=v0.5.4
+    submodules=yes
+    gradle=yes
+    rm=libs/*.jar
+    prebuild=touch signing.properties && \
+        ./scripts/build-witness.sh && \
+        rm -rf libs/gradle-witness/build
+
+Build:0.6.0,102
+    commit=v0.6.0
+    submodules=yes
+    gradle=yes
+    rm=libs/*.jar
+    prebuild=touch signing.properties && \
+        ./scripts/build-witness.sh && \
+        rm -rf libs/gradle-witness/build
+
+Auto Update Mode:Version v%v
+Update Check Mode:Tags
+Current Version:0.6.0
+Current Version Code:102
+
diff --git a/tests/metadata/org.videolan.vlc.pickle b/tests/metadata/org.videolan.vlc.pickle
new file mode 100644 (file)
index 0000000..ba3d584
--- /dev/null
@@ -0,0 +1,5625 @@
+(dp0
+S'Update Check Data'
+p1
+NsS'Bitcoin'
+p2
+NsS'AntiFeatures'
+p3
+(lp4
+sS'Web Site'
+p5
+S'http://www.videolan.org/vlc/download-android.html'
+p6
+sS'Auto Update Mode'
+p7
+S'None'
+p8
+sS'Provides'
+p9
+NsS'Issue Tracker'
+p10
+S'http://www.videolan.org/support/index.html#bugs'
+p11
+sS'Donate'
+p12
+S'http://www.videolan.org/contribute.html#money'
+p13
+sS'id'
+p14
+S'org.videolan.vlc'
+p15
+sS'Description'
+p16
+(lp17
+S'Video and audio player that supports a wide range of formats,'
+p18
+aS'for both local and remote playback.'
+p19
+aS''
+p20
+aS'[http://git.videolan.org/?p=vlc-ports/android.git;a=blob_plain;f=NEWS NEWS]'
+p21
+asS'Requires Root'
+p22
+I00
+sS'comments'
+p23
+(lp24
+sS'Repo Type'
+p25
+S'git'
+p26
+sS'Repo'
+p27
+S'git://git.videolan.org/vlc-ports/android.git'
+p28
+sS'No Source Since'
+p29
+g20
+sS'Auto Name'
+p30
+S'VLC'
+p31
+sS'Categories'
+p32
+(lp33
+S'Multimedia'
+p34
+asS'Source Code'
+p35
+S'http://git.videolan.org/?p=vlc-ports/android.git;a=summary'
+p36
+sS'Litecoin'
+p37
+NsS'Update Check Ignore'
+p38
+NsS'Name'
+p39
+NsS'License'
+p40
+S'GPLv3'
+p41
+sS'Changelog'
+p42
+g20
+sS'Update Check Mode'
+p43
+S'Tags'
+p44
+sS'Summary'
+p45
+S'Media player'
+p46
+sS'Dogecoin'
+p47
+NsS'Maintainer Notes'
+p48
+(lp49
+S'Instructions and dependencies here: http://wiki.videolan.org/AndroidCompile'
+p50
+aS'see http://buildbot.videolan.org/builders/ for version code scheme'
+p51
+aS'The VLC srclib commit can be found out from TESTED_HASH value in compile.sh'
+p52
+ag20
+aS'On new releases remove the updatecheck and force the CV to the last working'
+p53
+aS"build. This will make sure users don't get notified about the update until"
+p54
+aS'the final build from the BS has been reviewed and tested. Once done, undo'
+p55
+aS'those changes.'
+p56
+asS'Current Version Code'
+p57
+S'1030005'
+p58
+sS'Binaries'
+p59
+NsS'Archive Policy'
+p60
+S'9 versions'
+p61
+sS'builds'
+p62
+(lp63
+(dp64
+S'submodules'
+p65
+I00
+sS'vercode'
+p66
+S'110'
+p67
+sS'forceversion'
+p68
+I01
+sS'oldsdkloc'
+p69
+I00
+sS'gradleprops'
+p70
+(lp71
+sS'scanignore'
+p72
+(lp73
+sS'patch'
+p74
+(lp75
+sS'srclibs'
+p76
+(lp77
+sS'output'
+p78
+NsS'encoding'
+p79
+NsS'extlibs'
+p80
+(lp81
+sS'init'
+p82
+g20
+sS'version'
+p83
+S'0.0.11-ARMv7'
+p84
+sS'build'
+p85
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p86
+sS'ndk_path'
+p87
+g20
+sS'kivy'
+p88
+I00
+sS'subdir'
+p89
+S'vlc-android'
+p90
+sS'forcevercode'
+p91
+I01
+sS'preassemble'
+p92
+(lp93
+sS'update'
+p94
+(lp95
+S'.'
+p96
+aS'../java-libs/SlidingMenu'
+p97
+aS'../java-libs/ActionBarSherlock'
+p98
+asS'maven'
+p99
+I00
+sS'disable'
+p100
+I00
+sS'rm'
+p101
+(lp102
+sS'scandelete'
+p103
+(lp104
+sS'buildjni'
+p105
+(lp106
+S'no'
+p107
+asS'ndk'
+p108
+S'r10e'
+p109
+sS'target'
+p110
+NsS'type'
+p111
+S'ant'
+p112
+sS'antcommands'
+p113
+NsS'gradle'
+p114
+I00
+sS'prebuild'
+p115
+S"sed -i '48d' ../Makefile"
+p116
+sS'novcheck'
+p117
+I00
+sS'commit'
+p118
+S'0.0.11'
+p119
+sa(dp120
+g65
+I00
+sg66
+S'111'
+p121
+sS'forceversion'
+p122
+I01
+sg69
+I00
+sg70
+(lp123
+sg72
+g73
+sg74
+g75
+sg76
+g77
+sg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.0.11-ARM'
+p124
+sS'build'
+p125
+S'cd ../ && ANDROID_ABI=armeabi ./compile.sh release'
+p126
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p127
+S'vlc-android'
+p128
+sS'forcevercode'
+p129
+I01
+sg92
+g93
+sS'update'
+p130
+(lp131
+g96
+aS'../java-libs/SlidingMenu'
+p132
+aS'../java-libs/ActionBarSherlock'
+p133
+asg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p134
+(lp135
+S'no'
+p136
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p137
+S"sed -i '48d' ../Makefile"
+p138
+sg117
+I00
+sS'commit'
+p139
+S'0.0.11'
+p140
+sa(dp141
+g65
+I00
+sg66
+S'112'
+p142
+sS'forceversion'
+p143
+I01
+sg69
+I00
+sg70
+(lp144
+sg72
+g73
+sg74
+g75
+sg76
+g77
+sg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.0.11-x86'
+p145
+sS'build'
+p146
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p147
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p148
+S'vlc-android'
+p149
+sS'forcevercode'
+p150
+I01
+sg92
+g93
+sS'update'
+p151
+(lp152
+g96
+aS'../java-libs/SlidingMenu'
+p153
+aS'../java-libs/ActionBarSherlock'
+p154
+asg99
+I00
+sS'disable'
+p155
+S'ffmpeg error 0.0.11'
+p156
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p157
+(lp158
+S'no'
+p159
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p160
+S"sed -i '48d' ../Makefile"
+p161
+sg117
+I00
+sS'commit'
+p162
+S'unknown - see disabled'
+p163
+sa(dp164
+g65
+I00
+sg66
+S'113'
+p165
+sS'forceversion'
+p166
+I01
+sg69
+I00
+sg70
+(lp167
+sg72
+g73
+sg74
+g75
+sg76
+g77
+sg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.0.11-mips'
+p168
+sS'build'
+p169
+S'cd ../ && ANDROID_ABI=mips ./compile.sh release'
+p170
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p171
+S'vlc-android'
+p172
+sS'forcevercode'
+p173
+I01
+sg92
+g93
+sS'update'
+p174
+(lp175
+g96
+aS'../java-libs/SlidingMenu'
+p176
+aS'../java-libs/ActionBarSherlock'
+p177
+asg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p178
+(lp179
+S'no'
+p180
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p181
+S"sed -i '48d' ../Makefile"
+p182
+sg117
+I00
+sS'commit'
+p183
+S'0.0.11'
+p184
+sa(dp185
+g65
+I00
+sg66
+S'1301'
+p186
+sS'forceversion'
+p187
+I01
+sg69
+I00
+sg70
+(lp188
+sg72
+g73
+sS'patch'
+p189
+(lp190
+S'ndkr9.patch'
+p191
+asS'srclibs'
+p192
+(lp193
+S'VLC@7c52aacbe'
+p194
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.1.3-MIPS'
+p195
+sS'build'
+p196
+S'cd ../ && ANDROID_ABI=mips ./compile.sh release'
+p197
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p198
+S'vlc-android'
+p199
+sS'forcevercode'
+p200
+I01
+sg92
+g93
+sS'update'
+p201
+(lp202
+S'auto'
+p203
+asg99
+I00
+sS'disable'
+p204
+S'build failing (at 0.1.3)'
+p205
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p206
+(lp207
+S'no'
+p208
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p209
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc"
+p210
+sg117
+I00
+sS'commit'
+p211
+S'0.1.3'
+p212
+sa(dp213
+g65
+I00
+sg66
+S'1302'
+p214
+sS'forceversion'
+p215
+I01
+sg69
+I00
+sg70
+(lp216
+sg72
+g73
+sS'patch'
+p217
+(lp218
+S'ndkr9.patch'
+p219
+asS'srclibs'
+p220
+(lp221
+S'VLC@7c52aacbe'
+p222
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.1.3-x86'
+p223
+sS'build'
+p224
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p225
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p226
+S'vlc-android'
+p227
+sS'forcevercode'
+p228
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p229
+(lp230
+S'no'
+p231
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p232
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc"
+p233
+sg117
+I00
+sS'commit'
+p234
+S'0.1.3'
+p235
+sa(dp236
+g65
+I00
+sg66
+S'1303'
+p237
+sS'forceversion'
+p238
+I01
+sg69
+I00
+sg70
+(lp239
+sg72
+g73
+sS'patch'
+p240
+(lp241
+S'ndkr9.patch'
+p242
+asS'srclibs'
+p243
+(lp244
+S'VLC@7c52aacbe'
+p245
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.1.3-ARM'
+p246
+sS'build'
+p247
+S'cd ../ && ANDROID_ABI=armeabi ./compile.sh release'
+p248
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p249
+S'vlc-android'
+p250
+sS'forcevercode'
+p251
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p252
+(lp253
+S'no'
+p254
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p255
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc"
+p256
+sg117
+I00
+sS'commit'
+p257
+S'0.1.3'
+p258
+sa(dp259
+g65
+I00
+sg66
+S'1304'
+p260
+sS'forceversion'
+p261
+I01
+sg69
+I00
+sg70
+(lp262
+sg72
+g73
+sS'patch'
+p263
+(lp264
+S'ndkr9.patch'
+p265
+asS'srclibs'
+p266
+(lp267
+S'VLC@7c52aacbe'
+p268
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.1.3-ARMv7'
+p269
+sS'build'
+p270
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p271
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p272
+S'vlc-android'
+p273
+sS'forcevercode'
+p274
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p275
+(lp276
+S'no'
+p277
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p278
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc"
+p279
+sg117
+I00
+sS'commit'
+p280
+S'0.1.3'
+p281
+sa(dp282
+g65
+I00
+sg66
+S'9002'
+p283
+sS'forceversion'
+p284
+I00
+sg69
+I00
+sg70
+(lp285
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p286
+(lp287
+S'VLC@31ffb20309264994'
+p288
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.0'
+p289
+sS'build'
+p290
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p291
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p292
+S'vlc-android'
+p293
+sS'forcevercode'
+p294
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p295
+(lp296
+S'no'
+p297
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p298
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc"
+p299
+sg117
+I00
+sS'commit'
+p300
+S'0.9.0'
+p301
+sa(dp302
+g65
+I00
+sg66
+S'9004'
+p303
+sg284
+I00
+sg69
+I00
+sg70
+(lp304
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p305
+(lp306
+S'VLC@31ffb20309264994'
+p307
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.0'
+p308
+sS'build'
+p309
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p310
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p311
+S'vlc-android'
+p312
+sS'forcevercode'
+p313
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p314
+(lp315
+S'no'
+p316
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p317
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc"
+p318
+sg117
+I00
+sS'commit'
+p319
+S'0.9.0'
+p320
+sa(dp321
+g65
+I00
+sg66
+S'9102'
+p322
+sg284
+I00
+sg69
+I00
+sg70
+(lp323
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p324
+(lp325
+S'VLC@37e886d113b8b567c15208579fb2f'
+p326
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.1'
+p327
+sS'build'
+p328
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p329
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p330
+S'vlc-android'
+p331
+sS'forcevercode'
+p332
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p333
+(lp334
+S'no'
+p335
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p336
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc"
+p337
+sg117
+I00
+sS'commit'
+p338
+S'0.9.1'
+p339
+sa(dp340
+g65
+I00
+sg66
+S'9104'
+p341
+sg284
+I00
+sg69
+I00
+sg70
+(lp342
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p343
+(lp344
+S'VLC@37e886d113b8b567c15208579fb2f'
+p345
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.1'
+p346
+sS'build'
+p347
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p348
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p349
+S'vlc-android'
+p350
+sS'forcevercode'
+p351
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p352
+(lp353
+S'no'
+p354
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p355
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc"
+p356
+sg117
+I00
+sS'commit'
+p357
+S'0.9.1'
+p358
+sa(dp359
+g65
+I00
+sg66
+S'9502'
+p360
+sg284
+I00
+sg69
+I00
+sg70
+(lp361
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p362
+(lp363
+S'VLC@052600173f376ff58ff04d53746961a2'
+p364
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.5'
+p365
+sS'build'
+p366
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p367
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p368
+S'vlc-android'
+p369
+sS'forcevercode'
+p370
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sS'disable'
+p371
+S"can't download gmp"
+p372
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p373
+(lp374
+S'no'
+p375
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p376
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc"
+p377
+sg117
+I00
+sS'commit'
+p378
+S'0.9.5'
+p379
+sa(dp380
+g65
+I00
+sg66
+S'9504'
+p381
+sg284
+I00
+sg69
+I00
+sg70
+(lp382
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p383
+(lp384
+S'VLC@052600173f376ff58ff04d53746961a2'
+p385
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.5'
+p386
+sS'build'
+p387
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p388
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p389
+S'vlc-android'
+p390
+sS'forcevercode'
+p391
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sS'disable'
+p392
+S"can't download gmp"
+p393
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p394
+(lp395
+S'no'
+p396
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p397
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc"
+p398
+sg117
+I00
+sS'commit'
+p399
+S'0.9.5'
+p400
+sa(dp401
+g65
+I00
+sg66
+S'9602'
+p402
+sg284
+I00
+sg69
+I00
+sg70
+(lp403
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p404
+(lp405
+S'VLC-2.2@27f4799'
+p406
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.6'
+p407
+sS'build'
+p408
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p409
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p410
+S'vlc-android'
+p411
+sS'forcevercode'
+p412
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p413
+(lp414
+S'no'
+p415
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p416
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p417
+sg117
+I00
+sS'commit'
+p418
+S'0.9.6'
+p419
+sa(dp420
+g65
+I00
+sg66
+S'9604'
+p421
+sg284
+I00
+sg69
+I00
+sg70
+(lp422
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p423
+(lp424
+S'VLC-2.2@27f4799'
+p425
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.6'
+p426
+sS'build'
+p427
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p428
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p429
+S'vlc-android'
+p430
+sS'forcevercode'
+p431
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p432
+(lp433
+S'no'
+p434
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p435
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p436
+sg117
+I00
+sS'commit'
+p437
+S'0.9.6'
+p438
+sa(dp439
+g65
+I00
+sg66
+S'9702'
+p440
+sg284
+I00
+sg69
+I00
+sg70
+(lp441
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p442
+(lp443
+S'VLC-2.2@9e1c6ff'
+p444
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.7'
+p445
+sS'build'
+p446
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p447
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p448
+S'vlc-android'
+p449
+sS'forcevercode'
+p450
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p451
+(lp452
+S'no'
+p453
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p454
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p455
+sg117
+I00
+sS'commit'
+p456
+S'0.9.7'
+p457
+sa(dp458
+g65
+I00
+sg66
+S'9704'
+p459
+sg284
+I00
+sg69
+I00
+sg70
+(lp460
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p461
+(lp462
+S'VLC-2.2@9e1c6ff'
+p463
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.7'
+p464
+sS'build'
+p465
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p466
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p467
+S'vlc-android'
+p468
+sS'forcevercode'
+p469
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p470
+(lp471
+S'no'
+p472
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p473
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p474
+sg117
+I00
+sS'commit'
+p475
+S'0.9.7'
+p476
+sa(dp477
+g65
+I00
+sg66
+S'9711'
+p478
+sg284
+I00
+sg69
+I00
+sg70
+(lp479
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p480
+(lp481
+S'VLC-2.2@57cd36b'
+p482
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.7.1'
+p483
+sS'build'
+p484
+S'cd ../ && ANDROID_ABI=mips ./compile.sh release'
+p485
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p486
+S'vlc-android'
+p487
+sS'forcevercode'
+p488
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sS'disable'
+p489
+S'build fails'
+p490
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p491
+(lp492
+S'no'
+p493
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p494
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p495
+sg117
+I00
+sS'commit'
+p496
+S'0.9.7.1'
+p497
+sa(dp498
+g65
+I00
+sg66
+S'9712'
+p499
+sg284
+I00
+sg69
+I00
+sg70
+(lp500
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p501
+(lp502
+S'VLC-2.2@57cd36b'
+p503
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.7.1'
+p504
+sS'build'
+p505
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p506
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p507
+S'vlc-android'
+p508
+sS'forcevercode'
+p509
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p510
+(lp511
+S'no'
+p512
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p513
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p514
+sg117
+I00
+sS'commit'
+p515
+S'0.9.7.1'
+p516
+sa(dp517
+g65
+I00
+sg66
+S'9714'
+p518
+sg284
+I00
+sg69
+I00
+sg70
+(lp519
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p520
+(lp521
+S'VLC-2.2@57cd36b'
+p522
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.7.1'
+p523
+sS'build'
+p524
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p525
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p526
+S'vlc-android'
+p527
+sS'forcevercode'
+p528
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p529
+(lp530
+S'no'
+p531
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p532
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p533
+sg117
+I00
+sS'commit'
+p534
+S'0.9.7.1'
+p535
+sa(dp536
+g65
+I00
+sg66
+S'9802'
+p537
+sg284
+I00
+sg69
+I00
+sg70
+(lp538
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p539
+(lp540
+S'VLC-2.2@f2db364'
+p541
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.8'
+p542
+sS'build'
+p543
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p544
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p545
+S'vlc-android'
+p546
+sS'forcevercode'
+p547
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p548
+(lp549
+S'no'
+p550
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p551
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p552
+sg117
+I00
+sS'commit'
+p553
+S'0.9.8'
+p554
+sa(dp555
+g65
+I00
+sg66
+S'9803'
+p556
+sg284
+I00
+sg69
+I00
+sg70
+(lp557
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p558
+(lp559
+S'VLC-2.2@f2db364'
+p560
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.8'
+p561
+sS'build'
+p562
+S'cd ../ && ANDROID_ABI=armeabi ./compile.sh release'
+p563
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p564
+S'vlc-android'
+p565
+sS'forcevercode'
+p566
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p567
+(lp568
+S'no'
+p569
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p570
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p571
+sg117
+I00
+sS'commit'
+p572
+S'0.9.8'
+p573
+sa(dp574
+g65
+I00
+sg66
+S'9804'
+p575
+sg284
+I00
+sg69
+I00
+sg70
+(lp576
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p577
+(lp578
+S'VLC-2.2@f2db364'
+p579
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.8'
+p580
+sS'build'
+p581
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p582
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p583
+S'vlc-android'
+p584
+sS'forcevercode'
+p585
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p586
+(lp587
+S'no'
+p588
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p589
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p590
+sg117
+I00
+sS'commit'
+p591
+S'0.9.8'
+p592
+sa(dp593
+g65
+I00
+sg66
+S'9902'
+p594
+sg284
+I00
+sg69
+I00
+sg70
+(lp595
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p596
+(lp597
+S'VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1'
+p598
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.9'
+p599
+sS'build'
+p600
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p601
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p602
+S'vlc-android'
+p603
+sS'forcevercode'
+p604
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p605
+(lp606
+S'no'
+p607
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p608
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p609
+sg117
+I00
+sS'commit'
+p610
+S'0.9.9'
+p611
+sa(dp612
+g65
+I00
+sg66
+S'9903'
+p613
+sg284
+I00
+sg69
+I00
+sg70
+(lp614
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p615
+(lp616
+S'VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1'
+p617
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.9'
+p618
+sS'build'
+p619
+S'cd ../ && ANDROID_ABI=armeabi ./compile.sh release'
+p620
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p621
+S'vlc-android'
+p622
+sS'forcevercode'
+p623
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p624
+(lp625
+S'no'
+p626
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p627
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p628
+sg117
+I00
+sS'commit'
+p629
+S'0.9.9'
+p630
+sa(dp631
+g65
+I00
+sg66
+S'9904'
+p632
+sg284
+I00
+sg69
+I00
+sg70
+(lp633
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p634
+(lp635
+S'VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1'
+p636
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.9'
+p637
+sS'build'
+p638
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p639
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p640
+S'vlc-android'
+p641
+sS'forcevercode'
+p642
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p643
+(lp644
+S'no'
+p645
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p646
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p647
+sg117
+I00
+sS'commit'
+p648
+S'0.9.9'
+p649
+sa(dp650
+g65
+I00
+sg66
+S'10002'
+p651
+sg284
+I00
+sg69
+I00
+sg70
+(lp652
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p653
+(lp654
+S'VLC-2.2@e33e5de'
+p655
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.10'
+p656
+sS'build'
+p657
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p658
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p659
+S'vlc-android'
+p660
+sS'forcevercode'
+p661
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p662
+(lp663
+S'no'
+p664
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p665
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p666
+sg117
+I00
+sS'commit'
+p667
+S'0.9.10'
+p668
+sa(dp669
+g65
+I00
+sg66
+S'10003'
+p670
+sg284
+I00
+sg69
+I00
+sg70
+(lp671
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p672
+(lp673
+S'VLC-2.2@e33e5de'
+p674
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.10'
+p675
+sS'build'
+p676
+S'cd ../ && ANDROID_ABI=armeabi ./compile.sh release'
+p677
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p678
+S'vlc-android'
+p679
+sS'forcevercode'
+p680
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p681
+(lp682
+S'no'
+p683
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p684
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p685
+sg117
+I00
+sS'commit'
+p686
+S'0.9.10'
+p687
+sa(dp688
+g65
+I00
+sg66
+S'10004'
+p689
+sg284
+I00
+sg69
+I00
+sg70
+(lp690
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p691
+(lp692
+S'VLC-2.2@e33e5de'
+p693
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'0.9.10'
+p694
+sS'build'
+p695
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p696
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p697
+S'vlc-android'
+p698
+sS'forcevercode'
+p699
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p700
+(lp701
+S'no'
+p702
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p703
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p704
+sg117
+I00
+sS'commit'
+p705
+S'0.9.10'
+p706
+sa(dp707
+g65
+I00
+sg66
+S'10006'
+p708
+sg284
+I00
+sg69
+I00
+sg70
+(lp709
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p710
+(lp711
+S'VLC-2.2@036010e'
+p712
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.0.0'
+p713
+sS'build'
+p714
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p715
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p716
+S'vlc-android'
+p717
+sS'forcevercode'
+p718
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sS'disable'
+p719
+S"doesn't build"
+p720
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p721
+(lp722
+S'no'
+p723
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p724
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p725
+sg117
+I00
+sS'commit'
+p726
+S'1.0.0'
+p727
+sa(dp728
+g65
+I00
+sg66
+S'10007'
+p729
+sg284
+I00
+sg69
+I00
+sg70
+(lp730
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p731
+(lp732
+S'VLC-2.2@036010e'
+p733
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.0.0'
+p734
+sS'build'
+p735
+S'cd ../ && ANDROID_ABI=armeabi ./compile.sh release'
+p736
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p737
+S'vlc-android'
+p738
+sS'forcevercode'
+p739
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sS'disable'
+p740
+S"doesn't build"
+p741
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p742
+(lp743
+S'no'
+p744
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p745
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p746
+sg117
+I00
+sS'commit'
+p747
+S'1.0.0'
+p748
+sa(dp749
+g65
+I00
+sg66
+S'10008'
+p750
+sg284
+I00
+sg69
+I00
+sg70
+(lp751
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p752
+(lp753
+S'VLC-2.2@036010e'
+p754
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.0.0'
+p755
+sS'build'
+p756
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p757
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p758
+S'vlc-android'
+p759
+sS'forcevercode'
+p760
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sS'disable'
+p761
+S"doesn't build"
+p762
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p763
+(lp764
+S'no'
+p765
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p766
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p767
+sg117
+I00
+sS'commit'
+p768
+S'1.0.0'
+p769
+sa(dp770
+g65
+I00
+sg66
+S'10102'
+p771
+sg284
+I00
+sg69
+I00
+sg70
+(lp772
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p773
+(lp774
+S'VLC-2.2@59409d5'
+p775
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.0.1'
+p776
+sS'build'
+p777
+S'cd ../ && ANDROID_ABI=x86 ./compile.sh release'
+p778
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p779
+S'vlc-android'
+p780
+sS'forcevercode'
+p781
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p782
+(lp783
+S'no'
+p784
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p785
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p786
+sg117
+I00
+sS'commit'
+p787
+S'1.0.1'
+p788
+sa(dp789
+g65
+I00
+sg66
+S'10103'
+p790
+sg284
+I00
+sg69
+I00
+sg70
+(lp791
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p792
+(lp793
+S'VLC-2.2@59409d5'
+p794
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.0.1'
+p795
+sS'build'
+p796
+S'cd ../ && ANDROID_ABI=armeabi ./compile.sh release'
+p797
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p798
+S'vlc-android'
+p799
+sS'forcevercode'
+p800
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p801
+(lp802
+S'no'
+p803
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p804
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p805
+sg117
+I00
+sS'commit'
+p806
+S'1.0.1'
+p807
+sa(dp808
+g65
+I00
+sg66
+S'10104'
+p809
+sg284
+I00
+sg69
+I00
+sg70
+(lp810
+sg72
+g73
+sg74
+g75
+sS'srclibs'
+p811
+(lp812
+S'VLC-2.2@59409d5'
+p813
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.0.1'
+p814
+sS'build'
+p815
+S'cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release'
+p816
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p817
+S'vlc-android'
+p818
+sS'forcevercode'
+p819
+I01
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p820
+(lp821
+S'no'
+p822
+asg108
+g109
+sg110
+Nsg111
+g112
+sg113
+Nsg114
+I00
+sS'prebuild'
+p823
+S"sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc"
+p824
+sg117
+I00
+sS'commit'
+p825
+S'1.0.1'
+p826
+sa(dp827
+g65
+I00
+sg66
+S'1010303'
+p828
+sg284
+I00
+sg69
+I00
+sg70
+(lp829
+sg72
+g73
+sS'gradle'
+p830
+(lp831
+S'VanillaARMv6fpu'
+p832
+asS'srclibs'
+p833
+(lp834
+S'VLC@a9b19e4'
+p835
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.1.3'
+p836
+sS'build'
+p837
+S'cd ../ && ./compile.sh -a "armeabi" --release'
+p838
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p839
+S'vlc-android'
+p840
+sS'forcevercode'
+p841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p842
+(lp843
+S'no'
+p844
+asS'ndk'
+p845
+S'r10d'
+p846
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p847
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p848
+sg117
+I00
+sS'commit'
+p849
+S'1.1.3'
+p850
+sa(dp851
+g65
+I00
+sg66
+S'1010304'
+p852
+sg284
+I00
+sg69
+I00
+sg70
+(lp853
+sg72
+g73
+sS'gradle'
+p854
+(lp855
+S'VanillaARMv7'
+p856
+asS'srclibs'
+p857
+(lp858
+S'VLC@a9b19e4'
+p859
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.1.3'
+p860
+sS'build'
+p861
+S'cd ../ && ./compile.sh -a "armeabi-v7a" --release'
+p862
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p863
+S'vlc-android'
+p864
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p865
+(lp866
+S'no'
+p867
+asS'ndk'
+p868
+S'r10d'
+p869
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p870
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p871
+sg117
+I00
+sS'commit'
+p872
+S'1.1.3'
+p873
+sa(dp874
+g65
+I00
+sg66
+S'1010305'
+p875
+sg284
+I00
+sg69
+I00
+sg70
+(lp876
+sg72
+g73
+sS'gradle'
+p877
+(lp878
+S'VanillaX86'
+p879
+asS'srclibs'
+p880
+(lp881
+S'VLC@a9b19e4'
+p882
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.1.3'
+p883
+sS'build'
+p884
+S'cd ../ && ./compile.sh -a "x86" --release'
+p885
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p886
+S'vlc-android'
+p887
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p888
+(lp889
+S'no'
+p890
+asS'ndk'
+p891
+S'r10d'
+p892
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p893
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p894
+sg117
+I00
+sS'commit'
+p895
+S'1.1.3'
+p896
+sa(dp897
+g65
+I00
+sg66
+S'1010503'
+p898
+sg284
+I00
+sg69
+I00
+sg70
+(lp899
+sg72
+g73
+sS'gradle'
+p900
+(lp901
+S'VanillaARMv6fpu'
+p902
+asS'srclibs'
+p903
+(lp904
+S'VLC@e6b4585'
+p905
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.1.5'
+p906
+sS'build'
+p907
+S'cd ../ && ./compile.sh -a "armeabi" --release'
+p908
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p909
+S'vlc-android'
+p910
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p911
+(lp912
+S'no'
+p913
+asS'ndk'
+p914
+S'r10d'
+p915
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p916
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p917
+sg117
+I00
+sS'commit'
+p918
+S'1.1.5'
+p919
+sa(dp920
+g65
+I00
+sg66
+S'1010504'
+p921
+sg284
+I00
+sg69
+I00
+sg70
+(lp922
+sg72
+g73
+sS'gradle'
+p923
+(lp924
+S'VanillaARMv7'
+p925
+asS'srclibs'
+p926
+(lp927
+S'VLC@e6b4585'
+p928
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.1.5'
+p929
+sS'build'
+p930
+S'cd ../ && ./compile.sh -a "armeabi-v7a" --release'
+p931
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p932
+S'vlc-android'
+p933
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p934
+(lp935
+S'no'
+p936
+asS'ndk'
+p937
+S'r10d'
+p938
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p939
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p940
+sg117
+I00
+sS'commit'
+p941
+S'1.1.5'
+p942
+sa(dp943
+g65
+I00
+sg66
+S'1010505'
+p944
+sg284
+I00
+sg69
+I00
+sg70
+(lp945
+sg72
+g73
+sS'gradle'
+p946
+(lp947
+S'VanillaX86'
+p948
+asS'srclibs'
+p949
+(lp950
+S'VLC@e6b4585'
+p951
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.1.5'
+p952
+sS'build'
+p953
+S'cd ../ && ./compile.sh -a "x86" --release'
+p954
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p955
+S'vlc-android'
+p956
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p957
+(lp958
+S'no'
+p959
+asS'ndk'
+p960
+S'r10d'
+p961
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p962
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p963
+sg117
+I00
+sS'commit'
+p964
+S'1.1.5'
+p965
+sa(dp966
+g65
+I00
+sg66
+S'1010603'
+p967
+sg284
+I00
+sg69
+I00
+sg70
+(lp968
+sg72
+g73
+sS'gradle'
+p969
+(lp970
+S'VanillaARMv6fpu'
+p971
+asS'srclibs'
+p972
+(lp973
+S'VLC@551b670'
+p974
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.1.6'
+p975
+sS'build'
+p976
+S'cd ../ && ./compile.sh -a "armeabi" --release'
+p977
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p978
+S'vlc-android'
+p979
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p980
+(lp981
+S'no'
+p982
+asS'ndk'
+p983
+S'r10d'
+p984
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p985
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p986
+sg117
+I00
+sS'commit'
+p987
+S'1.1.6'
+p988
+sa(dp989
+g65
+I00
+sg66
+S'1010604'
+p990
+sg284
+I00
+sg69
+I00
+sg70
+(lp991
+sg72
+g73
+sS'gradle'
+p992
+(lp993
+S'VanillaARMv7'
+p994
+asS'srclibs'
+p995
+(lp996
+S'VLC@551b670'
+p997
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.1.6'
+p998
+sS'build'
+p999
+S'cd ../ && ./compile.sh -a "armeabi-v7a" --release'
+p1000
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1001
+S'vlc-android'
+p1002
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1003
+(lp1004
+S'no'
+p1005
+asS'ndk'
+p1006
+S'r10d'
+p1007
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1008
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1009
+sg117
+I00
+sS'commit'
+p1010
+S'1.1.6'
+p1011
+sa(dp1012
+g65
+I00
+sg66
+S'1010605'
+p1013
+sg284
+I00
+sg69
+I00
+sg70
+(lp1014
+sg72
+g73
+sS'gradle'
+p1015
+(lp1016
+S'VanillaX86'
+p1017
+asS'srclibs'
+p1018
+(lp1019
+S'VLC@551b670'
+p1020
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.1.6'
+p1021
+sS'build'
+p1022
+S'cd ../ && ./compile.sh -a "x86" --release'
+p1023
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1024
+S'vlc-android'
+p1025
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1026
+(lp1027
+S'no'
+p1028
+asS'ndk'
+p1029
+S'r10d'
+p1030
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1031
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1032
+sg117
+I00
+sS'commit'
+p1033
+S'1.1.6'
+p1034
+sa(dp1035
+g65
+I00
+sg66
+S'1020003'
+p1036
+sg284
+I00
+sg69
+I00
+sg70
+(lp1037
+sg72
+g73
+sS'gradle'
+p1038
+(lp1039
+S'VanillaARMv6fpu'
+p1040
+asS'srclibs'
+p1041
+(lp1042
+S'VLC@23c8d86'
+p1043
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.0'
+p1044
+sS'build'
+p1045
+S'cd ../ && ./compile.sh -a "armeabi" --release'
+p1046
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1047
+S'vlc-android'
+p1048
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1049
+(lp1050
+S'no'
+p1051
+asS'ndk'
+p1052
+S'r10d'
+p1053
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1054
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1055
+sg117
+I00
+sS'commit'
+p1056
+S'1.2.0'
+p1057
+sa(dp1058
+g65
+I00
+sg66
+S'1020004'
+p1059
+sg284
+I00
+sg69
+I00
+sg70
+(lp1060
+sg72
+g73
+sS'gradle'
+p1061
+(lp1062
+S'VanillaARMv7'
+p1063
+asS'srclibs'
+p1064
+(lp1065
+S'VLC@23c8d86'
+p1066
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.0'
+p1067
+sS'build'
+p1068
+S'cd ../ && ./compile.sh -a "armeabi-v7a" --release'
+p1069
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1070
+S'vlc-android'
+p1071
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1072
+(lp1073
+S'no'
+p1074
+asS'ndk'
+p1075
+S'r10d'
+p1076
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1077
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1078
+sg117
+I00
+sS'commit'
+p1079
+S'1.2.0'
+p1080
+sa(dp1081
+g65
+I00
+sg66
+S'1020005'
+p1082
+sg284
+I00
+sg69
+I00
+sg70
+(lp1083
+sg72
+g73
+sS'gradle'
+p1084
+(lp1085
+S'VanillaX86'
+p1086
+asS'srclibs'
+p1087
+(lp1088
+S'VLC@23c8d86'
+p1089
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.0'
+p1090
+sS'build'
+p1091
+S'cd ../ && ./compile.sh -a "x86" --release'
+p1092
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1093
+S'vlc-android'
+p1094
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1095
+(lp1096
+S'no'
+p1097
+asS'ndk'
+p1098
+S'r10d'
+p1099
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1100
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1101
+sg117
+I00
+sS'commit'
+p1102
+S'1.2.0'
+p1103
+sa(dp1104
+g65
+I00
+sg66
+S'1020103'
+p1105
+sg284
+I00
+sg69
+I00
+sg70
+(lp1106
+sg72
+g73
+sS'gradle'
+p1107
+(lp1108
+S'VanillaARMv6fpu'
+p1109
+asS'srclibs'
+p1110
+(lp1111
+S'VLC@23c8d86'
+p1112
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.1'
+p1113
+sS'build'
+p1114
+S'cd ../ && ./compile.sh -a "armeabi" --release'
+p1115
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1116
+S'vlc-android'
+p1117
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1118
+(lp1119
+S'no'
+p1120
+asS'ndk'
+p1121
+S'r10d'
+p1122
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1123
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1124
+sg117
+I00
+sS'commit'
+p1125
+S'1.2.1'
+p1126
+sa(dp1127
+g65
+I00
+sg66
+S'1020104'
+p1128
+sg284
+I00
+sg69
+I00
+sg70
+(lp1129
+sg72
+g73
+sS'gradle'
+p1130
+(lp1131
+S'VanillaARMv7'
+p1132
+asS'srclibs'
+p1133
+(lp1134
+S'VLC@23c8d86'
+p1135
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.1'
+p1136
+sS'build'
+p1137
+S'cd ../ && ./compile.sh -a "armeabi-v7a" --release'
+p1138
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1139
+S'vlc-android'
+p1140
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1141
+(lp1142
+S'no'
+p1143
+asS'ndk'
+p1144
+S'r10d'
+p1145
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1146
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1147
+sg117
+I00
+sS'commit'
+p1148
+S'1.2.1'
+p1149
+sa(dp1150
+g65
+I00
+sg66
+S'1020105'
+p1151
+sg284
+I00
+sg69
+I00
+sg70
+(lp1152
+sg72
+g73
+sS'gradle'
+p1153
+(lp1154
+S'VanillaX86'
+p1155
+asS'srclibs'
+p1156
+(lp1157
+S'VLC@23c8d86'
+p1158
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.1'
+p1159
+sS'build'
+p1160
+S'cd ../ && ./compile.sh -a "x86" --release'
+p1161
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1162
+S'vlc-android'
+p1163
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1164
+(lp1165
+S'no'
+p1166
+asS'ndk'
+p1167
+S'r10d'
+p1168
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1169
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1170
+sg117
+I00
+sS'commit'
+p1171
+S'1.2.1'
+p1172
+sa(dp1173
+g65
+I00
+sg66
+S'1020203'
+p1174
+sg284
+I00
+sg69
+I00
+sg70
+(lp1175
+sg72
+g73
+sS'gradle'
+p1176
+(lp1177
+S'VanillaARMv6fpu'
+p1178
+asS'srclibs'
+p1179
+(lp1180
+S'VLC@7491a5f'
+p1181
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.2'
+p1182
+sS'build'
+p1183
+S'cd ../ && ./compile.sh -a "armeabi" --release'
+p1184
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1185
+S'vlc-android'
+p1186
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1187
+(lp1188
+S'no'
+p1189
+asS'ndk'
+p1190
+S'r10d'
+p1191
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1192
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1193
+sg117
+I00
+sS'commit'
+p1194
+S'1.2.2'
+p1195
+sa(dp1196
+g65
+I00
+sg66
+S'1020204'
+p1197
+sg284
+I00
+sg69
+I00
+sg70
+(lp1198
+sg72
+g73
+sS'gradle'
+p1199
+(lp1200
+S'VanillaARMv7'
+p1201
+asS'srclibs'
+p1202
+(lp1203
+S'VLC@7491a5f'
+p1204
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.2'
+p1205
+sS'build'
+p1206
+S'cd ../ && ./compile.sh -a "armeabi-v7a" --release'
+p1207
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1208
+S'vlc-android'
+p1209
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1210
+(lp1211
+S'no'
+p1212
+asS'ndk'
+p1213
+S'r10d'
+p1214
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1215
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1216
+sg117
+I00
+sS'commit'
+p1217
+S'1.2.2'
+p1218
+sa(dp1219
+g65
+I00
+sg66
+S'1020205'
+p1220
+sg284
+I00
+sg69
+I00
+sg70
+(lp1221
+sg72
+g73
+sS'gradle'
+p1222
+(lp1223
+S'VanillaX86'
+p1224
+asS'srclibs'
+p1225
+(lp1226
+S'VLC@7491a5f'
+p1227
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.2'
+p1228
+sS'build'
+p1229
+S'cd ../ && ./compile.sh -a "x86" --release'
+p1230
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1231
+S'vlc-android'
+p1232
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1233
+(lp1234
+S'no'
+p1235
+asS'ndk'
+p1236
+S'r10d'
+p1237
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1238
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1239
+sg117
+I00
+sS'commit'
+p1240
+S'1.2.2'
+p1241
+sa(dp1242
+g65
+I00
+sg66
+S'1020303'
+p1243
+sg284
+I00
+sg69
+I00
+sg70
+(lp1244
+sg72
+g73
+sS'gradle'
+p1245
+(lp1246
+S'VanillaARMv6fpu'
+p1247
+asS'srclibs'
+p1248
+(lp1249
+S'VLC@7491a5f'
+p1250
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.3'
+p1251
+sS'build'
+p1252
+S'cd ../ && ./compile.sh -a "armeabi" --release'
+p1253
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1254
+S'vlc-android'
+p1255
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1256
+(lp1257
+S'no'
+p1258
+asS'ndk'
+p1259
+S'r10d'
+p1260
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1261
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1262
+sg117
+I00
+sS'commit'
+p1263
+S'1.2.3'
+p1264
+sa(dp1265
+g65
+I00
+sg66
+S'1020304'
+p1266
+sg284
+I00
+sg69
+I00
+sg70
+(lp1267
+sg72
+g73
+sS'gradle'
+p1268
+(lp1269
+S'VanillaARMv7'
+p1270
+asS'srclibs'
+p1271
+(lp1272
+S'VLC@7491a5f'
+p1273
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.3'
+p1274
+sS'build'
+p1275
+S'cd ../ && ./compile.sh -a "armeabi-v7a" --release'
+p1276
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1277
+S'vlc-android'
+p1278
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1279
+(lp1280
+S'no'
+p1281
+asS'ndk'
+p1282
+S'r10d'
+p1283
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1284
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1285
+sg117
+I00
+sS'commit'
+p1286
+S'1.2.3'
+p1287
+sa(dp1288
+g65
+I00
+sg66
+S'1020305'
+p1289
+sg284
+I00
+sg69
+I00
+sg70
+(lp1290
+sg72
+g73
+sS'gradle'
+p1291
+(lp1292
+S'VanillaX86'
+p1293
+asS'srclibs'
+p1294
+(lp1295
+S'VLC@7491a5f'
+p1296
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.3'
+p1297
+sS'build'
+p1298
+S'cd ../ && ./compile.sh -a "x86" --release'
+p1299
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1300
+S'vlc-android'
+p1301
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1302
+(lp1303
+S'no'
+p1304
+asS'ndk'
+p1305
+S'r10d'
+p1306
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1307
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1308
+sg117
+I00
+sS'commit'
+p1309
+S'1.2.3'
+p1310
+sa(dp1311
+g65
+I00
+sg66
+S'1020403'
+p1312
+sg284
+I00
+sg69
+I00
+sg70
+(lp1313
+sg72
+g73
+sS'gradle'
+p1314
+(lp1315
+S'VanillaARMv6fpu'
+p1316
+asS'srclibs'
+p1317
+(lp1318
+S'VLC@7491a5f'
+p1319
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.4'
+p1320
+sS'build'
+p1321
+S'cd ../ && ./compile.sh -a "armeabi" --release'
+p1322
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1323
+S'vlc-android'
+p1324
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1325
+(lp1326
+S'no'
+p1327
+asS'ndk'
+p1328
+S'r10d'
+p1329
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1330
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1331
+sg117
+I00
+sS'commit'
+p1332
+S'1.2.4'
+p1333
+sa(dp1334
+g65
+I00
+sg66
+S'1020404'
+p1335
+sg284
+I00
+sg69
+I00
+sg70
+(lp1336
+sg72
+g73
+sS'gradle'
+p1337
+(lp1338
+S'VanillaARMv7'
+p1339
+asS'srclibs'
+p1340
+(lp1341
+S'VLC@7491a5f'
+p1342
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.4'
+p1343
+sS'build'
+p1344
+S'cd ../ && ./compile.sh -a "armeabi-v7a" --release'
+p1345
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1346
+S'vlc-android'
+p1347
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1348
+(lp1349
+S'no'
+p1350
+asS'ndk'
+p1351
+S'r10d'
+p1352
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1353
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1354
+sg117
+I00
+sS'commit'
+p1355
+S'1.2.4'
+p1356
+sa(dp1357
+g65
+I00
+sg66
+S'1020405'
+p1358
+sg284
+I00
+sg69
+I00
+sg70
+(lp1359
+sg72
+g73
+sS'gradle'
+p1360
+(lp1361
+S'VanillaX86'
+p1362
+asS'srclibs'
+p1363
+(lp1364
+S'VLC@7491a5f'
+p1365
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.4'
+p1366
+sS'build'
+p1367
+S'cd ../ && ./compile.sh -a "x86" --release'
+p1368
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1369
+S'vlc-android'
+p1370
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1371
+(lp1372
+S'no'
+p1373
+asS'ndk'
+p1374
+S'r10d'
+p1375
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1376
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1377
+sg117
+I00
+sS'commit'
+p1378
+S'1.2.4'
+p1379
+sa(dp1380
+g65
+I00
+sg66
+S'1020503'
+p1381
+sg284
+I00
+sg69
+I00
+sg70
+(lp1382
+sg72
+g73
+sS'gradle'
+p1383
+(lp1384
+S'VanillaARMv6fpu'
+p1385
+asS'srclibs'
+p1386
+(lp1387
+S'VLC@50accb8'
+p1388
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.5'
+p1389
+sS'build'
+p1390
+S'cd ../ && ./compile.sh -a "armeabi" --release'
+p1391
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1392
+S'vlc-android'
+p1393
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1394
+(lp1395
+S'no'
+p1396
+asS'ndk'
+p1397
+S'r10d'
+p1398
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1399
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1400
+sg117
+I00
+sS'commit'
+p1401
+S'1.2.5'
+p1402
+sa(dp1403
+g65
+I00
+sg66
+S'1020504'
+p1404
+sg284
+I00
+sg69
+I00
+sg70
+(lp1405
+sg72
+g73
+sS'gradle'
+p1406
+(lp1407
+S'VanillaARMv7'
+p1408
+asS'srclibs'
+p1409
+(lp1410
+S'VLC@50accb8'
+p1411
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.5'
+p1412
+sS'build'
+p1413
+S'cd ../ && ./compile.sh -a "armeabi-v7a" --release'
+p1414
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1415
+S'vlc-android'
+p1416
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1417
+(lp1418
+S'no'
+p1419
+asS'ndk'
+p1420
+S'r10d'
+p1421
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1422
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1423
+sg117
+I00
+sS'commit'
+p1424
+S'1.2.5'
+p1425
+sa(dp1426
+g65
+I00
+sg66
+S'1020505'
+p1427
+sg284
+I00
+sg69
+I00
+sg70
+(lp1428
+sg72
+g73
+sS'gradle'
+p1429
+(lp1430
+S'VanillaX86'
+p1431
+asS'srclibs'
+p1432
+(lp1433
+S'VLC@50accb8'
+p1434
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.5'
+p1435
+sS'build'
+p1436
+S'cd ../ && ./compile.sh -a "x86" --release'
+p1437
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1438
+S'vlc-android'
+p1439
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1440
+(lp1441
+S'no'
+p1442
+asS'ndk'
+p1443
+S'r10d'
+p1444
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1445
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1446
+sg117
+I00
+sS'commit'
+p1447
+S'1.2.5'
+p1448
+sa(dp1449
+g65
+I00
+sg66
+S'1030003'
+p1450
+sg284
+I00
+sg69
+I00
+sg70
+(lp1451
+sg72
+g73
+sS'gradle'
+p1452
+(lp1453
+S'VanillaARMv6fpu'
+p1454
+asS'srclibs'
+p1455
+(lp1456
+S'VLC@d59b81a'
+p1457
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.6'
+p1458
+sS'build'
+p1459
+S'cd ../ && ./compile.sh -a "armeabi" --release'
+p1460
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1461
+S'vlc-android'
+p1462
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1463
+(lp1464
+S'no'
+p1465
+asS'ndk'
+p1466
+S'r10d'
+p1467
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1468
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1469
+sg117
+I00
+sS'commit'
+p1470
+S'1.2.6'
+p1471
+sa(dp1472
+g65
+I00
+sg66
+S'1030004'
+p1473
+sg284
+I00
+sg69
+I00
+sg70
+(lp1474
+sg72
+g73
+sS'gradle'
+p1475
+(lp1476
+S'VanillaARMv7'
+p1477
+asS'srclibs'
+p1478
+(lp1479
+S'VLC@d59b81a'
+p1480
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.6'
+p1481
+sS'build'
+p1482
+S'cd ../ && ./compile.sh -a "armeabi-v7a" --release'
+p1483
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1484
+S'vlc-android'
+p1485
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1486
+(lp1487
+S'no'
+p1488
+asS'ndk'
+p1489
+S'r10d'
+p1490
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1491
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1492
+sg117
+I00
+sS'commit'
+p1493
+S'1.2.6'
+p1494
+sa(dp1495
+g65
+I00
+sg66
+S'1030005'
+p1496
+sg284
+I00
+sg69
+I00
+sg70
+(lp1497
+sg72
+g73
+sS'gradle'
+p1498
+(lp1499
+S'VanillaX86'
+p1500
+asS'srclibs'
+p1501
+(lp1502
+S'VLC@d59b81a'
+p1503
+asg78
+Nsg79
+Nsg80
+g81
+sg82
+g20
+sg83
+S'1.2.6'
+p1504
+sS'build'
+p1505
+S'cd ../ && ./compile.sh -a "x86" --release'
+p1506
+sg87
+g20
+sg88
+I00
+sS'subdir'
+p1507
+S'vlc-android'
+p1508
+sg841
+I00
+sg92
+g93
+sg201
+g202
+sg99
+I00
+sg100
+I00
+sg101
+g102
+sg103
+g104
+sS'buildjni'
+p1509
+(lp1510
+S'no'
+p1511
+asS'ndk'
+p1512
+S'r10d'
+p1513
+sg110
+Nsg111
+g114
+sg113
+Nsg74
+g75
+sS'prebuild'
+p1514
+S'sed -i -e \'/^TARGET/aexit 0\' -e \'s@\\-d \\"gradle\\/wrapper\\"@1@g\' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc'
+p1515
+sg117
+I00
+sS'commit'
+p1516
+S'1.2.6'
+p1517
+sasS'FlattrID'
+p1518
+NsS'metadatapath'
+p1519
+S'metadata/org.videolan.vlc.yaml'
+p1520
+sS'Disabled'
+p1521
+NsS'Update Check Name'
+p1522
+NsS'Vercode Operation'
+p1523
+S'%c + 5'
+p1524
+sS'Current Version'
+p1525
+S'1.2.6'
+p1526
+s.
\ No newline at end of file
diff --git a/tests/metadata/org.videolan.vlc.yaml b/tests/metadata/org.videolan.vlc.yaml
new file mode 100644 (file)
index 0000000..6798388
--- /dev/null
@@ -0,0 +1,911 @@
+Categories:
+  - Multimedia
+License: GPLv3
+Web Site: http://www.videolan.org/vlc/download-android.html
+Source Code: http://git.videolan.org/?p=vlc-ports/android.git;a=summary
+Issue Tracker: "http://www.videolan.org/support/index.html#bugs"
+Donate: "http://www.videolan.org/contribute.html#money"
+
+Auto Name: VLC
+Summary: Media player
+Description: |
+  Video and audio player that supports a wide range of formats,
+  for both local and remote playback.
+
+  [http://git.videolan.org/?p=vlc-ports/android.git;a=blob_plain;f=NEWS NEWS]
+
+Repo Type: git
+Repo: git://git.videolan.org/vlc-ports/android.git
+
+builds:
+  - versionName: 0.0.11-ARMv7
+    versionCode: 110
+    commit: 0.0.11
+    subdir: vlc-android
+    forceversion: yes
+    forcevercode: yes
+    prebuild: sed -i '48d' ../Makefile
+    update:
+      - .
+      - ../java-libs/SlidingMenu
+      - ../java-libs/ActionBarSherlock
+    build: cd ../ && \
+      ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.0.11-ARM
+    versionCode: 111
+    commit: 0.0.11
+    subdir: vlc-android
+    forceversion: yes
+    forcevercode: yes
+    prebuild: sed -i '48d' ../Makefile
+    update:
+      - .
+      - ../java-libs/SlidingMenu
+      - ../java-libs/ActionBarSherlock
+    build: |
+      cd ../ && \
+      ANDROID_ABI=armeabi ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.0.11-x86
+    versionCode: 112
+    disable: ffmpeg error 0.0.11
+    commit: unknown - see disabled
+    subdir: vlc-android
+    forceversion: yes
+    forcevercode: yes
+    prebuild: sed -i '48d' ../Makefile
+    update:
+      - .
+      - ../java-libs/SlidingMenu
+      - ../java-libs/ActionBarSherlock
+    build: |
+      cd ../ && \
+      ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.0.11-mips
+    versionCode: 113
+    commit: 0.0.11
+    subdir: vlc-android
+    forceversion: yes
+    forcevercode: yes
+    prebuild: sed -i '48d' ../Makefile
+    update:
+      - .
+      - ../java-libs/SlidingMenu
+      - ../java-libs/ActionBarSherlock
+    build: >
+      cd ../ && \
+      ANDROID_ABI=mips ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.1.3-MIPS
+    versionCode: 1301
+    disable: build failing (at 0.1.3)
+    commit: 0.1.3
+    subdir: vlc-android
+    patch: ndkr9.patch
+    srclibs: VLC@7c52aacbe
+    forceversion: yes
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: |
+      cd ../ && \
+      ANDROID_ABI=mips ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.1.3-x86
+    versionCode: 1302
+    commit: 0.1.3
+    subdir: vlc-android
+    patch: ndkr9.patch
+    srclibs: VLC@7c52aacbe
+    forceversion: yes
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.1.3-ARM
+    versionCode: 1303
+    commit: 0.1.3
+    subdir: vlc-android
+    patch: ndkr9.patch
+    srclibs: VLC@7c52aacbe
+    forceversion: yes
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.1.3-ARMv7
+    versionCode: 1304
+    commit: 0.1.3
+    subdir: vlc-android
+    patch: ndkr9.patch
+    srclibs: VLC@7c52aacbe
+    forceversion: yes
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.0
+    versionCode: 9002
+    commit: 0.9.0
+    subdir: vlc-android
+    srclibs: VLC@31ffb20309264994
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.0
+    versionCode: 9004
+    commit: 0.9.0
+    subdir: vlc-android
+    srclibs: VLC@31ffb20309264994
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.1
+    versionCode: 9102
+    commit: 0.9.1
+    subdir: vlc-android
+    srclibs: VLC@37e886d113b8b567c15208579fb2f
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.1
+    versionCode: 9104
+    commit: 0.9.1
+    subdir: vlc-android
+    srclibs: VLC@37e886d113b8b567c15208579fb2f
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.5
+    versionCode: 9502
+    disable: can't download gmp
+    commit: 0.9.5
+    subdir: vlc-android
+    srclibs: VLC@052600173f376ff58ff04d53746961a2
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.5
+    versionCode: 9504
+    disable: can't download gmp
+    commit: 0.9.5
+    subdir: vlc-android
+    srclibs: VLC@052600173f376ff58ff04d53746961a2
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.6
+    versionCode: 9602
+    commit: 0.9.6
+    subdir: vlc-android
+    srclibs: VLC-2.2@27f4799
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.6
+    versionCode: 9604
+    commit: 0.9.6
+    subdir: vlc-android
+    srclibs: VLC-2.2@27f4799
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.7
+    versionCode: 9702
+    commit: 0.9.7
+    subdir: vlc-android
+    srclibs: VLC-2.2@9e1c6ff
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.7
+    versionCode: 9704
+    commit: 0.9.7
+    subdir: vlc-android
+    srclibs: VLC-2.2@9e1c6ff
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.7.1
+    versionCode: 9711
+    disable: build fails
+    commit: 0.9.7.1
+    subdir: vlc-android
+    srclibs: VLC-2.2@57cd36b
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=mips ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.7.1
+    versionCode: 9712
+    commit: 0.9.7.1
+    subdir: vlc-android
+    srclibs: VLC-2.2@57cd36b
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.7.1
+    versionCode: 9714
+    commit: 0.9.7.1
+    subdir: vlc-android
+    srclibs: VLC-2.2@57cd36b
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.8
+    versionCode: 9802
+    commit: 0.9.8
+    subdir: vlc-android
+    srclibs: VLC-2.2@f2db364
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.8
+    versionCode: 9803
+    commit: 0.9.8
+    subdir: vlc-android
+    srclibs: VLC-2.2@f2db364
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.8
+    versionCode: 9804
+    commit: 0.9.8
+    subdir: vlc-android
+    srclibs: VLC-2.2@f2db364
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.9
+    versionCode: 9902
+    commit: 0.9.9
+    subdir: vlc-android
+    srclibs: VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.9
+    versionCode: 9903
+    commit: 0.9.9
+    subdir: vlc-android
+    srclibs: VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.9
+    versionCode: 9904
+    commit: 0.9.9
+    subdir: vlc-android
+    srclibs: VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.10
+    versionCode: 10002
+    commit: 0.9.10
+    subdir: vlc-android
+    srclibs: VLC-2.2@e33e5de
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.10
+    versionCode: 10003
+    commit: 0.9.10
+    subdir: vlc-android
+    srclibs: VLC-2.2@e33e5de
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi ./compile.sh release
+    buildjni: no
+
+  - versionName: 0.9.10
+    versionCode: 10004
+    commit: 0.9.10
+    subdir: vlc-android
+    srclibs: VLC-2.2@e33e5de
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+#0.9.10 vercodes were off
+  - versionName: 1.0.0
+    versionCode: 10006
+    disable: doesn't build
+    commit: 1.0.0
+    subdir: vlc-android
+    srclibs: VLC-2.2@036010e
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+#0.9.10 vercodes were off
+  - versionName: 1.0.0
+    versionCode: 10007
+    disable: doesn't build
+    commit: 1.0.0
+    subdir: vlc-android
+    srclibs: VLC-2.2@036010e
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi ./compile.sh release
+    buildjni: no
+
+#0.9.10 vercodes were off
+  - versionName: 1.0.0
+    versionCode: 10008
+    disable: doesn't build
+    commit: 1.0.0
+    subdir: vlc-android
+    srclibs: VLC-2.2@036010e
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 1.0.1
+    versionCode: 10102
+    commit: 1.0.1
+    subdir: vlc-android
+    srclibs: VLC-2.2@59409d5
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=x86 ./compile.sh release
+    buildjni: no
+
+  - versionName: 1.0.1
+    versionCode: 10103
+    commit: 1.0.1
+    subdir: vlc-android
+    srclibs: VLC-2.2@59409d5
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi ./compile.sh release
+    buildjni: no
+
+  - versionName: 1.0.1
+    versionCode: 10104
+    commit: 1.0.1
+    subdir: vlc-android
+    srclibs: VLC-2.2@59409d5
+    forcevercode: yes
+    prebuild: sed -i '/ant/d' ../Makefile && \
+        ln -s vlc-android/$$VLC-2.2$$ ../vlc
+    build: cd ../ && \
+        ANDROID_ABI=armeabi-v7a ./compile.sh release
+    buildjni: no
+
+  - versionName: 1.1.3
+    versionCode: 1010303
+    commit: 1.1.3
+    subdir: vlc-android
+    gradle: VanillaARMv6fpu
+    srclibs: VLC@a9b19e4
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.1.3
+    versionCode: 1010304
+    commit: 1.1.3
+    subdir: vlc-android
+    gradle: VanillaARMv7
+    srclibs: VLC@a9b19e4
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi-v7a" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.1.3
+    versionCode: 1010305
+    commit: 1.1.3
+    subdir: vlc-android
+    gradle: VanillaX86
+    srclibs: VLC@a9b19e4
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "x86" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.1.5
+    versionCode: 1010503
+    commit: 1.1.5
+    subdir: vlc-android
+    gradle: VanillaARMv6fpu
+    srclibs: VLC@e6b4585
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.1.5
+    versionCode: 1010504
+    commit: 1.1.5
+    subdir: vlc-android
+    gradle: VanillaARMv7
+    srclibs: VLC@e6b4585
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi-v7a" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.1.5
+    versionCode: 1010505
+    commit: 1.1.5
+    subdir: vlc-android
+    gradle: VanillaX86
+    srclibs: VLC@e6b4585
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "x86" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.1.6
+    versionCode: 1010603
+    commit: 1.1.6
+    subdir: vlc-android
+    gradle: VanillaARMv6fpu
+    srclibs: VLC@551b670
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.1.6
+    versionCode: 1010604
+    commit: 1.1.6
+    subdir: vlc-android
+    gradle: VanillaARMv7
+    srclibs: VLC@551b670
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi-v7a" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.1.6
+    versionCode: 1010605
+    commit: 1.1.6
+    subdir: vlc-android
+    gradle: VanillaX86
+    srclibs: VLC@551b670
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "x86" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.0
+    versionCode: 1020003
+    commit: 1.2.0
+    subdir: vlc-android
+    gradle: VanillaARMv6fpu
+    srclibs: VLC@23c8d86
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.0
+    versionCode: 1020004
+    commit: 1.2.0
+    subdir: vlc-android
+    gradle: VanillaARMv7
+    srclibs: VLC@23c8d86
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi-v7a" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.0
+    versionCode: 1020005
+    commit: 1.2.0
+    subdir: vlc-android
+    gradle: VanillaX86
+    srclibs: VLC@23c8d86
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "x86" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.1
+    versionCode: 1020103
+    commit: 1.2.1
+    subdir: vlc-android
+    gradle: VanillaARMv6fpu
+    srclibs: VLC@23c8d86
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.1
+    versionCode: 1020104
+    commit: 1.2.1
+    subdir: vlc-android
+    gradle: VanillaARMv7
+    srclibs: VLC@23c8d86
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi-v7a" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.1
+    versionCode: 1020105
+    commit: 1.2.1
+    subdir: vlc-android
+    gradle: VanillaX86
+    srclibs: VLC@23c8d86
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "x86" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.2
+    versionCode: 1020203
+    commit: 1.2.2
+    subdir: vlc-android
+    gradle: VanillaARMv6fpu
+    srclibs: VLC@7491a5f
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.2
+    versionCode: 1020204
+    commit: 1.2.2
+    subdir: vlc-android
+    gradle: VanillaARMv7
+    srclibs: VLC@7491a5f
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi-v7a" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.2
+    versionCode: 1020205
+    commit: 1.2.2
+    subdir: vlc-android
+    gradle: VanillaX86
+    srclibs: VLC@7491a5f
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "x86" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.3
+    versionCode: 1020303
+    commit: 1.2.3
+    subdir: vlc-android
+    gradle: VanillaARMv6fpu
+    srclibs: VLC@7491a5f
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.3
+    versionCode: 1020304
+    commit: 1.2.3
+    subdir: vlc-android
+    gradle: VanillaARMv7
+    srclibs: VLC@7491a5f
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi-v7a" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.3
+    versionCode: 1020305
+    commit: 1.2.3
+    subdir: vlc-android
+    gradle: VanillaX86
+    srclibs: VLC@7491a5f
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "x86" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.4
+    versionCode: 1020403
+    commit: 1.2.4
+    subdir: vlc-android
+    gradle: VanillaARMv6fpu
+    srclibs: VLC@7491a5f
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.4
+    versionCode: 1020404
+    commit: 1.2.4
+    subdir: vlc-android
+    gradle: VanillaARMv7
+    srclibs: VLC@7491a5f
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi-v7a" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.4
+    versionCode: 1020405
+    commit: 1.2.4
+    subdir: vlc-android
+    gradle: VanillaX86
+    srclibs: VLC@7491a5f
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "x86" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.5
+    versionCode: 1020503
+    commit: 1.2.5
+    subdir: vlc-android
+    gradle: VanillaARMv6fpu
+    srclibs: VLC@50accb8
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.5
+    versionCode: 1020504
+    commit: 1.2.5
+    subdir: vlc-android
+    gradle: VanillaARMv7
+    srclibs: VLC@50accb8
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi-v7a" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.5
+    versionCode: 1020505
+    commit: 1.2.5
+    subdir: vlc-android
+    gradle: VanillaX86
+    srclibs: VLC@50accb8
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "x86" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.6
+    versionCode: 1030003
+    commit: 1.2.6
+    subdir: vlc-android
+    gradle: VanillaARMv6fpu
+    srclibs: VLC@d59b81a
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.6
+    versionCode: 1030004
+    commit: 1.2.6
+    subdir: vlc-android
+    gradle: VanillaARMv7
+    srclibs: VLC@d59b81a
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "armeabi-v7a" --release
+    buildjni: no
+    ndk: r10d
+
+  - versionName: 1.2.6
+    versionCode: 1030005
+    commit: 1.2.6
+    subdir: vlc-android
+    gradle: VanillaX86
+    srclibs: VLC@d59b81a
+    prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && \
+        ln -s vlc-android/$$VLC$$ ../vlc
+    build: cd ../ && \
+        ./compile.sh -a "x86" --release
+    buildjni: no
+    ndk: r10d
+
+Maintainer Notes: |
+  Instructions and dependencies here: http://wiki.videolan.org/AndroidCompile
+  see http://buildbot.videolan.org/builders/ for version code scheme
+  The VLC srclib commit can be found out from TESTED_HASH value in compile.sh
+  
+  On new releases remove the updatecheck and force the CV to the last working
+  build. This will make sure users don't get notified about the update until
+  the final build from the BS has been reviewed and tested. Once done, undo
+  those changes.
+
+# NEW BUILDS
+# +0: vanilla
+# +1: armv5
+# +2: armv6nofpu
+# +3: armv6fpu
+# +4: armv7
+# +5: x86
+# +6: mips
+# +7: armv8
+# +8: x86_64
+# +9: mips64
+# OLD BUILD SYSTEM
+# +0: - (upstream)
+# +1: mips
+# +2: x86
+# +3: arm
+# +4: armv7 (CV)
+Archive Policy: 9 versions
+Auto Update Mode: None
+Update Check Mode: Tags
+# Only use higher vercode ops, if we do build those arches
+Vercode Operation: "%c + 5"
+Current Version: 1.2.6
+Current Version Code: 1030005
diff --git a/tests/metadata/update-pickle.py b/tests/metadata/update-pickle.py
new file mode 100755 (executable)
index 0000000..2811133
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/env python2
+#
+# This script is for updating the .pickle test files when there are changes to
+# the default metadata, e.g. adding a new key/tag.
+
+import glob
+import pickle
+
+for picklefile in glob.glob('*.pickle'):
+    p = pickle.load(open(picklefile))
+
+    for build in p['builds']:
+        build['gradleprops'] = []
+
+    pickle.dump(p, open(picklefile, 'w'))
index 7891e3c9a79aedb6d3267d359238728bcbf13dd9..65ab0d88a21b8989c00c35795ff4f23e32c566f8 100755 (executable)
@@ -109,6 +109,44 @@ cd $WORKSPACE/docs
 ./gendocs.sh -o html --email admin@f-droid.org fdroid "F-Droid Server Manual"
 
 
+#------------------------------------------------------------------------------#
+echo_header "test metadata checks"
+
+REPOROOT=`create_test_dir`
+cd $REPOROOT
+
+touch config.py
+mkdir repo
+cp $WORKSPACE/tests/urzip.apk $REPOROOT/repo/
+
+set +e
+$fdroid build
+if [ $? -eq 0 ]; then
+    echo "This should have failed because there is no metadata!"
+    exit 1
+else
+    echo "testing metadata checks passed"
+fi
+set -e
+
+mkdir $REPOROOT/metadata/
+cp $WORKSPACE/tests/metadata/org.smssecure.smssecure.txt $REPOROOT/metadata/
+$fdroid readmeta
+
+# now make a fake duplicate
+touch $REPOROOT/metadata/org.smssecure.smssecure.yaml
+
+set +e
+$fdroid readmeta
+if [ $? -eq 0 ]; then
+    echo "This should have failed because there is a duplicate metadata file!"
+    exit 1
+else
+    echo "testing duplicate metadata checks passed"
+fi
+set -e
+
+
 #------------------------------------------------------------------------------#
 echo_header "create a source tarball and use that to build a repo"
 
index c5f4a4c8b55efc334db417da136767190f65ebba..aa342abaff67931ebcdbd79bff7b43dfbe5aea01 100755 (executable)
@@ -4,22 +4,23 @@
 # http://www.drdobbs.com/testing/unit-testing-with-python/240165163
 
 import inspect
+import logging
 import optparse
 import os
 import sys
 import unittest
 
-localmodule = os.path.realpath(os.path.join(
-        os.path.dirname(inspect.getfile(inspect.currentframe())),
-        '..'))
+localmodule = os.path.realpath(
+    os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..'))
 print('localmodule: ' + localmodule)
 if localmodule not in sys.path:
-    sys.path.insert(0,localmodule)
+    sys.path.insert(0, localmodule)
 
 import fdroidserver.common
 import fdroidserver.update
 from fdroidserver.common import FDroidPopen
 
+
 class UpdateTest(unittest.TestCase):
     '''fdroid update'''
 
@@ -39,13 +40,13 @@ class UpdateTest(unittest.TestCase):
             return sig
         else:
             return None
-        
+
     def testGoodGetsig(self):
         apkfile = os.path.join(os.path.dirname(__file__), 'urzip.apk')
         sig = self.javagetsig(apkfile)
         self.assertIsNotNone(sig, "sig is None")
         pysig = fdroidserver.update.getsig(apkfile)
-        self.assertIsNotNone(pysig, "pysig is None")        
+        self.assertIsNotNone(pysig, "pysig is None")
         self.assertEquals(sig, fdroidserver.update.getsig(apkfile),
                           "python sig not equal to java sig!")
         self.assertEquals(len(sig), len(pysig),