libproxy/libproxy-plugins.spec

532 lines
16 KiB
RPMSpec

#
# spec file for package libproxy-plugins
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define build_core_not_modules 0
%define build_mozjs 0
%if 0%{?suse_version}
%bcond_without mono
%else
%bcond_with mono
%endif
Url: http://code.google.com/p/libproxy/
%define _name libproxy
Name: libproxy-plugins
Summary: Libproxy provides consistent proxy configuration to applications
License: GPL-2.0+ and LGPL-2.1+
Group: System/Libraries
Version: 0.4.13
Release: 0
# FIXME: verify if test suite works - 0.4.10 has weird behavior in some cases, where the internal server times out.
%if 0%{?build_snapshot}
%define _sourcename %{_name}
%else
%define _sourcename %{_name}-%{version}
%endif
Source: https://github.com/libproxy/%{_name}/archive/%{version}.tar.gz
# Script used for automatic snapshot updates
Source98: update-from-svn.sh
Source99: baselibs.conf
# PATCH-FIX-UPSTREAM libproxy-gnome-waitpid.patch boo#967601 dimstar@opensuse.org -- GNOME3: Wait for pxgsettings to vanish while destroying the plugin
Patch0: libproxy-gnome-waitpid.patch
# PATCH-FIX-UPSTREAM libproxy-python3-support.patch dimstar@opensuse.org -- Add support to build python2 and python3 bindings together
Patch1: libproxy-python3-support.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: libmodman-devel
# netcfg is needed for the test suite.
BuildRequires: netcfg
BuildRequires: pkgconfig
BuildRequires: zlib-devel
%if !%{build_core_not_modules}
%if ! 0%{?windows}
BuildRequires: dbus-1-devel
BuildRequires: gconf2-devel
# For directory ownership, but also because we want to rebuild the modules if
# the library changed
BuildRequires: libproxy1 = %{version}
%if 0%{?favor_gtk2}
BuildRequires: pkgconfig(gconf-2.0)
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(webkit-1.0)
%else
BuildRequires: pkgconfig(gio-2.0) >= 2.26
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(javascriptcoregtk-4.0)
%endif
BuildRequires: NetworkManager-devel
%if 0%{?is_opensuse}
BuildRequires: libKF5ConfigCore5
%endif
%if %{build_mozjs}
BuildRequires: pkgconfig(mozjs185)
%endif
%if %{with mono}
BuildRequires: mono-devel
%endif
BuildRequires: perl
BuildRequires: python-devel
BuildRequires: python3-devel
%endif
%endif
%{!?python_sitelib: %global python_sitelib %(%__python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
%{!?python_sitearch: %global python_sitearch %(%__python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
%{!?_assemblies_dir: %global _assemblies_dir %(pkg-config cecil --variable=assemblies_dir)}
%description
libproxy offers the following features: * extremely small core
footprint (< 35K)
* no external dependencies within libproxy core (libproxy modules
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
%if %build_core_not_modules
%package tools
Summary: A simple application using libproxy
Group: System/Libraries
Requires: libproxy1 = %{version}
%description tools
A simple application that will use libproxy to give the results you can
expect from other applications. It can be used to debug what would
happen in various cases.
%package devel
Summary: Libproxy provides consistent proxy configuration to applications - Development Files
Group: Development/Libraries/C and C++
Requires: libproxy1 = %{version}
%description devel
libproxy offers the following features: * extremely small core
footprint (< 35K)
* no external dependencies within libproxy core (libproxy modules
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
%package -n libproxy1
Summary: Libproxy provides consistent proxy configuration to applications
Group: System/Libraries
%if !%{build_mozjs}
Obsoletes: libproxy1-pacrunner-mozjs <= %{version}
%endif
%description -n libproxy1
libproxy offers the following features: * extremely small core
footprint (< 35K)
* no external dependencies within libproxy core (libproxy modules
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
%else
%if 0%{?favor_gtk2}
%package -n libproxy1-config-gnome
Summary: Libproxy module for GNOME configuration
Group: System/Libraries
%else
%package -n libproxy1-config-gnome3
Summary: Libproxy module for GNOME3 configuration
Group: System/Libraries
%endif
Requires: libproxy1 = %{version}
%if 0%{?suse_version}
Recommends: libproxy1-pacrunner = %{version}
%if 0%{?favor_gtk2}
Supplements: packageand(libproxy1:gconf2)
%else
Supplements: packageand(libproxy1:gnome-session-core)
%endif
%else
Requires: libproxy1-pacrunner = %{version}
%endif
Provides: libproxy-gnome = %{version}
Obsoletes: libproxy-gnome < %{version}
%if 0%{?favor_gtk2}
%description -n libproxy1-config-gnome
%else
%description -n libproxy1-config-gnome3
%endif
A module to extend libproxy with capabilities to query GNOME about
proxy settings.
%package -n libproxy1-config-kde
Summary: Libproxy module for KDE configuration
Group: System/Libraries
Requires: libproxy1 = %{version}
# We don't really need the library, but this package brings kreadconfig5
Requires: libKF5ConfigCore5
# The kde plugin requires 'qtpaths', which is part of libqt5-qttools
Requires: libqt5-qttools
%if 0%{?suse_version}
Recommends: libproxy1-pacrunner = %{version}
Supplements: packageand(libproxy1:libkde4)
Supplements: packageand(libproxy1:plasma5-session)
%else
Requires: libproxy1-pacrunner = %{version}
%endif
Provides: libproxy-kde = %{version}
Obsoletes: libproxy-kde < %{version}
# A generic KDE config loader was introduced in 0.4.12
Obsoletes: libproxy1-config-kde4 < 0.4.12
%description -n libproxy1-config-kde
A module to extend libproxy with capabilities to query KDE4 about proxy
settings.
%if %{build_mozjs}
%package -n libproxy1-pacrunner-mozjs
Summary: Libproxy module to support wpad/pac parsing via Mozilla JavaScript Engine
Group: System/Libraries
Requires: libproxy1 = %{version}
%if 0%{?suse_version}
Supplements: packageand(libproxy1:libmozjs185-1_0)
%endif
# A virtual symbol to identify that this is a pacrunner.
Provides: libproxy1-pacrunner = %{version}
%description -n libproxy1-pacrunner-mozjs
A module to extend libproxy with capabilities to pass addresses to a
WPAD/PAC script and have it find the correct proxy.
%endif
%package -n libproxy1-pacrunner-webkit
Summary: Libproxy module to support WPAD/PAC parsing via WebKit JavaScript Engine
Group: System/Libraries
Requires: libproxy1 = %{version}
%if 0%{?suse_version}
%if 0%{?favor_gtk2}
Supplements: packageand(libproxy1:libjavascriptcoregtk-1_0-0)
%else
Supplements: packageand(libproxy1:libjavascriptcoregtk-3_0-0)
%endif
%endif
# A virtual symbol to identify that this is a pacrunner.
Provides: libproxy1-pacrunner = %{version}
%description -n libproxy1-pacrunner-webkit
A module to extend libproxy with capabilities to pass addresses to a
WPAD/PAC script and have it find the correct proxy.
%package -n libproxy1-networkmanager
Summary: Libproxy module for NetworkManager configuration
Group: System/Libraries
Requires: libproxy1 = %{version}
%if 0%{?suse_version}
Supplements: packageand(libproxy1:NetworkManager)
%endif
%description -n libproxy1-networkmanager
A module to extend libproxy with capabilities to query NetworkManager
about network configuration changes.
%package -n python3-libproxy
Summary: Python3 bindings for libproxy
Group: System/Libraries
%if 0%{?suse_version} > 1110
BuildArch: noarch
%endif
Requires: libproxy1 = %{version}
%description -n python3-libproxy
libproxy offers the following features: * extremely small core
footprint (< 35K)
* no external dependencies within libproxy core (libproxy modules
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
%package -n python-libproxy
Summary: Python bindings for libproxy
Group: System/Libraries
%if 0%{?suse_version} > 1110
BuildArch: noarch
%py_requires
%endif
Requires: libproxy1 = %{version}
%description -n python-libproxy
libproxy offers the following features: * extremely small core
footprint (< 35K)
* no external dependencies within libproxy core (libproxy modules
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
%package -n perl-Net-Libproxy
Summary: Perl bindings for libproxy
Group: Development/Libraries/Perl
Requires: libproxy1 = %{version}
%if 0%{?perl_requires:1}
%{perl_requires}
%else
# For Fedora at least perl = perl_version does not work.
Requires: perl >= %{perl_version}
%endif
%description -n perl-Net-Libproxy
libproxy offers the following features: * extremely small core
footprint (< 35K)
* no external dependencies within libproxy core (libproxy modules
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
%if %{with mono}
%package -n libproxy-sharp
Summary: .Net bindings for libproxy
Group: Development/Languages/Mono
Requires: libproxy1 = %{version}
%description -n libproxy-sharp
libproxy offers the following features: * extremely small core
footprint (< 35K)
* no external dependencies within libproxy core (libproxy modules
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
%endif
%endif
%prep
%setup -q -n %{_sourcename}
%patch0 -p1
%patch1 -p1
mkdir build
%build
cd build
export CXXFLAGS="%{optflags}"
export CFLAGS="%{optflags}"
%if 0%{?suse_version} < 1120 && 0%{?suse_version}
export CXXFLAGS="%{optflags} -DXP_UNIX"
%endif
%if 0%{?windows}
export CXXFLAGS="%{optflags} -fno-stack-protector -static-libgcc"
%endif
cmake \
%if 0%{?windows}
-DCMAKE_TOOLCHAIN_FILE=../cmake/mingw32.cmake \
-DBUILD_TESTING=False \
-DWITH_DOTNET=OFF \
%else
-DWITH_VALA=yes \
%if %{with mono}
-DWITH_DOTNET=1 \
%endif
-DFORCE_SYSTEM_LIBMODMAN=ON \
%endif
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DBIN_INSTALL_DIR=%{_bindir} \
-DLIB_INSTALL_DIR=%{_libdir} \
-DMODULE_INSTALL_DIR=%{_libdir}/libproxy-%{version}/modules \
-DLIBEXEC_INSTALL_DIR=%{_libexecdir}/libproxy-%{version} \
-DPYTHON_SITEPKG_DIR=%{python_sitelib} \
-DSHARE_INSTALL_PREFIX=%{_datadir} \
-DINCLUDE_INSTALL_DIR=%{_includedir} \
-DPERL_VENDORINSTALL=yes \
-DBIPR=0 \
%if %build_core_not_modules
-DWITH_DOTNET=OFF \
-DWITH_PERL=OFF \
-DWITH_PYTHON2=OFF \
-DWITH_PYTHON3=OFF \
%endif
%if %build_core_not_modules || ! 0%{?is_opensuse}
-DWITH_KDE=OFF \
%endif
%if 0%{?suse_version} && 0%{?suse_version} < 1120
-DCMAKE_BUILD_TYPE=DebugFull \
-DCMAKE_INSTALL_CONFIG_NAME=DebugFull \
%else
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_CONFIG_NAME=RelWithDebInfo \
%endif
%if 0%{?favor_gtk2}
-DWITH_WEBKIT3=OFF \
-DWITH_GNOME3=OFF \
%else
-DWITH_WEBKIT3=ON \
-DWITH_GNOME3=ON \
%endif
..
%{__make} VERBOSE=1
%install
cd build
make DESTDIR=%{buildroot} install
# On Windows we also do not want to provide the static libraries.
%if 0%{?windows}
find %{buildroot}%{_libdir} -name '*.dll.a' -delete -print
rm %{buildroot}%{_libdir}/libmodman.dll
%endif
%if %build_core_not_modules
# Build the basic directory structure for the modules so we can
# own the directories in the main library package
install -d %{buildroot}%{_libexecdir}/libproxy-%{version}
install -d %{buildroot}%{_libdir}/%{name}-%{version}/modules
%else
# remove files that are part of the core
rm -f %{buildroot}%{_includedir}/*.h
# Delete all files that exist in the base libproxy package
rm -f %{buildroot}%{_bindir}/proxy%{?windows:.exe}
rm -f %{buildroot}%{_libdir}/libproxy.*
rm -f %{buildroot}%{_libdir}/pkgconfig/libproxy-1.0.pc
rm -f %{buildroot}%{_datadir}/cmake/Modules/Findlibproxy.cmake
rm -f %{buildroot}%{_datadir}/vala/vapi/libproxy-1.0.vapi
%endif
%check
#cd build
#make test
%if %build_core_not_modules
%post -n libproxy1 -p /sbin/ldconfig
%postun -n libproxy1 -p /sbin/ldconfig
%files tools
%defattr(-, root, root)
%{_bindir}/proxy%{?windows:.exe}
%files -n libproxy1
%defattr(-, root, root)
%doc COPYING README AUTHORS
%if ! 0%{?windows}
%{_libdir}/libproxy.so.*
%else
%{_libdir}/libproxy.dll
%endif
%dir %{_libexecdir}/libproxy-%{version}
%dir %{_libdir}/libproxy-%{version}
%dir %{_libdir}/libproxy-%{version}/modules
%files devel
%defattr(-, root, root)
%{_includedir}/*.h
%if ! 0%{?windows}
%{_libdir}/*.so
%{_libdir}/pkgconfig/libproxy-1.0.pc
%{_datadir}/cmake/Modules/Findlibproxy.cmake
%dir %{_datadir}/vala
%dir %{_datadir}/vala/vapi
%{_datadir}/vala/vapi/libproxy-1.0.vapi
%endif
%else
%if ! 0%{?windows}
%if 0%{?is_opensuse}
%files -n libproxy1-config-kde
%defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/config_kde.so
%endif
%if 0%{?favor_gtk2}
%files -n libproxy1-config-gnome
%defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/config_gnome.so
%{_libexecdir}/libproxy-%{version}/pxgconf
%else
%files -n libproxy1-config-gnome3
%defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/config_gnome3.so
%{_libexecdir}/libproxy-%{version}/pxgsettings
%endif
%files -n libproxy1-networkmanager
%defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/network_networkmanager.so
%files -n libproxy1-pacrunner-webkit
%defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/pacrunner_webkit.so
%if %{build_mozjs}
%files -n libproxy1-pacrunner-mozjs
%defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/pacrunner_mozjs.so
%endif
%files -n python-libproxy
%defattr(-, root, root)
%{python_sitelib}/*.py
%files -n python3-libproxy
%defattr(-, root, root)
%{python3_sitelib}/*.py
%files -n perl-Net-Libproxy
%defattr(-,root,root)
%dir %{perl_vendorarch}/Net
%dir %{perl_vendorarch}/auto/Net
%dir %{perl_vendorarch}/auto/Net/Libproxy
%{perl_vendorarch}/Net/Libproxy.pm
%{perl_vendorarch}/auto/Net/Libproxy/Libproxy.so
%if %{with mono}
%files -n libproxy-sharp
%defattr(-, root, root)
%{_assemblies_dir}/gac/libproxy-sharp
%{_assemblies_dir}/libproxy-sharp
%{_libdir}/pkgconfig/libproxy-sharp-1.0.pc
%endif
%endif
%endif
%changelog