Merge changes from topic "revert-3196490-revert-3195812-revert-3195644-revert-3195637-revert-3184480-system_build_prop_soong-BZIDUTEOOC-KRUETCBWUR-TUHZPHUVFJ-XYILSUPUOA-PCKYAVELZP" into main
* changes: Revert "Conditionally pass kernel version to build.prop" Revert "Revert "Revert "Revert^2 "Add more variables for system/..." Revert^5 "Use Soong-built system/build.prop"
This commit is contained in:
@@ -1246,12 +1246,6 @@ BUILD_WARNING_BAD_OPTIONAL_USES_LIBS_ALLOWLIST := LegacyCamera Gallery2
|
|||||||
# in the source tree.
|
# in the source tree.
|
||||||
dont_bother_goals := out product-graph
|
dont_bother_goals := out product-graph
|
||||||
|
|
||||||
ifeq ($(TARGET_SYSTEM_PROP),)
|
|
||||||
TARGET_SYSTEM_PROP := $(wildcard $(TARGET_DEVICE_DIR)/system.prop)
|
|
||||||
endif
|
|
||||||
|
|
||||||
.KATI_READONLY += TARGET_SYSTEM_PROP
|
|
||||||
|
|
||||||
include $(BUILD_SYSTEM)/sysprop_config.mk
|
include $(BUILD_SYSTEM)/sysprop_config.mk
|
||||||
|
|
||||||
# Make ANDROID Soong config variables visible to Android.mk files, for
|
# Make ANDROID Soong config variables visible to Android.mk files, for
|
||||||
|
@@ -340,19 +340,12 @@ $(call add_json_bool, BoardUseVbmetaDigestInFingerprint, $(filter true,$(BOARD_U
|
|||||||
|
|
||||||
$(call add_json_list, OemProperties, $(PRODUCT_OEM_PROPERTIES))
|
$(call add_json_list, OemProperties, $(PRODUCT_OEM_PROPERTIES))
|
||||||
|
|
||||||
$(call add_json_list, SystemPropFiles, $(TARGET_SYSTEM_PROP))
|
|
||||||
|
|
||||||
# Do not set ArtTargetIncludeDebugBuild into any value if PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD is not set,
|
# Do not set ArtTargetIncludeDebugBuild into any value if PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD is not set,
|
||||||
# to have the same behavior from runtime_libart.mk.
|
# to have the same behavior from runtime_libart.mk.
|
||||||
ifneq ($(PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD),)
|
ifneq ($(PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD),)
|
||||||
$(call add_json_bool, ArtTargetIncludeDebugBuild, $(PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD))
|
$(call add_json_bool, ArtTargetIncludeDebugBuild, $(PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
_config_enable_uffd_gc := \
|
|
||||||
$(firstword $(OVERRIDE_ENABLE_UFFD_GC) $(PRODUCT_ENABLE_UFFD_GC) default)
|
|
||||||
$(call add_json_str, EnableUffdGc, $(_config_enable_uffd_gc))
|
|
||||||
_config_enable_uffd_gc :=
|
|
||||||
|
|
||||||
$(call json_end)
|
$(call json_end)
|
||||||
|
|
||||||
$(file >$(SOONG_VARIABLES).tmp,$(json_contents))
|
$(file >$(SOONG_VARIABLES).tmp,$(json_contents))
|
||||||
|
@@ -48,6 +48,11 @@ $(call add_json_str, BootloaderBoardName, $(TARGET_BOOTLOADER_BOARD_NAME))
|
|||||||
|
|
||||||
$(call add_json_bool, SdkBuild, $(filter sdk sdk_addon,$(MAKECMDGOALS)))
|
$(call add_json_bool, SdkBuild, $(filter sdk sdk_addon,$(MAKECMDGOALS)))
|
||||||
|
|
||||||
|
_config_enable_uffd_gc := \
|
||||||
|
$(firstword $(OVERRIDE_ENABLE_UFFD_GC) $(PRODUCT_ENABLE_UFFD_GC) default)
|
||||||
|
$(call add_json_str, EnableUffdGc, $(_config_enable_uffd_gc))
|
||||||
|
_config_enable_uffd_gc :=
|
||||||
|
|
||||||
$(call add_json_str, SystemServerCompilerFilter, $(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER))
|
$(call add_json_str, SystemServerCompilerFilter, $(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER))
|
||||||
|
|
||||||
$(call add_json_bool, Product16KDeveloperOption, $(filter true,$(PRODUCT_16K_DEVELOPER_OPTION)))
|
$(call add_json_bool, Product16KDeveloperOption, $(filter true,$(PRODUCT_16K_DEVELOPER_OPTION)))
|
||||||
@@ -88,8 +93,6 @@ $(call add_json_str, VendorImageFileSystemType, $(BOARD_VENDORIMAGE_FILE_SYSTEM_
|
|||||||
|
|
||||||
$(call add_json_list, BuildVersionTags, $(BUILD_VERSION_TAGS))
|
$(call add_json_list, BuildVersionTags, $(BUILD_VERSION_TAGS))
|
||||||
|
|
||||||
$(call add_json_bool, ProductNotDebuggableInUserdebug, $(PRODUCT_NOT_DEBUGGABLE_IN_USERDEBUG))
|
|
||||||
|
|
||||||
$(call json_end)
|
$(call json_end)
|
||||||
|
|
||||||
$(shell mkdir -p $(dir $(SOONG_EXTRA_VARIABLES)))
|
$(shell mkdir -p $(dir $(SOONG_EXTRA_VARIABLES)))
|
||||||
|
@@ -33,6 +33,13 @@ define generate-common-build-props
|
|||||||
echo "# from generate-common-build-props" >> $(2);\
|
echo "# from generate-common-build-props" >> $(2);\
|
||||||
echo "# These properties identify this partition image." >> $(2);\
|
echo "# These properties identify this partition image." >> $(2);\
|
||||||
echo "####################################" >> $(2);\
|
echo "####################################" >> $(2);\
|
||||||
|
$(if $(filter system,$(1)),\
|
||||||
|
echo "ro.product.$(1).brand=$(PRODUCT_SYSTEM_BRAND)" >> $(2);\
|
||||||
|
echo "ro.product.$(1).device=$(PRODUCT_SYSTEM_DEVICE)" >> $(2);\
|
||||||
|
echo "ro.product.$(1).manufacturer=$(PRODUCT_SYSTEM_MANUFACTURER)" >> $(2);\
|
||||||
|
echo "ro.product.$(1).model=$(PRODUCT_SYSTEM_MODEL)" >> $(2);\
|
||||||
|
echo "ro.product.$(1).name=$(PRODUCT_SYSTEM_NAME)" >> $(2);\
|
||||||
|
,\
|
||||||
echo "ro.product.$(1).brand=$(PRODUCT_BRAND)" >> $(2);\
|
echo "ro.product.$(1).brand=$(PRODUCT_BRAND)" >> $(2);\
|
||||||
echo "ro.product.$(1).device=$(TARGET_DEVICE)" >> $(2);\
|
echo "ro.product.$(1).device=$(TARGET_DEVICE)" >> $(2);\
|
||||||
echo "ro.product.$(1).manufacturer=$(PRODUCT_MANUFACTURER)" >> $(2);\
|
echo "ro.product.$(1).manufacturer=$(PRODUCT_MANUFACTURER)" >> $(2);\
|
||||||
@@ -53,6 +60,7 @@ define generate-common-build-props
|
|||||||
if [ -n "$(strip $(PRODUCT_MANUFACTURER_FOR_ATTESTATION))" ]; then \
|
if [ -n "$(strip $(PRODUCT_MANUFACTURER_FOR_ATTESTATION))" ]; then \
|
||||||
echo "ro.product.manufacturer_for_attestation=$(PRODUCT_MANUFACTURER_FOR_ATTESTATION)" >> $(2);\
|
echo "ro.product.manufacturer_for_attestation=$(PRODUCT_MANUFACTURER_FOR_ATTESTATION)" >> $(2);\
|
||||||
fi; \
|
fi; \
|
||||||
|
)\
|
||||||
$(if $(filter true,$(ZYGOTE_FORCE_64)),\
|
$(if $(filter true,$(ZYGOTE_FORCE_64)),\
|
||||||
$(if $(filter vendor,$(1)),\
|
$(if $(filter vendor,$(1)),\
|
||||||
echo "ro.$(1).product.cpu.abilist=$(TARGET_CPU_ABI_LIST_64_BIT)" >> $(2);\
|
echo "ro.$(1).product.cpu.abilist=$(TARGET_CPU_ABI_LIST_64_BIT)" >> $(2);\
|
||||||
@@ -218,11 +226,50 @@ KNOWN_OEM_THUMBPRINT_PROPERTIES:=
|
|||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# system/build.prop
|
# system/build.prop
|
||||||
#
|
#
|
||||||
# system/build.prop is built by Soong. See system-build.prop module in
|
# Note: parts of this file that can't be generated by the build-properties
|
||||||
# build/soong/Android.bp.
|
# macro are manually created as separate files and then fed into the macro
|
||||||
|
|
||||||
|
buildinfo_prop := $(call intermediates-dir-for,ETC,buildinfo.prop)/buildinfo.prop
|
||||||
|
|
||||||
|
ifdef TARGET_SYSTEM_PROP
|
||||||
|
system_prop_file := $(TARGET_SYSTEM_PROP)
|
||||||
|
else
|
||||||
|
system_prop_file := $(wildcard $(TARGET_DEVICE_DIR)/system.prop)
|
||||||
|
endif
|
||||||
|
|
||||||
|
_prop_files_ := \
|
||||||
|
$(buildinfo_prop) \
|
||||||
|
$(system_prop_file)
|
||||||
|
|
||||||
|
# Order matters here. When there are duplicates, the last one wins.
|
||||||
|
# TODO(b/117892318): don't allow duplicates so that the ordering doesn't matter
|
||||||
|
_prop_vars_ := \
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES \
|
||||||
|
PRODUCT_SYSTEM_PROPERTIES
|
||||||
|
|
||||||
|
# TODO(b/117892318): deprecate this
|
||||||
|
_prop_vars_ += \
|
||||||
|
PRODUCT_SYSTEM_DEFAULT_PROPERTIES
|
||||||
|
|
||||||
|
ifndef property_overrides_split_enabled
|
||||||
|
_prop_vars_ += \
|
||||||
|
ADDITIONAL_VENDOR_PROPERTIES \
|
||||||
|
PRODUCT_VENDOR_PROPERTIES
|
||||||
|
endif
|
||||||
|
|
||||||
INSTALLED_BUILD_PROP_TARGET := $(TARGET_OUT)/build.prop
|
INSTALLED_BUILD_PROP_TARGET := $(TARGET_OUT)/build.prop
|
||||||
|
|
||||||
|
$(eval $(call build-properties,\
|
||||||
|
system,\
|
||||||
|
$(INSTALLED_BUILD_PROP_TARGET),\
|
||||||
|
$(_prop_files_),\
|
||||||
|
$(_prop_vars_),\
|
||||||
|
$(PRODUCT_SYSTEM_PROPERTY_BLACKLIST),\
|
||||||
|
$(empty),\
|
||||||
|
$(empty)))
|
||||||
|
|
||||||
|
$(eval $(call declare-1p-target,$(INSTALLED_BUILD_PROP_TARGET)))
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# vendor/build.prop
|
# vendor/build.prop
|
||||||
#
|
#
|
||||||
|
@@ -15,7 +15,28 @@ $(foreach name, $(_additional_prop_var_names),\
|
|||||||
)
|
)
|
||||||
_additional_prop_var_names :=
|
_additional_prop_var_names :=
|
||||||
|
|
||||||
$(KATI_obsolete_var ADDITIONAL_SYSTEM_PROPERTIES,Use build/soong/scripts/gen_build_prop.py instead)
|
#
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# Add the product-defined properties to the build properties.
|
||||||
|
ifneq ($(BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED), true)
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += $(PRODUCT_PROPERTY_OVERRIDES)
|
||||||
|
else
|
||||||
|
ifndef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += $(PRODUCT_PROPERTY_OVERRIDES)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.treble.enabled=${PRODUCT_FULL_TREBLE}
|
||||||
|
|
||||||
|
# Set ro.llndk.api_level to show the maximum vendor API level that the LLNDK in
|
||||||
|
# the system partition supports.
|
||||||
|
ifdef RELEASE_BOARD_API_LEVEL
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.llndk.api_level=$(RELEASE_BOARD_API_LEVEL)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Sets ro.actionable_compatible_property.enabled to know on runtime whether the
|
||||||
|
# allowed list of actionable compatible properties is enabled or not.
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.actionable_compatible_property.enabled=true
|
||||||
|
|
||||||
# Add the system server compiler filter if they are specified for the product.
|
# Add the system server compiler filter if they are specified for the product.
|
||||||
ifneq (,$(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER))
|
ifneq (,$(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER))
|
||||||
@@ -35,6 +56,23 @@ else
|
|||||||
ADDITIONAL_PRODUCT_PROPERTIES += ro.product.page_size=4096
|
ADDITIONAL_PRODUCT_PROPERTIES += ro.product.page_size=4096
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Enable core platform API violation warnings on userdebug and eng builds.
|
||||||
|
ifneq ($(TARGET_BUILD_VARIANT),user)
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += persist.debug.dalvik.vm.core_platform_api_policy=just-warn
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Define ro.sanitize.<name> properties for all global sanitizers.
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += $(foreach s,$(SANITIZE_TARGET),ro.sanitize.$(s)=true)
|
||||||
|
|
||||||
|
# Sets the default value of ro.postinstall.fstab.prefix to /system.
|
||||||
|
# Device board config should override the value to /product when needed by:
|
||||||
|
#
|
||||||
|
# PRODUCT_PRODUCT_PROPERTIES += ro.postinstall.fstab.prefix=/product
|
||||||
|
#
|
||||||
|
# It then uses ${ro.postinstall.fstab.prefix}/etc/fstab.postinstall to
|
||||||
|
# mount system_other partition.
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.postinstall.fstab.prefix=/system
|
||||||
|
|
||||||
# Add cpu properties for bionic and ART.
|
# Add cpu properties for bionic and ART.
|
||||||
ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.arch=$(TARGET_ARCH)
|
ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.arch=$(TARGET_ARCH)
|
||||||
ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.cpu_variant=$(TARGET_CPU_VARIANT_RUNTIME)
|
ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.cpu_variant=$(TARGET_CPU_VARIANT_RUNTIME)
|
||||||
@@ -162,6 +200,87 @@ ADDITIONAL_PRODUCT_PROPERTIES += ro.product.build.no_bionic_page_size_macro=true
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT))
|
user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT))
|
||||||
|
enable_target_debugging := true
|
||||||
|
enable_dalvik_lock_contention_logging := true
|
||||||
|
ifneq (,$(user_variant))
|
||||||
|
# Target is secure in user builds.
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.secure=1
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += security.perf_harden=1
|
||||||
|
|
||||||
|
ifeq ($(user_variant),user)
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.adb.secure=1
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(user_variant),userdebug)
|
||||||
|
# Disable debugging in plain user builds.
|
||||||
|
enable_target_debugging :=
|
||||||
|
enable_dalvik_lock_contention_logging :=
|
||||||
|
else
|
||||||
|
# Disable debugging in userdebug builds if PRODUCT_NOT_DEBUGGABLE_IN_USERDEBUG
|
||||||
|
# is set.
|
||||||
|
ifneq (,$(strip $(PRODUCT_NOT_DEBUGGABLE_IN_USERDEBUG)))
|
||||||
|
enable_target_debugging :=
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Disallow mock locations by default for user builds
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.allow.mock.location=0
|
||||||
|
|
||||||
|
else # !user_variant
|
||||||
|
# Turn on checkjni for non-user builds.
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.kernel.android.checkjni=1
|
||||||
|
# Set device insecure for non-user builds.
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.secure=0
|
||||||
|
# Allow mock locations by default for non user builds
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.allow.mock.location=1
|
||||||
|
endif # !user_variant
|
||||||
|
|
||||||
|
ifeq (true,$(strip $(enable_dalvik_lock_contention_logging)))
|
||||||
|
# Enable Dalvik lock contention logging.
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += dalvik.vm.lockprof.threshold=500
|
||||||
|
endif # !enable_dalvik_lock_contention_logging
|
||||||
|
|
||||||
|
ifeq (true,$(strip $(enable_target_debugging)))
|
||||||
|
# Target is more debuggable and adbd is on by default
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.debuggable=1
|
||||||
|
else # !enable_target_debugging
|
||||||
|
# Target is less debuggable and adbd is off by default
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.debuggable=0
|
||||||
|
endif # !enable_target_debugging
|
||||||
|
|
||||||
|
enable_target_debugging:=
|
||||||
|
enable_dalvik_lock_contention_logging:=
|
||||||
|
|
||||||
|
ifneq ($(filter sdk sdk_addon,$(MAKECMDGOALS)),)
|
||||||
|
_is_sdk_build := true
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(TARGET_BUILD_VARIANT),eng)
|
||||||
|
ifneq ($(filter ro.setupwizard.mode=ENABLED, $(call collapse-pairs, $(ADDITIONAL_SYSTEM_PROPERTIES))),)
|
||||||
|
# Don't require the setup wizard on eng builds
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES := $(filter-out ro.setupwizard.mode=%,\
|
||||||
|
$(call collapse-pairs, $(ADDITIONAL_SYSTEM_PROPERTIES))) \
|
||||||
|
ro.setupwizard.mode=OPTIONAL
|
||||||
|
endif
|
||||||
|
ifndef _is_sdk_build
|
||||||
|
# To speedup startup of non-preopted builds, don't verify or compile the boot image.
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += dalvik.vm.image-dex2oat-filter=extract
|
||||||
|
endif
|
||||||
|
# b/323566535
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += init.svc_debug.no_fatal.zygote=true
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef _is_sdk_build
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += xmpp.auto-presence=true
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.config.nocheckin=yes
|
||||||
|
endif
|
||||||
|
|
||||||
|
_is_sdk_build :=
|
||||||
|
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += net.bt.name=Android
|
||||||
|
|
||||||
|
# This property is set by flashing debug boot image, so default to false.
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES += ro.force.debuggable=0
|
||||||
|
|
||||||
config_enable_uffd_gc := \
|
config_enable_uffd_gc := \
|
||||||
$(firstword $(OVERRIDE_ENABLE_UFFD_GC) $(PRODUCT_ENABLE_UFFD_GC) default)
|
$(firstword $(OVERRIDE_ENABLE_UFFD_GC) $(PRODUCT_ENABLE_UFFD_GC) default)
|
||||||
@@ -172,9 +291,11 @@ config_enable_uffd_gc := \
|
|||||||
# If the value is "default", it will be mangled by post_process_props.py.
|
# If the value is "default", it will be mangled by post_process_props.py.
|
||||||
ADDITIONAL_PRODUCT_PROPERTIES += ro.dalvik.vm.enable_uffd_gc=$(config_enable_uffd_gc)
|
ADDITIONAL_PRODUCT_PROPERTIES += ro.dalvik.vm.enable_uffd_gc=$(config_enable_uffd_gc)
|
||||||
|
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES := $(strip $(ADDITIONAL_SYSTEM_PROPERTIES))
|
||||||
ADDITIONAL_PRODUCT_PROPERTIES := $(strip $(ADDITIONAL_PRODUCT_PROPERTIES))
|
ADDITIONAL_PRODUCT_PROPERTIES := $(strip $(ADDITIONAL_PRODUCT_PROPERTIES))
|
||||||
ADDITIONAL_VENDOR_PROPERTIES := $(strip $(ADDITIONAL_VENDOR_PROPERTIES))
|
ADDITIONAL_VENDOR_PROPERTIES := $(strip $(ADDITIONAL_VENDOR_PROPERTIES))
|
||||||
|
|
||||||
.KATI_READONLY += \
|
.KATI_READONLY += \
|
||||||
|
ADDITIONAL_SYSTEM_PROPERTIES \
|
||||||
ADDITIONAL_PRODUCT_PROPERTIES \
|
ADDITIONAL_PRODUCT_PROPERTIES \
|
||||||
ADDITIONAL_VENDOR_PROPERTIES
|
ADDITIONAL_VENDOR_PROPERTIES
|
||||||
|
@@ -280,7 +280,6 @@ PRODUCT_PACKAGES += \
|
|||||||
storaged \
|
storaged \
|
||||||
surfaceflinger \
|
surfaceflinger \
|
||||||
svc \
|
svc \
|
||||||
system-build.prop \
|
|
||||||
task_profiles.json \
|
task_profiles.json \
|
||||||
tc \
|
tc \
|
||||||
telecom \
|
telecom \
|
||||||
|
Reference in New Issue
Block a user