%global scintilla_ver 3.10.1
%global sip_ver 4.19.7
%if ! 0%{?bootstrap}
%global python3 1
%endif
%global qt5 1
%global py3_sipdir %{_datadir}/sip
%global py3_sip %{_bindir}/sip
Name:                qscintilla
Version:             2.11.2
Release:             1
License:             LGPL-2.1 andGPL-3.0+ and GPL+
Summary:             A Scintilla port to Qt
Url:                 https://github.com/opencor/qscintilla
Source0:             https://github.com/opencor/qscintilla/archive/v2.11.2.tar.gz
Patch100:            QScintilla_gpl-2_10_7-sip_check.patch
Patch101:            QScintilla_gpl-2_11-QUrl.patch
Patch102:            fix-build-error.patch
BuildRequires:       gcc-c++
BuildRequires:       pkgconfig(QtDesigner) pkgconfig(QtGui) pkgconfig(QtScript) pkgconfig(QtXml)
%if 0%{?qt5}
BuildRequires:       pkgconfig(Qt5Designer) pkgconfig(Qt5Gui) pkgconfig(Qt5Widgets)
%endif
Provides:            bundled(scintilla) = %{scintilla_ver}

%description
QScintilla is a port of Scintilla to the Qt GUI toolkit.
%{?scintilla_ver:This version of QScintilla is based on Scintilla v%{scintilla_ver}.}

%if 0%{?python3}
%package -n python3-qscintilla
Summary:             QScintilla python3 bindings
BuildRequires:       python3-devel python3-PyQt4-devel
Provides:            %{name}-python3 = %{version}-%{release}
Provides:            python3-PyQt5-Qsci = %{version}-%{release}
Requires:            %{name}%{?_isa} = %{version}-%{release} python3-PyQt4
%{?_sip_api:Requires: python3-pyqt4-sip-api(%{_sip_api_major}) >= %{_sip_api}}

%description -n python3-qscintilla
%{summary}.

%package -n python3-qscintilla-devel
Summary:             Development files for QScintilla python3 bindings
Provides:            %{name}-python3-devel = %{version}-%{release}
Requires:            python3-PyQt4-devel
BuildArch:           noarch

%description -n python3-qscintilla-devel
%{summary}.
%endif

%if 0%{?qt5}
%package qt5
Summary:             A Scintilla port to Qt5
Provides:            bundled(scintilla) = %{scintilla_ver}

%description qt5
%{summary}.

%package qt5-devel
Summary:             QScintilla Development Files
Requires:            %{name}-qt5%{?_isa} = %{version}-%{release} qt5-qtbase-devel

%description qt5-devel
%{summary}.

%if 0%{?python3}
%package -n python3-qscintilla-qt5
Summary:             QScintilla-qt5 python3 bindings
BuildRequires:       python3-qt5 python3-qt5-devel python3-sip-devel >= %{sip_ver}
Provides:            %{name}-qt5-python3 = %{version}-%{release}
Requires:            %{name}-qt5%{?_isa} = %{version}-%{release}
Requires:            python3-qt5%{?pyqt5_version: >= %{pyqt5_version}}
%{?_sip_api:Requires: python3-pyqt5-sip-api(%{_sip_api_major}) >= %{_sip_api}}

%description -n python3-qscintilla-qt5
%{summary}.

%package -n python3-qscintilla-qt5-devel
Summary:             Development files for QScintilla-qt5 python3 bindings
Provides:            %{name}-qt5-python3-devel = %{version}-%{release}
Requires:            python3-qt5-devel
BuildArch:           noarch

%description -n python3-qscintilla-qt5-devel
%{summary}.
%endif
%endif

%prep
%setup -q -n qscintilla-%{version}
%patch100 -p1 -b .sip_check
%patch101 -p1 -b .qurl
%patch102 -p1

%build
%if 0%{?qt5}
PATH=%{_qt5_bindir}:$PATH; export PATH
cp -a Qt4Qt5 Qt5/
pushd Qt5
%{qmake_qt5} qscintilla.pro
%make_build
popd
QMAKEFEATURES=`pwd`/Qt5/features; export QMAKEFEATURES
cp -a designer-Qt4Qt5 designer-Qt5/
pushd designer-Qt5
%{qmake_qt5} designer.pro INCLUDEPATH+=../Qt5 LIBS+=-L../Qt5
%make_build
popd
%if 0%{?python3}
cp -a Python Python3-qt5
pushd Python3-qt5
%{__python3} \
  configure.py --verbose \
    --pyqt=PyQt5 \
    --sip=/usr/bin/sip-pyqt5 \
    --qsci-incdir=../Qt5 --qsci-libdir=../Qt5
%make_build
popd
%endif
%endif

%install
%if 0%{?qt5}
make -C Qt5 install INSTALL_ROOT=%{buildroot}
ln -s libqscintilla2_qt5.so %{buildroot}%{_qt5_libdir}/libqscintilla2-qt5.so
make -C designer-Qt5 install INSTALL_ROOT=%{buildroot}
%if 0%{?python3}
make -C Python3-qt5 install DESTDIR=%{buildroot} INSTALL_ROOT=%{buildroot}
test -x   %{buildroot}%{python3_sitearch}/PyQt5/Qsci.so || \
chmod a+x %{buildroot}%{python3_sitearch}/PyQt5/Qsci.so
%endif
%endif
%find_lang qscintilla --with-qt
%if 0%{?qt5}
grep "%{_qt5_translationdir}" qscintilla.lang > qscintilla-qt5.lang
%endif
%if  ! ( 0%{?qt5} && 0%{?python3})
rm -rfv %{buildroot}%{_qt5_datadir}/qsci/
%endif

%check

%if 0%{?qt5}
%ldconfig_scriptlets qt5

%files qt5 -f qscintilla-qt5.lang
%doc NEWS README
%license LICENSE
%{_qt5_libdir}/libqscintilla2_qt5.so.15*
%{_qt5_plugindir}/designer/libqscintillaplugin.so

%files qt5-devel
%doc doc/html-Qt4Qt5 doc/Scintilla example-Qt4Qt5
%{_qt5_headerdir}/Qsci/
%{_qt5_libdir}/libqscintilla2_qt5.so
%{_qt5_archdatadir}/mkspecs/features/qscintilla2.prf
%{_qt5_libdir}/libqscintilla2-qt5.so

%if 0%{?python3}
%files -n python3-qscintilla-qt5
%{python3_sitearch}/PyQt5/Qsci.*
%{_qt5_datadir}/qsci/
%{python3_sitearch}/QScintilla-%{version}.dist-info/

%files -n python3-qscintilla-qt5-devel
%{py3_sipdir}/PyQt5/Qsci/
%endif
%endif

%changelog
* Mon Jan 11 2021 leiju <leiju4@huawei.com> - 2.11.2-1
- package init
