Neal Gompa
14a1eb13e7
+ Fix edge cases involving dequoting zero-length tuples that can lead to a buffer overflow under the right circumstances. Thanks to A. Wilcox for reporting and supplying a patch. (boo#1105438 - CVE-2018-1000221) + Ensure environment variables override values learned from personality files or built-in defaults. + Add pkgconf-personality(5) manpage documenting the personality file format. - Drop BR pkgconfig and manually specified pkgconfig() Provides for devel subpackage to avoid dependency loops. OBS-URL: https://build.opensuse.org/package/show/devel:tools/pkgconf?expand=0&rev=6
209 lines
6.5 KiB
RPMSpec
209 lines
6.5 KiB
RPMSpec
#
|
|
# spec file for package pkgconf
|
|
#
|
|
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
# Copyright (c) 2018 Neal Gompa <ngompa13@gmail.com>.
|
|
#
|
|
# 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/
|
|
#
|
|
|
|
|
|
# Compatibility macros
|
|
%{!?make_build: %global make_build %{__make} %{?_smp_mflags}}
|
|
|
|
# pkgconf does not act as pkgconfig by default
|
|
%bcond_with pkgconfig_compat
|
|
|
|
%if %{with pkgconfig_compat}
|
|
%global pkgconfig_ver 0.29.2
|
|
# For obsoleting pkgconfig, bump the ver to a number higher than latest version
|
|
%global pkgconfig_obsver %{pkgconfig_ver}+1
|
|
%endif
|
|
|
|
# Search path for pc files for pkgconf
|
|
%global pkgconf_libdirs %{_libdir}/pkgconfig:%{_datadir}/pkgconfig
|
|
|
|
%global somajor 3
|
|
%global libname lib%{name}%{somajor}
|
|
%global devname lib%{name}-devel
|
|
|
|
Name: pkgconf
|
|
Version: 1.5.3
|
|
Release: 0
|
|
Summary: Package compiler and linker metadata toolkit
|
|
License: ISC
|
|
Group: Development/Tools/Building
|
|
URL: http://pkgconf.org/
|
|
Source0: https://distfiles.dereferenced.org/%{name}/%{name}-%{version}.tar.xz
|
|
|
|
# Simple wrapper script to offer platform versions of pkgconfig from Fedora
|
|
Source1: platform-pkg-config.in
|
|
|
|
BuildRequires: gcc
|
|
BuildRequires: make
|
|
|
|
# For regenerating autotools scripts
|
|
BuildRequires: autoconf
|
|
BuildRequires: automake
|
|
BuildRequires: libtool
|
|
|
|
# pkgconf uses libpkgconf internally
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
|
|
# This is defined within pkgconf code as a virtual pc (just like in pkgconfig)
|
|
Provides: pkgconfig(pkgconf) = %{version}
|
|
|
|
%description
|
|
pkgconf is a program which helps to configure compiler and linker flags
|
|
for development frameworks. It is similar to pkg-config from freedesktop.org
|
|
and handles .pc files in a similar manner as pkg-config.
|
|
|
|
%package -n %{libname}
|
|
Summary: Backend library for %{name}
|
|
License: ISC
|
|
Group: System/Libraries
|
|
|
|
%description -n %{libname}
|
|
This package provides libraries for applications to use the functionality
|
|
of %{name}.
|
|
|
|
%package -n %{devname}
|
|
Summary: Development files for lib%{name}
|
|
License: ISC
|
|
Group: Development/Libraries/C and C++
|
|
# Avoid dependency loop on itself by specifying the Provides directly
|
|
Provides: pkgconfig(libpkgconf) = %{version}
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n %{devname}
|
|
This package provides files necessary for developing applications
|
|
to use functionality provided by %{name}.
|
|
|
|
%if %{with pkgconfig_compat}
|
|
%package m4
|
|
Summary: m4 macros for pkgconf
|
|
License: GPL-2.0+ with Autoconf-exception-2.0
|
|
Group: Development/Libraries/Other
|
|
BuildArch: noarch
|
|
# Ensure that it Conflicts and Obsoletes pkgconfig since it contains content formerly from it
|
|
Conflicts: pkgconfig < %{pkgconfig_obsver}
|
|
Obsoletes: pkgconfig < %{pkgconfig_obsver}
|
|
|
|
%description m4
|
|
This package includes m4 macros used to support PKG_CHECK_MODULES
|
|
when using pkgconf with autotools.
|
|
|
|
%package pkg-config
|
|
Summary: %{name} shim to provide /usr/bin/pkg-config
|
|
# Ensure that it Conflicts with pkg-config and is considered "better"
|
|
License: ISC
|
|
Group: Development/Tools/Building
|
|
Conflicts: pkg-config < %{pkgconfig_obsver}
|
|
Obsoletes: pkg-config < %{pkgconfig_obsver}
|
|
Provides: pkg-config = %{pkgconfig_obsver}
|
|
Provides: pkg-config%{?_isa} = %{pkgconfig_obsver}
|
|
# This is in the original pkgconfig package, set to match output from pkgconf
|
|
Provides: pkgconfig(pkg-config) = %{version}
|
|
# Fedora/Mageia pkgconfig Provides for those who might use alternate package name
|
|
Provides: pkgconfig = %{pkgconfig_obsver}
|
|
Provides: pkgconfig%{?_isa} = %{pkgconfig_obsver}
|
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
|
Requires: %{name}-m4 = %{version}-%{release}
|
|
|
|
%description pkg-config
|
|
This package provides the shim links for pkgconf to be automatically
|
|
used in place of pkgconfig. This ensures that pkgconf is used as
|
|
the system provider of pkg-config.
|
|
|
|
%endif
|
|
|
|
%prep
|
|
%autosetup -p1
|
|
|
|
%build
|
|
autoreconf -fiv
|
|
%configure --disable-static \
|
|
--with-pkg-config-dir=%{pkgconf_libdirs} \
|
|
--with-system-includedir=%{_includedir} \
|
|
--with-system-libdir=%{_libdir}
|
|
|
|
%make_build V=1
|
|
|
|
%install
|
|
%make_install
|
|
|
|
find %{buildroot} -name '*.la' -print -delete
|
|
|
|
# Purge autotools-created docdir, as we'll docify with the SUSE-specific documentation paths later
|
|
rm -rf %{buildroot}%{_datadir}/doc/%{name}
|
|
|
|
%if %{with pkgconfig_compat}
|
|
install -pm 0755 %{SOURCE1} %{buildroot}%{_bindir}/%{_target_platform}-pkg-config
|
|
|
|
sed -e "s|@TARGET_PLATFORM@|%{_target_platform}|" \
|
|
-e "s|@PKGCONF_LIBDIRS@|%{pkgconf_libdirs}|" \
|
|
-e "s|@PKGCONF_SYSLIBDIR@|%{_libdir}|" \
|
|
-e "s|@PKGCONF_SYSINCDIR@|%{_includedir}|" \
|
|
-i %{buildroot}%{_bindir}/%{_target_platform}-pkg-config
|
|
|
|
ln -sf pkgconf %{buildroot}%{_bindir}/pkg-config
|
|
|
|
# I don't have a better way to deal with this...
|
|
cp -a %{buildroot}%{_mandir}/man1/pkgconf.1 %{buildroot}%{_mandir}/man1/pkg-config.1
|
|
|
|
mkdir -p %{buildroot}%{_libdir}/pkgconfig
|
|
mkdir -p %{buildroot}%{_datadir}/pkgconfig
|
|
%endif
|
|
|
|
# If we're not providing pkgconfig override & compat
|
|
# we should not provide the pkgconfig m4 macros
|
|
%if ! %{with pkgconfig_compat}
|
|
rm -rf %{buildroot}%{_datadir}/aclocal
|
|
rm -rf %{buildroot}%{_mandir}/man7
|
|
%endif
|
|
|
|
%post -n %{libname} -p /sbin/ldconfig
|
|
%postun -n %{libname} -p /sbin/ldconfig
|
|
|
|
%files
|
|
%license COPYING
|
|
%doc README.md AUTHORS NEWS
|
|
%{_bindir}/%{name}
|
|
%{_mandir}/man1/%{name}.1*
|
|
%{_mandir}/man5/pc.5*
|
|
%{_mandir}/man5/%{name}-personality.5*
|
|
|
|
%files -n %{libname}
|
|
%license COPYING
|
|
%{_libdir}/lib%{name}*.so.%{somajor}
|
|
%{_libdir}/lib%{name}*.so.%{somajor}.*
|
|
|
|
%files -n %{devname}
|
|
%{_libdir}/lib%{name}*.so
|
|
%{_includedir}/%{name}/
|
|
%{_libdir}/pkgconfig/lib%{name}.pc
|
|
|
|
%if %{with pkgconfig_compat}
|
|
%files m4
|
|
%{_datadir}/aclocal/pkg.m4
|
|
%{_mandir}/man7/pkg.m4.7*
|
|
|
|
%files pkg-config
|
|
%{_bindir}/pkg-config
|
|
%{_bindir}/%{_target_platform}-pkg-config
|
|
%{_mandir}/man1/pkg-config.1*
|
|
%dir %{_libdir}/pkgconfig
|
|
%dir %{_datadir}/pkgconfig
|
|
%endif
|
|
|
|
%changelog
|