142 lines
5.7 KiB
RPMSpec
142 lines
5.7 KiB
RPMSpec
%global commit 35c83cee96432edc0b5b21680535a2f2b77a1801
|
|
%global commit2 8a46c970035ada0154f302418cb436de49606231
|
|
%global checkout .20150525git
|
|
|
|
Name: memkind
|
|
Summary: User Extensible Heap Manager
|
|
Version: 0.2.2
|
|
Release: 3%{?checkout}%{?dist}
|
|
License: BSD
|
|
Group: System Environment/Libraries
|
|
URL: http://memkind.github.io/memkind
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
|
BuildRequires: automake libtool numactl-devel
|
|
|
|
# x86_64 is the only arch memkind will build due to its
|
|
# current dependency on SSE4.2 CRC32 instruction which
|
|
# is used to compute thread local storage arena mappings
|
|
# with polynomial accumulations via GCC's intrinsic _mm_crc32_u64
|
|
# For further info check:
|
|
# - /lib/gcc/<target>/<version>/include/smmintrin.h
|
|
# - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36095
|
|
# - http://en.wikipedia.org/wiki/SSE4
|
|
ExclusiveArch: x86_64
|
|
|
|
# The two source tarballs for this package were pulled from upstream
|
|
Source0: https://github.com/%{name}/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz
|
|
Source1: https://github.com/%{name}/jemalloc/archive/%{commit2}/jemalloc-%{commit2}.tar.gz
|
|
|
|
# https://github.com/memkind/memkind/issues/3
|
|
Patch0: 0001-memkind-pmtt-stop-nuking-sysconfdir-and-contents.patch
|
|
# https://github.com/memkind/memkind/issues/4
|
|
Patch1: 0002-memkind-configure.ac-fix-obsolete-macro-usage-warnin.patch
|
|
|
|
%description
|
|
The memkind library is an user extensible heap manager built on top of
|
|
jemalloc which enables control of memory characteristics and a
|
|
partitioning of the heap between kinds of memory. The kinds of memory
|
|
are defined by operating system memory policies that have been applied
|
|
to virtual address ranges. Memory characteristics supported by
|
|
memkind without user extension include control of NUMA and page size
|
|
features. The jemalloc non-standard interface has been extended to
|
|
enable specialized arenas to make requests for virtual memory from the
|
|
operating system through the memkind partition interface. Through the
|
|
other memkind interfaces the user can control and extend memory
|
|
partition features and allocate memory while selecting enabled
|
|
features. This software is being made available for early evaluation.
|
|
Feedback on design or implementation is greatly appreciated.
|
|
|
|
%package devel
|
|
Summary: Memkind User Extensible Heap Manager development lib and tools
|
|
Group: Development/Libraries
|
|
Requires: %{name} = %{version}-%{release}
|
|
|
|
%description devel
|
|
Install header files and development aids to link memkind library
|
|
into applications. The memkind library is an user extensible heap manager
|
|
built on top of jemalloc which enables control of memory characteristics and
|
|
heap partitioning on different kinds of memory. This software is being made
|
|
available for early evaluation. The memkind library should be considered
|
|
pre-alpha: bugs may exist and the interfaces may be subject to change prior to
|
|
alpha release. Feedback on design or implementation is greatly appreciated.
|
|
|
|
%prep
|
|
%setup -q -a 0 -n %{name}-%{commit}
|
|
%setup -q -a 1 -n %{name}-%{commit}
|
|
cd %{_builddir}/%{name}-%{commit}/
|
|
rmdir %{_builddir}/%{name}-%{commit}/jemalloc/
|
|
mv jemalloc-%{commit2}/ jemalloc/
|
|
%patch0 -p1 -b .patch0.bkp
|
|
%patch1 -p1 -b .patch1.bkp
|
|
|
|
%build
|
|
# It is required that we configure and build the jemalloc subdirectory
|
|
# before we configure and start building the top level memkind directory.
|
|
# To ensure the memkind build step is able to discover the output
|
|
# of the jemalloc build we must create an 'obj' directory, and build
|
|
# from within that directory.
|
|
cd %{_builddir}/%{name}-%{commit}/jemalloc/
|
|
echo %{version} > %{_builddir}/%{name}-%{commit}/jemalloc/VERSION
|
|
test -f configure || %{__autoconf}
|
|
mkdir %{_builddir}/%{name}-%{commit}/jemalloc/obj
|
|
ln -s %{_builddir}/%{name}-%{commit}/jemalloc/configure \
|
|
%{_builddir}/%{name}-%{commit}/jemalloc/obj/
|
|
cd %{_builddir}/%{name}-%{commit}/jemalloc/obj
|
|
%configure --enable-autogen --with-jemalloc-prefix=jemk_ --enable-memkind \
|
|
--enable-safe --enable-cc-silence --prefix=%{_prefix} \
|
|
--includedir=%{_includedir} --libdir=%{_libdir} \
|
|
--bindir=%{_bindir} --docdir=%{_docdir}/%{name} \
|
|
--mandir=%{_mandir} CFLAGS="$RPM_OPT_FLAGS -std=gnu99"
|
|
%{__make} %{?_smp_mflags}
|
|
|
|
# Build memkind lib and tools
|
|
cd %{_builddir}/%{name}-%{commit}
|
|
echo %{version} > %{_builddir}/%{name}-%{commit}/VERSION
|
|
touch %{_builddir}/%{name}-%{commit}/jemalloc/.git
|
|
test -f configure || ./autogen.sh
|
|
%configure --enable-tls --prefix=%{_prefix} --libdir=%{_libdir} \
|
|
--includedir=%{_includedir} --sbindir=%{_sbindir} \
|
|
--mandir=%{_mandir} --docdir=%{_docdir}/%{name} \
|
|
CFLAGS="$RPM_OPT_FLAGS -std=gnu99"
|
|
%{__make} %{?_smp_mflags}
|
|
|
|
%install
|
|
cd %{_builddir}/%{name}-%{commit}
|
|
%{__make} DESTDIR=%{buildroot} install
|
|
mkdir -p %{buildroot}/%{_sysconfdir}/%{name}
|
|
rm -f %{buildroot}/%{_libdir}/lib%{name}.{l,}a
|
|
rm -f %{buildroot}/%{_libdir}/lib{numakind,autohbw}.*
|
|
rm -f %{buildroot}/%{_docdir}/%{name}/VERSION
|
|
|
|
%post -p /sbin/ldconfig
|
|
|
|
%postun -p /sbin/ldconfig
|
|
|
|
%files
|
|
%defattr(-,root,root,-)
|
|
%license %{_docdir}/%{name}/COPYING
|
|
%doc %{_docdir}/%{name}/README
|
|
%dir %{_sysconfdir}/%{name}
|
|
%dir %{_docdir}/%{name}
|
|
%{_libdir}/lib%{name}.so.*
|
|
%{_bindir}/%{name}-hbw-nodes
|
|
%{_sbindir}/%{name}-pmtt
|
|
|
|
%files devel
|
|
%defattr(-,root,root,-)
|
|
%{_includedir}/%{name}*.h
|
|
%{_includedir}/hbwmalloc.h
|
|
%{_libdir}/lib%{name}.so
|
|
%{_mandir}/man3/hbwmalloc.3.*
|
|
%{_mandir}/man3/%{name}*.3.*
|
|
|
|
%changelog
|
|
* Mon May 25 2015 Rafael Aquini <aquini@linux.com> - 0.2.2-3%{?checkout}
|
|
- Get rid of obsolete m4 macros usage on autotool scripts
|
|
|
|
* Mon May 18 2015 Rafael Aquini <aquini@linux.com> - 0.2.2-2%{?checkout}
|
|
- Fix to BuildRequires and License Text Marker in spec file (1222709#c1)
|
|
|
|
* Mon May 18 2015 Rafael Aquini <aquini@linux.com> - 0.2.2-1%{?checkout}
|
|
- Initial RPM packaging for Fedora
|