Blame memkind.spec.mk

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