summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortorinmr@chromium.org <torinmr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-26 22:53:13 +0000
committertorinmr@chromium.org <torinmr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-26 22:53:13 +0000
commit0e33a9e516ac2e7a815091d6eddabc877271e3e6 (patch)
tree700f3af252234bfb00760cc0714a4144ce8cde5d
parent35099ad194d5aea9731a689787ce6cad2662fa2e (diff)
downloadchromium_src-0e33a9e516ac2e7a815091d6eddabc877271e3e6.zip
chromium_src-0e33a9e516ac2e7a815091d6eddabc877271e3e6.tar.gz
chromium_src-0e33a9e516ac2e7a815091d6eddabc877271e3e6.tar.bz2
Updated the example build system to enable complex socket permissions.
The PERMISSIONS field in example.dsc contains a list of permissions strings, as before. The new SOCKET_PERMISSIONS field contains a list of strings for the socket sub-permissions. BUG=None TEST=None R=binji@chromium.org,bradnelson@google.com Review URL: https://chromiumcodereview.appspot.com/19601010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@213994 0039d316-1c4b-4281-b951-d872f2087c98
-rwxr-xr-xnative_client_sdk/src/build_tools/build_app.py21
-rw-r--r--native_client_sdk/src/build_tools/generate_make.py10
-rwxr-xr-xnative_client_sdk/src/build_tools/parse_dsc.py1
-rw-r--r--native_client_sdk/src/examples/resources/manifest.json.template7
4 files changed, 27 insertions, 12 deletions
diff --git a/native_client_sdk/src/build_tools/build_app.py b/native_client_sdk/src/build_tools/build_app.py
index f370b9e..5ed0fb6 100755
--- a/native_client_sdk/src/build_tools/build_app.py
+++ b/native_client_sdk/src/build_tools/build_app.py
@@ -3,6 +3,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import json
import optparse
import os
import re
@@ -99,22 +100,32 @@ def main(args):
filters['DEST'] = ['examples/api', 'examples/getting_started',
'examples/demo', 'examples/tutorial']
tree = parse_dsc.LoadProjectTree(SDK_SRC_DIR, include=filters)
- build_projects.UpdateHelpers(app_dir, platform, clobber=True)
- build_projects.UpdateProjects(app_dir, platform, tree, clobber=False,
+ build_projects.UpdateHelpers(app_dir, clobber=True)
+ build_projects.UpdateProjects(app_dir, tree, clobber=False,
toolchains=toolchains, configs=[config],
first_toolchain=True)
# Collect permissions from each example, and aggregate them.
+ def MergeLists(list1, list2):
+ return list1 + [x for x in list2 if x not in list1]
all_permissions = []
+ all_socket_permissions = []
for _, project in parse_dsc.GenerateProjects(tree):
- all_permissions.extend(project.get('PERMISSIONS', []))
+ permissions = project.get('PERMISSIONS', [])
+ all_permissions = MergeLists(all_permissions, permissions)
+ socket_permissions = project.get('SOCKET_PERMISSIONS', [])
+ all_socket_permissions = MergeLists(all_socket_permissions,
+ socket_permissions)
+ if all_socket_permissions:
+ all_permissions.append({'socket': all_socket_permissions})
+ pretty_permissions = json.dumps(all_permissions, sort_keys=True, indent=4)
template_dict = {
'name': 'Native Client SDK',
'description':
'Native Client SDK examples, showing API use and key concepts.',
'key': False, # manifests with "key" are rejected when uploading to CWS.
- 'permissions': all_permissions,
+ 'permissions': pretty_permissions,
'version': build_version.ChromeVersionNoTrunk()
}
easy_template.RunTemplateFile(
@@ -127,7 +138,7 @@ def main(args):
os.environ['NACL_SDK_ROOT'] = pepperdir
- build_projects.BuildProjects(app_dir, platform, tree, deps=True, clean=False,
+ build_projects.BuildProjects(app_dir, tree, deps=True, clean=False,
config=config)
RemoveBuildCruft(app_dir)
diff --git a/native_client_sdk/src/build_tools/generate_make.py b/native_client_sdk/src/build_tools/generate_make.py
index e74891b..db12444 100644
--- a/native_client_sdk/src/build_tools/generate_make.py
+++ b/native_client_sdk/src/build_tools/generate_make.py
@@ -2,6 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import json
import os
import sys
@@ -138,11 +139,18 @@ def GenerateManifest(srcroot, dstroot, desc):
outdir = os.path.join(dstroot, desc['DEST'], desc['NAME'])
srcpath = os.path.join(SDK_EXAMPLE_DIR, 'resources', 'manifest.json.template')
dstpath = os.path.join(outdir, 'manifest.json')
+ permissions = desc.get('PERMISSIONS', [])
+ socket_permissions = desc.get('SOCKET_PERMISSIONS', [])
+ combined_permissions = list(permissions)
+ if socket_permissions:
+ combined_permissions.append({'socket': socket_permissions})
+ pretty_permissions = json.dumps(combined_permissions,
+ sort_keys=True, indent=4)
replace = {
'name': desc['TITLE'],
'description': '%s Example' % desc['TITLE'],
'key': True,
- 'permissions': desc.get('PERMISSIONS', []),
+ 'permissions': pretty_permissions,
'version': build_version.ChromeVersionNoTrunk()
}
RunTemplateFileIfChanged(srcpath, dstpath, replace)
diff --git a/native_client_sdk/src/build_tools/parse_dsc.py b/native_client_sdk/src/build_tools/parse_dsc.py
index 48c3761..0015562 100755
--- a/native_client_sdk/src/build_tools/parse_dsc.py
+++ b/native_client_sdk/src/build_tools/parse_dsc.py
@@ -53,6 +53,7 @@ DSC_FORMAT = {
'GROUP': (str, '', False),
'EXPERIMENTAL': (bool, [True, False], False),
'PERMISSIONS': (list, '', False),
+ 'SOCKET_PERMISSIONS': (list, '', False)
}
diff --git a/native_client_sdk/src/examples/resources/manifest.json.template b/native_client_sdk/src/examples/resources/manifest.json.template
index c4a111c..e7e9760 100644
--- a/native_client_sdk/src/examples/resources/manifest.json.template
+++ b/native_client_sdk/src/examples/resources/manifest.json.template
@@ -19,10 +19,5 @@
"client_id": "903965034255.apps.googleusercontent.com",
"scopes": ["https://www.googleapis.com/auth/drive"]
},
- "permissions": [
-[[if permissions:]]
-[[ for i, perm in enumerate(permissions):]]
- "{{perm}}"{{(i != len(permissions) - 1) and ',' or ''}}
-[[]]
- ]
+ "permissions": {{permissions}}
}