# # spec file for package libproxy # # Copyright (c) 2017 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 1 %define build_mozjs 0 %if 0%{?suse_version} %bcond_without mono %else %bcond_with mono %endif %define _name libproxy %if 0%{?build_snapshot} %define _sourcename %{_name} %else %define _sourcename %{_name}-%{version} %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)} Name: libproxy Version: 0.4.15 Release: 0 Summary: Automatic proxy configuration management for applications License: GPL-2.0+ AND LGPL-2.1+ Group: Development/Libraries/C and C++ Url: http://code.google.com/p/libproxy/ Source: https://github.com/libproxy/%{_name}/archive/%{version}.tar.gz Source99: baselibs.conf 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: NetworkManager-devel 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} BuildRequires: perl BuildRequires: python-devel BuildRequires: python3-devel %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 %if 0%{?is_opensuse} BuildRequires: libKF5ConfigCore5 %endif %if %{build_mozjs} BuildRequires: pkgconfig(mozjs-38) %endif %if %{with mono} BuildRequires: mono-devel %endif %endif %endif %description libproxy is a library that provides automatic proxy configuration management. %if %build_core_not_modules %package tools Summary: An example application using libproxy Group: System/Libraries Requires: libproxy1 = %{version} %description tools An example application that will use libproxy to give the results that can be expected from other applications. It can be used to debug what would happen in various cases. %package devel Summary: Development files for libproxy, a library to do PAC/WPAD Group: Development/Libraries/C and C++ Requires: libproxy1 = %{version} %description devel libproxy is a library that provides automatic proxy configuration management. This subpackage contains header files for developing applications that want to make use of libproxy. %package -n libproxy1 Summary: Automatic proxy configuration management for applications Group: System/Libraries %if !%{build_mozjs} Obsoletes: libproxy1-pacrunner-mozjs <= %{version} %endif %description -n libproxy1 libproxy is a library that provides automatic proxy configuration management. Proxy autoconfiguration (PAC) requires JavaScript (which most applications do not have), and determing the PAC script location requires a WPAD protocol implementation, which complicate proxy support. libproxy exists to abstract this issue and provides an answer how to reach a certain network resource. %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 # We don't really need the library, but this package brings kreadconfig5 Group: System/Libraries Requires: libKF5ConfigCore5 Requires: libproxy1 = %{version} 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 # The kde plugin requires 'qtpaths', which is part of libqt5-qtpaths in TW / libqt5-qttools in older releases %if %{?suse_version} > 1320 Requires: libqt5-qtpaths %else Requires: libqt5-qttools %endif %if 0%{?suse_version} Recommends: libproxy1-pacrunner = %{version} Supplements: packageand(libproxy1:libkde4) Supplements: packageand(libproxy1:plasma5-session) %else Requires: libproxy1-pacrunner = %{version} %endif %description -n libproxy1-config-kde A module to extend libproxy with capabilities to query KDE4 about proxy settings. %package -n libproxy1-pacrunner-mozjs Summary: Libproxy module to support WPAD/PAC parsing via the Mozilla JavaScript Engine Group: System/Libraries Requires: libproxy1 = %{version} # A virtual symbol to identify that this is a pacrunner. Provides: libproxy1-pacrunner = %{version} %if 0%{?suse_version} Supplements: packageand(libproxy1:libmozjs185-1_0) %endif %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. %package -n libproxy1-pacrunner-webkit Summary: Libproxy module to support WPAD/PAC parsing via the WebKit JavaScript Engine Group: System/Libraries Requires: libproxy1 = %{version} # A virtual symbol to identify that this is a pacrunner. Provides: libproxy1-pacrunner = %{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 %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: Development/Languages/Python Requires: libproxy1 = %{version} %if 0%{?suse_version} > 1110 BuildArch: noarch %endif %description -n python3-libproxy libproxy is a library that provides automatic proxy configuration management. This package contains the Python 3 bindings for libproxy. %package -n python-libproxy Summary: Python bindings for libproxy Group: Development/Languages/Python Requires: libproxy1 = %{version} %if 0%{?suse_version} > 1110 BuildArch: noarch %py_requires %endif %description -n python-libproxy libproxy is a library that provides automatic proxy configuration management. This package contains the Python 2 bindings for libproxy. %package -n perl-Net-Libproxy Summary: Perl bindings for libproxy Group: Development/Languages/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 is a library that provides automatic proxy configuration management. This package contains the Perl for libproxy. %package -n libproxy-sharp Summary: .Net bindings for libproxy Group: Development/Languages/Mono Requires: libproxy1 = %{version} %description -n libproxy-sharp libproxy is a library that provides automatic proxy configuration management. This package contains the Mono/.NET for libproxy. %endif # build_core_not_modules %prep %setup -q -n %{_sourcename} 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