mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-09-11 15:13:27 +02:00
Merge branch 'support-xml-json-yaml-for-metadata' into 'master'
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
This commit is contained in:
commit
ca8ab7675d
@ -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.
|
||||
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.
|
||||
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:
|
||||
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
|
||||
|
@ -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 = {
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
|
@ -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__":
|
||||
|
@ -17,12 +17,26 @@
|
||||
# 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')
|
||||
|
@ -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.")
|
||||
|
||||
|
@ -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():
|
||||
|
@ -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']:
|
||||
|
@ -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"
|
||||
|
1
setup.py
1
setup.py
@ -33,6 +33,7 @@ setup(name='fdroidserver',
|
||||
'apache-libcloud >= 0.14.1',
|
||||
'pyasn1',
|
||||
'pyasn1-modules',
|
||||
'PyYAML',
|
||||
'requests',
|
||||
],
|
||||
classifiers=[
|
||||
|
@ -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
|
||||
|
@ -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'''
|
||||
|
||||
|
55
tests/metadata.TestCase
Executable file
55
tests/metadata.TestCase
Executable file
@ -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()
|
504
tests/metadata/net.osmand.plus.pickle
Normal file
504
tests/metadata/net.osmand.plus.pickle
Normal file
@ -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.
|
180
tests/metadata/net.osmand.plus.xml
Normal file
180
tests/metadata/net.osmand.plus.xml
Normal file
@ -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 && 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>
|
284
tests/metadata/org.adaway.json
Normal file
284
tests/metadata/org.adaway.json
Normal file
@ -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"]
|
||||
]
|
||||
}
|
2295
tests/metadata/org.adaway.pickle
Normal file
2295
tests/metadata/org.adaway.pickle
Normal file
File diff suppressed because it is too large
Load Diff
777
tests/metadata/org.smssecure.smssecure.pickle
Normal file
777
tests/metadata/org.smssecure.smssecure.pickle
Normal file
@ -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.
|
125
tests/metadata/org.smssecure.smssecure.txt
Normal file
125
tests/metadata/org.smssecure.smssecure.txt
Normal file
@ -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
|
||||
|
5625
tests/metadata/org.videolan.vlc.pickle
Normal file
5625
tests/metadata/org.videolan.vlc.pickle
Normal file
File diff suppressed because it is too large
Load Diff
911
tests/metadata/org.videolan.vlc.yaml
Normal file
911
tests/metadata/org.videolan.vlc.yaml
Normal file
@ -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
|
15
tests/metadata/update-pickle.py
Executable file
15
tests/metadata/update-pickle.py
Executable file
@ -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'))
|
@ -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"
|
||||
|
||||
|
@ -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),
|
||||
|
Loading…
Reference in New Issue
Block a user