New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 798276 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Jan 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Feature



Sign in to add a comment

factory: add shebang presubmit check

Project Member Reported by youcheng@chromium.org, Jan 2 2018

Issue description

Currently there is no presubmit shebang check for scripts in factory repository.
The result is that the shebang lines in our repository are not consistent, and some even won't work on different environment.


Here is a table of the shebang used and their frequency:

#!/usr/bin/python -u 44
#!/usr/bin/python2 43
#!/usr/bin/env python2 1
#!/usr/bin/python 92
#!/usr/bin/python -Bu 6
#! /usr/bin/env python 1
#!/bin/sh 48
#!/usr/bin/env bash 1
#!/usr/bin/env python 105
#!/bin/bash 24
#!/bin/env python 6
#!/usr/bin/trial --temp-directory=/tmp/_trial_temp/ 4

We could add a presubmit check for this.
 
Not sure if this will be easy.

[sh/bash]
- All scripts targeting to run in limited cros environment (switch_root, initramfs, etc) should use !/bin/sh
- Scripts target to run on dev env (desktop, chroot) should use !/bin/bash, if they need bash features

[python]
- scripts that may need to run on unknown linux distro (even bsd like Mac) should -use /usr/bin/env python
- chromium coding style suggests /usr/bin/python2
- we're deprecating -u
Project Member

Comment 2 by bugdroid1@chromium.org, Jan 4 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform/factory/+/d56929415f842884ddfc178fe9069d87e925c610

commit d56929415f842884ddfc178fe9069d87e925c610
Author: You-Cheng Syu <youcheng@chromium.org>
Date: Thu Jan 04 13:04:46 2018

Makefile: Add shebang presubmit check.

Add a presubmit check to check if all shebangs are in the white list.
Also revise the shebangs to pass the check.

BUG= chromium:798276 
TEST=make presubmit-shebang

Change-Id: I32cea5ca91d65ea05400c5459fb053c131d2ceb0
Reviewed-on: https://chromium-review.googlesource.com/848480
Commit-Ready: Youcheng Syu <youcheng@chromium.org>
Tested-by: Youcheng Syu <youcheng@chromium.org>
Reviewed-by: Pi-Hsun Shih <pihsun@chromium.org>

[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/mount_partition.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/make_text_image.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/test_ui_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/flash_netboot.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/state_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/go/src/overlord/test/overlord_e2e_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/shopfloor/shopfloor_service.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/device/power_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/service/rpc_server.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/run_tests.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/device/fan_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/fixture/whale/servo_client_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/testlog/testlog_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/hwid_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/rules/privacy_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v2/convert_to_v2_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/fixture/arduino_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/utils/jsonrpc_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/testlog/testlog_validator_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/diff_image.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/encoder_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/function_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v2/hwid_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/utils/dhcp_utils.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/goofy.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/audit_source_hashes.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/shell_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/edid_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/plugins/system_log_manager_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/match_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/device/info_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/audit_source_hashes_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/relay_overlord_discovery_packet.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/session_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/po/po_check_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/diff_image_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/input_device_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/dkps/parsers/widevine_parser_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/dkps/dkps_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/regcode.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/gsutil_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/goofy_rpc.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/pytests/rf_graphyte/rf_graphyte_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/instalog/plugins/buffer_file_common.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/factory.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/doc/doc_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/doc/generate_rsts.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/hwid_rule_functions_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/utils/net_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/po/make_e2e_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/goofy_remote.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/sysfs_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/file_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/setup/factory_common.sh
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/Makefile
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/flash_chip_unittest.py
[add] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/devtools/mk/presubmit-shebang.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/testdata/hwid_v3_bundle_OAK.sh
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/pytests/serial_echo_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/pytests/touchscreen_calibration/sensors_server.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/device/led_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/sh/common.sh
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/key_filter.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/i18n/string_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/js/goofy_js_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/pytests/offline_test/offline_test.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/probe_cmdline_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/port_fwd.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/goofy_ghost/goofy_ghost.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/setup/netboot_firmware_settings.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/device/ec_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/device/status_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/plugins/plugin_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/service/rpc_server_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/gooftool/vblock.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/doc/generate_rsts_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/stream_camera.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/pytests/partition_table.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/factory_diff.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/utils/process_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/show_device_data.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/base8192.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/base8192_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v2/convert_to_v2.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/hooks.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/gooftool/bmpblk.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/devtools/mk/common.sh
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/update_ui_status.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/sftp_uploader.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/goofy_rpc_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/toolkit/installer_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/device/partitions_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/probe_cmdline.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/umpire/server/service/http_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/factory_flow/factory_flow.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/time_sanitizer.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/goofy_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/factory_bug.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/device/usb_c_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/vpd_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/hwid_cmdline.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/install_symlinks.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/utils/log_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/utils/kbd_leds.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/invocation.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/utils/serial_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/time_sanitizer_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/factory_flow/test_factory_flow_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/goofy_server_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/experimental/run_region_oobe.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/fixture/arduino.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/utils/schema_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/cpu_usage_monitor_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/setup/lib/cros_image_common.sh
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/smart_lint.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/utils/watchdog_utils_manualtest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/fixture/robot/robot.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/database_unittest.py
[add] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/devtools/mk/presubmit-shebang.json
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/toolkit/installer.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/umpire/server/service/overlord_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/experimental/scan_hwid_dbs.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/toolkit/print_repo_status.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/plugins/plugin_controller_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/decoder_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/migrate_board_dir.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/base32_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/fixture/robot/six_dof_calibration_robot_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/device/thermal_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/yaml_tags_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/utils/sys_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/l10n/regions_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/i18n/translation_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/factory_bundle_info.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/testlog/testlog_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/testlog/testlog_seq_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/send_key.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/rule_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/common_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/utils/string_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/make_par.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/i18n/test_ui_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/factory_flow/servo.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/base32.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/fixture/bft_fixture.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/fixture/dolphin/dolphin_uno_server.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/pytests/verify_components_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/usb_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/event_log_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/utils/connection_manager_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/utils/pygpt.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/goofy/plugins/device_manager_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/pci_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/migrate_board_dir_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/i18n/arg_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/hwid/v3/builder_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/common_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/tools/merge_logs.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/utils/yaml_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/probe/functions/i2c_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/test_lists/test_object_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/gooftool/fmap.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/utils/media_utils_unittest.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/factory_flow/test_factory_flow.py
[modify] https://crrev.com/d56929415f842884ddfc178fe9069d87e925c610/py/test/rules/registration_codes_unittest.py

Status: Fixed (was: Assigned)

Sign in to add a comment