SHA256
6
0
forked from pool/gc
gc/gc.spec

168 lines
5.2 KiB
RPMSpec

#
# spec file for package gc
#
# Copyright (c) 2013 SUSE LINUX Products 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/
#
Name: gc
Version: 7.1.9.6
Release: 0
%define src_ver 7.2alpha6
Url: http://www.hpl.hp.com/personal/Hans_Boehm/gc/
Summary: A garbage collector for C and C++
License: BSD-3-Clause
Group: Development/Libraries/C and C++
Source: %{name}-%{src_ver}.tar.bz2
Patch0: %{name}-build.patch
Patch1: 0001-Fix-allocation-size-overflows-due-to-rounding.patch
Patch2: 0001-Fix-calloc-overflow.patch
Patch3: 0001-Fix-calloc-related-code-to-prevent-SIZE_MAX-redefini.patch
Patch4: 0001-Speedup-calloc-size-overflow-check-by-preventing-div.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: autoconf >= 2.64
BuildRequires: gcc-c++
BuildRequires: libtool
BuildRequires: pkg-config
%description
The Boehm-Demers-Weiser conservative garbage collector can be used as a
garbage collecting replacement for C malloc or C++ new. It allows you
to allocate memory basically as you normally would, without explicitly
deallocating memory that is no longer useful. The collector
automatically recycles memory when it determines that it can no longer
be otherwise accessed.
%package -n libgc1
Summary: A garbage collector for C and C++
Group: System/Libraries
# bug437293
%ifarch ppc64
Obsoletes: boehm-gc-64bit
%endif
#
%description -n libgc1
The Boehm-Demers-Weiser conservative garbage collector can be used as a
garbage collecting replacement for C malloc or C++ new. It allows you
to allocate memory basically as you normally would, without explicitly
deallocating memory that is no longer useful. The collector
automatically recycles memory when it determines that it can no longer
be otherwise accessed.
%package devel
Summary: A garbage collector for C and C++
Group: Development/Libraries/C and C++
Provides: gc:/usr/include/gc/gc.h
Requires: glibc-devel
Requires: libgc1 = %version
%description devel
The Boehm-Demers-Weiser conservative garbage collector can be used as a
garbage collecting replacement for C malloc or C++ new. It allows you
to allocate memory basically as you normally would, without explicitly
deallocating memory that is no longer useful. The collector
automatically recycles memory when it determines that it can no longer
be otherwise accessed.
%package -n libatomic_ops-devel
Summary: Atomic memory update operations
Group: Development/Libraries/C and C++
Provides: libatomic_ops-static = %{version}-%{release}
Obsoletes: libatomic-ops-devel <= 1.2
Provides: libatomic-ops-devel = %{version}
%description -n libatomic_ops-devel
Provides implementations for atomic memory update operations on a
number of architectures. This allows direct use of these in reasonably
portable code. Unlike earlier similar packages, this one explicitly
considers memory barrier semantics, and allows the construction of code
that involves minimum overhead across a variety of architectures.
%prep
%setup -q -n %{name}-%{src_ver}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%build
# refresh auto*/libtool to purge rpaths
rm -f libtool libtool.m4
autoreconf -fi
# see bugzilla.redhat.com/689877
CPPFLAGS="-DUSE_GET_STACKBASE_FOR_MAIN"; export CPPFLAGS
%configure --disable-static \
--with-pic \
--with-gnu-ld \
--enable-cplusplus \
--enable-large-config \
--enable-threads=posix \
--enable-parallel-mark \
--with-libatomic-ops=no
make %{?_smp_mflags}
make %{?_smp_mflags} -C libatomic_ops
%install
%makeinstall
%makeinstall -C libatomic_ops
rm -rf $RPM_BUILD_ROOT/usr/share/gc # docs
rm -rf %{buildroot}%{_datadir}/libatomic_ops/{COPYING,*.txt}
rm -f %{buildroot}%{_libdir}/*.la
%check
%if ! 0%{?qemu_user_space_build}
make check
# fails on i586
make check -C libatomic_ops ||:
%endif
%post -n libgc1 -p /sbin/ldconfig
%postun -n libgc1 -p /sbin/ldconfig
%files -n libgc1
%defattr(-, root, root)
%doc README.QUICK doc/README.*
%{_libdir}/lib*.so.*
%files devel
%defattr(-, root, root)
%doc doc/[a-z]*
%{_libdir}/lib*.so
%{_libdir}/pkgconfig/*.pc
%{_includedir}/gc.h
%{_includedir}/gc_cpp.h
%{_includedir}/gc
%files -n libatomic_ops-devel
%defattr(-,root,root,-)
%doc libatomic_ops/AUTHORS libatomic_ops/ChangeLog libatomic_ops/COPYING libatomic_ops/NEWS libatomic_ops/README
%doc libatomic_ops/doc/*.txt
%{_includedir}/atomic_ops.h
%{_includedir}/atomic_ops_malloc.h
%{_includedir}/atomic_ops_stack.h
%{_includedir}/atomic_ops/
%{_libdir}/libatomic_ops.a
%{_libdir}/libatomic_ops_gpl.a
%changelog