%bcond_with mozjs

%define _unpackaged_files_terminate_build 1

Summary:        A library handling all the details of proxy configuration
Name:           libproxy
Version:        0.4.15
Release:        4%{?_dist_release}
Group:          system
Vendor:         Project Vine
Distribution:   Vine Linux

License:        LGPLv2+
URL:            http://libproxy.github.io/libproxy
Source0:        https://github.com/libproxy/libproxy/releases/download/%{version}/libproxy-%{version}.tar.xz
Patch0:         libproxy-0.4.15-python38.patch
Patch1000:      CVE-2020-25219.patch
# CVE-2020-26154
Patch1001:      libproxy-0.4.15-fix-pac-buffer-overflow.patch

BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  python-devel
BuildRequires:  python3-devel
#Virtual Provides - We need either mozjs or WebKit
%if %{with mozjs}
Requires: %{name}-pac >= %{version}
%endif
#
Requires: libproxy-python = %{version}-%{release}
Requires: libproxy-bin = %{version}-%{release}

Obsoletes: %{name}-mozjs < 1.4.15
Obsoletes: %{name}-webkitgtk3 < 1.4.15

BuildRequires:  cmake
# gnome
BuildRequires:  GConf2-devel
%if %{with mozjs}
# mozjs
BuildRequires:  mozjs >= 38
%endif
# NetworkManager
BuildRequires:  NetworkManager-libnm-devel
BuildRequires:  dbus-devel
BuildRequires:  glib2
# webkit (gtk)
BuildRequires:  webkitgtk4-devel
# kde
BuildRequires:  libXmu-devel
BuildRequires:  libX11-devel

BuildRequires:  python-rpm-macros
BuildRequires:  python3-rpm-macros

Provides: %{name}-webkit = %{version}-%{release}
Obsoletes: %{name}-webkit < %{version}-%{release}

%description
libproxy offers the following features:

    * extremely small core footprint (< 35K)
    * no external dependencies within libproxy core
      (libproxy plugins may have dependencies)
    * only 3 functions in the stable external API
    * dynamic adjustment to changing network topology
    * a standard way of dealing with proxy settings across all scenarios
    * a sublime sense of joy and accomplishment 

Non-default rpmbuild options:
--with webkit:           Enable WebKit-gtk support


%package        bin
Summary:        Binary to test %{name}
Group:          network
Requires:       %{name} = %{version}-%{release}

%description    bin
The %{name}-bin package contains the proxy binary for %{name}


%package        python
Summary:        Binding for %{name} and python
Group:          programming
Requires:       %{name} = %{version}-%{release}

%description    python
The %{name}-python package contains the python binding for %{name}

%package        python3
Summary:        Binding for %{name} and python
Group:          programming
Requires:       %{name} = %{version}-%{release}


%description    python3
The %{name}-python package contains the python binding for %{name}

%package        gnome
Summary:        Plugin for %{name} and gnome
Group:          system
Requires:       %{name} = %{version}-%{release}

%description    gnome
The %{name}-gnome package contains the %{name} plugin for gnome.


%package        kde
Summary:        Plugin for %{name} and kde
Group:          system
Requires:       %{name} = %{version}-%{release}

%description    kde
The %{name}-kde package contains the %{name} plugin for kde.


%if %{with mozjs}
%package        mozjs
Summary:        Plugin for %{name} and mozjs
Group:          system
Requires:       %{name} = %{version}
#Tweak this according to the current gecko-libs version
Requires:       js
Provides:       %{name}-pac = %{version}-%{release}

%description    mozjs
The %{name}-mozjs package contains the %{name} plugin for mozjs.


%package        webkitgtk4
Summary:        Plugin for %{name} and webkitgtk4
Group:          system
Requires:       %{name} = %{version}
Provides:       %{name}-pac = %{version}-%{release}

%description    webkitgtk4
The %{name}-webkitgtk3 package contains the %{name} plugin for
webkitgtk3.
%endif


%package        devel
Summary:        Development files for %{name}
Group:          programming
Requires:       %{name} = %{version}-%{release}
Requires:       pkgconfig

%description    devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.


%debug_package


%prep
%autosetup -p1
#sed -i "s|mozjs185>=1.8.5|mozjs185|" libproxy/cmake/modules/pacrunner_mozjs.cmk


%build
export CXXFLAGS="-std=c++14 $RPM_OPT_FLAGS"
%cmake \
	-DLIBEXEC_INSTALL_DIR=%{_libexecdir} \
	-DMODULE_INSTALL_DIR=%{_libdir}/%{name}/%{version}/modules \
	-DWITH_PERL=OFF \
	-DWITH_WEBKIT3=ON \
	-DWITH_GNOME3=ON \
	-DWITH_KDE=ON \
   .
make VERBOSE=1 %{?_smp_mflags}


%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p"
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'


%clean
rm -rf $RPM_BUILD_ROOT


%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig


%files 
%defattr(-,root,root,-)
%license COPYING
%doc AUTHORS README
%{_libdir}/*.so.*
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/%{version}
%dir %{_libdir}/%{name}/%{version}/modules
%{_libdir}/%{name}/%{version}/modules/network_networkmanager.so

%files bin
%defattr(-,root,root,-)
%{_bindir}/proxy

%files python
%defattr(-,root,root,-)
%{python_sitelib}/libproxy.py

%files python3
%defattr(-,root,root,-)
%{python3_sitelib}/libproxy.py

%files gnome
%defattr(-,root,root,-)
%{_libdir}/%{name}/%{version}/modules/config_gnome3.so
%{_libexecdir}/pxgsettings

%files kde
%defattr(-,root,root,-)
%{_libdir}/%{name}/%{version}/modules/config_kde.so

# Build the pacrunner into libproxy unless we are building for multiple engines
%if %{with mozjs}
%files mozjs
%defattr(-,root,root,-)
%{_libdir}/%{name}/%{version}/modules/pacrunner_mozjs.so

%files webkitgtk4
%defattr(-,root,root,-)
%{_libdir}/%{name}/%{version}/modules/pacrunner_webkit.so
%endif

%files devel
%defattr(-,root,root,-)
%{_includedir}/proxy.h
%{_libdir}/*.so
%{_libdir}/pkgconfig/libproxy-1.0.pc
%{_datadir}/cmake/Modules/Findlibproxy.cmake


%changelog
* Sat Oct 10 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 0.4.15-4
- imported Patch1001 to fix CVE-2020-26154 from rawhide.

* Tue Sep 15 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 0.4.15-3
- imported Patch1000 to fix CVE-2020-25219 from debian.
- imported Patch0 to support python-3.8 from upstream.

* Sun Apr 12 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 0.4.15-2
- rebuilt with current environment.

* Mon Jan 08 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 0.4.15-1
- updated to 0.4.15.
- enabled python3 support.
- disabled mozjs as default.
- switched to webkitgtk4.

* Thu Jul 07 2016 Yoji TOYODA <bsyamato@sea.plala.or.jp> 0.4.11-2
- rebuild with gcc-5.4.0

* Tue Dec 31 2013 Yoji TOYODA <bsyamato@sea.plala.or.jp> 0.4.11-1
- update to 0.4.11
- remove Patch0 (libproxy-0.4.7-cmake-modules.patch)

* Thu Feb 16 2012 Yoji TOYODA <bsyamato@sea.plala.or.jp> 0.4.7-2
- rebuild with python-2.7.2

* Sun Aug 14 2011 Yoji TOYODA <bsyamato@sea.plala.or.jp> 0.4.7-1
- new upstream release
- change BuildRequires: WebKit3-gtk-devel instead of WebKit-gtk-devel
- change BuildRequires: js-devel instead of gecko-devel
- replace Patch0 (libproxy-0.4.7-cmake-modules.patch)
- detele -webkit sub package
- create -webkitgtk3 sub package

* Sun Oct 03 2010 Yoji TOYODA <bsyamato@sea.plala.or.jp> 0.4.6-1
- new upstream release
- drop Patch0
- add BuildRequires: cmake, kdelibs-devel
- fix %files (from %{_libdir}/%{name}/%{version}/plugins to %{_libdir}/%{name}/%{version}/modules)

* Sun Sep 26 2010 Yoji TOYODA <bsyamato@sea.plala.or.jp> 0.2.3-5
- rebuild with rpm-4.8.1 for pkg-config file

* Tue Feb 02 2010 Shu KONNO <owa@bg.wakwak.com> 0.2.3-4
- rebuild with python-2.6

* Tue Jun 30 2009 Daisuke SUZUKI <daisuke@linux.or.jp> 0.2.3-3
- rebuild with gecko-1.9.1

* Thu Mar 26 2009 Daisuke SUZUKI <daisuke@linux.or.jp> 0.2.3-2
- rebuild with WebKit-gtk-1.0.0-8.svn41944

* Sat Mar 21 2009 Daisuke SUZUKI <daisuke@linux.or.jp> 0.2.3-1
- initial build for Vine Linux

* Mon Mar  9 2009 kwizart < kwizart at gmail.com > - 0.2.3-10
- Rebuild for webkit
- Raise requirement for xulrunner to 1.9.1

* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.2.3-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild

* Thu Jan 22 2009 kwizart < kwizart at gmail.com > - 0.2.3-8
- Merge NetworkManager module into the main libproxy package
- Main Requires the -python and -bin subpackage 
 (splitted for multilibs compliance).

* Fri Oct 24 2008 kwizart < kwizart at gmail.com > - 0.2.3-7
- Disable Gnome/KDE default support via builtin modules.
 (it needs to be integrated via Gconf2/neon instead).

* Tue Oct 21 2008 kwizart < kwizart at gmail.com > - 0.2.3-6
- Disable Obsoletes.
- Requires ev instead of evr for optionnals sub-packages.

* Tue Oct 21 2008 kwizart < kwizart at gmail.com > - 0.2.3-5
- Use conditionals build.

* Mon Sep 15 2008 kwizart < kwizart at gmail.com > - 0.2.3-4
- Remove plugin- in the name of the packages

* Mon Aug  4 2008 kwizart < kwizart at gmail.com > - 0.2.3-3
- Move proxy.h to libproxy/proxy.h
  This will prevent it to be included in the default include path
- Split main to libs and util and use libproxy to install all

* Mon Aug  4 2008 kwizart < kwizart at gmail.com > - 0.2.3-2
- Rename binding-python to python
- Add Requires: gecko-libs >= %%{gecko_version}
- Fix some descriptions
- Add plugin-webkit package
 
* Fri Jul 11 2008 kwizart < kwizart at gmail.com > - 0.2.3-1
- Convert to Fedora spec

* Fri Jun 6 2008 - dominique-rpm@leuenberger.net
- Updated to version 0.2.3
* Wed Jun 4 2008 - dominique-rpm@leuenberger.net
- Extended spec file to build all available plugins
* Tue Jun 3 2008 - dominique-rpm@leuenberger.net
- Initial spec file for Version 0.2.2