# # spec file for package libproxy # # 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 1 %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 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 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 %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 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} 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_PYTHON=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 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