mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 00:20:08 +00:00
meta: remove True option to getVar calls
getVar() now defaults to expanding by default, thus remove the True option from getVar() calls with a regex search and replace. Search made with the following regex: getVar ?\(( ?[^,()]*), True\) (From OE-Core rev: 7c552996597faaee2fbee185b250c0ee30ea3b5f) Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
d5e67725ac
commit
c4e2c59088
+15
-15
@@ -123,7 +123,7 @@ SDKUSE_NLS ??= "yes"
|
||||
TARGET_ARCH = "${TUNE_ARCH}"
|
||||
TARGET_OS = "linux${LIBCEXTENSION}${ABIEXTENSION}"
|
||||
TARGET_VENDOR = "-oe"
|
||||
TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}${@['-' + d.getVar('TARGET_OS', True), ''][d.getVar('TARGET_OS', True) == ('' or 'custom')]}"
|
||||
TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}${@['-' + d.getVar('TARGET_OS'), ''][d.getVar('TARGET_OS') == ('' or 'custom')]}"
|
||||
TARGET_PREFIX = "${TARGET_SYS}-"
|
||||
TARGET_CC_ARCH = "${TUNE_CCARGS}"
|
||||
TARGET_LD_ARCH = "${TUNE_LDARGS}"
|
||||
@@ -132,7 +132,7 @@ TARGET_AS_ARCH = "${TUNE_ASARGS}"
|
||||
SDKMACHINE ??= "x86_64"
|
||||
SDK_OS = "${BUILD_OS}"
|
||||
SDK_VENDOR = "-oesdk"
|
||||
SDK_SYS = "${SDK_ARCH}${SDK_VENDOR}${@['-' + d.getVar('SDK_OS', True), ''][d.getVar('SDK_OS', True) == ('' or 'custom')]}"
|
||||
SDK_SYS = "${SDK_ARCH}${SDK_VENDOR}${@['-' + d.getVar('SDK_OS'), ''][d.getVar('SDK_OS') == ('' or 'custom')]}"
|
||||
SDK_PREFIX = "${SDK_SYS}-"
|
||||
SDK_CC_ARCH = "${BUILD_CC_ARCH}"
|
||||
SDKPKGSUFFIX = "nativesdk"
|
||||
@@ -142,7 +142,7 @@ SDK_AS_ARCH = "${BUILD_AS_ARCH}"
|
||||
|
||||
TUNE_PKGARCH ??= ""
|
||||
PACKAGE_ARCH ??= "${TUNE_PKGARCH}"
|
||||
MACHINE_ARCH = "${@[d.getVar('TUNE_PKGARCH', True), d.getVar('MACHINE', True)][bool(d.getVar('MACHINE', True))].replace('-', '_')}"
|
||||
MACHINE_ARCH = "${@[d.getVar('TUNE_PKGARCH'), d.getVar('MACHINE')][bool(d.getVar('MACHINE'))].replace('-', '_')}"
|
||||
PACKAGE_EXTRA_ARCHS ??= "${PACKAGE_EXTRA_ARCHS_tune-${DEFAULTTUNE}}"
|
||||
PACKAGE_ARCHS = "all any noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}"
|
||||
# MACHINE_ARCH shouldn't be included here as a variable dependency
|
||||
@@ -197,24 +197,24 @@ PV = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[1] or '1.0
|
||||
PR = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[2] or 'r0'}"
|
||||
PE = ""
|
||||
PF = "${PN}-${EXTENDPE}${PV}-${PR}"
|
||||
EXTENDPE = "${@['','${PE}_'][int(d.getVar('PE', True) or 0) > 0]}"
|
||||
EXTENDPE = "${@['','${PE}_'][int(d.getVar('PE') or 0) > 0]}"
|
||||
P = "${PN}-${PV}"
|
||||
|
||||
PRAUTO = ""
|
||||
EXTENDPRAUTO = "${@['.${PRAUTO}', ''][not d.getVar('PRAUTO', True)]}"
|
||||
EXTENDPRAUTO = "${@['.${PRAUTO}', ''][not d.getVar('PRAUTO')]}"
|
||||
PRAUTOINX = "${PF}"
|
||||
|
||||
PKGV ?= "${PV}"
|
||||
PKGR ?= "${PR}${EXTENDPRAUTO}"
|
||||
PKGE ?= "${@['','${PE}'][int(d.getVar('PE', True) or 0) > 0]}"
|
||||
EXTENDPKGEVER = "${@['','${PKGE}:'][d.getVar('PKGE', True).strip() != '']}"
|
||||
PKGE ?= "${@['','${PE}'][int(d.getVar('PE') or 0) > 0]}"
|
||||
EXTENDPKGEVER = "${@['','${PKGE}:'][d.getVar('PKGE').strip() != '']}"
|
||||
EXTENDPKGV ?= "${EXTENDPKGEVER}${PKGV}-${PKGR}"
|
||||
|
||||
# Base package name
|
||||
# Automatically derives "foo" from "foo-native", "foo-cross" or "foo-initial"
|
||||
# otherwise it is the same as PN and P
|
||||
SPECIAL_PKGSUFFIX = "-native -cross -initial -intermediate -crosssdk -cross-canadian"
|
||||
BPN = "${@base_prune_suffix(d.getVar('PN', True), d.getVar('SPECIAL_PKGSUFFIX', True).split(), d)}"
|
||||
BPN = "${@base_prune_suffix(d.getVar('PN'), d.getVar('SPECIAL_PKGSUFFIX').split(), d)}"
|
||||
BP = "${BPN}-${PV}"
|
||||
|
||||
# Package info.
|
||||
@@ -330,7 +330,7 @@ FILESEXTRAPATHS ?= "__default:"
|
||||
##################################################################
|
||||
|
||||
TMPDIR ?= "${TOPDIR}/tmp"
|
||||
CACHE = "${TMPDIR}/cache${@['', '/' + str(d.getVar('MACHINE', True))][bool(d.getVar('MACHINE', True))]}${@['', '/' + str(d.getVar('SDKMACHINE', True))][bool(d.getVar('SDKMACHINE', True))]}"
|
||||
CACHE = "${TMPDIR}/cache${@['', '/' + str(d.getVar('MACHINE'))][bool(d.getVar('MACHINE'))]}${@['', '/' + str(d.getVar('SDKMACHINE'))][bool(d.getVar('SDKMACHINE'))]}"
|
||||
# The persistent cache should be shared by all builds
|
||||
PERSISTENT_DIR = "${TOPDIR}/cache"
|
||||
LOG_DIR = "${TMPDIR}/log"
|
||||
@@ -455,7 +455,7 @@ export PATH
|
||||
CCACHE ??= ""
|
||||
# Disable ccache explicitly if CCACHE is null since gcc may be a symlink
|
||||
# of ccache some distributions (e.g., Fedora 17).
|
||||
export CCACHE_DISABLE ??= "${@[0,1][d.getVar('CCACHE', True) == '']}"
|
||||
export CCACHE_DISABLE ??= "${@[0,1][d.getVar('CCACHE') == '']}"
|
||||
# ccache < 3.1.10 will create CCACHE_DIR on startup even if disabled, and
|
||||
# autogen sets HOME=/dev/null so in certain situations builds can fail.
|
||||
# Explicitly export CCACHE_DIR until we can assume ccache >3.1.10 on the host.
|
||||
@@ -535,7 +535,7 @@ LINKER_HASH_STYLE ??= "gnu"
|
||||
# mips does not support GNU hash style therefore we override
|
||||
LINKER_HASH_STYLE_mipsarch = "sysv"
|
||||
|
||||
TARGET_LINK_HASH_STYLE ?= "${@['-Wl,--hash-style=gnu',''][d.getVar('LINKER_HASH_STYLE', True) != 'gnu']}"
|
||||
TARGET_LINK_HASH_STYLE ?= "${@['-Wl,--hash-style=gnu',''][d.getVar('LINKER_HASH_STYLE') != 'gnu']}"
|
||||
|
||||
export LDFLAGS = "${TARGET_LDFLAGS}"
|
||||
export TARGET_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE}"
|
||||
@@ -561,7 +561,7 @@ DEBUG_FLAGS ?= "-g -feliminate-unused-debug-types ${DEBUG_PREFIX_MAP}"
|
||||
# Disabled until the option works properly -feliminate-dwarf2-dups
|
||||
FULL_OPTIMIZATION = "-O2 -pipe ${DEBUG_FLAGS}"
|
||||
DEBUG_OPTIMIZATION = "-O -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe"
|
||||
SELECTED_OPTIMIZATION = "${@d.getVar(['FULL_OPTIMIZATION', 'DEBUG_OPTIMIZATION'][d.getVar('DEBUG_BUILD', True) == '1'], True)}"
|
||||
SELECTED_OPTIMIZATION = "${@d.getVar(['FULL_OPTIMIZATION', 'DEBUG_OPTIMIZATION'][d.getVar('DEBUG_BUILD') == '1'], True)}"
|
||||
SELECTED_OPTIMIZATION[vardeps] += "FULL_OPTIMIZATION DEBUG_OPTIMIZATION"
|
||||
BUILD_OPTIMIZATION = "-O2 -pipe"
|
||||
|
||||
@@ -687,7 +687,7 @@ DISTRO_NAME ??= "OpenEmbedded"
|
||||
OVERRIDES = "${TARGET_OS}:${TRANSLATED_TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${CLASSOVERRIDE}:forcevariable"
|
||||
OVERRIDES[vardepsexclude] = "MACHINEOVERRIDES"
|
||||
CLASSOVERRIDE ?= "class-target"
|
||||
DISTROOVERRIDES ?= "${@d.getVar('DISTRO', True) or ''}"
|
||||
DISTROOVERRIDES ?= "${@d.getVar('DISTRO') or ''}"
|
||||
MACHINEOVERRIDES ?= "${MACHINE}"
|
||||
MACHINEOVERRIDES[vardepsexclude] = "MACHINE"
|
||||
|
||||
@@ -773,7 +773,7 @@ COMBINED_FEATURES = "${@oe.utils.set_intersect('DISTRO_FEATURES', 'MACHINE_FEATU
|
||||
COMBINED_FEATURES[vardeps] += "DISTRO_FEATURES MACHINE_FEATURES"
|
||||
|
||||
SERIAL_CONSOLE ??= ""
|
||||
SERIAL_CONSOLES ??= "${@d.getVar('SERIAL_CONSOLE', True).replace(' ', ';')}"
|
||||
SERIAL_CONSOLES ??= "${@d.getVar('SERIAL_CONSOLE').replace(' ', ';')}"
|
||||
|
||||
NO_RECOMMENDATIONS ?= ""
|
||||
BAD_RECOMMENDATIONS ?= ""
|
||||
@@ -797,7 +797,7 @@ DISTRO[unexport] = "1"
|
||||
SHELL[unexport] = "1"
|
||||
|
||||
# Used by canadian-cross to handle string conversions on TARGET_ARCH where needed
|
||||
TRANSLATED_TARGET_ARCH ??= "${@d.getVar('TARGET_ARCH', True).replace("_", "-")}"
|
||||
TRANSLATED_TARGET_ARCH ??= "${@d.getVar('TARGET_ARCH').replace("_", "-")}"
|
||||
|
||||
# Complete output from bitbake
|
||||
BB_CONSOLELOG ?= "${LOG_DIR}/cooker/${MACHINE}/${DATETIME}.log"
|
||||
|
||||
@@ -15,7 +15,7 @@ require conf/distro/include/uninative-flags.inc
|
||||
TCLIBCAPPEND ?= "-${TCLIBC}"
|
||||
TMPDIR .= "${TCLIBCAPPEND}"
|
||||
|
||||
CACHE = "${TMPDIR}/cache/${TCMODE}-${TCLIBC}${@['', '/' + str(d.getVar('MACHINE', True))][bool(d.getVar('MACHINE', True))]}${@['', '/' + str(d.getVar('SDKMACHINE', True))][bool(d.getVar('SDKMACHINE', True))]}"
|
||||
CACHE = "${TMPDIR}/cache/${TCMODE}-${TCLIBC}${@['', '/' + str(d.getVar('MACHINE'))][bool(d.getVar('MACHINE'))]}${@['', '/' + str(d.getVar('SDKMACHINE'))][bool(d.getVar('SDKMACHINE'))]}"
|
||||
|
||||
USER_CLASSES ?= ""
|
||||
PACKAGE_CLASSES ?= "package_ipk"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# glibc specific configuration
|
||||
#
|
||||
|
||||
LIBCEXTENSION = "${@['', '-gnu'][(d.getVar('ABIEXTENSION', True) or '') != '']}"
|
||||
LIBCEXTENSION = "${@['', '-gnu'][(d.getVar('ABIEXTENSION') or '') != '']}"
|
||||
|
||||
# Add glibc overrides to the overrides for glibc.
|
||||
LIBCOVERRIDE = ":libc-glibc"
|
||||
@@ -34,7 +34,7 @@ LIBC_LOCALE_DEPENDENCIES = "\
|
||||
glibc-gconv-iso8859-15"
|
||||
|
||||
def get_libc_locales_dependencies(d):
|
||||
if 'libc-locales' in (d.getVar('DISTRO_FEATURES', True) or '').split() :
|
||||
return d.getVar('LIBC_LOCALE_DEPENDENCIES', True) or ''
|
||||
if 'libc-locales' in (d.getVar('DISTRO_FEATURES') or '').split() :
|
||||
return d.getVar('LIBC_LOCALE_DEPENDENCIES') or ''
|
||||
else:
|
||||
return ''
|
||||
|
||||
@@ -13,4 +13,4 @@ TUNE_PKGARCH = "${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}
|
||||
|
||||
ABIEXTENSION = "eabi"
|
||||
|
||||
TARGET_FPU = "${@d.getVar('TUNE_CCARGS_MFLOAT', True) or 'soft'}"
|
||||
TARGET_FPU = "${@d.getVar('TUNE_CCARGS_MFLOAT') or 'soft'}"
|
||||
|
||||
@@ -28,7 +28,7 @@ TARGET_FPU_64 = ""
|
||||
TUNE_ARCH_32 = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'armeb', 'arm', d)}"
|
||||
TUNE_PKGARCH_32 = "${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}"
|
||||
ABIEXTENSION_32 = "eabi"
|
||||
TARGET_FPU_32 = "${@d.getVar('TUNE_CCARGS_MFLOAT', True) or 'soft'}"
|
||||
TARGET_FPU_32 = "${@d.getVar('TUNE_CCARGS_MFLOAT') or 'soft'}"
|
||||
|
||||
TUNE_ARCH = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TUNE_ARCH_64}', '${TUNE_ARCH_32}' ,d)}"
|
||||
TUNE_PKGARCH = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TUNE_PKGARCH_64}', '${TUNE_PKGARCH_32}' ,d)}"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
TUNEVALID[thumb] = "Use thumb instructions instead of ARM"
|
||||
ARM_THUMB_OPT = "${@['arm', 'thumb'][d.getVar('ARM_INSTRUCTION_SET', True) == 'thumb']}"
|
||||
ARM_THUMB_OPT = "${@['arm', 'thumb'][d.getVar('ARM_INSTRUCTION_SET') == 'thumb']}"
|
||||
ARM_THUMB_SUFFIX .= "${@bb.utils.contains('TUNE_FEATURES', 'armv4', 't', '', d)}"
|
||||
ARM_THUMB_SUFFIX .= "${@bb.utils.contains('TUNE_FEATURES', 'armv5', 't', '', d)}"
|
||||
ARM_THUMB_SUFFIX .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6', 't', '', d)}"
|
||||
@@ -15,19 +15,19 @@ ARM_M_OPT = "${@bb.utils.contains('TUNE_FEATURES', 'arm', '${ARM_THUMB_OPT}', 't
|
||||
python () {
|
||||
if bb.utils.contains('TUNE_FEATURES', 'thumb', False, True, d):
|
||||
return
|
||||
selected = d.getVar('ARM_INSTRUCTION_SET', True)
|
||||
selected = d.getVar('ARM_INSTRUCTION_SET')
|
||||
if selected == None:
|
||||
return
|
||||
used = d.getVar('ARM_M_OPT', True)
|
||||
used = d.getVar('ARM_M_OPT')
|
||||
if selected != used:
|
||||
pn = d.getVar('PN', True)
|
||||
pn = d.getVar('PN')
|
||||
bb.warn("Recipe '%s' selects ARM_INSTRUCTION_SET to be '%s', but tune configuration overrides it to '%s'" % (pn, selected, used))
|
||||
}
|
||||
|
||||
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'thumb', ' -m${ARM_M_OPT}', '', d)}"
|
||||
|
||||
# Add suffix from ARM_THUMB_SUFFIX only if after all this we still set ARM_M_OPT to thumb
|
||||
ARMPKGSFX_THUMB .= "${@bb.utils.contains('TUNE_FEATURES', 'thumb', '${ARM_THUMB_SUFFIX}', '', d) if d.getVar('ARM_M_OPT', True) == 'thumb' else ''}"
|
||||
ARMPKGSFX_THUMB .= "${@bb.utils.contains('TUNE_FEATURES', 'thumb', '${ARM_THUMB_SUFFIX}', '', d) if d.getVar('ARM_M_OPT') == 'thumb' else ''}"
|
||||
|
||||
# what about armv7m devices which don't support -marm (e.g. Cortex-M3)?
|
||||
TARGET_CC_KERNEL_ARCH += "${@bb.utils.contains('TUNE_FEATURES', 'thumb', '-mno-thumb-interwork -marm', '', d)}"
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
TUNEVALID[vfp] = "Enable Vector Floating Point (vfp) unit."
|
||||
TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfp', ' vfp', '', d)}"
|
||||
|
||||
TUNE_CCARGS .= "${@ (' -mfpu=%s ' % d.getVar('TUNE_CCARGS_MFPU', True).split()[-1]) if (d.getVar('TUNE_CCARGS_MFPU', True) != '') else ''}"
|
||||
ARMPKGSFX_FPU = "${@ ('-%s' % d.getVar('TUNE_CCARGS_MFPU', True).split()[-1].replace('vfpv3-d16', 'vfpv3d16')) if (d.getVar('TUNE_CCARGS_MFPU', True) != '') else ''}"
|
||||
TUNE_CCARGS .= "${@ (' -mfpu=%s ' % d.getVar('TUNE_CCARGS_MFPU').split()[-1]) if (d.getVar('TUNE_CCARGS_MFPU') != '') else ''}"
|
||||
ARMPKGSFX_FPU = "${@ ('-%s' % d.getVar('TUNE_CCARGS_MFPU').split()[-1].replace('vfpv3-d16', 'vfpv3d16')) if (d.getVar('TUNE_CCARGS_MFPU') != '') else ''}"
|
||||
|
||||
TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
|
||||
TUNE_CCARGS_MFLOAT = "${@ bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hard', 'softfp', d) if (d.getVar('TUNE_CCARGS_MFPU', True) != '') else '' }"
|
||||
TUNE_CCARGS .= "${@ ' -mfloat-abi=${TUNE_CCARGS_MFLOAT}' if (d.getVar('TUNE_CCARGS_MFLOAT', True) != '') else ''}"
|
||||
ARMPKGSFX_EABI = "${@ 'hf' if (d.getVar('TUNE_CCARGS_MFLOAT', True) == 'hard') else ''}"
|
||||
TUNE_CCARGS_MFLOAT = "${@ bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hard', 'softfp', d) if (d.getVar('TUNE_CCARGS_MFPU') != '') else '' }"
|
||||
TUNE_CCARGS .= "${@ ' -mfloat-abi=${TUNE_CCARGS_MFLOAT}' if (d.getVar('TUNE_CCARGS_MFLOAT') != '') else ''}"
|
||||
ARMPKGSFX_EABI = "${@ 'hf' if (d.getVar('TUNE_CCARGS_MFLOAT') == 'hard') else ''}"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
TUNEVALID[mips16e] = "Build target packages with MIPS16e ASE instructions"
|
||||
MIPS_MIPS16E_OPT = "${@['mno-mips16', 'mips16'][d.getVar('MIPS_INSTRUCTION_SET', True) == 'mips16e']}"
|
||||
MIPS_MIPS16E_OPT = "${@['mno-mips16', 'mips16'][d.getVar('MIPS_INSTRUCTION_SET') == 'mips16e']}"
|
||||
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', ' -${MIPS_MIPS16E_OPT}', '', d)}"
|
||||
|
||||
MIPSPKGSFX_MIPS16E .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', '-m16', '', d) if d.getVar('MIPS_MIPS16E_OPT', True) == 'mips16' else ''}"
|
||||
MIPSPKGSFX_MIPS16E .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', '-m16', '', d) if d.getVar('MIPS_MIPS16E_OPT') == 'mips16' else ''}"
|
||||
|
||||
# Whether to compile with code to allow interworking between the two
|
||||
# instruction sets. This allows mips16e code to be executed on a primarily
|
||||
@@ -14,4 +14,4 @@ TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', ' ${MIPS16_TUNE
|
||||
OVERRIDES .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', ':mips16e', '', d)}"
|
||||
|
||||
# show status (if compiling in MIPS16e mode)
|
||||
BUILDCFG_VARS += "${@['', 'MIPS_INSTRUCTION_SET'][d.getVar('MIPS_INSTRUCTION_SET', True) == 'mips16e']}"
|
||||
BUILDCFG_VARS += "${@['', 'MIPS_INSTRUCTION_SET'][d.getVar('MIPS_INSTRUCTION_SET') == 'mips16e']}"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
baselib = "${@d.getVar('BASE_LIB_tune-' + (d.getVar('DEFAULTTUNE', True) or 'INVALID'), True) or d.getVar('BASELIB', True)}"
|
||||
baselib = "${@d.getVar('BASE_LIB_tune-' + (d.getVar('DEFAULTTUNE') or 'INVALID'), True) or d.getVar('BASELIB')}"
|
||||
|
||||
MULTILIB_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
|
||||
MULTILIB_SAVE_VARNAME = "DEFAULTTUNE TARGET_ARCH TARGET_SYS TARGET_VENDOR"
|
||||
|
||||
Reference in New Issue
Block a user