|
Packit |
345191 |
#
|
|
Packit |
345191 |
# Copyright (C) 2014 - 2019 Intel Corporation.
|
|
Packit |
345191 |
# All rights reserved.
|
|
Packit |
345191 |
#
|
|
Packit |
345191 |
# Redistribution and use in source and binary forms, with or without
|
|
Packit |
345191 |
# modification, are permitted provided that the following conditions are met:
|
|
Packit |
345191 |
# 1. Redistributions of source code must retain the above copyright notice(s),
|
|
Packit |
345191 |
# this list of conditions and the following disclaimer.
|
|
Packit |
345191 |
# 2. Redistributions in binary form must reproduce the above copyright notice(s),
|
|
Packit |
345191 |
# this list of conditions and the following disclaimer in the documentation
|
|
Packit |
345191 |
# and/or other materials provided with the distribution.
|
|
Packit |
345191 |
#
|
|
Packit |
345191 |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY EXPRESS
|
|
Packit |
345191 |
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
Packit |
345191 |
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
Packit |
345191 |
# EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
Packit |
345191 |
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
Packit |
345191 |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
Packit |
345191 |
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
Packit |
345191 |
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
Packit |
345191 |
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
Packit |
345191 |
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
345191 |
#
|
|
Packit |
345191 |
|
|
Packit |
345191 |
# targets for building rpm
|
|
Packit |
345191 |
version ?= 0.0.0
|
|
Packit |
345191 |
release ?= 1
|
|
Packit |
345191 |
arch = $(shell uname -p)
|
|
Packit |
345191 |
name ?= memkind
|
|
Packit |
345191 |
|
|
Packit |
345191 |
rpm: $(name)-$(version).tar.gz
|
|
Packit |
345191 |
rpmbuild $(rpmbuild_flags) $^ -ta
|
|
Packit |
345191 |
|
|
Packit |
345191 |
memkind-$(version).spec:
|
|
Packit |
345191 |
@echo "$$memkind_spec" > $@
|
|
Packit |
345191 |
cat ChangeLog >> $@
|
|
Packit |
345191 |
|
|
Packit |
345191 |
.PHONY: rpm
|
|
Packit |
345191 |
|
|
Packit |
345191 |
define memkind_spec
|
|
Packit |
345191 |
Summary: User Extensible Heap Manager
|
|
Packit |
345191 |
Name: $(name)
|
|
Packit |
345191 |
Version: $(version)
|
|
Packit |
345191 |
Release: $(release)
|
|
Packit |
345191 |
License: BSD-2-Clause
|
|
Packit |
345191 |
Group: System Environment/Libraries
|
|
Packit |
345191 |
URL: http://memkind.github.io/memkind
|
|
Packit |
345191 |
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
|
Packit |
345191 |
BuildRequires: automake libtool gcc-c++ unzip
|
|
Packit |
345191 |
%if %{defined suse_version}
|
|
Packit |
345191 |
BuildRequires: libnuma-devel
|
|
Packit |
345191 |
%else
|
|
Packit |
345191 |
BuildRequires: numactl-devel
|
|
Packit |
345191 |
%endif
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%define daxctl_min_version 66
|
|
Packit |
345191 |
%if %{defined suse_version}
|
|
Packit |
345191 |
BuildRequires: libdaxctl-devel >= %{daxctl_min_version}
|
|
Packit |
345191 |
%else
|
|
Packit |
345191 |
BuildRequires: daxctl-devel >= %{daxctl_min_version}
|
|
Packit |
345191 |
%endif
|
|
Packit |
345191 |
|
|
Packit |
345191 |
Prefix: %{_prefix}
|
|
Packit |
345191 |
Prefix: %{_unitdir}
|
|
Packit |
345191 |
%if %{undefined suse_version}
|
|
Packit |
345191 |
Obsoletes: memkind
|
|
Packit |
345191 |
Provides: memkind libmemkind0
|
|
Packit |
345191 |
%endif
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%define namespace memkind
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%if %{defined suse_version}
|
|
Packit |
345191 |
%define docdir %{_defaultdocdir}/%{namespace}
|
|
Packit |
345191 |
%else
|
|
Packit |
345191 |
%define docdir %{_defaultdocdir}/%{namespace}-%{version}
|
|
Packit |
345191 |
%endif
|
|
Packit |
345191 |
|
|
Packit |
345191 |
# Upstream testing of memkind is done exclusively on x86_64; other archs
|
|
Packit |
345191 |
# are unsupported but may work.
|
|
Packit |
345191 |
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
|
|
Packit |
345191 |
|
|
Packit |
345191 |
# default values if version is a tagged release on github
|
|
Packit |
345191 |
%{!?commit: %define commit %{version}}
|
|
Packit |
345191 |
%{!?buildsubdir: %define buildsubdir %{namespace}-%{commit}}
|
|
Packit |
345191 |
Source0: https://github.com/%{namespace}/%{namespace}/archive/v%{commit}/%{buildsubdir}.tar.gz
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%description
|
|
Packit |
345191 |
The memkind library is an user extensible heap manager built on top of
|
|
Packit |
345191 |
jemalloc which enables control of memory characteristics and a
|
|
Packit |
345191 |
partitioning of the heap between kinds of memory. The kinds of memory
|
|
Packit |
345191 |
are defined by operating system memory policies that have been applied
|
|
Packit |
345191 |
to virtual address ranges. Memory characteristics supported by
|
|
Packit |
345191 |
memkind without user extension include control of NUMA and page size
|
|
Packit |
345191 |
features. The jemalloc non-standard interface has been extended to
|
|
Packit |
345191 |
enable specialized arenas to make requests for virtual memory from the
|
|
Packit |
345191 |
operating system through the memkind partition interface. Through the
|
|
Packit |
345191 |
other memkind interfaces the user can control and extend memory
|
|
Packit |
345191 |
partition features and allocate memory while selecting enabled
|
|
Packit |
345191 |
features. This software is being made available for early evaluation.
|
|
Packit |
345191 |
Feedback on design or implementation is greatly appreciated.
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%package devel
|
|
Packit |
345191 |
Summary: Memkind User Extensible Heap Manager development lib and tools
|
|
Packit |
345191 |
Group: Development/Libraries
|
|
Packit |
345191 |
Requires: %{name} = %{version}-%{release}
|
|
Packit |
345191 |
%if %{undefined suse_version}
|
|
Packit |
345191 |
Obsoletes: memkind-devel
|
|
Packit |
345191 |
Provides: memkind-devel
|
|
Packit |
345191 |
%endif
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%description devel
|
|
Packit |
345191 |
Install header files and development aids to link memkind library into
|
|
Packit |
345191 |
applications.
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%package tests
|
|
Packit |
345191 |
Summary: Extension to libnuma for kinds of memory - validation
|
|
Packit |
345191 |
Group: Validation/Libraries
|
|
Packit |
345191 |
Requires: %{name} = %{version}-%{release}
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%description tests
|
|
Packit |
345191 |
memkind functional tests
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%prep
|
|
Packit |
345191 |
%setup -q -a 0 -n $(name)-%{version}
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%build
|
|
Packit |
345191 |
# It is required that we configure and build the jemalloc subdirectory
|
|
Packit |
345191 |
# before we configure and start building the top level memkind directory.
|
|
Packit |
345191 |
# To ensure the memkind build step is able to discover the output
|
|
Packit |
345191 |
# of the jemalloc build we must create an 'obj' directory, and build
|
|
Packit |
345191 |
# from within that directory.
|
|
Packit |
345191 |
|
|
Packit |
345191 |
cd %{_builddir}/%{buildsubdir}
|
|
Packit |
345191 |
echo %{version} > %{_builddir}/%{buildsubdir}/VERSION
|
|
Packit |
345191 |
./build.sh --prefix=%{_prefix} --includedir=%{_includedir} --libdir=%{_libdir} \
|
|
Packit |
345191 |
--bindir=%{_bindir} --docdir=%{_docdir}/%{namespace} --mandir=%{_mandir} --sbindir=%{_sbindir}
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%install
|
|
Packit |
345191 |
cd %{_builddir}/%{buildsubdir}
|
|
Packit |
345191 |
%{__make} DESTDIR=%{buildroot} install
|
|
Packit |
345191 |
%{__install} -d %{buildroot}$(memkind_test_dir)
|
|
Packit |
345191 |
%{__install} -d %{buildroot}/%{_unitdir}
|
|
Packit |
345191 |
%{__install} -d %{buildroot}/$(memkind_test_dir)/python_framework
|
|
Packit |
345191 |
%{__install} test/.libs/* test/*.sh test/*.ts test/*.py %{buildroot}$(memkind_test_dir)
|
|
Packit |
345191 |
%{__install} test/python_framework/*.py %{buildroot}/$(memkind_test_dir)/python_framework
|
|
Packit |
345191 |
rm -f %{buildroot}$(memkind_test_dir)/libautohbw.*
|
|
Packit |
345191 |
rm -f %{buildroot}/%{_libdir}/lib%{namespace}.{l,}a
|
|
Packit |
345191 |
rm -f %{buildroot}/%{_libdir}/libautohbw.{l,}a
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%pre
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%post
|
|
Packit |
345191 |
/sbin/ldconfig
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%preun
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%postun
|
|
Packit |
345191 |
/sbin/ldconfig
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%files
|
|
Packit |
345191 |
%defattr(-,root,root,-)
|
|
Packit |
345191 |
%license %{_docdir}/%{namespace}/COPYING
|
|
Packit |
345191 |
%doc %{_docdir}/%{namespace}/README
|
|
Packit |
345191 |
%doc %{_docdir}/%{namespace}/VERSION
|
|
Packit |
345191 |
%dir %{_docdir}/%{namespace}
|
|
Packit |
345191 |
%{_libdir}/lib%{namespace}.so.*
|
|
Packit |
345191 |
%{_libdir}/libautohbw.so.*
|
|
Packit |
345191 |
%{_bindir}/%{namespace}-auto-dax-kmem-nodes
|
|
Packit |
345191 |
%{_bindir}/%{namespace}-hbw-nodes
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%files devel
|
|
Packit |
345191 |
%defattr(-,root,root,-)
|
|
Packit |
345191 |
%{_includedir}
|
|
Packit |
345191 |
%{_includedir}/hbwmalloc.h
|
|
Packit |
345191 |
%{_includedir}/hbw_allocator.h
|
|
Packit |
345191 |
%{_includedir}/memkind_allocator.h
|
|
Packit |
345191 |
%{_includedir}/pmem_allocator.h
|
|
Packit |
345191 |
%{_libdir}/lib%{namespace}.so
|
|
Packit |
345191 |
%{_libdir}/libautohbw.so
|
|
Packit |
345191 |
%{_libdir}/pkgconfig/memkind.pc
|
|
Packit |
345191 |
%{_includedir}/%{namespace}.h
|
|
Packit |
345191 |
%{_mandir}/man1/memkind-auto-dax-kmem-nodes.1.*
|
|
Packit |
345191 |
%{_mandir}/man1/memkind-hbw-nodes.1.*
|
|
Packit |
345191 |
%{_mandir}/man3/hbwmalloc.3.*
|
|
Packit |
345191 |
%{_mandir}/man3/hbwallocator.3.*
|
|
Packit |
345191 |
%{_mandir}/man3/pmemallocator.3.*
|
|
Packit |
345191 |
%{_mandir}/man3/%{namespace}*.3.*
|
|
Packit |
345191 |
%{_mandir}/man7/autohbw.7.*
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%files tests
|
|
Packit |
345191 |
%defattr(-,root,root,-)
|
|
Packit |
345191 |
$(memkind_test_dir)/all_tests
|
|
Packit |
345191 |
${memkind_test_dir}/environ_err_dax_kmem_malloc_positive_test
|
|
Packit |
345191 |
${memkind_test_dir}/environ_err_dax_kmem_malloc_test
|
|
Packit |
345191 |
$(memkind_test_dir)/environ_err_hbw_malloc_test
|
|
Packit |
345191 |
${memkind_test_dir}/dax_kmem_test
|
|
Packit |
345191 |
$(memkind_test_dir)/decorator_test
|
|
Packit |
345191 |
$(memkind_test_dir)/locality_test
|
|
Packit |
345191 |
$(memkind_test_dir)/freeing_memory_segfault_test
|
|
Packit |
345191 |
$(memkind_test_dir)/gb_page_tests_bind_policy
|
|
Packit |
345191 |
$(memkind_test_dir)/filter_memkind
|
|
Packit |
345191 |
$(memkind_test_dir)/hello_hbw
|
|
Packit |
345191 |
$(memkind_test_dir)/hello_memkind
|
|
Packit |
345191 |
$(memkind_test_dir)/hello_memkind_debug
|
|
Packit |
345191 |
$(memkind_test_dir)/memkind_allocated
|
|
Packit |
345191 |
$(memkind_test_dir)/memkind_cpp_allocator
|
|
Packit |
345191 |
$(memkind_test_dir)/memkind_get_stat
|
|
Packit |
345191 |
$(memkind_test_dir)/memkind_stat_test
|
|
Packit |
345191 |
$(memkind_test_dir)/autohbw_candidates
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_kinds
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_malloc
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_malloc_unlimited
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_usable_size
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_alignment
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_and_dax_kmem_kind
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_and_default_kind
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_config
|
|
Packit |
345191 |
$(memkind_test_dir)/pmem_detect_kind
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_multithreads
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_multithreads_onekind
|
|
Packit |
345191 |
$(memkind_test_dir)/pmem_free_with_unknown_kind
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_cpp_allocator
|
|
Packit |
345191 |
${memkind_test_dir}/pmem_test
|
|
Packit |
345191 |
${memkind_test_dir}/allocator_perf_tool_tests
|
|
Packit |
345191 |
${memkind_test_dir}/perf_tool
|
|
Packit |
345191 |
${memkind_test_dir}/autohbw_test_helper
|
|
Packit |
345191 |
${memkind_test_dir}/trace_mechanism_test_helper
|
|
Packit |
345191 |
$(memkind_test_dir)/memkind-afts.ts
|
|
Packit |
345191 |
$(memkind_test_dir)/memkind-afts-ext.ts
|
|
Packit |
345191 |
$(memkind_test_dir)/memkind-slts.ts
|
|
Packit |
345191 |
$(memkind_test_dir)/memkind-perf.ts
|
|
Packit |
345191 |
$(memkind_test_dir)/memkind-perf-ext.ts
|
|
Packit |
345191 |
$(memkind_test_dir)/memkind-pytests.ts
|
|
Packit |
345191 |
$(memkind_test_dir)/performance_test
|
|
Packit |
345191 |
$(memkind_test_dir)/test.sh
|
|
Packit |
345191 |
$(memkind_test_dir)/test_dax_kmem.sh
|
|
Packit |
345191 |
$(memkind_test_dir)/hbw_detection_test.py
|
|
Packit |
345191 |
$(memkind_test_dir)/dax_kmem_env_var_test.py
|
|
Packit |
345191 |
$(memkind_test_dir)/autohbw_test.py
|
|
Packit |
345191 |
$(memkind_test_dir)/trace_mechanism_test.py
|
|
Packit |
345191 |
$(memkind_test_dir)/python_framework
|
|
Packit |
345191 |
$(memkind_test_dir)/python_framework/cmd_helper.py
|
|
Packit |
345191 |
$(memkind_test_dir)/python_framework/huge_page_organizer.py
|
|
Packit |
345191 |
$(memkind_test_dir)/python_framework/__init__.py
|
|
Packit |
345191 |
$(memkind_test_dir)/draw_plots.py
|
|
Packit |
345191 |
$(memkind_test_dir)/run_alloc_benchmark.sh
|
|
Packit |
345191 |
$(memkind_test_dir)/alloc_benchmark_hbw
|
|
Packit |
345191 |
$(memkind_test_dir)/alloc_benchmark_glibc
|
|
Packit |
345191 |
$(memkind_test_dir)/alloc_benchmark_tbb
|
|
Packit |
345191 |
$(memkind_test_dir)/alloc_benchmark_pmem
|
|
Packit |
345191 |
$(memkind_test_dir)/fragmentation_benchmark_pmem
|
|
Packit |
345191 |
$(memkind_test_dir)/defrag_reallocate
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%exclude $(memkind_test_dir)/*.pyo
|
|
Packit |
345191 |
%exclude $(memkind_test_dir)/*.pyc
|
|
Packit |
345191 |
%exclude $(memkind_test_dir)/python_framework/*.pyo
|
|
Packit |
345191 |
%exclude $(memkind_test_dir)/python_framework/*.pyc
|
|
Packit |
345191 |
|
|
Packit |
345191 |
%changelog
|
|
Packit |
345191 |
endef
|
|
Packit |
345191 |
|
|
Packit |
345191 |
export memkind_spec
|