Accepting request 678419 from home:bruno_friedmann:branches:Application:Geo
- Remove FindLASzip-cmake.patch with new laszip 3.2.2 - Update to 1.8.0 version (fix broken build with python3.7) + changelog https://github.com/PDAL/PDAL/releases/tag/1.8.0 + important issue about las 1.4 compressed with laszip - Packaging + refresh patch FindLASzip-cmake.patch + spec-cleaner minimal + bump SONAME to 8.0.0, SOVER to 7 + cleanup changes (trailling space) + delete orphan f717a4c.patch + add new plugin libpdal_plugin_kernel_fauxplugin OBS-URL: https://build.opensuse.org/request/show/678419 OBS-URL: https://build.opensuse.org/package/show/Application:Geo/PDAL?expand=0&rev=9
This commit is contained in:
parent
f4f20e21ab
commit
8262873898
@ -1,18 +0,0 @@
|
|||||||
diff -rup a/cmake/modules/FindLASzip.cmake b/cmake/modules/FindLASzip.cmake
|
|
||||||
--- a/cmake/modules/FindLASzip.cmake
|
|
||||||
+++ b/cmake/modules/FindLASzip.cmake
|
|
||||||
@@ -49,11 +49,13 @@ FIND_LIBRARY(LASZIP_LIBRARY
|
|
||||||
NAMES ${LASZIP_NAMES}
|
|
||||||
PATHS
|
|
||||||
/usr/lib
|
|
||||||
+ /usr/lib64
|
|
||||||
/usr/local/lib
|
|
||||||
+ /usr/local/lib64
|
|
||||||
${OSGEO4W_ROOT_DIR}/lib)
|
|
||||||
|
|
||||||
# Comment out laszip.hpp version info
|
|
||||||
-SET(LASZIP_VERSION_H "${LASZIP_INCLUDE_DIR}/laszip/laszip_api_version.h")
|
|
||||||
+SET(LASZIP_VERSION_H "${LASZIP_INCLUDE_DIR}/laszip_api_version.h")
|
|
||||||
IF(LASZIP_INCLUDE_DIR AND EXISTS ${LASZIP_VERSION_H})
|
|
||||||
SET(LASZIP_VERSION 0)
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:f5dd28c7f25bcd13c460a845860eded67446f3abb6b6a2e2f394a776ad03428a
|
|
||||||
size 68321591
|
|
@ -1 +0,0 @@
|
|||||||
a89710005fd54e6d2436955e2e542838 PDAL-1.7.2RC3-src.tar.gz
|
|
3
PDAL-1.8.0-src.tar.gz
Normal file
3
PDAL-1.8.0-src.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:cf5952ab0b9ba1fc07ed879128c64d21b6a22e32166a0fe03072a9589adc75d7
|
||||||
|
size 76466623
|
1
PDAL-1.8.0-src.tar.gz.md5
Normal file
1
PDAL-1.8.0-src.tar.gz.md5
Normal file
@ -0,0 +1 @@
|
|||||||
|
f2fb81abbd6b9a2fab0b7cb7bd025c86 PDAL-1.8.0-src.tar.gz
|
19
PDAL.changes
19
PDAL.changes
@ -1,3 +1,22 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Feb 20 09:30:33 UTC 2019 - Bruno Friedmann <bruno@ioda-net.ch>
|
||||||
|
|
||||||
|
- Remove FindLASzip-cmake.patch with new laszip 3.2.2
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 18 17:57:26 UTC 2019 - Bruno Friedmann <bruno@ioda-net.ch>
|
||||||
|
|
||||||
|
- Update to 1.8.0 version (fix broken build with python3.7)
|
||||||
|
+ changelog https://github.com/PDAL/PDAL/releases/tag/1.8.0
|
||||||
|
+ important issue about las 1.4 compressed with laszip
|
||||||
|
- Packaging
|
||||||
|
+ refresh patch FindLASzip-cmake.patch
|
||||||
|
+ spec-cleaner minimal
|
||||||
|
+ bump SONAME to 8.0.0, SOVER to 7
|
||||||
|
+ cleanup changes (trailling space)
|
||||||
|
+ delete orphan f717a4c.patch
|
||||||
|
+ add new plugin libpdal_plugin_kernel_fauxplugin
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Jun 11 12:47:56 UTC 2018 - bruno@ioda-net.ch
|
Mon Jun 11 12:47:56 UTC 2018 - bruno@ioda-net.ch
|
||||||
|
|
||||||
|
100
PDAL.spec
100
PDAL.spec
@ -1,8 +1,8 @@
|
|||||||
#
|
#
|
||||||
# spec file for package PDAL
|
# spec file for package PDAL
|
||||||
#
|
#
|
||||||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||||
# Copyright (c) 2018 Friedmann Bruno, Ioda-Net Sàrl, Charmoille, Switzerland.
|
# Copyright (c) 2019 Friedmann Bruno, Ioda-Net Sàrl, Charmoille, Switzerland.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -13,81 +13,63 @@
|
|||||||
# license that conforms to the Open Source Definition (Version 1.9)
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
# published by the Open Source Initiative.
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
#@TODO: plugins PCL P2G
|
|
||||||
|
|
||||||
# Mandatory : build -doc appart (too much texlive used otherwise)
|
|
||||||
|
|
||||||
# Temporary fix for Leap 42.3
|
|
||||||
%if ! %{defined make_build}
|
|
||||||
%define make_build /usr/bin/make %{?_smp_mflags}
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# Ask upstream to clarify seems sofull_version is build version
|
# Ask upstream to clarify seems sofull_version is build version
|
||||||
%define soname 6
|
%define soname 7
|
||||||
%define sovers 6
|
%define sovers 7
|
||||||
%define sofull_version 7.0.2
|
%define sofull_version 8.0.0
|
||||||
%define lname pdal
|
%define lname pdal
|
||||||
|
# Temporary fix for Leap 42.3
|
||||||
|
%if ! %{defined make_build}
|
||||||
|
%define make_build %{_bindir}/make %{?_smp_mflags}
|
||||||
|
%endif
|
||||||
Name: PDAL
|
Name: PDAL
|
||||||
Version: 1.7.2
|
Version: 1.8.0
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Point Data Abstraction Library. GDAL for point cloud data
|
Summary: Point Data Abstraction Library. GDAL for point cloud data
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
Group: Productivity/Graphics/CAD
|
Group: Productivity/Graphics/CAD
|
||||||
Url: http://www.pdal.io/
|
URL: https://www.pdal.io/
|
||||||
Source0: http://download.osgeo.org/pdal/%{name}-%{version}-src.tar.gz
|
Source0: https://github.com/PDAL/PDAL/releases/download/%{version}/%{name}-%{version}-src.tar.gz
|
||||||
Source1: http://download.osgeo.org/pdal/%{name}-%{version}-src.tar.gz.md5
|
Source1: https://github.com/PDAL/PDAL/releases/download/%{version}/%{name}-%{version}-src.tar.gz.md5
|
||||||
# Source2: https://www.pdal.io/PDAL.pdf
|
# Source2: https://www.pdal.io/PDAL.pdf
|
||||||
Patch0: FindLASzip-cmake.patch
|
|
||||||
# Override the problem of libpsl5 in tumbleweed
|
|
||||||
%if 0%{?suse_version} >= 1330
|
|
||||||
BuildRequires: libpsl5
|
|
||||||
%endif
|
|
||||||
BuildRequires: bash-completion
|
BuildRequires: bash-completion
|
||||||
%if 0%{?suse_version} > 1325
|
|
||||||
BuildRequires: libboost_headers-devel
|
|
||||||
BuildRequires: libboost_filesystem-devel
|
|
||||||
BuildRequires: libboost_program_options-devel
|
|
||||||
%else
|
|
||||||
BuildRequires: boost-devel
|
|
||||||
%endif
|
|
||||||
BuildRequires: cairo-devel
|
BuildRequires: cairo-devel
|
||||||
BuildRequires: cmake >= 2.8
|
BuildRequires: cmake >= 2.8
|
||||||
BuildRequires: cunit-devel
|
BuildRequires: cunit-devel
|
||||||
BuildRequires: curl-devel
|
BuildRequires: curl-devel
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: freeglut-devel
|
BuildRequires: freeglut-devel
|
||||||
# Needed for tests
|
|
||||||
BuildRequires: gdal
|
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
# For tests but don't exist for Leap 42.3
|
BuildRequires: gdal
|
||||||
# BuildRequires: gtest
|
|
||||||
BuildRequires: libgdal-devel
|
|
||||||
BuildRequires: libgeos-devel
|
|
||||||
BuildRequires: geotiff-devel
|
BuildRequires: geotiff-devel
|
||||||
BuildRequires: jsoncpp-devel
|
BuildRequires: jsoncpp-devel
|
||||||
# We need 3.1.1+ for 1.6
|
# We need 3.1.1+ for 1.6
|
||||||
BuildRequires: laszip-devel
|
BuildRequires: laszip-devel
|
||||||
|
# For tests but don't exist for Leap 42.3
|
||||||
|
# BuildRequires: gtest
|
||||||
|
BuildRequires: libgdal-devel
|
||||||
|
BuildRequires: libgeos-devel
|
||||||
BuildRequires: libproj-devel
|
BuildRequires: libproj-devel
|
||||||
BuildRequires: libspatialindex-devel
|
BuildRequires: libspatialindex-devel
|
||||||
BuildRequires: libtiff-devel
|
BuildRequires: libtiff-devel
|
||||||
BuildRequires: libxml2-devel
|
BuildRequires: libxml2-devel
|
||||||
BuildRequires: xz-devel
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: pkg-config
|
BuildRequires: python3
|
||||||
BuildRequires: pkgconfig(libpq)
|
|
||||||
# We don't have it yet
|
# We don't have it yet
|
||||||
# BuildRequires: pointcloud-devel
|
# BuildRequires: pointcloud-devel
|
||||||
# Python extension will be build separately.
|
# Python extension will be build separately.
|
||||||
BuildRequires: python3-Cython
|
BuildRequires: python3-Cython
|
||||||
BuildRequires: python3
|
|
||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
BuildRequires: python3-numpy-devel
|
BuildRequires: python3-numpy-devel
|
||||||
BuildRequires: python3-setuptools
|
BuildRequires: python3-setuptools
|
||||||
BuildRequires: sqlite3-devel
|
BuildRequires: sqlite3-devel
|
||||||
|
BuildRequires: xz-devel
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
|
BuildRequires: pkgconfig(libpq)
|
||||||
# Needed for documentation but we don't build it.
|
# Needed for documentation but we don't build it.
|
||||||
# BuildRequires: dblatex
|
# BuildRequires: dblatex
|
||||||
# BuildRequires: doxygen
|
# BuildRequires: doxygen
|
||||||
@ -99,10 +81,19 @@ BuildRequires: zlib-devel
|
|||||||
# BuildRequires: python-sphinxcontrib-breathe
|
# BuildRequires: python-sphinxcontrib-breathe
|
||||||
# Doesn't exist on obs BuildRequires: python3-breathe
|
# Doesn't exist on obs BuildRequires: python3-breathe
|
||||||
Requires: lib%{name}%{soname} = %{version}
|
Requires: lib%{name}%{soname} = %{version}
|
||||||
Provides: pdal = %{version}
|
|
||||||
Recommends: bash-completion
|
Recommends: bash-completion
|
||||||
|
Provides: pdal = %{version}
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
# Override the problem of libpsl5 in tumbleweed
|
||||||
|
%if 0%{?suse_version} >= 1330
|
||||||
|
BuildRequires: libpsl5
|
||||||
|
%endif
|
||||||
|
%if 0%{?suse_version} > 1325
|
||||||
|
BuildRequires: libboost_filesystem-devel
|
||||||
|
BuildRequires: libboost_headers-devel
|
||||||
|
BuildRequires: libboost_program_options-devel
|
||||||
|
%else
|
||||||
|
BuildRequires: boost-devel
|
||||||
|
%endif
|
||||||
|
|
||||||
%description
|
%description
|
||||||
PDAL is a C++ BSD library for translating and manipulating point cloud data.
|
PDAL is a C++ BSD library for translating and manipulating point cloud data.
|
||||||
@ -124,9 +115,9 @@ https://www.pdal.io
|
|||||||
This package provides tools & utilities using PDAL library libpdal
|
This package provides tools & utilities using PDAL library libpdal
|
||||||
|
|
||||||
%package -n lib%{name}%{soname}
|
%package -n lib%{name}%{soname}
|
||||||
|
Summary: Point Data Abstraction Library. GDAL for point cloud data
|
||||||
Provides: lib%{lname}%{soname}
|
Provides: lib%{lname}%{soname}
|
||||||
Provides: libpdal%{soname}
|
Provides: libpdal%{soname}
|
||||||
Summary: Point Data Abstraction Library. GDAL for point cloud data
|
|
||||||
|
|
||||||
%description -n lib%{name}%{soname}
|
%description -n lib%{name}%{soname}
|
||||||
PDAL is a C++ BSD library for translating and manipulating point cloud data.
|
PDAL is a C++ BSD library for translating and manipulating point cloud data.
|
||||||
@ -145,7 +136,6 @@ and others. Find out more about who contributes to PDAL at Contributors.
|
|||||||
Website :
|
Website :
|
||||||
https://www.pdal.io
|
https://www.pdal.io
|
||||||
|
|
||||||
|
|
||||||
Note
|
Note
|
||||||
PDAL should not be confused with PCL (Point Cloud Library).
|
PDAL should not be confused with PCL (Point Cloud Library).
|
||||||
PCL is a library specifically designed to provide algorithmic analysis and
|
PCL is a library specifically designed to provide algorithmic analysis and
|
||||||
@ -155,17 +145,16 @@ facilities, but does not in general attempt to duplicate its capabilites.
|
|||||||
PDAL is focused more on data access and translation than PCL. See
|
PDAL is focused more on data access and translation than PCL. See
|
||||||
filters.pclblock for more background.
|
filters.pclblock for more background.
|
||||||
|
|
||||||
|
|
||||||
%package -n %{name}-devel
|
%package -n %{name}-devel
|
||||||
Summary: Development files and tools for PDAL applications
|
Summary: Development files and tools for PDAL applications
|
||||||
Group: Development/Libraries/C and C++
|
Group: Development/Libraries/C and C++
|
||||||
Requires: lib%{name}%{soname} = %{version}
|
|
||||||
Requires: libboost_headers-devel
|
|
||||||
Requires: libboost_filesystem-devel
|
|
||||||
Requires: libboost_program_options-devel
|
|
||||||
Requires: cmake
|
Requires: cmake
|
||||||
Requires: zlib-devel
|
Requires: lib%{name}%{soname} = %{version}
|
||||||
|
Requires: libboost_filesystem-devel
|
||||||
|
Requires: libboost_headers-devel
|
||||||
|
Requires: libboost_program_options-devel
|
||||||
Requires: xz-devel
|
Requires: xz-devel
|
||||||
|
Requires: zlib-devel
|
||||||
Provides: lib%{name}%{soname}-devel = %{version}
|
Provides: lib%{name}%{soname}-devel = %{version}
|
||||||
Provides: lib%{lname}%{soname}-devel = %{version}
|
Provides: lib%{lname}%{soname}-devel = %{version}
|
||||||
Provides: lib%{name}-devel
|
Provides: lib%{name}-devel
|
||||||
@ -187,9 +176,8 @@ PDAL algorithms.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-%{version}-src
|
%setup -q -n %{name}-%{version}-src
|
||||||
%patch0 -p1
|
|
||||||
# Fix all wrong shebang and move to python3 only
|
# Fix all wrong shebang and move to python3 only
|
||||||
find . -type f -iname "*.py" -exec sed 's,^#!/usr/bin/env python,#!/usr/bin/python3,' {} \;
|
find . -type f -iname "*.py" -exec sed 's,^#!%{_bindir}/env python,#!%{_bindir}/python3,' {} \;
|
||||||
|
|
||||||
#Cleanup spurious perms in documentation
|
#Cleanup spurious perms in documentation
|
||||||
find ./doc/ -type f -exec chmod -v 0644 {} \;
|
find ./doc/ -type f -exec chmod -v 0644 {} \;
|
||||||
@ -269,6 +257,7 @@ find %{buildroot} -type f -name "*.la" -o -name "*.a" -delete -print
|
|||||||
%{_libdir}/libpdal_base.so.%{sofull_version}
|
%{_libdir}/libpdal_base.so.%{sofull_version}
|
||||||
# Plugins
|
# Plugins
|
||||||
%{_libdir}/libpdal_plugin_filter_python.so.%{sofull_version}
|
%{_libdir}/libpdal_plugin_filter_python.so.%{sofull_version}
|
||||||
|
%{_libdir}/libpdal_plugin_kernel_fauxplugin.so.%{sofull_version}
|
||||||
%{_libdir}/libpdal_plugin_reader_numpy.so.%{sofull_version}
|
%{_libdir}/libpdal_plugin_reader_numpy.so.%{sofull_version}
|
||||||
%{_libdir}/libpdal_plugin_reader_sqlite.so.%{sofull_version}
|
%{_libdir}/libpdal_plugin_reader_sqlite.so.%{sofull_version}
|
||||||
%{_libdir}/libpdal_plugin_writer_sqlite.so.%{sofull_version}
|
%{_libdir}/libpdal_plugin_writer_sqlite.so.%{sofull_version}
|
||||||
@ -276,7 +265,6 @@ find %{buildroot} -type f -name "*.la" -o -name "*.a" -delete -print
|
|||||||
%{_libdir}/libpdal_plugin_writer_pgpointcloud.so.%{sofull_version}
|
%{_libdir}/libpdal_plugin_writer_pgpointcloud.so.%{sofull_version}
|
||||||
%{_libdir}/libpdal_util.so.%{sofull_version}
|
%{_libdir}/libpdal_util.so.%{sofull_version}
|
||||||
|
|
||||||
|
|
||||||
%files -n %{name}-devel
|
%files -n %{name}-devel
|
||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
%license LICENSE.txt
|
%license LICENSE.txt
|
||||||
@ -286,6 +274,8 @@ find %{buildroot} -type f -name "*.la" -o -name "*.a" -delete -print
|
|||||||
%{_libdir}/libpdal_base.so
|
%{_libdir}/libpdal_base.so
|
||||||
%{_libdir}/libpdal_plugin_filter_python.so
|
%{_libdir}/libpdal_plugin_filter_python.so
|
||||||
%{_libdir}/libpdal_plugin_filter_python.so.%{sovers}
|
%{_libdir}/libpdal_plugin_filter_python.so.%{sovers}
|
||||||
|
%{_libdir}/libpdal_plugin_kernel_fauxplugin.so
|
||||||
|
%{_libdir}/libpdal_plugin_kernel_fauxplugin.so.%{sovers}
|
||||||
%{_libdir}/libpdal_plugin_reader_numpy.so
|
%{_libdir}/libpdal_plugin_reader_numpy.so
|
||||||
%{_libdir}/libpdal_plugin_reader_numpy.so.%{sovers}
|
%{_libdir}/libpdal_plugin_reader_numpy.so.%{sovers}
|
||||||
%{_libdir}/libpdal_plugin_reader_sqlite.so
|
%{_libdir}/libpdal_plugin_reader_sqlite.so
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
From f717a4ceabf2c23fcb03838945865cd54a4698c7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Howard Butler <howard@hobu.co>
|
|
||||||
Date: Thu, 28 Dec 2017 09:05:02 -0600
|
|
||||||
Subject: [PATCH] jsoncpp changed the return signature of removeMember and we
|
|
||||||
need to get the same behavior in two steps now (#1759)
|
|
||||||
|
|
||||||
---
|
|
||||||
dimbuilder/DimBuilder.cpp | 13 +++++++++----
|
|
||||||
1 file changed, 9 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dimbuilder/DimBuilder.cpp b/dimbuilder/DimBuilder.cpp
|
|
||||||
index dd2f4a4c7..96b978a67 100644
|
|
||||||
--- a/dimbuilder/DimBuilder.cpp
|
|
||||||
+++ b/dimbuilder/DimBuilder.cpp
|
|
||||||
@@ -174,9 +174,11 @@ bool DimBuilder::execute()
|
|
||||||
void DimBuilder::extractDim(Json::Value& dim)
|
|
||||||
{
|
|
||||||
DimSpec d;
|
|
||||||
+ Json::Value empty;
|
|
||||||
|
|
||||||
// Get dimension name.
|
|
||||||
- Json::Value name = dim.removeMember("name");
|
|
||||||
+ Json::Value name = dim.get("name", empty);
|
|
||||||
+ dim.removeMember("name");
|
|
||||||
if (name.isNull())
|
|
||||||
throw dimbuilder_error("Dimension missing name.");
|
|
||||||
if (!name.isString())
|
|
||||||
@@ -185,7 +187,8 @@ void DimBuilder::extractDim(Json::Value& dim)
|
|
||||||
validateDimension(d.m_name);
|
|
||||||
|
|
||||||
// Get dimension description.
|
|
||||||
- Json::Value description = dim.removeMember("description");
|
|
||||||
+ Json::Value description = dim.get("description", empty);
|
|
||||||
+ dim.removeMember("description");
|
|
||||||
if (description.isNull())
|
|
||||||
{
|
|
||||||
std::ostringstream oss;
|
|
||||||
@@ -204,7 +207,8 @@ void DimBuilder::extractDim(Json::Value& dim)
|
|
||||||
d.m_description = description.asString();
|
|
||||||
|
|
||||||
// Get dimension type
|
|
||||||
- Json::Value type = dim.removeMember("type");
|
|
||||||
+ Json::Value type = dim.get("type", empty);
|
|
||||||
+ dim.removeMember("type");
|
|
||||||
if (type.isNull())
|
|
||||||
{
|
|
||||||
std::ostringstream oss;
|
|
||||||
@@ -222,7 +226,8 @@ void DimBuilder::extractDim(Json::Value& dim)
|
|
||||||
throw dimbuilder_error(oss.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
- Json::Value altNames = dim.removeMember("alt_names");
|
|
||||||
+ Json::Value altNames = dim.get("alt_names", empty);
|
|
||||||
+ dim.removeMember("alt_names");
|
|
||||||
if (!altNames.isNull())
|
|
||||||
{
|
|
||||||
if (!altNames.isString())
|
|
Loading…
Reference in New Issue
Block a user