commit 21b0f5d7c86778980cc21467130414336fd4928f Author: Björn Esser bjoern.esser@gmail.com Date: Tue Dec 23 09:26:05 2014 +0100
updated to new snapshot git20141223.c32937574df1c560ce7c10f1b8860679ce011a8b added BR: ocl-icd-devel, opencl-headers enabled OpenCV-features and R-shogun purged light-scrubber.sh from repo, now shipped with tarball updated documentation-files build mono-shogun on %%{mono_arches}, only install documentation-files to %%{_pkgdocdir}
light-scrubber.sh | 69 ---------- shogun.spec | 355 +++++++++++++++++++++++++++++++++++------------------ sources | 2 +- 3 files changed, 236 insertions(+), 190 deletions(-) --- diff --git a/shogun.spec b/shogun.spec index 3a92cce..3fbf4e6 100644 --- a/shogun.spec +++ b/shogun.spec @@ -2,8 +2,8 @@ #%%global rel_build 1
# Settings used for build from snapshots. -%{!?rel_build:%global commit 705b7dea7093cb094fe90fcebac20b7e7d1debcd} -%{!?rel_build:%global commit_date 20140901} +%{!?rel_build:%global commit c32937574df1c560ce7c10f1b8860679ce011a8b} +%{!?rel_build:%global commit_date 20141223} %{!?rel_build:%global shortcommit %(c=%{commit};echo ${c:0:7})} %{!?rel_build:%global gitver git%{commit_date}-%{shortcommit}} %{!?rel_build:%global gitrel .git%{commit_date}.%{shortcommit}} @@ -15,15 +15,24 @@ # Filter all provides from bindings and private libs. %global __provides_exclude_from ^(%{_libdir}/.*/.*%{name}\.so|%{_libdir}/libmod%{name}.so)
+# Turn off the brp-python-bytecompile script. We don't want stuff in %%{_pkgdocdir} to be byte-compiled. +%global __os_install_post %(echo '%{__os_install_post}' | %{__sed} -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g') + +# Setup _pkgdocdir if not defined already. +%{!?_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}} + +# CMake-builds go out-of-tree. Tests are not run in %%{buildroot}. +%global _cmake_build_subdir build-%{?_arch}%{?dist} +%global _cmake_testinstall_dir install-%{?_arch}%{?dist} + # There's no Python3 on older distributions. -%if (0%{?fedora} && 0%{?fedora} <= 12) || (0%{?rhel} && 0%{?rhel} <= 6) +%if (0%{?fedora} && 0%{?fedora} <= 12) || (0%{?rhel} && 0%{?rhel} <= 7) %global without_python3 1 %endif
# Some bindings are globally disabled by default, because they either FTBFS # or testsuite fails for them. We disable them here until they will build. %global without_perl 1 # not fully implemented by upstream,yet. -%global without_r 1 # Testsuite chokes, build broken for R >= 3.0.0.
# Mono-bindings are currently segfaulting during testsuite on arm. # See rhbz# 1043941: https://bugzilla.redhat.com/show_bug.cgi?id=1043941 @@ -31,7 +40,12 @@ # Temporarily disabling the build of mono-shogun for all arm-arches. %ifarch %{arm} %global without_mono 1 -%endif +%endif # ifarch %%{arm} + +# Some arches do not support Mono. +%ifnarch %{mono_arches} +%global without_mono 1 +%endif # ifnarch %%{mono_arches}
# Some switches to control build of SWIGed-bindings and testsuite. You still # can pass overriding defines `-D 'with_XXX 1'` or `-D 'without_XXX 1'` to @@ -80,7 +94,7 @@ of it's 'no-redistribute', 'no-commercial-use' license.
Name: shogun Version: %{branch}.0.1 -Release: 0.29%{?gitrel}%{?dist} +Release: 0.30%{?gitrel}%{?dist} Summary: Large Scale Machine Learning Toolbox
# ===== License-breakdown ===== @@ -143,7 +157,6 @@ URL: http://%%7Bname%7D-toolbox.org %{?rel_build:Source0: %{url}/archives/%{name}/releases/%{branch}/sources/%{name}-%{version}.tar.bz2} # Sources for snapshot-builds. %{!?rel_build:Source0: https://github.com/%%7Bname%7D-toolbox/%%7Bname%7D/archive/%%7Bcommit%7D.tar... -Source98: light-scrubber.sh Source99: http://googlemock.googlecode.com/files/gmock-1.7.0.zip
BuildRequires: arpack-devel @@ -163,6 +176,8 @@ BuildRequires: libxml2-devel BuildRequires: lpsolve-devel BuildRequires: lzo-devel BuildRequires: NLopt-devel +BuildRequires: ocl-icd-devel +BuildRequires: opencl-headers BuildRequires: opencv-devel BuildRequires: protobuf-devel BuildRequires: qd-devel @@ -216,7 +231,9 @@ SHOGUN is implemented in C++ and offers interfaces for: %postun -p /sbin/ldconfig
%files -%doc README.md doc/md/LICENSE* +%doc %dir %{_pkgdocdir} +%doc %{_pkgdocdir}/COPYING +%doc %{_pkgdocdir}/README.md %{_libdir}/lib%{name}.so.*
############################################################################### @@ -226,7 +243,7 @@ SHOGUN is implemented in C++ and offers interfaces for:
Summary: CLI-interface for %{name}
-Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}%{?_isa} == %{version}-%{release}
%description cli %{?common_description} @@ -234,6 +251,11 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains the CLI-interface for %{name}.
%files cli +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples +%doc %{_pkgdocdir}/examples/cmdline_static +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/README.txt %{_bindir}/%{name} %endif #0%{?with_cli}
@@ -265,7 +287,7 @@ Requires: snappy-devel%{?_isa} Requires: tapkee-devel Requires: xz-devel%{?_isa} Requires: zlib-devel%{?_isa} -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}%{?_isa} == %{version}-%{release}
%description devel %{?common_description} @@ -273,7 +295,18 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains files needed for development with %{name}.
%files devel -%doc doc/md/README_developer.md doc/md/README_soname.md +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples +%doc %{_pkgdocdir}/ChangeLog +%doc %{_pkgdocdir}/COPYING +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/libshogun +%doc %{_pkgdocdir}/examples/README.txt +%doc %{_pkgdocdir}/NEWS +%doc %{_pkgdocdir}/OpenCV_docs +%doc %{_pkgdocdir}/README.md +%doc %{_pkgdocdir}/test.%{?_arch}%{?dist}.log +%{?with_python3:%doc %{_pkgdocdir}/test.py3.%{?_arch}%{?dist}.log} %{_includedir}/%{name} %{_libdir}/lib%{name}.so
@@ -288,10 +321,8 @@ Summary: Documentation files for %{name} %{!?el5:BuildArch: noarch}
BuildRequires: doxygen -BuildRequires: fdupes BuildRequires: graphviz - -Requires: %{name}-data = %{_shogun_data_version} +BuildRequires: hardlink
%description doc %{?common_description} @@ -299,9 +330,33 @@ Requires: %{name}-data = %{_shogun_data_version} This package contains the ChangeLog, a very detailed documentation, and some great examples for %{name}.
+If you need the Chinese API-docs, you would want to install +%{name}-doc-cn, too. + %files doc -%doc ChangeLog NEWS README* applications build/unittest*.log build/doc/html* -%doc doc/examples doc/images doc/ipython-notebooks doc/md +%doc %dir %{_pkgdocdir} +%doc %exclude %{_pkgdocdir}/html_cn +%doc %exclude %{_pkgdocdir}/test*.%{?_arch}%{?dist}.log +%doc %{_pkgdocdir}/* + +############################################################################### + +%package doc-cn + +Summary: Documentation files for %{name} in Chinese language +Requires: %{name}-doc == %{version}-%{release} + +%{!?el5:BuildArch: noarch} + +%description doc-cn +%{?common_description} + +This package contains the documentation files for %{name} in Chinese +language. + +%files doc-cn +%doc %dir %{_pkgdocdir} +%doc %{_pkgdocdir}/html_cn
###############################################################################
@@ -320,7 +375,7 @@ Requires: java
Requires: jblas%{?_isa} Requires: jpackage-utils -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}%{?_isa} == %{version}-%{release}
%description -n java-%{name} %{?common_description} @@ -328,6 +383,11 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains the Java-plugin for %{name}.
%files -n java-%{name} +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/java_modular +%doc %{_pkgdocdir}/examples/README.txt %{_jnidir}/* %{_libdir}/%{name}.java %endif #0%{?with_java} @@ -347,12 +407,12 @@ BuildRequires: lua-devel
Requires: lua%{?_isa} %if 0%{?fedora} || 0%{?rhel} >= 7 -Requires: lua(abi) = %{lua_ver} +Requires: lua(abi) == %{lua_ver} %else Requires: lua >= %{lua_ver} Requires: lua < %{luanext} %endif -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}%{?_isa} == %{version}-%{release}
%description -n lua-%{name} %{?common_description} @@ -360,6 +420,11 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains the LUA-plugin for %{name}.
%files -n lua-%{name} +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/lua_modular +%doc %{_pkgdocdir}/examples/README.txt %{lualibdir}/libmod%{name}.so %endif #0%{?with_lua}
@@ -372,7 +437,7 @@ Summary: Mono(C#)-plugin for %{name}
BuildRequires: mono-devel
-Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}%{?_isa} == %{version}-%{release}
%description -n mono-%{name} %{?common_description} @@ -380,6 +445,11 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains the Mono(C#)-plugin for %{name}.
%files -n mono-%{name} +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/csharp_modular +%doc %{_pkgdocdir}/examples/README.txt %{_libdir}/%{name}.mono %endif #ifarch %%{mono_arches} %endif #0%{?with_mono} @@ -397,8 +467,8 @@ Summary: Octave-plugin for %{name} BuildRequires: octave-devel
Requires: octave%{?_isa} >= 3.6 -Requires: octave(api) = %{octave_api} -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: octave(api) == %{octave_api} +Requires: %{name}%{?_isa} == %{version}-%{release}
%description -n octave-%{name} %{?common_description} @@ -406,6 +476,12 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains the Octave-plugin for %{name}.
%files -n octave-%{name} +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/matlab_and_octave +%doc %{_pkgdocdir}/examples/octave_modular +%doc %{_pkgdocdir}/examples/README.txt %{octave_octdir}/%{name} %endif #0%{?with_octave}
@@ -427,6 +503,11 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains the Perl-plugin for %{name}.
%files -n perl-%{name} +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/perl_modular +%doc %{_pkgdocdir}/examples/README.txt %{perl_vendorarch}/* %exclude %dir %{perl_vendorarch}/auto %endif #0%{?with_perl} @@ -462,7 +543,7 @@ Requires: python27-numpy%{?_isa} Requires: python27-scipy%{?_isa} %endif
-Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}%{?_isa} == %{version}-%{release}
%description -n python-%{name} @@ -471,6 +552,12 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains the Python-plugin for %{name}.
%files -n python-%{name} +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/python_modular +%doc %{_pkgdocdir}/examples/README.txt +%doc %{_pkgdocdir}/ipython-notebooks %{python2_sitearch}/* %endif #0%{?with_python}
@@ -489,7 +576,7 @@ BuildRequires: python3-scipy Requires: python3%{?_isa} Requires: python3-numpy%{?_isa} Requires: python3-scipy%{?_isa} -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}%{?_isa} == %{version}-%{release}
%description -n python3-%{name} %{?common_description} @@ -497,6 +584,12 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains the Python3-plugin for %{name}.
%files -n python3-%{name} +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/python_modular +%doc %{_pkgdocdir}/examples/README.txt +%doc %{_pkgdocdir}/ipython-notebooks %{python3_sitearch}/* %endif #0%{?with_python3}
@@ -509,7 +602,7 @@ Summary: R-plugin for %{name} BuildRequires: R-core-devel
Requires: R-core%{?_isa} -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}%{?_isa} == %{version}-%{release}
%description -n R-%{name} %{?common_description} @@ -518,8 +611,13 @@ This package contains the R-plugin for %{name}.
%files -n R-%{name} %dir %{_libdir}/R/library/%{name} +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples %doc %{_libdir}/R/library/%{name}/DESCRIPTION %doc %{_libdir}/R/library/%{name}/demo +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/r_modular +%doc %{_pkgdocdir}/examples/README.txt %{_libdir}/R/library/%{name}/libs %{_libdir}/R/library/%{name}/Meta %{_libdir}/R/library/%{name}/NAMESPACE @@ -535,7 +633,7 @@ This package contains the R-plugin for %{name}. %{!?ruby_vendorarchdir: %global ruby_vendorarchdir %(ruby -rrbconfig -e "puts RbConfig::CONFIG['sitearchdir']")}
# We need to pass the path for rubygem(narray) to CMake, so it can find it. -%global narray_gem %(gem list narray | grep narray | sed -e's! .!-!' -e 's!.$!!') +%global narray_gem %(gem list narray | %{__grep} narray | %{__sed} -e's! .!-!' -e 's!.$!!')
%if 0%{?fedora} >= 21 || 0%{?rhel} >= 8 %global narray_include %{_libdir}/gems/ruby/%{narray_gem} @@ -557,10 +655,10 @@ BuildRequires: rubygem-narray-devel %if 0%{?fedora} >= 19 || 0%{?rhel} >= 7 Requires: ruby(release) %else -Requires: ruby(abi) = %{?rhel:1.8}%{!?rhel:1.9.1} +Requires: ruby(abi) == %{?rhel:1.8}%{!?rhel:1.9.1} %endif Requires: rubygem(narray)%{?_isa} -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}%{?_isa} == %{version}-%{release}
%description -n ruby-%{name} %{?common_description} @@ -568,6 +666,11 @@ Requires: %{name}%{?_isa} = %{version}-%{release} This package contains the Ruby-plugin for %{name}.
%files -n ruby-%{name} +%doc %dir %{_pkgdocdir} +%doc %dir %{_pkgdocdir}/examples +%doc %{_pkgdocdir}/examples/data +%doc %{_pkgdocdir}/examples/README.txt +%doc %{_pkgdocdir}/examples/ruby_modular %{ruby_vendorarchdir}/mod%{name}.so %endif #0%{?with_ruby}
@@ -577,89 +680,80 @@ This package contains the Ruby-plugin for %{name}. %setup -q%{!?rel_build:n %{name}-%{commit}}
# Scrub SVMlight. -install -pm0755 %{SOURCE98} ./scripts/ ./scripts/light-scrubber.sh
# Remove cluttering stuff and create some needed dirs. -rm -rf %{py3dir} build data doc/tutorial third_party -mkdir -p build third_party/GoogleMock +%{__rm} -rf %{py3dir} %{_cmake_build_subdir} build data doc/tutorial third_party +%{__mkdir} -p %{_cmake_build_subdir} third_party/GoogleMock
# Unbundle Tapkee. This is pretty the same as we have in our repos. -rm -rf doc/md/LICENSE_tapkee.md +%{__rm} -rf doc/md/LICENSE_tapkee.md pushd src/shogun/lib/tapkee for _needed_sources in tapkee_shogun.* do - sed -e 's!<shogun/lib/!<!g' \ + %{__sed} -e 's!<shogun/lib/!<!g' \ -e 's!tapkee/tapkee_shogun.hpp>$!shogun/lib/&!g' \ < ${_needed_sources} > ${_needed_sources}.mod && \ touch -r ${_needed_sources} ${_needed_sources}.mod done
-rm -rf */ *.{cpp,h,hpp} +%{__rm} -rf */ *.{cpp,h,hpp}
for _needed_sources in tapkee_shogun.* do - mv ${_needed_sources} `echo ${_needed_sources} | sed -e 's!.mod$!!g'` + %{__mv} ${_needed_sources} `echo ${_needed_sources} | %{__sed} -e 's!.mod$!!g'` done popd
-# Disable unwanted / overriding compiler-flags in release-mode, which would -# set such stuff like "-march=native" or "-O3 -g0". -sed -i -e 's!^[ \t]*[sS][eE][tT].*.*_FLAGS_RELEASE!#&!g' \ - -e 's!^[ \t]*[sS][eE][tT].*-march=native!#&!g' \ - CMakeLists.txt - # Fix testsuite invocation for C#/Mono plugin. -sed -i -e 's!${CSHARP_INTERPRETER}!%(which mono)!g' \ +%{__sed} -i -e 's!${CSHARP_INTERPRETER}!%(which mono)!g' \ examples/undocumented/csharp_modular/CMakeLists.txt
# Fix finding PerlLibs and linking against HDF5. -sed -i -e 's!FindPerlLibs REQUIRED!PerlLibs REQUIRED!' \ +%{__sed} -i -e 's!FindPerlLibs REQUIRED!PerlLibs REQUIRED!' \ -e '/SET.HDF5_LIBRARIES/d' \ CMakeLists.txt
-# Fix install path for R-plugins. -sed -i -e "s~${R_COMPONENT_LIB_PATH}/shogun/Meta~`pwd`/test_install/&~g" \ - -e "s~.r-install.sh ~&`pwd`/test_install/~g" \ - src/interfaces/r_modular/CMakeLists.txt - # Fix testsuite environment for R. -sed -i -e "s~^ENDFOREACH~\tset_property\(TEST r_modular-${EXAMPLE_NAME} PROPERTY\n\t\t\t\tENVIRONMENT \"R_LIBS_USER=\\\"`pwd`/test_install%{_libdir}/R/library\\\"\"\)\n&~" \ +%{__sed} -i -e "s~^ENDFOREACH~\tset_property\(TEST r_modular-${EXAMPLE_NAME} PROPERTY\n\t\t\t\tENVIRONMENT \"R_LIBS_USER=\\\"`pwd`/%{_cmake_testinstall_dir}%{_libdir}/R/library\\\"\"\)\n&~" \ examples/undocumented/r_modular/CMakeLists.txt
# Ruby-plugins go to %%{ruby_vendorarchdir}, but on <= el6. %if 0%{?fedora} || 0%{?rhel} >= 7 -sed -i -e 's!${RUBY_SITE_ARCH_DIR}!${RUBY_VENDORARCH_DIR}!g' \ +%{__sed} -i -e 's!${RUBY_SITE_ARCH_DIR}!${RUBY_VENDORARCH_DIR}!g' \ src/interfaces/ruby_modular/CMakeLists.txt %endif
# Fix testsuite environment for Ruby. -sed -i -e "s!${NARRAY_PATH}!%{narray_include}:&!" \ +%{__sed} -i -e "s!${NARRAY_PATH}!%{narray_include}:&!" \ examples/undocumented/ruby_modular/CMakeLists.txt
# Patch the Ruby-files to `require 'rubygems'` asap. for _file in `find . -depth -type f -name '*.rb'` do - sed -i.orig -e "0,/^require/s//require 'rubygems'\n&/" ${_file} && \ + %{__sed} -i.orig -e "0,/^require/s//require 'rubygems'\n&/" ${_file} && \ touch -r ${_file}.orig ${_file} && \ - rm -rf ${_file}.orig + %{__rm} -rf ${_file}.orig done
# This is needed for testsuite not to fail on some tests. echo "# noop" > examples/undocumented/python_modular/tools/__init__.py
# Copy the other sources into tree. -install -pm 0644 %{SOURCE99} third_party/GoogleMock - -# Copy data into proper location. -cp -a %{_shogun_data_dir} data +%{__install} -pm 0644 %{SOURCE99} third_party/GoogleMock
+%if 0%{?with_python3} # Copy all stuff into %%{py3dir} for the Python3-build. -cp -a . %{py3dir} +%{__cp} -a . %{py3dir} +ln -fs $(pwd)/data %{py3dir}/data
# Patch doxy2swig to open files with utf-8 encoding on Python3. -sed -i -e's!return open.source.!return open(source, encoding="utf-8")!' \ +%{__sed} -i -e's!return open.source.!return open(source, encoding="utf-8")!' \ %{py3dir}/src/.doxy2swig.py +%endif # 0%{?with_python3} + +# Copy data into proper location. +%{__cp} -a %{_shogun_data_dir} data
###############################################################################
@@ -672,13 +766,13 @@ export LANG="us_US.UTF-8" # because CMake hardcodes them when creating the Makefiles and it's cache.
# We need to export a customized PYTHONPATH. -export PYTHONPATH="`pwd`/test_install/%{python2_sitearch}/%{name}" -export PYTHONPATH="${PYTHONPATH}:`pwd`/test_install/%{python2_sitearch}" +export PYTHONPATH="`pwd`/%{_cmake_testinstall_dir}/%{python2_sitearch}/%{name}" +export PYTHONPATH="${PYTHONPATH}:`pwd`/%{_cmake_testinstall_dir}/%{python2_sitearch}" export PYTHONPATH="${PYTHONPATH}:$(pwd)/examples/undocumented/python_modular" export PYTHONPATH="${PYTHONPATH}:%{python2_sitearch}:%{python2_sitelib}"
# We need to export some custom LD_LIBRARY_PATH for the tests, too. -export LD_LIBRARY_PATH="`pwd`/test_install/%{_libdir}" +export LD_LIBRARY_PATH="`pwd`/%{_cmake_testinstall_dir}/%{_libdir}" export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:%{_libdir}/atlas" export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:%{_libdir}"
@@ -686,11 +780,11 @@ export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:%{_libdir}" %ifarch %{ix86} export CFLAGS="%{optflags} -msse2" export CXXFLAGS="${CFLAGS}" -%endif #arch %{ix86} +%endif # ifarch %%{ix86}
-pushd build +pushd %{_cmake_build_subdir} %cmake \ - -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_BUILD_TYPE=DISTRIBUTION \ %if 0%{?fedora} >= 21 || 0%{?rhel} >= 8 -DATLAS_LAPACK=%{_libdir}/atlas/libtatlas.so \ -DATLAS_LIBRARIES=%{_libdir}/atlas/libtatlas.so \ @@ -712,6 +806,7 @@ pushd build %{?with_perl: -DPerlModular=ON } \ %{?with_python: -DPythonModular=ON } \ %{?with_python: -DPYTHON_EXECUTABLE="%{__python2}" } \ + -DOpenCV=ON \ %{?with_r: -DRModular=ON } \ %{?with_ruby: -DRubyModular=ON } \ .. @@ -723,20 +818,21 @@ pushd build # these amounts of memory is not the build itself, but SWIG, which eats RAM # like chocolate, when creating cpp-src. ping -c1 mldata.org && \ -make %{?_smp_mflags} || make -j3 +%{__make} %{?_smp_mflags} || %{__make} -j3 popd
# Build the Python3-version. %if 0%{?with_python3} -export PYTHONPATH="`pwd`/test_install/%{python3_sitearch}/%{name}" -export PYTHONPATH="${PYTHONPATH}:`pwd`/test_install/%{python3_sitearch}" +export PYTHONPATH="`pwd`/%{_cmake_testinstall_dir}/%{python3_sitearch}/%{name}" +export PYTHONPATH="${PYTHONPATH}:`pwd`/%{_cmake_testinstall_dir}/%{python3_sitearch}" export PYTHONPATH="${PYTHONPATH}:$(pwd)/examples/undocumented/python_modular" export PYTHONPATH="${PYTHONPATH}:%{python3_sitearch}:%{python3_sitelib}"
-pushd %{py3dir}/build +pushd %{py3dir}/%{_cmake_build_subdir} %cmake \ - -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_BUILD_TYPE=DISTRIBUTION \ %if 0%{?fedora} >= 21 || 0%{?rhel} >= 8 + -DATLAS_LAPACK=%{_libdir}/atlas/libtatlas.so \ -DATLAS_LIBRARIES=%{_libdir}/atlas/libtatlas.so \ %endif %{?with_tests: -DBUILD_DASHBOARD_REPORTS=ON } \ @@ -748,6 +844,7 @@ pushd %{py3dir}/build -DUSE_SVMLIGHT=OFF \ -DPythonModular=ON \ -DPYTHON_EXECUTABLE=%{__python3} \ + -DOpenCV=ON \ ..
@@ -758,55 +855,50 @@ pushd %{py3dir}/build # these amounts of memory is not the build itself, but SWIG, which eats RAM # like chocolate, when creating cpp-src. ping -c1 mldata.org && \ -make %{?_smp_mflags} || make -j3 +%{__make} %{?_smp_mflags} || %{__make} -j3 popd %endif #0%{?with_python3}
# Building the autodocs. -pushd build -make doc -%if 0%{?fedora} || 0%{?rhel} >= 7 -pushd doc -%fdupes . -popd -%endif +pushd %{_cmake_build_subdir} +%{__make} doc popd
###############################################################################
%install -%{?el5:rm -rf %{buildroot}} +%{?el5:%{__rm} -rf %{buildroot}}
# We install to custom location first. This will be needed by testsuite, too. -export CUSTOM_INSTALL_DIR="`pwd`/test_install/" +export CUSTOM_INSTALL_DIR="`pwd`/%{_cmake_testinstall_dir}/" # Install the Python3-version first. %if 0%{?with_python3} -pushd %{py3dir}/build -make install DESTDIR=${CUSTOM_INSTALL_DIR} +pushd %{py3dir}/%{_cmake_build_subdir} +%{__make} install DESTDIR=${CUSTOM_INSTALL_DIR} %{?_smp_mflags} popd
# Remove the installed headers and libshogun.so -rm -rf ${CUSTOM_INSTALL_DIR}%{_includedir} \ +%{__rm} -rf ${CUSTOM_INSTALL_DIR}%{_includedir} \ ${CUSTOM_INSTALL_DIR}%{_libdir}/lib%{name}.so* %endif #0%{?with_python3}
-pushd build -make install DESTDIR=${CUSTOM_INSTALL_DIR} +pushd %{_cmake_build_subdir} +%{__make} install DESTDIR=${CUSTOM_INSTALL_DIR} %{?_smp_mflags} popd
%if 0%{?with_java} # Move Java-bindings to proper location. -mkdir -p ${CUSTOM_INSTALL_DIR}%{_libdir}/%{name}.java \ +%{__mkdir} -p ${CUSTOM_INSTALL_DIR}%{_libdir}/%{name}.java \ ${CUSTOM_INSTALL_DIR}%{_jnidir} -mv ${CUSTOM_INSTALL_DIR}%{_prefix}/lib/jni/libmod%{name}.so \ +%{__mv} ${CUSTOM_INSTALL_DIR}%{_prefix}/lib/jni/libmod%{name}.so \ ${CUSTOM_INSTALL_DIR}%{_libdir}/%{name}.java -mv ${CUSTOM_INSTALL_DIR}%{_javadir}/*.jar ${CUSTOM_INSTALL_DIR}%{_jnidir} +%{__mv} ${CUSTOM_INSTALL_DIR}%{_javadir}/*.jar ${CUSTOM_INSTALL_DIR}%{_jnidir} %endif #0%{?with_java}
%if 0%{?with_mono} # Move Mono(C#)-bindings to the proper location. -mkdir -p ${CUSTOM_INSTALL_DIR}%{_libdir}/%{name}.mono -mv ${CUSTOM_INSTALL_DIR}%{_prefix}/lib/cli/%{name}/*mod%{name}* \ +%{__mkdir} -p ${CUSTOM_INSTALL_DIR}%{_libdir}/%{name}.mono +%{__mv} ${CUSTOM_INSTALL_DIR}%{_prefix}/lib/cli/%{name}/*mod%{name}* \ ${CUSTOM_INSTALL_DIR}%{_libdir}/%{name}.mono %endif #0%{?with_mono}
@@ -816,7 +908,7 @@ find ${CUSTOM_INSTALL_DIR} -depth -type f -name '*.so' -print0 | \
# Copy the custom installation to %%{buildroot} for having an installed # version with rpaths preserved for the testsuite. -cp -a ${CUSTOM_INSTALL_DIR}/. %{buildroot} +%{__cp} -a ${CUSTOM_INSTALL_DIR}/. %{buildroot}
# Kill rpath from binaries. find %{buildroot}%{_libdir} -depth -type f -perm 0755 -print0 | \ @@ -825,36 +917,50 @@ find %{buildroot}%{_bindir} -depth -type f -perm 0755 -print0 | \ xargs -0 chrpath -d -k
# Copy examples to keep them prestine. Testsuite will clutter them. -cp -a examples doc +%{__mkdir} -p doc/examples +%{__cp} -a examples/documented/* doc/examples + +# Create a working symlink to sample-data. +unlink doc/examples/data +ln -fs %{_datadir}/%{name}/data/toy doc/examples/data + +# Remove unneeded examples. +find doc/examples -maxdepth 1 -name '*static' -print0 | %{__grep} -zv 'cmd' | \ + xargs -0 %{__rm} -rf + +# Install documentation-files to %%{_pkgdocdir} +%{__mkdir} -p %{buildroot}%{_pkgdocdir} +%{__cp} -a ChangeLog COPYING NEWS README* benchmarks doc/examples doc/images \ + doc/ipython-notebooks doc/OpenCV_docs %{_cmake_build_subdir}/doc/html* \ + %{buildroot}%{_pkgdocdir} + +# Add a README.txt for the examples. +cat << EOF >> %{buildroot}%{_pkgdocdir}/examples/README.txt +To run the examples, you will need to have the 'shogun-data'-package +installed, too. +EOF + +# Make sure all files in %%{_pkgdocdir} have mode 0644. +find %{buildroot}%{_pkgdocdir} -depth -type f -print0 | xargs -0 chmod 0644
# Remove unneeded stuff, e.g. compiled examples in %%{buildroot}%%{_datadir}, # build-system files in examples and 0-size files in %%{buildroot}. -rm -rf %{buildroot}%{_datadir}/%{name}/examples - -for _dir in '%{buildroot}' 'doc/examples' -do - find "${_dir}" -depth -type f -size 0 -print0 | xargs -0 rm -rf +%{__rm} -rf %{buildroot}%{_datadir}/%{name}/examples
- for _del in 'CMake*' 'Makefile*' '*.log' '*.sh' - do - find "${_dir}" -depth -type f -name "${_del}" -print0 | xargs -0 rm -rf - done -done +find %{buildroot} -depth -type f -size 0 -print0 | xargs -0 %{__rm} -rf
-for _del in '*.map' '*.md5' +for _del in 'CMake*' 'Makefile*' '*.log' '*.map' '*.md5' '*.sh' do - find doc -depth -type f -name "${_del}" -print0 | xargs -0 rm -rf + find %{buildroot} -depth -type f -name "${_del}" -print0 | xargs -0 %{__rm} -rf done
-# Add data to clean examples, because they need it to be run. -for _dir in 'documented' 'undocumented' -do - unlink doc/examples/${_dir}/data - ln -fs %{_datadir}/%{name}/data/toy doc/examples/${_dir}/data -done +# Hardlink API-docs. +hardlink -v %{buildroot}%{_pkgdocdir}/html +hardlink -v %{buildroot}%{_pkgdocdir}/html_cn
-# Make sure all files in examples have mode 0644. -find doc/examples -depth -type f -print0 | xargs -0 chmod 0644 +# Manually byte-compile Python-stuff… +%py_byte_compile %{__python2} %{buildroot}%{python2_sitearch} +%{?with_python3:%py_byte_compile %{__python3} %{buildroot}%{python3_sitearch}}
###############################################################################
@@ -905,7 +1011,7 @@ find doc/examples -depth -type f -print0 | xargs -0 chmod 0644 #EXCLUDE_FROM_TESTS="${EXCLUDE_FROM_TESTS}|unit-MMDKernelSelectionCombMaxL2" #EXCLUDE_FROM_TESTS="${EXCLUDE_FROM_TESTS}|unit-MMDKernelSelectionOpt" #EXCLUDE_FROM_TESTS="${EXCLUDE_FROM_TESTS}|unit-SparseMatrixOperator" -%endif #0%{?__isa_bits} == 32 +%endif # 0%{?__isa_bits} == 32
%ifarch %{arm} # * tests failing on %%{arm} arches because of misallignments or timeouts @@ -913,7 +1019,7 @@ find doc/examples -depth -type f -print0 | xargs -0 chmod 0644 #EXCLUDE_FROM_TESTS="${EXCLUDE_FROM_TESTS}|integration-python_modular-tester-transfer_multitask_leastsquares_regression" #EXCLUDE_FROM_TESTS="${EXCLUDE_FROM_TESTS}|integration-python_modular-tester-library_fisher2x3_modular" #EXCLUDE_FROM_TESTS="${EXCLUDE_FROM_TESTS}|java_modular-kernel_auc_modular" -%endif #ifarch %{arm} +%endif # ifarch %%{arm}
# SWIGed Python-bindings are currently segfaulting with SWIG >= 3.0.0 # Currently trying to resolve that upstream. @@ -922,16 +1028,16 @@ find doc/examples -depth -type f -print0 | xargs -0 chmod 0644 %endif # 0%{?fedora} >= 21
# * tests needing internet-connectivity -#ping -c1 mldata.org || \ +#ping -c1 mldata.org || \ #EXCLUDE_FROM_TESTS="${EXCLUDE_FROM_TESTS}|.*mldata.*"
#export EXCLUDE_FROM_TESTS
-pushd build +pushd %{_cmake_build_subdir} # Unit && integration tests -- usual testsuite. ctest \ --exclude-regex "${EXCLUDE_FROM_TESTS}" \ - --output-log unittest.log \ + --output-log %{buildroot}%{_pkgdocdir}/test.%{?_arch}%{?dist}.log \ --output-on-failure || : popd
@@ -943,11 +1049,11 @@ popd #export EXCLUDE_FROM_TESTS %endif #0%{?__isa_bits} == 32
-pushd %{py3dir}/build +pushd %{py3dir}/%{_cmake_build_subdir} # Unit && integration tests -- usual testsuite. ctest \ --exclude-regex "${EXCLUDE_FROM_TESTS}" \ - --output-log unittest.py3.log \ + --output-log %{buildroot}%{_pkgdocdir}/test.py3.%{?_arch}%{?dist}.log \ --output-on-failure || : popd %endif #0%{?with_python3} @@ -956,11 +1062,20 @@ popd ###############################################################################
%{?el5:%clean} -%{?el5:rm -rf %{buildroot}} +%{?el5:%{__rm} -rf %{buildroot}}
###############################################################################
%changelog +* Tue Dec 23 2014 Björn Esser bjoern.esser@gmail.com - 3.2.0.1-0.30.git20141223.c329375 +- updated to new snapshot git20141223.c32937574df1c560ce7c10f1b8860679ce011a8b +- added BR: ocl-icd-devel, opencl-headers +- enabled OpenCV-features and R-shogun +- purged light-scrubber.sh from repo, now shipped with tarball +- updated documentation-files +- build mono-shogun on %%{mono_arches}, only +- install documentation-files to %%{_pkgdocdir} + * Mon Sep 01 2014 Björn Esser bjoern.esser@gmail.com - 3.2.0.1-0.29.git20140901.705b7de - updated to new snapshot git20140901.705b7dea7093cb094fe90fcebac20b7e7d1debcd
diff --git a/sources b/sources index c741fa4..a1feacb 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -4fc43c920c1ec435f95d70781e644109 shogun-3.2.0.1-git20140901-705b7de.tar.gz +224380c55b1e86aec88febe9164488f2 shogun-3.2.0.1-git20141223-c329375.tar.gz 073b984d8798ea1594f5e44d85b20d66 gmock-1.7.0.zip