Blame memkind.spec.mk

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