summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--Android.mk20
-rw-r--r--alarm/alarm_blacklist.txt8
-rw-r--r--alarm/alarm_whitelist.txt5
-rw-r--r--android.software.google_atv.xml11
-rw-r--r--android.software.input_methods.xml4
-rw-r--r--android.software.leanback.xml18
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/anim/atv_fade_in_bottom.xml25
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/anim/atv_fade_in_top.xml25
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/anim/atv_fade_out_bottom.xml25
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/anim/atv_fade_out_top.xml25
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/anim/atv_wallpaper_enter.xml24
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/anim/atv_wallpaper_exit.xml24
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png3
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/drawable/progress_volume.xml41
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/layout/volume_adjust.xml49
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/layout/volume_adjust_item.xml44
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/values-sw600dp/dimens.xml22
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/values/config.xml65
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/values/dimens.xml31
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/values/styles.xml54
-rw-r--r--aosp_gms_overlay/frameworks/base/core/res/res/xml/global_keys.xml36
-rw-r--r--aosp_gms_overlay/frameworks/base/packages/SettingsLib/res/layout-television/settings_with_drawer.xml46
-rw-r--r--aosp_gms_overlay/packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_device.xml36
-rw-r--r--aosp_gms_overlay/packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_profile.xml26
-rw-r--r--aosp_gms_overlay/packages/apps/Provision/AndroidManifest.xml39
-rw-r--r--aosp_gms_overlay/vendor/amlogic/apps/MboxLauncher2/AndroidManifest.xml40
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/anim/atv_fade_in_bottom.xml25
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/anim/atv_fade_in_top.xml25
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/anim/atv_fade_out_bottom.xml25
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/anim/atv_fade_out_top.xml25
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/anim/atv_wallpaper_enter.xml24
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/anim/atv_wallpaper_exit.xml24
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png4
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/drawable/progress_volume.xml41
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/layout/volume_adjust.xml49
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/layout/volume_adjust_item.xml44
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/values-sw600dp/dimens.xml22
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/values-television/config.xml27
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/values-television/dimens.xml24
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/values-television/themes.xml30
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/values/config.xml105
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/values/dimens.xml31
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/values/styles.xml54
-rw-r--r--atv_gms_overlay/frameworks/base/core/res/res/xml/global_keys.xml36
-rw-r--r--atv_gms_overlay/frameworks/base/packages/SettingsLib/res/layout-television/settings_with_drawer.xml46
-rw-r--r--atv_gms_overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml34
-rw-r--r--atv_gms_overlay/frameworks/base/packages/SystemUI/res/drawable-hdpi/recents_tv_bg_default.png6015
-rw-r--r--atv_gms_overlay/frameworks/base/packages/SystemUI/res/drawable-mdpi/recents_tv_bg_default.png2462
-rw-r--r--atv_gms_overlay/frameworks/base/packages/SystemUI/res/drawable-xhdpi/recents_tv_bg_default.png8975
-rw-r--r--atv_gms_overlay/frameworks/base/packages/SystemUI/res/values/config.xml31
-rw-r--r--atv_gms_overlay/packages/apps/Bluetooth/res/values/config.xml17
-rw-r--r--atv_gms_overlay/packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_device.xml36
-rw-r--r--atv_gms_overlay/packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_profile.xml26
-rw-r--r--atv_gms_overlay/packages/apps/Provision/AndroidManifest.xml38
-rw-r--r--atv_gms_overlay/packages/providers/ContactsProvider/res/values/config.xml21
-rw-r--r--atv_gms_overlay/vendor/amlogic/apps/MboxLauncher2/AndroidManifest.xml40
-rw-r--r--audio.mk123
-rw-r--r--audio/a2dp_audio_policy_configuration.xml48
-rw-r--r--audio/audio_data.ko243
-rw-r--r--audio/audio_policy_configuration.xml184
-rw-r--r--audio/audio_policy_volumes.xml179
-rw-r--r--audio/default_volume_tables.xml70
-rw-r--r--audio/dia_remote_audio_policy_configuration.xml37
-rw-r--r--audio/r_submix_audio_policy_configuration.xml44
-rw-r--r--audio/usb_audio_policy_configuration.xml43
-rw-r--r--bluetooth.mk477
-rw-r--r--config/lowmemorykiller.txt3
-rw-r--r--config/lowmemorykiller_2G.txt3
-rw-r--r--config/lowmemorykiller_512M.txt3
-rw-r--r--core_amlogic.mk485
-rw-r--r--ddr/ddr_window_64.ko263
-rw-r--r--ddrtest.sh7
-rw-r--r--droidlogic.software.netflix.xml5
-rw-r--r--dumpstate/Android.mk39
-rw-r--r--dumpstate/DumpstateDevice.cpp76
-rw-r--r--dumpstate/DumpstateDevice.h50
-rw-r--r--dumpstate/NOTICE190
-rw-r--r--dumpstate/android.hardware.dumpstate@1.0-service.droidlogic.rc4
-rw-r--r--dumpstate/service.cpp41
-rw-r--r--dynamic_zygote_seondary/dynamic_zygote_64_bit.mk41
-rw-r--r--dynamic_zygote_seondary/init.zygote32_64.rc26
-rw-r--r--dynamic_zygote_seondary/init.zygote64_32.rc26
-rw-r--r--factory.mk306
-rw-r--r--gpu.mk17
-rw-r--r--gpu/mali450-kernel.mk17
-rw-r--r--gpu/mali450-user-arm.mk25
-rw-r--r--gpu/mali450-user-arm64.mk24
-rw-r--r--gpu/t82x-kernel.mk18
-rw-r--r--gpu/t82x-user-arm.mk26
-rw-r--r--gpu/t82x-user-arm64.mk26
-rw-r--r--gpu/t83x-kernel.mk18
-rw-r--r--gpu/t83x-user-arm.mk26
-rw-r--r--gpu/t83x-user-arm64.mk26
-rw-r--r--hdcp_rx22/arm_tools/aictool4274
-rw-r--r--hdcp_rx22/arm_tools/esm_swap3512
-rw-r--r--hdcp_rx22/arm_tools/hdcprxkeys4183
-rw-r--r--hdcp_rx22/firmware/esm_config.i1
-rw-r--r--hdcp_rx22/firmware/firmware.aic22
-rw-r--r--hdcp_rx22/firmware/firmware.le464
-rw-r--r--hdcp_rx22/firmware/firmware.rom0
-rw-r--r--hdcp_rx22/hdcp_rx22104
-rw-r--r--hdcp_tx22/hdcp_tx22209
-rw-r--r--hdcp_tx22/hdcp_tx22.contenttype1165
-rw-r--r--init.amlogic.media.rc29
-rw-r--r--init.amlogic.wifi.rc42
-rw-r--r--init.amlogic.wifi_bcm.rc21
-rw-r--r--init.amlogic.wifi_rtk.rc16
-rw-r--r--kernel_build_check.sh240
-rw-r--r--keyboards/Vendor_0484_Product_5738.kl441
-rw-r--r--keyboards/Vendor_0c45_Product_1109.kl36
-rw-r--r--keyboards/Vendor_7045_Product_1820.kl34
-rw-r--r--media.mk274
-rw-r--r--media_modules.mk23
-rw-r--r--mobile.mk14
-rw-r--r--optimization/config1
-rw-r--r--optimization/liboptimization_32.so66
-rw-r--r--optimization/liboptimization_64.so57
-rw-r--r--patch/Readme.txt12
-rw-r--r--patch/frameworks#base#0001.patch41
-rw-r--r--products/dongle/product_dongle.mk1
-rw-r--r--products/dvb/product_dvb.mk1
-rw-r--r--products/iptv/product_iptv.mk1
-rw-r--r--products/mbox/bootanimation.zip21947
-rw-r--r--products/mbox/default_wallpaper.png1406
-rw-r--r--products/mbox/init.amlogic.rc426
-rw-r--r--products/mbox/mbox.mp49032
-rw-r--r--products/mbox/product_mbox.mk97
-rw-r--r--products/mbox/ueventd.amlogic.rc106
-rw-r--r--products/mbox/upgrade_3.14/aml_emmc_logic_table.xml14
-rw-r--r--products/mbox/upgrade_3.14/aml_upgrade_package.conf25
-rw-r--r--products/mbox/upgrade_3.14/aml_upgrade_package_AB.conf24
-rw-r--r--products/mbox/upgrade_3.14/aml_upgrade_package_AB_enc.conf28
-rw-r--r--products/mbox/upgrade_3.14/aml_upgrade_package_enc.conf29
-rw-r--r--products/mbox/upgrade_4.9/aml_upgrade_package.conf27
-rw-r--r--products/mbox/upgrade_4.9/aml_upgrade_package_AB.conf26
-rw-r--r--products/mbox/upgrade_4.9/aml_upgrade_package_AB_enc.conf31
-rw-r--r--products/mbox/upgrade_4.9/aml_upgrade_package_enc.conf31
-rw-r--r--products/tablet/init.amlogic.rc366
-rw-r--r--products/tablet/product_tablet.mk48
-rw-r--r--products/tablet/ueventd.amlogic.rc76
-rw-r--r--products/tv/bootanimation.zip25778
-rw-r--r--products/tv/default_wallpaper.png1406
-rw-r--r--products/tv/init.amlogic.rc438
-rw-r--r--products/tv/product_tv.mk137
-rw-r--r--products/tv/tv.mp465398
-rw-r--r--products/tv/ueventd.amlogic.rc106
-rw-r--r--products/tv/upgrade_3.14/aml_emmc_logic_table.xml15
-rw-r--r--products/tv/upgrade_3.14/aml_upgrade_package.conf25
-rw-r--r--products/tv/upgrade_3.14/aml_upgrade_package_AB.conf24
-rw-r--r--products/tv/upgrade_3.14/aml_upgrade_package_AB_enc.conf28
-rw-r--r--products/tv/upgrade_3.14/aml_upgrade_package_enc.conf29
-rw-r--r--products/tv/upgrade_4.9/aml_upgrade_package.conf27
-rw-r--r--products/tv/upgrade_4.9/aml_upgrade_package_AB.conf26
-rw-r--r--products/tv/upgrade_4.9/aml_upgrade_package_AB_enc.conf31
-rw-r--r--products/tv/upgrade_4.9/aml_upgrade_package_enc.conf31
-rw-r--r--quick_build_kernel.sh58
-rw-r--r--recovery/Android.mk8
-rw-r--r--recovery/check/Android.mk25
-rw-r--r--recovery/check/dtbcheck.cpp860
-rw-r--r--recovery/check/dtbcheck.h15
-rw-r--r--recovery/check/security.cpp578
-rw-r--r--recovery/check/security.h158
-rw-r--r--recovery/fdt/Android.mk18
-rw-r--r--recovery/fdt/Makefile.libfdt10
-rw-r--r--recovery/fdt/fdt.c222
-rw-r--r--recovery/fdt/fdt.h60
-rw-r--r--recovery/fdt/fdt_empty_tree.c84
-rw-r--r--recovery/fdt/fdt_ro.c574
-rw-r--r--recovery/fdt/fdt_rw.c492
-rw-r--r--recovery/fdt/fdt_strerror.c96
-rw-r--r--recovery/fdt/fdt_sw.c256
-rw-r--r--recovery/fdt/fdt_wip.c118
-rw-r--r--recovery/fdt/libfdt.h1478
-rw-r--r--recovery/fdt/libfdt_env.h29
-rw-r--r--recovery/fdt/libfdt_internal.h95
-rw-r--r--recovery/init.rc112
-rw-r--r--recovery/recovery_extra/Android.mk29
-rw-r--r--recovery/recovery_extra/recovery_amlogic.cpp392
-rw-r--r--recovery/recovery_extra/recovery_amlogic.h25
-rw-r--r--recovery/ubootenv/Android.mk17
-rw-r--r--recovery/ubootenv/set_display_mode.cpp24
-rw-r--r--recovery/ubootenv/set_display_mode.h4
-rw-r--r--recovery/ubootenv/uboot_env.cpp107
-rw-r--r--recovery/ubootenv/uboot_env.h24
-rw-r--r--recovery/ui/Android.mk30
-rw-r--r--recovery/ui/amlogic_ui.cpp205
-rw-r--r--recovery/ui/amlogic_ui.h25
-rwxr-xr-xrecovery/updater-script10
-rw-r--r--recovery/updater_extra/Android.mk22
-rw-r--r--recovery/updater_extra/install_amlogic.cpp751
-rw-r--r--recovery/updater_extra/install_amlogic.h20
-rwxr-xr-xreleasetools.py230
-rw-r--r--rtk_bt_driver.mk11
-rw-r--r--scripts/check_patch.py268
-rwxr-xr-xscripts/checkpatch.pl45
-rw-r--r--seccomp/mediacodec.policy11
-rw-r--r--seccomp/mediaextractor.policy7
-rw-r--r--security/Android.mk13
-rw-r--r--security/verity.pk84
-rw-r--r--security/verity.x509.der9
-rw-r--r--security/verity.x509.pem24
-rw-r--r--security/verity_key2
-rw-r--r--sepolicy.mk3
-rw-r--r--sepolicy/adbd.te1
-rw-r--r--sepolicy/app.te80
-rw-r--r--sepolicy/audioserver.te7
-rw-r--r--sepolicy/bcmdl.te12
-rw-r--r--sepolicy/blkid_untrusted.te4
-rw-r--r--sepolicy/bootanim.te1
-rw-r--r--sepolicy/bootvideo.te36
-rw-r--r--sepolicy/charger.te2
-rw-r--r--sepolicy/device.te33
-rw-r--r--sepolicy/drmserver.te14
-rw-r--r--sepolicy/droidvold.te97
-rw-r--r--sepolicy/file.te42
-rw-r--r--sepolicy/file_contexts131
-rw-r--r--sepolicy/firmload.te10
-rw-r--r--sepolicy/fsck.te12
-rw-r--r--sepolicy/fsck_untrusted.te3
-rwxr-xr-xsepolicy/genfs_contexts9
-rw-r--r--sepolicy/hal_audio_default.te15
-rw-r--r--sepolicy/hal_bootctl_default.te7
-rw-r--r--sepolicy/hal_camera_default.te3
-rw-r--r--sepolicy/hal_drm_default.te4
-rw-r--r--sepolicy/hal_dumpstate_impl.te9
-rw-r--r--sepolicy/hal_graphics_allocator_default.te2
-rw-r--r--sepolicy/hal_graphics_composer_default.te13
-rw-r--r--sepolicy/hal_keymaster_default.te1
-rw-r--r--sepolicy/hal_memtrack_default.te39
-rw-r--r--sepolicy/hal_power_default.te2
-rw-r--r--sepolicy/hal_tv_cec_default.te2
-rw-r--r--sepolicy/hal_wifi_default.te18
-rw-r--r--sepolicy/hal_wifi_supplicant_default.te1
-rw-r--r--sepolicy/hdcp_rx22.te14
-rw-r--r--sepolicy/hdcp_tx22.te9
-rw-r--r--sepolicy/hdmicecd.te15
-rw-r--r--sepolicy/healthd.te3
-rw-r--r--sepolicy/hidraw_device.te1
-rw-r--r--sepolicy/hwservice.te3
-rw-r--r--sepolicy/hwservice_contexts3
-rw-r--r--sepolicy/hwservicemanager.te14
-rw-r--r--sepolicy/imageserver.te44
-rw-r--r--sepolicy/init.te111
-rw-r--r--sepolicy/kernel.te6
-rw-r--r--sepolicy/mediacodec.te18
-rw-r--r--sepolicy/mediadrmserver.te5
-rw-r--r--sepolicy/mediaextractor.te12
-rw-r--r--sepolicy/mediaserver.te34
-rw-r--r--sepolicy/netd.te10
-rw-r--r--sepolicy/ntfs-3g.te24
-rw-r--r--sepolicy/platform_app.te42
-rw-r--r--sepolicy/pppoe_wrapper.te31
-rw-r--r--sepolicy/priv_app.te16
-rw-r--r--sepolicy/property.te7
-rw-r--r--sepolicy/property_contexts9
-rw-r--r--sepolicy/recovery.te39
-rw-r--r--sepolicy/remotecfg.te7
-rw-r--r--sepolicy/sdcardd.te8
-rw-r--r--sepolicy/service.te10
-rw-r--r--sepolicy/service_contexts10
-rw-r--r--sepolicy/servicemanager.te1
-rw-r--r--sepolicy/sgdisk.te4
-rw-r--r--sepolicy/shell.te6
-rw-r--r--sepolicy/surfaceflinger.te6
-rw-r--r--sepolicy/system_app.te84
-rw-r--r--sepolicy/system_control.te105
-rw-r--r--sepolicy/system_server.te49
-rw-r--r--sepolicy/tee.te11
-rw-r--r--sepolicy/toolbox.te1
-rw-r--r--sepolicy/ueventd.te2
-rw-r--r--sepolicy/update_engine.te9
-rw-r--r--sepolicy/update_verifier.te5
-rw-r--r--sepolicy/vold.te35
-rw-r--r--sepolicy/webview_zygote.te1
-rw-r--r--sepolicy/wificond.te3
-rw-r--r--sepolicy/zygote.te13
-rw-r--r--software.mk75
-rw-r--r--t83x-armv8.mk26
-rw-r--r--t83x.mk17
-rw-r--r--tb_detect.mk28
-rw-r--r--tb_detect/tb_detect.ko266
-rw-r--r--tutorial-library-google.zip2457
-rw-r--r--vndk/Android.mk57
-rw-r--r--wifi.mk1690
-rw-r--r--wifi/config.txt3
-rw-r--r--wifi_driver.mk203
-rw-r--r--wifi_modules.mk5
287 files changed, 177798 insertions, 0 deletions
diff --git a/scripts/check_patch.py b/scripts/check_patch.py
new file mode 100644
index 0000000..b3eb451
--- a/dev/null
+++ b/scripts/check_patch.py
@@ -0,0 +1,268 @@
+#!/usr/bin/env python2
+
+import json
+import logging
+import os.path
+import re
+import pprint
+import sys
+
+__author__ = 'lawrence'
+
+MAX_TRAILING_SPACES_MSGS_PER_FILE = 5
+MAX_MIXED_TABS_MSGS_PER_FILE = 5
+MAX_SPACING_MSGS_PER_FILE = 5
+MAX_INDENT_MSGS_PER_FILE = 1
+MAX_FILES_WITH_MSGS = 10
+
+INDENT_UNKNOWN = 0
+INDENT_SPACES = 1
+INDENT_TABS = 2
+
+reply_msg_extra = ''
+
+class ChangedFile:
+ SOURCE_EXT = ['.c', '.cpp', '.cc', '.h', '.java', '.mk', '.xml']
+ C_JAVA_EXT = ['.c', '.cpp', '.java']
+ TEXT_RESOURCE_EXT = ['.rc', '.prop', '.te', '.kl', '.cfg', '.conf', '.dtd']
+ BINARY_RESOURCE_EXT = ['.txt', '.so', '.ko', '.apk', '.png', '.jpg', '.jpeg', '.gif']
+
+ def __init__(self, filename=None, is_new=False, mode=None):
+ self.filename = filename
+ self.file_ext = None
+ if filename:
+ self.on_update_filename()
+ self.is_new = is_new
+ self.mode = mode
+ self.formattable_carriage_returns = False
+ self.comments = {}
+
+ def on_update_filename(self):
+ if not self.filename:
+ logging.error("couldn't get filename")
+ return
+ self.file_ext = os.path.splitext(self.filename)[1].lower()
+
+ def is_source(self):
+ if self.file_ext in self.SOURCE_EXT:
+ return True
+ if self.filename:
+ b = os.path.basename(self.filename)
+ if (b and (
+ b.startswith("Kconfig") or
+ b == "Makefile") or
+ b.endswith("_defconfig")):
+ return True
+ return False
+
+ def is_binary_resource(self):
+ if self.file_ext in self.BINARY_RESOURCE_EXT:
+ return True
+ return False
+
+ def is_text_resource(self):
+ if self.file_ext in self.TEXT_RESOURCE_EXT:
+ return True
+ return False
+
+ def has_errors(self):
+ if self.comments:
+ return True
+ # same as add_file_comments:
+ if self.mode == 755 and self.should_not_be_executable():
+ return True
+ if self.formattable_carriage_returns and self.should_not_have_carriage_return():
+ return True
+ return False
+
+ def should_check_line_diff(self):
+ if self.is_source() or self.is_text_resource():
+ return True
+ return False
+
+ def should_not_be_executable(self):
+ return self.is_source() or self.is_text_resource() or self.is_binary_resource()
+
+ def should_not_have_carriage_return(self):
+ if self.is_new:
+ if self.is_source() or self.is_text_resource():
+ return True
+ return False
+
+ def should_check_statement_spacing(self):
+ if self.file_ext in self.C_JAVA_EXT:
+ return True
+ return False
+
+ def should_check_indent(self):
+ if self.file_ext in self.C_JAVA_EXT:
+ return True
+ return False
+
+ def add_file_comments(self):
+ if self.mode == 755 and self.should_not_be_executable():
+ self.append_comment(0, "{} file should not be executable".format(self.file_ext))
+
+ def append_comment(self, line, msg):
+ if line in self.comments:
+ self.comments[line] += "\n\n"
+ self.comments[line] += msg
+ else:
+ self.comments[line] = msg
+
+
+ # types of files/checks
+ # source/resource:
+ # should be non-executable (new/changed source + .ko, etc)
+ # source:
+ # should not have carriage return (new source + text resources)
+ # text resource:
+ # should not have trailing spaces (source + text resources)
+ # should not have mixed spaces/tabs (source + text resources)
+ # source + syntax
+ # should have space in if statements (source c/java)
+ # added line indent should match context
+ # *could be imported code - warn only..?
+
+
+def check(filename):
+ """
+ Checks unified diff.
+ :param filename: diff file to check
+ :return: 0 on patch errors, 1 on no patch errors, < 0 on other errors
+ """
+ if not filename:
+ return -1
+
+ try:
+ with open(filename) as fp:
+ return check_fp(fp)
+ except OSError:
+ logging.error(" failed to open? OSError %s", filename)
+ return -2
+ except IOError:
+ logging.error(" failed to open? IOError %s", filename)
+ return -3
+ return -4
+
+
+# TODO split checks into separate functions
+def check_fp(fp):
+ file_sections = []
+ f = None
+ check_lines = False
+ check_statement_spacing = False
+ trailing_sp_msg_count = 0
+ mixed_tabs_msg_count = 0
+ spacing_msg_count = 0
+ in_line_diff = False
+ section_line_start = 0
+ section_line_start_err = False
+ files_with_msgs = 0
+ cur_line = 0
+ error_num = 0
+ for line in fp:
+ if line.startswith("diff"):
+ if f and f.has_errors():
+ f.add_file_comments()
+ error_num += 1
+ file_sections.append(f)
+ if len(file_sections) >= MAX_FILES_WITH_MSGS:
+ global reply_msg_extra
+ reply_msg_extra += '\n\nStopped code style check at {} files.'.format(MAX_FILES_WITH_MSGS)
+ break;
+ # start of new file
+ f = ChangedFile()
+ check_lines = False
+ trailing_sp_msg_count = 0
+ mixed_tabs_msg_count = 0
+ spacing_msg_count = 0
+ indent_msg_count = 0
+ context_indent = INDENT_UNKNOWN
+ in_line_diff = False
+
+ # get filename
+ # might fail on paths like "dir b/file.txt"
+ m = re.match(r"^diff --git a/(.*) b/.*", line)
+ if m:
+ f.filename = m.group(1)
+ f.on_update_filename()
+ check_lines = f.should_check_line_diff()
+ check_statement_spacing = f.should_check_statement_spacing()
+ check_indent = f.should_check_indent()
+ elif line.startswith("new file mode "):
+ f.is_new = True
+ if line.startswith("100755", len("new file mode ")):
+ f.mode = 755
+ elif line.startswith("new mode 100755"):
+ f.mode = 755
+
+ if f and f.has_errors():
+ f.add_file_comments()
+ file_sections.append(f)
+ error_num += 1
+
+ if False:
+ for f in file_sections:
+ assert isinstance(f, ChangedFile)
+ if f.comments:
+ print f.filename
+ pprint.pprint(f.comments)
+ print "---"
+ json_ret = file_comments_to_review(file_sections)
+ if json_ret:
+ print json_ret
+
+ #print error_num
+ if error_num > 0:
+ return 1
+ else:
+ return 0
+
+REPLY_MSG = "This is an automated message.\n\nPlease check it & commit again."
+POSITIVE_REPLY_MSG = "This is an automated message.\n\nNo problems found."
+
+def file_comments_to_array(changed_file):
+ """
+ Return a list of comments for a CommentInput entry from a ChangedFile
+ :param changed_file: a ChangedFile object
+ :return: a list of comments for CommentInput
+ """
+ ret = []
+ assert isinstance(changed_file, ChangedFile)
+ for line, msg in changed_file.comments.iteritems():
+ ret.append({"line": line,
+ "message": msg})
+ return ret
+
+def file_comments_to_review(changed_files):
+ """
+ Create a JSON ReviewInput from a list of ChangedFiles
+ :param changed_files: list of ChangedFiles
+ :return: JSON ReviewInput string
+ """
+ review = {}
+ review['comments'] = {}
+ for f in changed_files:
+ if f.filename and f.comments:
+
+ c = file_comments_to_array(f)
+ if not c:
+ logging.error("no comments for file")
+ review['comments'][f.filename] = c
+ if review['comments']:
+ review['message'] = REPLY_MSG + reply_msg_extra
+ else:
+ del review['comments']
+ review['message'] = POSITIVE_REPLY_MSG
+ #return json.dumps(review, indent=2)
+ return json.dumps(review)
+
+if __name__ == '__main__':
+ if len(sys.argv) == 2:
+ sys.stderr.write("%s <patch filename>....\n" % sys.argv[0])
+ r = check(sys.argv[1])
+ sys.exit(r)
+ else:
+ sys.stderr.write("%s <patch filename>\n" % sys.argv[0])
+ sys.exit(0)