mirror of
https://github.com/steev/efikamx.git
synced 2026-02-04 05:36:22 +00:00
support GLES/EGL/OpenVG
This commit is contained in:
4
app-admin/eselect-opengl/Manifest
Normal file
4
app-admin/eselect-opengl/Manifest
Normal file
@@ -0,0 +1,4 @@
|
||||
DIST eselect-opengl-1.2.6.tar.xz 8184 RMD160 5fba59a8b10affa7adf001c08f7eddd331e645ea SHA1 f820db81397b5e8daadcaa18af947a9d8b2bd236 SHA256 5ccfae3ca58ab050ea43791e357200c152bca04ffaba13d8984ef9856b779c88
|
||||
DIST glext.h.75.xz 59352 RMD160 0b785e75d8fa2fe4d8a9bf038811e888a369835a SHA1 8e451955e9c710193e2dd73dc88887b995f2c02e SHA256 6b2152d2bca2558315028dea1aba149e9d83b161721fe7bf90355c39ba938c46
|
||||
DIST glxext.h.33.xz 7328 RMD160 2d21c49d41041da5ea962b65e8d10415dbb3ce8c SHA1 092821a8902266f38737b5d4ca0c386de3bea8b8 SHA256 ed73e76c66ce83f9eabe2f418bc332f506306efb5879ea183190b48b917f727a
|
||||
EBUILD eselect-opengl-1.2.6.ebuild 1570 RMD160 122633aaa9c6b9e327fbc97d29b6e6aa0ccaf1af SHA1 e7b72dbfba0caa9299efb10a1b5e6257b779ea6a SHA256 a799d9bdf83996c73bac4cffa4cc34465b0cb7234770dbac465cfcd199f47c5c
|
||||
55
app-admin/eselect-opengl/eselect-opengl-1.2.6.ebuild
Normal file
55
app-admin/eselect-opengl/eselect-opengl-1.2.6.ebuild
Normal file
@@ -0,0 +1,55 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-opengl/eselect-opengl-1.2.5-r1.ebuild,v 1.2 2012/03/24 19:15:12 grobian Exp $
|
||||
|
||||
EAPI=4
|
||||
|
||||
inherit multilib
|
||||
|
||||
DESCRIPTION="Utility to change the OpenGL interface being used"
|
||||
HOMEPAGE="http://www.gentoo.org/"
|
||||
|
||||
# Source:
|
||||
# http://www.opengl.org/registry/api/glext.h
|
||||
# http://www.opengl.org/registry/api/glxext.h
|
||||
GLEXT="75"
|
||||
GLXEXT="33"
|
||||
|
||||
MIRROR="http://dev.gentooexperimental.org/~scarabeus/"
|
||||
SRC_URI="${MIRROR}/glext.h.${GLEXT}.xz
|
||||
${MIRROR}/glxext.h.${GLXEXT}.xz
|
||||
http://dev.gentoo.org/~lu_zero/distfiles/${P}.tar.xz"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~x64-freebsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
|
||||
IUSE=""
|
||||
|
||||
DEPEND="app-arch/xz-utils"
|
||||
RDEPEND=">=app-admin/eselect-1.2.4"
|
||||
|
||||
pkg_postinst() {
|
||||
local impl="$(eselect opengl show)"
|
||||
if [[ -n "${impl}" && "${impl}" != '(none)' ]] ; then
|
||||
eselect opengl set "${impl}"
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# don't die on Darwin users
|
||||
if [[ ${CHOST} == *-darwin* ]] ; then
|
||||
sed -i -e 's/libGL\.so/libGL.dylib/' opengl.eselect || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
insinto "/usr/share/eselect/modules"
|
||||
doins opengl.eselect
|
||||
doman opengl.eselect.5
|
||||
|
||||
# Install global glext.h and glxext.h
|
||||
insinto "/usr/$(get_libdir)/opengl/global/include/GL/"
|
||||
cd "${WORKDIR}"
|
||||
newins glext.h.${GLEXT} glext.h
|
||||
newins glxext.h.${GLXEXT} glxext.h
|
||||
}
|
||||
@@ -1 +1,3 @@
|
||||
DIST MesaLib-8.0.1.tar.bz2 5694019 RMD160 958e610862bef2bcca6f9b8bb85a4d65a2eedb9c SHA1 1f7f37872b64b7b092677b594ec7bf90eb1586f2 SHA256 593af02ea2b5b7afb057a12c550f2c03b1d1cf59a716972d601c1499545ea0a7
|
||||
EBUILD mesa-8.0.1-r2.ebuild 10623 RMD160 d04c00ebb6300702b8b683d5953f43fea8ad1183 SHA1 0862a73f400eb7326dd2fc5be030297a7643c11e SHA256 eb542419b1eceaaea6246e2fd09f4bc5ce54b6ed179cb7dc9d3585f2f92e0992
|
||||
EBUILD mesa-9999.ebuild 5997 RMD160 84943edbae344966d1b60391c3392dfaafe1b0c2 SHA1 4041aaa314b10c73893a1c076b7943129980464d SHA256 b5fbc3bbc9cefcca7fd27fa3b5d5e57b23d0e72ccb22783de11b8c2b2586f2fe
|
||||
|
||||
403
media-libs/mesa/mesa-8.0.1-r2.ebuild
Normal file
403
media-libs/mesa/mesa-8.0.1-r2.ebuild
Normal file
@@ -0,0 +1,403 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-8.0.1-r2.ebuild,v 1.2 2012/03/14 16:59:58 chithanh Exp $
|
||||
|
||||
EAPI=4
|
||||
|
||||
EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
|
||||
|
||||
if [[ ${PV} = 9999* ]]; then
|
||||
GIT_ECLASS="git-2"
|
||||
EXPERIMENTAL="true"
|
||||
fi
|
||||
|
||||
inherit base autotools multilib flag-o-matic toolchain-funcs ${GIT_ECLASS}
|
||||
|
||||
OPENGL_DIR="xorg-x11"
|
||||
|
||||
MY_PN="${PN/m/M}"
|
||||
MY_P="${MY_PN}-${PV/_/-}"
|
||||
MY_SRC_P="${MY_PN}Lib-${PV/_/-}"
|
||||
|
||||
FOLDER="${PV/_rc*/}"
|
||||
|
||||
DESCRIPTION="OpenGL-like graphic library for Linux"
|
||||
HOMEPAGE="http://mesa3d.sourceforge.net/"
|
||||
|
||||
#SRC_PATCHES="mirror://gentoo/${P}-gentoo-patches-01.tar.bz2"
|
||||
if [[ $PV = 9999* ]]; then
|
||||
SRC_URI="${SRC_PATCHES}"
|
||||
else
|
||||
SRC_URI="ftp://ftp.freedesktop.org/pub/mesa/${FOLDER}/${MY_SRC_P}.tar.bz2
|
||||
${SRC_PATCHES}"
|
||||
fi
|
||||
|
||||
# Most of the code is MIT/X11.
|
||||
# ralloc is LGPL-3
|
||||
# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
|
||||
LICENSE="MIT LGPL-3 SGI-B-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~sparc-solaris ~x64-solaris ~x86-solaris"
|
||||
|
||||
INTEL_CARDS="i915 i965 intel"
|
||||
RADEON_CARDS="r100 r200 r300 r600 radeon"
|
||||
VIDEO_CARDS="${INTEL_CARDS} ${RADEON_CARDS} nouveau vmware"
|
||||
for card in ${VIDEO_CARDS}; do
|
||||
IUSE_VIDEO_CARDS+=" video_cards_${card}"
|
||||
done
|
||||
|
||||
IUSE="${IUSE_VIDEO_CARDS}
|
||||
bindist +classic d3d debug +egl g3dvl +gallium gbm gles1 gles2 +llvm +nptl openvg osmesa pax_kernel pic selinux shared-dricore +shared-glapi vdpau wayland xa xvmc kernel_FreeBSD"
|
||||
|
||||
REQUIRED_USE="
|
||||
d3d? ( gallium )
|
||||
g3dvl? ( gallium )
|
||||
llvm? ( gallium )
|
||||
openvg? ( egl gallium )
|
||||
gbm? ( shared-glapi )
|
||||
g3dvl? ( || ( vdpau xvmc ) )
|
||||
vdpau? ( g3dvl )
|
||||
xa? ( gallium )
|
||||
xvmc? ( g3dvl )
|
||||
video_cards_intel? ( || ( classic gallium ) )
|
||||
video_cards_i915? ( || ( classic gallium ) )
|
||||
video_cards_i965? ( classic )
|
||||
video_cards_nouveau? ( || ( classic gallium ) )
|
||||
video_cards_radeon? ( || ( classic gallium ) )
|
||||
video_cards_r100? ( classic )
|
||||
video_cards_r200? ( classic )
|
||||
video_cards_r300? ( gallium )
|
||||
video_cards_r600? ( gallium )
|
||||
video_cards_vmware? ( gallium )
|
||||
"
|
||||
|
||||
LIBDRM_DEPSTRING=">=x11-libs/libdrm-2.4.31"
|
||||
# not a runtime dependency of this package, but dependency of packages which
|
||||
# depend on this package, bug #342393
|
||||
EXTERNAL_DEPEND="
|
||||
>=x11-proto/dri2proto-2.6
|
||||
>=x11-proto/glproto-1.4.15
|
||||
"
|
||||
# keep correct libdrm and dri2proto dep
|
||||
# keep blocks in rdepend for binpkg
|
||||
RDEPEND="${EXTERNAL_DEPEND}
|
||||
!<x11-base/xorg-server-1.7
|
||||
!<=x11-proto/xf86driproto-2.0.3
|
||||
classic? ( app-admin/eselect-mesa )
|
||||
gallium? ( app-admin/eselect-mesa )
|
||||
>=app-admin/eselect-opengl-1.2.5
|
||||
dev-libs/expat
|
||||
gbm? ( sys-fs/udev )
|
||||
>=x11-libs/libX11-1.3.99.901
|
||||
x11-libs/libXdamage
|
||||
x11-libs/libXext
|
||||
x11-libs/libXxf86vm
|
||||
>=x11-libs/libxcb-1.8
|
||||
d3d? ( app-emulation/wine )
|
||||
vdpau? ( >=x11-libs/libvdpau-0.4.1 )
|
||||
wayland? ( dev-libs/wayland )
|
||||
xvmc? ( x11-libs/libXvMC )
|
||||
${LIBDRM_DEPSTRING}[video_cards_nouveau?,video_cards_vmware?]
|
||||
"
|
||||
for card in ${INTEL_CARDS}; do
|
||||
RDEPEND="${RDEPEND}
|
||||
video_cards_${card}? ( ${LIBDRM_DEPSTRING}[video_cards_intel] )
|
||||
"
|
||||
done
|
||||
|
||||
for card in ${RADEON_CARDS}; do
|
||||
RDEPEND="${RDEPEND}
|
||||
video_cards_${card}? ( ${LIBDRM_DEPSTRING}[video_cards_radeon] )
|
||||
"
|
||||
done
|
||||
|
||||
DEPEND="${RDEPEND}
|
||||
llvm? ( >=sys-devel/llvm-2.9 )
|
||||
=dev-lang/python-2*
|
||||
dev-libs/libxml2[python]
|
||||
dev-util/pkgconfig
|
||||
sys-devel/bison
|
||||
sys-devel/flex
|
||||
x11-misc/makedepend
|
||||
>=x11-proto/xextproto-7.0.99.1
|
||||
x11-proto/xf86driproto
|
||||
x11-proto/xf86vidmodeproto
|
||||
"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
# It is slow without texrels, if someone wants slow
|
||||
# mesa without texrels +pic use is worth the shot
|
||||
QA_EXECSTACK="usr/lib*/opengl/xorg-x11/lib/libGL.so*"
|
||||
QA_WX_LOAD="usr/lib*/opengl/xorg-x11/lib/libGL.so*"
|
||||
|
||||
# Think about: ggi, fbcon, no-X configs
|
||||
|
||||
pkg_setup() {
|
||||
# workaround toc-issue wrt #386545
|
||||
use ppc64 && append-flags -mminimal-toc
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
default
|
||||
[[ $PV = 9999* ]] && git-2_src_unpack
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# apply patches
|
||||
if [[ ${PV} != 9999* && -n ${SRC_PATCHES} ]]; then
|
||||
EPATCH_FORCE="yes" \
|
||||
EPATCH_SOURCE="${WORKDIR}/patches" \
|
||||
EPATCH_SUFFIX="patch" \
|
||||
epatch
|
||||
fi
|
||||
|
||||
# relax the requirement that r300 must have llvm, bug 380303
|
||||
epatch "${FILESDIR}"/${PN}-8.0-dont-require-llvm-for-r300.patch
|
||||
|
||||
# fix for hardened pax_kernel, bug 240956
|
||||
[[ ${PV} != 9999* ]] && epatch "${FILESDIR}"/glx_ro_text_segm.patch
|
||||
|
||||
# Solaris needs some recent POSIX stuff in our case
|
||||
if [[ ${CHOST} == *-solaris* ]] ; then
|
||||
sed -i -e "s/-DSVR4/-D_POSIX_C_SOURCE=200112L/" configure.ac || die
|
||||
fi
|
||||
|
||||
base_src_prepare
|
||||
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local myconf
|
||||
|
||||
if use classic; then
|
||||
# Configurable DRI drivers
|
||||
driver_enable swrast
|
||||
|
||||
# Intel code
|
||||
driver_enable video_cards_i915 i915
|
||||
driver_enable video_cards_i965 i965
|
||||
if ! use video_cards_i915 && \
|
||||
! use video_cards_i965; then
|
||||
driver_enable video_cards_intel i915 i965
|
||||
fi
|
||||
|
||||
# Nouveau code
|
||||
driver_enable video_cards_nouveau nouveau
|
||||
|
||||
# ATI code
|
||||
driver_enable video_cards_r100 radeon
|
||||
driver_enable video_cards_r200 r200
|
||||
if ! use video_cards_r100 && \
|
||||
! use video_cards_r200; then
|
||||
driver_enable video_cards_radeon radeon r200
|
||||
fi
|
||||
fi
|
||||
|
||||
if use egl; then
|
||||
myconf+="
|
||||
--with-egl-platforms=x11$(use wayland && echo ",wayland")$(use gbm && echo ",drm")
|
||||
$(use_enable gallium gallium-egl)
|
||||
"
|
||||
fi
|
||||
|
||||
if use gallium; then
|
||||
myconf+="
|
||||
$(use_enable d3d d3d1x)
|
||||
$(use_enable g3dvl gallium-g3dvl)
|
||||
$(use_enable llvm gallium-llvm)
|
||||
$(use_enable openvg)
|
||||
$(use_enable vdpau)
|
||||
$(use_enable xa)
|
||||
$(use_enable xvmc)
|
||||
"
|
||||
gallium_enable swrast
|
||||
gallium_enable video_cards_vmware svga
|
||||
gallium_enable video_cards_nouveau nouveau
|
||||
gallium_enable video_cards_i915 i915
|
||||
if ! use video_cards_i915; then
|
||||
gallium_enable video_cards_intel i915
|
||||
fi
|
||||
|
||||
gallium_enable video_cards_r300 r300
|
||||
gallium_enable video_cards_r600 r600
|
||||
if ! use video_cards_r300 && \
|
||||
! use video_cards_r600; then
|
||||
gallium_enable video_cards_radeon r300 r600
|
||||
fi
|
||||
fi
|
||||
|
||||
# x86 hardened pax_kernel needs glx-rts, bug 240956
|
||||
if use pax_kernel; then
|
||||
myconf+="
|
||||
$(use_enable x86 glx-rts)
|
||||
"
|
||||
fi
|
||||
|
||||
econf \
|
||||
--enable-dri \
|
||||
--enable-glx \
|
||||
$(use_enable !bindist texture-float) \
|
||||
$(use_enable debug) \
|
||||
$(use_enable egl) \
|
||||
$(use_enable gbm) \
|
||||
$(use_enable gles1) \
|
||||
$(use_enable gles2) \
|
||||
$(use_enable nptl glx-tls) \
|
||||
$(use_enable osmesa) \
|
||||
$(use_enable !pic asm) \
|
||||
$(use_enable shared-dricore) \
|
||||
$(use_enable shared-glapi) \
|
||||
--with-dri-drivers=${DRI_DRIVERS} \
|
||||
--with-gallium-drivers=${GALLIUM_DRIVERS} \
|
||||
${myconf}
|
||||
}
|
||||
|
||||
src_install() {
|
||||
base_src_install
|
||||
|
||||
if use !bindist; then
|
||||
dodoc docs/patents.txt
|
||||
fi
|
||||
|
||||
# Save the glsl-compiler for later use
|
||||
if ! tc-is-cross-compiler; then
|
||||
dobin "${S}"/src/glsl/glsl_compiler
|
||||
fi
|
||||
|
||||
# Install config file for eselect mesa
|
||||
insinto /usr/share/mesa
|
||||
newins "${FILESDIR}/eselect-mesa.conf.8.0.1" eselect-mesa.conf
|
||||
|
||||
# Move libGL and others from /usr/lib to /usr/lib/opengl/blah/lib
|
||||
# because user can eselect desired GL provider.
|
||||
ebegin "Moving libGL and friends for dynamic switching"
|
||||
dodir /usr/$(get_libdir)/opengl/${OPENGL_DIR}/{lib,extensions,include}
|
||||
local x
|
||||
for x in "${ED}"/usr/$(get_libdir)/lib{EGL,GL*,OpenVG}.{la,a,so*}; do
|
||||
if [ -f ${x} -o -L ${x} ]; then
|
||||
mv -f "${x}" "${ED}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/lib \
|
||||
|| die "Failed to move ${x}"
|
||||
fi
|
||||
done
|
||||
for x in "${ED}"/usr/include/GL/{gl.h,glx.h,glext.h,glxext.h}; do
|
||||
if [ -f ${x} -o -L ${x} ]; then
|
||||
mv -f "${x}" "${ED}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/include \
|
||||
|| die "Failed to move ${x}"
|
||||
fi
|
||||
done
|
||||
mv "${ED}"/usr/include/{EGL,GLES*,VG,KHR}/ \
|
||||
"${ED}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/include \
|
||||
|| die "Failed to move headers"
|
||||
eend $?
|
||||
|
||||
if use classic || use gallium; then
|
||||
ebegin "Moving DRI/Gallium drivers for dynamic switching"
|
||||
local gallium_drivers=( i915_dri.so i965_dri.so r300_dri.so r600_dri.so swrast_dri.so )
|
||||
keepdir /usr/$(get_libdir)/dri
|
||||
dodir /usr/$(get_libdir)/mesa
|
||||
for x in ${gallium_drivers[@]}; do
|
||||
if [ -f "${S}/$(get_libdir)/gallium/${x}" ]; then
|
||||
mv -f "${ED}/usr/$(get_libdir)/dri/${x}" "${ED}/usr/$(get_libdir)/dri/${x/_dri.so/g_dri.so}" \
|
||||
|| die "Failed to move ${x}"
|
||||
insinto "/usr/$(get_libdir)/dri/"
|
||||
if [ -f "${S}/$(get_libdir)/${x}" ]; then
|
||||
insopts -m0755
|
||||
doins "${S}/$(get_libdir)/${x}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
for x in "${ED}"/usr/$(get_libdir)/dri/*.so; do
|
||||
if [ -f ${x} -o -L ${x} ]; then
|
||||
mv -f "${x}" "${x/dri/mesa}" \
|
||||
|| die "Failed to move ${x}"
|
||||
fi
|
||||
done
|
||||
pushd "${ED}"/usr/$(get_libdir)/dri || die "pushd failed"
|
||||
ln -s ../mesa/*.so . || die "Creating symlink failed"
|
||||
# remove symlinks to drivers known to eselect
|
||||
for x in ${gallium_drivers[@]}; do
|
||||
if [ -f ${x} -o -L ${x} ]; then
|
||||
rm "${x}" || die "Failed to remove ${x}"
|
||||
fi
|
||||
done
|
||||
popd
|
||||
eend $?
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# Switch to the xorg implementation.
|
||||
echo
|
||||
eselect opengl set --use-old ${OPENGL_DIR}
|
||||
|
||||
# switch to xorg-x11 and back if necessary, bug #374647 comment 11
|
||||
OLD_IMPLEM="$(eselect opengl show)"
|
||||
if [[ ${OPENGL_DIR}x != ${OLD_IMPLEM}x ]]; then
|
||||
eselect opengl set ${OPENGL_DIR}
|
||||
eselect opengl set ${OLD_IMPLEM}
|
||||
fi
|
||||
|
||||
# Select classic/gallium drivers
|
||||
if use classic || use gallium; then
|
||||
eselect mesa set --auto
|
||||
fi
|
||||
|
||||
# warn about patent encumbered texture-float
|
||||
if use !bindist; then
|
||||
elog "USE=\"bindist\" was not set. Potentially patent encumbered code was"
|
||||
elog "enabled. Please see patents.txt for an explanation."
|
||||
fi
|
||||
|
||||
local using_radeon r_flag
|
||||
for r_flag in ${RADEON_CARDS}; do
|
||||
if use video_cards_${r_flag}; then
|
||||
using_radeon=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ${using_radeon} = 1 ]] && ! has_version media-libs/libtxc_dxtn; then
|
||||
elog "Note that in order to have full S3TC support, it is necessary to install"
|
||||
elog "media-libs/libtxc_dxtn as well. This may be necessary to get nice"
|
||||
elog "textures in some apps, and some others even require this to run."
|
||||
fi
|
||||
}
|
||||
|
||||
# $1 - VIDEO_CARDS flag
|
||||
# other args - names of DRI drivers to enable
|
||||
# TODO: avoid code duplication for a more elegant implementation
|
||||
driver_enable() {
|
||||
case $# in
|
||||
# for enabling unconditionally
|
||||
1)
|
||||
DRI_DRIVERS+=",$1"
|
||||
;;
|
||||
*)
|
||||
if use $1; then
|
||||
shift
|
||||
for i in $@; do
|
||||
DRI_DRIVERS+=",${i}"
|
||||
done
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
gallium_enable() {
|
||||
case $# in
|
||||
# for enabling unconditionally
|
||||
1)
|
||||
GALLIUM_DRIVERS+=",$1"
|
||||
;;
|
||||
*)
|
||||
if use $1; then
|
||||
shift
|
||||
for i in $@; do
|
||||
GALLIUM_DRIVERS+=",${i}"
|
||||
done
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
Reference in New Issue
Block a user