Merge "add fortified implementations of pread/pread64"
diff --git a/libc/include/sys/_system_properties.h b/libc/include/sys/_system_properties.h
index 44fe991..7ff3ded 100644
--- a/libc/include/sys/_system_properties.h
+++ b/libc/include/sys/_system_properties.h
@@ -80,7 +80,6 @@
#define PROP_PATH_RAMDISK_DEFAULT "/default.prop"
#define PROP_PATH_SYSTEM_BUILD "/system/build.prop"
-#define PROP_PATH_SYSTEM_DEFAULT "/system/default.prop"
#define PROP_PATH_VENDOR_BUILD "/vendor/build.prop"
#define PROP_PATH_BOOTIMAGE_BUILD "/build.prop"
#define PROP_PATH_LOCAL_OVERRIDE "/data/local.prop"
diff --git a/tools/bionicbb/README.md b/tools/bionicbb/README.md
index 91f64d8..4d3291f 100644
--- a/tools/bionicbb/README.md
+++ b/tools/bionicbb/README.md
@@ -12,7 +12,6 @@
* [Google API Client Library](https://developers.google.com/api-client-library/python/start/installation)
* [jenkinsapi](https://pypi.python.org/pypi/jenkinsapi)
* [Requests](http://docs.python-requests.org/en/latest/)
- * [termcolor](https://pypi.python.org/pypi/termcolor)
Setup
-----
diff --git a/tools/bionicbb/build_listener.py b/tools/bionicbb/build_listener.py
index f7f52ed..fa55d37 100644
--- a/tools/bionicbb/build_listener.py
+++ b/tools/bionicbb/build_listener.py
@@ -15,8 +15,8 @@
# limitations under the License.
#
import json
+import logging
import requests
-import termcolor
import gerrit
@@ -43,7 +43,7 @@
ref = params['REF']
patch_set = ref.split('/')[-1]
- print '{} #{} {}: {}'.format(name, number, status, full_url)
+ logging.debug('%s #%s %s: %s', name, number, status, full_url)
# bionic-lint is always broken, so we don't want to reject changes for
# those failures until we clean things up.
@@ -69,19 +69,19 @@
patch_set))
headers = {'Content-Type': 'application/json;charset=UTF-8'}
- print 'POST {}: {}'.format(url, request_data)
- print requests.post(url, headers=headers, json=request_data)
+ logging.debug('POST %s: %s', url, request_data)
+ requests.post(url, headers=headers, json=request_data)
elif name == 'clean-bionic-presubmit':
request_data = {'message': 'out/ directory removed'}
url = gerrit_url('/a/changes/{}/revisions/{}/review'.format(change_id,
patch_set))
headers = {'Content-Type': 'application/json;charset=UTF-8'}
- print 'POST {}: {}'.format(url, request_data)
- print requests.post(url, headers=headers, json=request_data)
+ logging.debug('POST %s: %s', url, request_data)
+ requests.post(url, headers=headers, json=request_data)
elif name == 'bionic-lint':
- print 'IGNORED'
+ logging.warning('Result for bionic-lint ignored')
else:
- print '{}: {}'.format(termcolor.colored('red', 'UNKNOWN'), name)
+ logging.error('Unknown project: %s', name)
return ''
@@ -100,17 +100,17 @@
bb_review = 0
if bb_review >= 0:
- print 'No rejection to drop: {} {}'.format(change_id, patch_set)
+ logging.info('No rejection to drop: %s %s', change_id, patch_set)
return ''
- print 'Dropping rejection: {} {}'.format(change_id, patch_set)
+ logging.info('Dropping rejection: %s %s', change_id, patch_set)
request_data = {'labels': {'Verified': 0}}
url = gerrit_url('/a/changes/{}/revisions/{}/review'.format(change_id,
patch_set))
headers = {'Content-Type': 'application/json;charset=UTF-8'}
- print 'POST {}: {}'.format(url, request_data)
- print requests.post(url, headers=headers, json=request_data)
+ logging.debug('POST %s: %s', url, request_data)
+ requests.post(url, headers=headers, json=request_data)
return ''
diff --git a/tools/bionicbb/gmail_listener.py b/tools/bionicbb/gmail_listener.py
index dd0c008..134258a 100644
--- a/tools/bionicbb/gmail_listener.py
+++ b/tools/bionicbb/gmail_listener.py
@@ -19,10 +19,10 @@
import httplib2
import jenkinsapi
import json
+import logging
import os
import re
import requests
-import termcolor
import socket
import sys
import time
@@ -141,7 +141,7 @@
return info
-def clean_project(gerrit_info, dry_run):
+def clean_project(dry_run):
username = config.jenkins_credentials['username']
password = config.jenkins_credentials['password']
jenkins_url = config.jenkins_url
@@ -154,16 +154,9 @@
url = job.get_build().baseurl
else:
url = 'DRY_RUN_URL'
- print '{}({}): {} {}'.format(
- termcolor.colored('CLEAN', 'green'),
- gerrit_info['MessageType'],
- build,
- url)
+ logging.info('Cleaning: %s %s', build, url)
else:
- print '{}({}): {}'.format(
- termcolor.colored('CLEAN', 'red'),
- gerrit_info['MessageType'],
- termcolor.colored(build, 'red'))
+ logging.error('Failed to clean: could not find project %s', build)
return True
@@ -194,21 +187,9 @@
if not project_path:
raise RuntimeError('bogus project: {}'.format(project))
if project_path.startswith('platform/'):
- print '{}({}): {} => {}'.format(
- termcolor.colored('ERROR', 'red'),
- 'project',
- project,
- project_path)
- return False
- try:
- ref = gerrit.ref_for_change(change_id)
- except gerrit.GerritError as ex:
- print '{}({}): {} {}'.format(
- termcolor.colored('GERRIT-ERROR', 'red'),
- ex.code,
- change_id,
- ex.url)
- return False
+ raise RuntimeError('Bad project mapping: {} => {}'.format(
+ project, project_path))
+ ref = gerrit.ref_for_change(change_id)
params = {
'REF': ref,
'CHANGE_ID': change_id,
@@ -223,20 +204,10 @@
url = 'URL UNAVAILABLE'
else:
url = 'DRY_RUN_URL'
- print '{}({}): {} => {} {} {}'.format(
- termcolor.colored('BUILD', 'green'),
- gerrit_info['MessageType'],
- project,
- build,
- url,
- change_id)
+ logging.info('Building: %s => %s %s %s', project, build, url,
+ change_id)
else:
- print '{}({}): {} => {} {}'.format(
- termcolor.colored('BUILD', 'red'),
- gerrit_info['MessageType'],
- project,
- termcolor.colored(build, 'red'),
- change_id)
+ logging.error('Unknown build: %s => %s %s', project, build, change_id)
return True
@@ -259,13 +230,9 @@
try:
requests.post(url, headers=headers, data=json.dumps(request_data))
except requests.exceptions.ConnectionError as ex:
- print '{}(drop-rejection): {}'.format(
- termcolor.colored('ERROR', 'red'), ex)
+ logging.error('Failed to drop rejection: %s', ex)
return False
- print '{}({}): {}'.format(
- termcolor.colored('CHECK', 'green'),
- gerrit_info['MessageType'],
- gerrit_info['Change-Id'])
+ logging.info('Dropped rejection: %s', gerrit_info['Change-Id'])
return True
@@ -277,7 +244,7 @@
return True
command_map = {
- 'clean': lambda: clean_project(gerrit_info, dry_run),
+ 'clean': lambda: clean_project(dry_run),
'retry': lambda: build_project(gerrit_info, dry_run),
'arm': lambda: build_project(gerrit_info, dry_run,
@@ -310,11 +277,11 @@
def skip_handler(gerrit_info, _, __):
- print '{}({}): {}'.format(
- termcolor.colored('SKIP', 'yellow'),
- gerrit_info['MessageType'],
- gerrit_info['Change-Id'])
+ logging.info('Skipping %s: %s', gerrit_info['MessageType'],
+ gerrit_info['Change-Id'])
return True
+
+
handle_abandon = skip_handler
handle_merge_failed = skip_handler
handle_merged = skip_handler
@@ -327,28 +294,22 @@
body = get_body(msg)
gerrit_info = get_gerrit_info(body)
if not gerrit_info:
- print termcolor.colored('No info found: {}'.format(msg['id']),
- 'red')
+ logging.fatal('No Gerrit info found: %s', msg.subject)
msg_type = gerrit_info['MessageType']
handler = 'handle_{}'.format(
gerrit_info['MessageType'].replace('-', '_'))
if handler in globals():
return globals()[handler](gerrit_info, body, dry_run)
else:
- print termcolor.colored(
- 'MessageType {} unhandled.'.format(msg_type), 'red')
- print
+ logging.warning('MessageType %s unhandled.', msg_type)
return False
except NotImplementedError as ex:
- print ex
+ logging.error("%s", ex)
return False
except gerrit.GerritError as ex:
- if ex.code == 404:
- print '{}(404): {}!'.format(
- termcolor.colored('ERROR', 'red'), ex)
- return True
- else:
- return False
+ change_id = gerrit_info['Change-Id']
+ logging.error('Gerrit error (%d): %s %s', ex.code, change_id, ex.url)
+ return ex.code == 404
def main(argc, argv):
@@ -376,10 +337,10 @@
msg_service.trash(userId='me', id=msg['id']).execute()
time.sleep(60 * 5)
except GmailError as ex:
- print '{}: {}!'.format(termcolor.colored('ERROR', 'red'), ex)
+ logging.error('Gmail error: %s', ex)
time.sleep(60 * 5)
except apiclient.errors.HttpError as ex:
- print '{}: {}!'.format(termcolor.colored('ERROR', 'red'), ex)
+ logging.error('API Client HTTP error: %s', ex)
time.sleep(60 * 5)
except httplib.BadStatusLine:
pass