summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/aconfig/convert_finalized_flags/extended_flags_list_35.txt129
-rw-r--r--tools/aconfig/exported_flag_check/allow_flag_list.txt142
-rw-r--r--tools/aconfig/exported_flag_check/allow_package_list.txt2
-rw-r--r--tools/finalization/OWNERS4
-rwxr-xr-xtools/finalization/build-step-0.sh4
-rwxr-xr-xtools/finalization/finalize-vintf-resources.sh56
-rw-r--r--tools/releasetools/check_partition_sizes.py3
7 files changed, 310 insertions, 30 deletions
diff --git a/tools/aconfig/convert_finalized_flags/extended_flags_list_35.txt b/tools/aconfig/convert_finalized_flags/extended_flags_list_35.txt
index e69de29bb2..0b506bae41 100644
--- a/tools/aconfig/convert_finalized_flags/extended_flags_list_35.txt
+++ b/tools/aconfig/convert_finalized_flags/extended_flags_list_35.txt
@@ -0,0 +1,129 @@
+android.app.admin.flags.permission_migration_for_zero_trust_api_enabled
+android.app.app_restrictions_api
+android.app.pinner_service_client_api
+android.car.feature.android_vic_vehicle_properties
+android.car.feature.area_id_config_access
+android.car.feature.batched_subscriptions
+android.car.feature.car_app_card
+android.car.feature.car_audio_dynamic_devices
+android.car.feature.car_audio_fade_manager_configuration
+android.car.feature.car_audio_min_max_activation_volume
+android.car.feature.car_audio_mute_ambiguity
+android.car.feature.car_evs_query_service_status
+android.car.feature.car_evs_stream_management
+android.car.feature.car_night_global_setting
+android.car.feature.car_property_detailed_error_codes
+android.car.feature.car_property_value_property_status
+android.car.feature.cluster_health_monitoring
+android.car.feature.display_compatibility
+android.car.feature.persist_ap_settings
+android.car.feature.projection_query_bt_profile_inhibit
+android.car.feature.serverless_remote_access
+android.car.feature.subscription_with_resolution
+android.car.feature.switch_user_ignoring_uxr
+android.car.feature.variable_update_rate
+android.companion.new_association_builder
+android.companion.virtual.flags.impulse_velocity_strategy_for_touch_navigation
+android.companion.virtual.flags.interactive_screen_mirror
+android.companion.virtual.flags.intercept_intents_before_applying_policy
+android.content.pm.get_package_storage_stats
+android.credentials.flags.settings_activity_enabled
+android.graphics.pdf.flags.enable_form_filling
+android.graphics.pdf.flags.enable_pdf_viewer
+android.hardware.devicestate.feature.flags.device_state_requester_cancel_state
+android.hardware.usb.flags.enable_is_mode_change_supported_api
+android.media.audio.focus_exclusive_with_recording
+android.media.audio.focus_freeze_test_api
+android.media.audio.ro_foreground_audio_control
+android.media.audiopolicy.audio_mix_test_api
+android.multiuser.enable_biometrics_to_unlock_private_space
+android.nfc.enable_nfc_reader_option
+android.nfc.enable_nfc_set_discovery_tech
+android.nfc.nfc_vendor_cmd
+android.os.bugreport_mode_max_value
+android.os.profiling.redaction_enabled
+android.os.profiling.telemetry_apis
+android.permission.flags.device_aware_permissions_enabled
+android.permission.flags.sensitive_notification_app_protection
+android.permission.flags.system_server_role_controller_enabled
+android.service.chooser.fix_resolver_memory_leak
+android.service.notification.redact_sensitive_notifications_big_text_style
+android.service.notification.redact_sensitive_notifications_from_untrusted_listeners
+android.view.accessibility.motion_event_observing
+android.webkit.update_service_v2
+com.android.aconfig.test.enabled_fixed_ro_exported
+com.android.aconfig.test.enabled_ro_exported
+com.android.adservices.ondevicepersonalization.flags.on_device_personalization_apis_enabled
+com.android.appsearch.flags.enable_enterprise_global_search_session
+com.android.appsearch.flags.enable_generic_document_builder_hidden_methods
+com.android.appsearch.flags.enable_generic_document_copy_constructor
+com.android.appsearch.flags.enable_get_parent_types_and_indexable_nested_properties
+com.android.appsearch.flags.enable_grouping_type_per_schema
+com.android.appsearch.flags.enable_list_filter_has_property_function
+com.android.appsearch.flags.enable_put_documents_request_add_taken_actions
+com.android.appsearch.flags.enable_safe_parcelable_2
+com.android.appsearch.flags.enable_search_spec_filter_properties
+com.android.appsearch.flags.enable_search_spec_set_search_source_log_tag
+com.android.appsearch.flags.enable_set_publicly_visible_schema
+com.android.appsearch.flags.enable_set_schema_visible_to_configs
+com.android.bluetooth.flags.a2dp_offload_codec_extensibility
+com.android.bluetooth.flags.allow_switching_hid_and_hogp
+com.android.bluetooth.flags.auto_on_feature
+com.android.bluetooth.flags.channel_sounding
+com.android.bluetooth.flags.enumerate_gatt_errors
+com.android.bluetooth.flags.get_address_type_api
+com.android.bluetooth.flags.key_missing_broadcast
+com.android.bluetooth.flags.leaudio_add_sampling_frequencies
+com.android.bluetooth.flags.leaudio_broadcast_monitor_source_sync_status
+com.android.bluetooth.flags.leaudio_broadcast_volume_control_for_connected_devices
+com.android.bluetooth.flags.leaudio_callback_on_group_stream_status
+com.android.bluetooth.flags.leaudio_multiple_vocs_instances_api
+com.android.bluetooth.flags.metadata_api_inactive_audio_device_upon_connection
+com.android.bluetooth.flags.mfi_has_uuid
+com.android.bluetooth.flags.settings_can_control_hap_preset
+com.android.bluetooth.flags.support_exclusive_manager
+com.android.bluetooth.flags.unix_file_socket_creation_failure
+com.android.healthconnect.flags.read_exercise_routes_all_enabled
+com.android.healthconnect.flags.skin_temperature
+com.android.healthconnect.flags.training_plans
+com.android.icu.icu_v_api
+com.android.ipsec.flags.dpd_disable_api
+com.android.ipsec.flags.dumpsys_api
+com.android.ipsec.flags.enabled_ike_options_api
+com.android.ipsec.flags.liveness_check_api
+com.android.libcore.hpke_v_apis
+com.android.libcore.v_apis
+com.android.media.flags.enable_cross_user_routing_in_media_router2
+com.android.media.mainline.flags.enable_pid_to_media_session_2
+com.android.nearby.flags.powered_off_finding
+com.android.net.flags.basic_background_restrictions_enabled
+com.android.net.flags.ipsec_transform_state
+com.android.net.flags.net_capability_local_network
+com.android.net.flags.nsd_subtypes_support_enabled
+com.android.net.flags.register_nsd_offload_engine_api
+com.android.net.flags.request_restricted_wifi
+com.android.net.flags.set_data_saver_via_cm
+com.android.net.flags.support_is_uid_networking_blocked
+com.android.net.flags.support_transport_satellite
+com.android.net.flags.tethering_request_with_soft_ap_config
+com.android.net.thread.flags.thread_enabled
+com.android.permission.flags.private_profile_supported
+com.android.permission.flags.private_profile_title_api
+com.android.permission.flags.wear_privacy_dashboard_enabled_read_only
+com.android.providers.contactkeys.flags.contactkeys_strip_fix
+com.android.providers.media.flags.access_media_owner_package_name_permission
+com.android.providers.media.flags.pick_ordered_images
+com.android.providers.media.flags.picker_accent_color
+com.android.providers.media.flags.picker_default_tab
+com.android.providers.media.flags.picker_recent_selection
+com.android.system.virtualmachine.flags.avf_v_test_apis
+com.android.uwb.flags.data_transfer_phase_config
+com.android.uwb.flags.hw_state
+com.android.uwb.flags.hybrid_session_support
+com.android.uwb.flags.query_timestamp_micros
+com.android.uwb.flags.reason_inband_session_stop
+com.android.wifi.flags.android_v_wifi_api
+com.android.wifi.flags.network_provider_battery_charging_status
+com.android.wifi.flags.shared_connectivity_broadcast_receiver_test_api
+com.android.window.flags.untrusted_embedding_state_sharing
+com.google.android.haptics.flags.vendor_vibration_control
diff --git a/tools/aconfig/exported_flag_check/allow_flag_list.txt b/tools/aconfig/exported_flag_check/allow_flag_list.txt
index b9c81c4ae9..9c314c27d5 100644
--- a/tools/aconfig/exported_flag_check/allow_flag_list.txt
+++ b/tools/aconfig/exported_flag_check/allow_flag_list.txt
@@ -257,4 +257,144 @@ com.android.wifi.flags.shared_connectivity_broadcast_receiver_test_api
com.android.wifi.flags.wep_disabled_in_apm
com.android.window.flags.untrusted_embedding_state_sharing
vendor.vibrator.hal.flags.enable_pwle_v2
-vendor.vibrator.hal.flags.remove_capo \ No newline at end of file
+vendor.vibrator.hal.flags.remove_capo
+
+android.app.supervision.flags.enable_app_approval
+android.app.supervision.flags.enable_supervision_app_service
+android.app.supervision.flags.enable_supervision_pin_recovery_screen
+android.app.supervision.flags.enable_supervision_settings_screen
+android.app.supervision.flags.enable_web_content_filters_screen
+android.car.feature.display_compatibility_caption_bar
+android.companion.virtualdevice.flags.viewconfiguration_apis
+android.content.pm.always_load_past_certs_v4
+android.content.res.always_false
+android.content.res.use_new_aconfig_storage
+android.credentials.flags.propagate_user_context_for_intent_creation
+android.database.sqlite.concurrent_open_helper
+android.hardware.devicestate.feature.flags.device_state_configuration_flag
+android.media.audio.ringtone_user_uri_check
+android.media.soundtrigger.detection_service_paused_resumed_api
+android.media.tv.flags.tif_extension_standardization
+android.os.allow_thermal_hal_skin_forecast
+android.os.force_concurrent_message_queue
+android.permission.flags.enable_all_sqlite_appops_accesses
+android.permission.flags.grant_read_blocked_numbers_to_system_ui_intelligence
+android.permission.flags.record_all_runtime_appops_sqlite
+android.permission.flags.unknown_call_setting_blocked_logging_enabled
+android.server.wear_gesture_api
+android.view.accessibility.a11y_is_visited_api
+android.view.accessibility.request_rectangle_with_source
+android.view.contentcapture.flags.flush_after_each_frame
+com.android.adservices.flags.ad_id_cache_enabled
+com.android.adservices.flags.adservices_enablement_check_enabled
+com.android.adservices.flags.adservices_outcomereceiver_r_api_enabled
+com.android.adservices.flags.enable_adservices_api_enabled
+com.android.adservices.flags.sdksandbox_invalidate_effective_target_sdk_version_cache
+com.android.adservices.flags.sdksandbox_use_effective_target_sdk_version_for_restrictions
+com.android.appsearch.flags.enable_all_package_indexing_on_indexer_update
+com.android.appsearch.flags.enable_app_functions
+com.android.appsearch.flags.enable_app_open_events_indexer_check_prior_attempt
+com.android.appsearch.flags.enable_app_search_manage_blob_files
+com.android.appsearch.flags.enable_apps_indexer_check_prior_attempt
+com.android.appsearch.flags.enable_batch_put
+com.android.appsearch.flags.enable_calculate_time_since_last_attempted_optimize
+com.android.appsearch.flags.enable_check_contacts_indexer_delta_timestamps
+com.android.appsearch.flags.enable_check_contacts_indexer_update_job_params
+com.android.appsearch.flags.enable_four_hour_min_time_optimize_threshold
+com.android.appsearch.flags.enable_isolated_storage
+com.android.appsearch.flags.enable_marker_file_for_optimize
+com.android.appsearch.flags.enable_qualified_id_join_index_v3
+com.android.appsearch.flags.enable_recovery_proof_persistence
+com.android.appsearch.flags.enable_release_backup_schema_file_if_overlay_present
+com.android.appsearch.flags.enable_soft_index_restoration
+com.android.clockwork.flags.support_paired_device_none
+com.android.gms.flags.enable_deleted_gms
+com.android.gms.flags.enable_new_gms
+com.android.gms.flags.enable_optional_gms
+com.android.hardware.input.key_event_activity_detection
+com.android.healthfitness.flags.cloud_backup_and_restore_db
+com.android.healthfitness.flags.exercise_segment_weight
+com.android.healthfitness.flags.exercise_segment_weight_db
+com.android.healthfitness.flags.extend_export_import_telemetry
+com.android.healthfitness.flags.launch_onboarding_activity
+com.android.healthfitness.flags.personal_health_record_enable_export_import
+com.android.healthfitness.flags.phr_change_logs
+com.android.healthfitness.flags.phr_change_logs_db
+com.android.healthfitness.flags.phr_fhir_extension_validation
+com.android.healthfitness.flags.phr_fhir_resource_validator_use_weak_reference
+com.android.healthfitness.flags.phr_fhir_validation_disallow_empty_objects_arrays
+com.android.healthfitness.flags.refactor_aggregations
+com.android.healthfitness.flags.single_user_permission_intent_tracker
+com.android.healthfitness.flags.smoking
+com.android.healthfitness.flags.smoking_db
+com.android.healthfitness.flags.step_tracking_enabled
+com.android.healthfitness.flags.symptoms
+com.android.healthfitness.flags.symptoms_db
+com.android.icu.telephony_lookup_mcc_extension
+com.android.internal.telephony.flags.pass_copied_call_state_list
+com.android.internal.telephony.flags.robust_number_verification
+com.android.internal.telephony.flags.satellite_exit_p2p_session_outside_geofence
+com.android.internal.telephony.flags.starlink_data_bugfix
+com.android.media.audio.hardening_partial
+com.android.media.flags.enable_suggested_device_api
+com.android.media.flags.enable_use_of_singleton_audio_manager_route_controller
+com.android.media.projection.flags.app_content_sharing
+com.android.media.projection.flags.show_stop_dialog_post_call_end
+com.android.permission.flags.cross_user_role_ux_bugfix_enabled
+com.android.permission.flags.default_apps_recommendation_enabled
+com.android.permission.flags.fix_safety_center_touch_target
+com.android.providers.media.flags.enable_exclusion_list_for_default_folders
+com.android.providers.media.flags.enable_mime_type_fix_for_android_15
+com.android.providers.media.flags.exclude_unreliable_volumes
+com.android.providers.media.flags.revoke_access_owned_photos
+com.android.sdksandbox.flags.sandbox_activity_sdk_based_context
+com.android.sdksandbox.flags.selinux_input_selector
+com.android.sdksandbox.flags.selinux_sdk_sandbox_audit
+com.android.settings.flags.enable_remove_association_bt_unpair
+com.android.settingslib.widget.theme.flags.is_expressive_design_enabled
+com.android.window.flags.fix_hide_overlay_api
+com.android.window.flags.update_host_input_transfer_token
+com.fuchsia.bluetooth.flags.a2dp_lhdc_api
+com.fuchsia.bluetooth.flags.aics_api
+com.fuchsia.bluetooth.flags.allow_switching_hid_and_hogp
+com.fuchsia.bluetooth.flags.bt_offload_socket_api
+com.fuchsia.bluetooth.flags.bt_socket_api_l2cap_cid
+com.fuchsia.bluetooth.flags.channel_sounding
+com.fuchsia.bluetooth.flags.channel_sounding_25q2_apis
+com.fuchsia.bluetooth.flags.directed_advertising_api
+com.fuchsia.bluetooth.flags.encryption_change_broadcast
+com.fuchsia.bluetooth.flags.hci_vendor_specific_extension
+com.fuchsia.bluetooth.flags.identity_address_type_api
+com.fuchsia.bluetooth.flags.key_missing_public
+com.fuchsia.bluetooth.flags.leaudio_add_opus_codec_type
+com.fuchsia.bluetooth.flags.leaudio_broadcast_api_get_local_metadata
+com.fuchsia.bluetooth.flags.leaudio_broadcast_api_manage_primary_group
+com.fuchsia.bluetooth.flags.leaudio_broadcast_monitor_source_sync_status
+com.fuchsia.bluetooth.flags.leaudio_broadcast_volume_control_for_connected_devices
+com.fuchsia.bluetooth.flags.leaudio_mono_location_errata_api
+com.fuchsia.bluetooth.flags.leaudio_multiple_vocs_instances_api
+com.fuchsia.bluetooth.flags.metadata_api_inactive_audio_device_upon_connection
+com.fuchsia.bluetooth.flags.metadata_api_microphone_for_call_enabled
+com.fuchsia.bluetooth.flags.settings_can_control_hap_preset
+com.fuchsia.bluetooth.flags.socket_settings_api
+com.fuchsia.bluetooth.flags.support_bluetooth_quality_report_v6
+com.fuchsia.bluetooth.flags.support_exclusive_manager
+com.fuchsia.bluetooth.flags.support_metadata_device_types_apis
+com.fuchsia.bluetooth.flags.support_remote_device_metadata
+com.fuchsia.bluetooth.flags.unix_file_socket_creation_failure
+com.google.android.clockwork.pele.flags.koru_feature_cached_views
+com.google.android.clockwork.pele.flags.koru_origami
+com.google.android.device.pixel.watch.flags.pdms_flag_1
+com.google.android.haptics.flags.vendor_vibration_control
+com.google.clockwork.flags.prevent_ime_startup
+vendor.gc2.flags.mse_report
+vendor.google.plat_security.flags.enable_service
+vendor.google.plat_security.flags.enable_trusty_service
+vendor.google.wireless_charger.service.flags.enable_service
+
+android.hardware.biometrics.move_fm_api_to_bm
+android.hardware.serial.flags.enable_serial_api
+com.android.providers.media.flags.enable_local_media_provider_capabilities
+com.android.providers.media.flags.enable_photopicker_datescrubber
+com.android.system.virtualmachine.flags.terminal_storage_balloon
+com.android.tradeinmode.flags.trade_in_mode_2025q4
diff --git a/tools/aconfig/exported_flag_check/allow_package_list.txt b/tools/aconfig/exported_flag_check/allow_package_list.txt
index e69de29bb2..e76472b7ae 100644
--- a/tools/aconfig/exported_flag_check/allow_package_list.txt
+++ b/tools/aconfig/exported_flag_check/allow_package_list.txt
@@ -0,0 +1,2 @@
+com.google.wear.sdk
+com.google.wear.services.infra.flags
diff --git a/tools/finalization/OWNERS b/tools/finalization/OWNERS
index b00b774b72..4df009448e 100644
--- a/tools/finalization/OWNERS
+++ b/tools/finalization/OWNERS
@@ -1,7 +1,5 @@
include platform/build/soong:/OWNERS
-amhk@google.com
-gurpreetgs@google.com
-michaelwr@google.com
+include platform/frameworks/base:/SDK_OWNERS
patb@google.com
smoreland@google.com
zyy@google.com
diff --git a/tools/finalization/build-step-0.sh b/tools/finalization/build-step-0.sh
index 8826b35c0f..bc41a196e8 100755
--- a/tools/finalization/build-step-0.sh
+++ b/tools/finalization/build-step-0.sh
@@ -25,8 +25,8 @@ RELEASE_BOARD_API_LEVEL='$FINAL_BOARD_API_LEVEL'"
fi;
if [ "$need_vintf_finalize" = true ] ; then # VINTF finalization
- source $top/build/make/tools/finalization/finalize-vintf-resources.sh
+ source $top/build/make/tools/finalization/finalize-vintf-resources.sh $@
fi;
}
-finalize_main_step0
+finalize_main_step0 $@
diff --git a/tools/finalization/finalize-vintf-resources.sh b/tools/finalization/finalize-vintf-resources.sh
index 45efc104db..9660e3fc8c 100755
--- a/tools/finalization/finalize-vintf-resources.sh
+++ b/tools/finalization/finalize-vintf-resources.sh
@@ -3,6 +3,21 @@
set -ex
function finalize_vintf_resources() {
+ if [ $# -gt 1 ]; then
+ echo "No argument or '--steps_for_build_test_only' is allowed"
+ exit 1
+ fi
+ if [ $# -eq 1 ]; then
+ if [ "$1" == "--steps_for_build_test_only" ]; then
+ echo "This is only to verify building a target."
+ echo "Skip LLNDK ABI dump and VINTF check."
+ local build_test_only=true
+ else
+ echo "Unknown argument $1"
+ exit 1
+ fi
+ fi
+
local top="$(dirname "$0")"/../../../..
source $top/build/make/tools/finalization/environment.sh
# environment needed to build dependencies and run scripts
@@ -26,37 +41,30 @@ function finalize_vintf_resources() {
# system/sepolicy
"$top/system/sepolicy/tools/finalize-vintf-resources.sh" "$top" "$FINAL_BOARD_API_LEVEL"
- create_new_compat_matrix_and_kernel_configs
-
- # pre-finalization build target (trunk)
local aidl_m="$top/build/soong/soong_ui.bash --make-mode"
AIDL_TRANSITIVE_FREEZE=true $aidl_m aidl-freeze-api create_reference_dumps
- # Generate LLNDK ABI dumps
- # This command depends on ANDROID_BUILD_TOP
- "$ANDROID_HOST_OUT/bin/create_reference_dumps" -release "$TARGET_RELEASE" --build-variant "$TARGET_BUILD_VARIANT" --lib-variant LLNDK
+ finalize_compat_matrix $build_test_only
+
+ if ! [ "$build_test_only" = "true" ]; then
+ # Generate LLNDK ABI dumps
+ # This command depends on ANDROID_BUILD_TOP
+ "$ANDROID_HOST_OUT/bin/create_reference_dumps" -release "$TARGET_RELEASE" --build-variant "$TARGET_BUILD_VARIANT" --lib-variant LLNDK
+ fi
}
-function create_new_compat_matrix_and_kernel_configs() {
- # The compatibility matrix versions are bumped during vFRC
- # These will change every time we have a new vFRC
+function finalize_compat_matrix() {
+ local build_test_only=$1
local CURRENT_COMPATIBILITY_MATRIX_LEVEL="$FINAL_BOARD_API_LEVEL"
- local NEXT_COMPATIBILITY_MATRIX_LEVEL="$FINAL_NEXT_BOARD_API_LEVEL"
- # The kernel configs need the letter of the Android release
- local CURRENT_RELEASE_LETTER="$FINAL_CORRESPONDING_VERSION_LETTER"
- local NEXT_RELEASE_LETTER="$FINAL_NEXT_CORRESPONDING_VERSION_LETTER"
-
- # build the targets required before touching the Android.bp/Android.mk files
- local build_cmd="$top/build/soong/soong_ui.bash --make-mode"
- $build_cmd bpmodify
+ "$top/prebuilts/build-tools/path/linux-x86/python3" "$top/hardware/interfaces/compatibility_matrices/finalize.py" "$CURRENT_COMPATIBILITY_MATRIX_LEVEL"
- "$top/prebuilts/build-tools/path/linux-x86/python3" "$top/hardware/interfaces/compatibility_matrices/bump.py" "$CURRENT_COMPATIBILITY_MATRIX_LEVEL" "$NEXT_COMPATIBILITY_MATRIX_LEVEL" "$CURRENT_RELEASE_LETTER" "$NEXT_RELEASE_LETTER" "$FINAL_CORRESPONDING_PLATFORM_VERSION"
-
- # Freeze the current framework manifest file. This relies on the
- # aosp_cf_x86_64-trunk_staging build target to get the right manifest
- # fragments installed.
- "$top/system/libhidl/vintfdata/freeze.sh" "$CURRENT_COMPATIBILITY_MATRIX_LEVEL"
+ if ! [ "$build_test_only" = "true" ]; then
+ # Freeze the current framework manifest file. This relies on the
+ # interfaces already being frozen because we are building with fina_0 which
+ # inherits from `next` where RELEASE_AIDL_USE_UNFROZEN=false
+ "$top/system/libhidl/vintfdata/freeze.sh" "$CURRENT_COMPATIBILITY_MATRIX_LEVEL"
+ fi
}
function freeze_framework_manifest() {
@@ -65,5 +73,5 @@ function freeze_framework_manifest() {
}
-finalize_vintf_resources
+finalize_vintf_resources $@
diff --git a/tools/releasetools/check_partition_sizes.py b/tools/releasetools/check_partition_sizes.py
index 738d77d63e..b469d460b0 100644
--- a/tools/releasetools/check_partition_sizes.py
+++ b/tools/releasetools/check_partition_sizes.py
@@ -58,6 +58,9 @@ class Expression(object):
*format_args)
else:
msg = "{} is greater than {}:\n{} == {} > {} == {}".format(*format_args)
+ if "SOONG_RUSTC_INCREMENTAL" in os.environ:
+ msg = ("If setting \"SOONG_RUSTC_INCREMENTAL\" try building without it. "
+ + msg)
if level == logging.ERROR:
raise RuntimeError(msg)
else: