commit: 884605a42b33aeec4a6f05f8f0ac3dc8a60f325d Author: Pavel Denisov <pavel.a.denisov <AT> gmail <DOT> com> AuthorDate: Sun Apr 23 11:35:22 2017 +0000 Commit: Christoph Junghans <junghans <AT> gentoo <DOT> org> CommitDate: Sun Apr 23 11:35:22 2017 +0000 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=884605a4
sci-misc/kaldi: Version bump (#747) Adopt the version scheme introduced by upstream Add double-precision USE flag Package-Manager: Portage-2.3.4, Repoman-2.3.2 sci-misc/kaldi/files/Makefile.0d5e4b1.patch | 45 +++++++ .../kaldi/files/default_rules.mk.96eec2b.patch | 30 +++++ sci-misc/kaldi/kaldi-0_p20151106.ebuild | 124 ----------------- sci-misc/kaldi/kaldi-5.1.65.ebuild | 146 +++++++++++++++++++++ sci-misc/kaldi/metadata.xml | 3 + 5 files changed, 224 insertions(+), 124 deletions(-) diff --git a/sci-misc/kaldi/files/Makefile.0d5e4b1.patch b/sci-misc/kaldi/files/Makefile.0d5e4b1.patch new file mode 100644 index 000000000..80b9862c6 --- /dev/null +++ b/sci-misc/kaldi/files/Makefile.0d5e4b1.patch @@ -0,0 +1,45 @@ +--- src/Makefile.orig 2017-03-03 01:33:22.000000000 +0100 ++++ src/Makefile 2017-03-03 18:06:59.912864196 +0100 +@@ -32,7 +32,6 @@ + # Reset the default goal, so that the all target will become default + .DEFAULT_GOAL := + all: +- $(MAKE) checkversion + $(MAKE) kaldi.mk + $(MAKE) mklibdir + $(MAKE) subdirs +@@ -52,18 +51,6 @@ + @true + endif + +-.PHONY: checkversion +-checkversion: +-ifeq ($(shell ./configure --version),$(CONFIGURE_VERSION)) +- @echo "The version of configure script matches kaldi.mk version. Good." +-else +- @echo "" +- @echo "The kaldi.mk file was generated using a different version of configure script. Please rerun the configure again" +- @test -f ./kaldi.mk && echo "Hint: Previous configure command line: " && head -n 2 ./kaldi.mk | grep configure | sed 's/^# *//g' +- @echo "" +- @false +-endif +- + biglib: $(SUBDIRS_LIB) + ifeq ($(KALDI_FLAVOR), dynamic) + ifeq ($(shell uname), Darwin) +@@ -136,6 +123,15 @@ + ext_depend: check_portaudio + -for x in $(EXT_SUBDIRS); do $(MAKE) -C $$x depend; done + ++print-binfiles: $(addsuffix /print-binfiles, $(SUBDIRS)) ++ ++%/print-binfiles: ++ @$(MAKE) --no-print-directory -C $(dir $@) print-binfiles ++ ++print-libfiles: $(addsuffix /print-libfiles, $(SUBDIRS)) ++ ++%/print-libfiles: ++ @$(MAKE) --no-print-directory -C $(dir $@) print-libfiles + + .PHONY: $(SUBDIRS) + $(SUBDIRS) : mklibdir diff --git a/sci-misc/kaldi/files/default_rules.mk.96eec2b.patch b/sci-misc/kaldi/files/default_rules.mk.96eec2b.patch new file mode 100644 index 000000000..89a3103ba --- /dev/null +++ b/sci-misc/kaldi/files/default_rules.mk.96eec2b.patch @@ -0,0 +1,30 @@ +--- src/makefiles/default_rules.mk.orig 2017-03-03 01:33:22.000000000 +0100 ++++ src/makefiles/default_rules.mk 2017-03-03 18:24:54.159740235 +0100 +@@ -12,7 +12,7 @@ + ifdef LIBNAME + LIBFILE = lib$(LIBNAME).so + endif +- LDFLAGS += -Wl,-rpath=$(shell readlink -f $(KALDILIBDIR)) ++ LDFLAGS += -L. $(foreach dep,$(ADDLIBS), -L$(dir $(dep))) + EXTRA_LDLIBS += $(foreach dep,$(ADDLIBS), $(dir $(dep))lib$(notdir $(basename $(dep))).so) + else # Platform not supported + $(error Dynamic libraries not supported on this platform. Run configure with --static flag.) +@@ -82,7 +82,7 @@ + for x in $(TESTFILES); do \ + printf "Running $$x ..."; \ + timestamp1=$$(date +"%s"); \ +- ./$$x >$$x.testlog 2>&1; \ ++ LD_LIBRARY_PATH=$(KALDILIBDIR):${LD_LIBRARY_PATH} ./$$x >$$x.testlog 2>&1; \ + ret=$$? \ + timestamp2=$$(date +"%s"); \ + time_taken=$$[timestamp2-timestamp1]; \ +@@ -121,3 +121,9 @@ + # removing automatic making of "depend" as it's quite slow. + #.depend.mk: depend + -include .depend.mk ++ ++print-binfiles: ++ @echo $(addprefix $(shell pwd)/, $(BINFILES)) ++ ++print-libfiles: ++ @echo $(addsuffix .so, $(addprefix $(shell pwd)/lib, $(LIBNAME))) diff --git a/sci-misc/kaldi/kaldi-0_p20151106.ebuild b/sci-misc/kaldi/kaldi-0_p20151106.ebuild deleted file mode 100644 index 7dbc93ee8..000000000 --- a/sci-misc/kaldi/kaldi-0_p20151106.ebuild +++ /dev/null @@ -1,124 +0,0 @@ -# Copyright 1999-2015 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=5 - -inherit eutils toolchain-funcs cuda flag-o-matic - -DESCRIPTION="A toolkit for speech recognition" -HOMEPAGE="http://kaldi-asr.org/" -SRC_URI="http://gentoo.akreal.net/distfiles/${P}.tar.xz" - -LICENSE="Apache-2.0" -SLOT="0" -IUSE="doc test cuda" -KEYWORDS="~amd64" - -RDEPEND=" - media-libs/speex - virtual/cblas - virtual/lapack - virtual/lapacke - >=sci-misc/openfst-1.4.1 - cuda? ( dev-util/nvidia-cuda-toolkit )" -DEPEND="${RDEPEND} - doc? ( app-doc/doxygen )" - -# We need write acccess /dev/nvidiactl, /dev/nvidia0 and /dev/nvidia-uvm and the portage -# user is (usually) not in the video group -RESTRICT="test? ( cuda? ( userpriv ) )" - -pkg_pretend() { - local cblas_provider=$(eselect cblas show) - - if [[ ! ${cblas_provider} =~ (atlas|mkl|openblas) ]]; then - die "Build with '${cblas_provider}' CBLAS is not supported" - fi -} - -src_prepare() { - epatch \ - "${FILESDIR}"/Makefile.patch \ - "${FILESDIR}"/default_rules.mk.a7d9824.patch -} - -src_configure() { - append-cxxflags \ - -DKALDI_DOUBLEPRECISION=0 \ - -DHAVE_POSIX_MEMALIGN \ - -DHAVE_EXECINFO_H=1 \ - -DHAVE_CXXABI_H \ - -DHAVE_SPEEX \ - -DHAVE_OPENFST_GE_10400 \ - -std=c++0x \ - -Wall \ - -I.. \ - -pthread \ - -Wno-sign-compare \ - -Wno-unused-local-typedefs \ - -Winit-self \ - -rdynamic \ - -fPIC \ - $($(tc-getPKG_CONFIG) --cflags cblas) \ - $($(tc-getPKG_CONFIG) --cflags lapack) - - append-libs \ - -lspeex \ - -lfst \ - -lm \ - -lpthread \ - -ldl \ - $($(tc-getPKG_CONFIG) --libs cblas) \ - $($(tc-getPKG_CONFIG) --libs lapack) - - local cblas_provider=$(eselect cblas show) - - if [[ ${cblas_provider} =~ atlas ]]; then - append-cxxflags -DHAVE_ATLAS - elif [[ ${cblas_provider} =~ mkl ]]; then - append-cxxflags -DHAVE_MKL - elif [[ ${cblas_provider} =~ openblas ]]; then - append-cxxflags -DHAVE_OPENBLAS $($(tc-getPKG_CONFIG) --cflags lapacke) - fi - - use test || append-cxxflags -DNDEBUG - - cat <<-EOF > kaldi.mk - KALDI_FLAVOR := dynamic - KALDILIBDIR := "${S}"/lib - CC = $(tc-getCXX) - RANLIB = $(tc-getRANLIB) - LDLIBS = ${LIBS} - EOF - - if use cuda; then - cat <<-EOF >> kaldi.mk - CUDA = true - CUDATKDIR = "${EPREFIX}"/opt/cuda - EOF - cat makefiles/linux_x86_64_cuda.mk >> kaldi.mk - sed -i \ - -e "s:CUDA_FLAGS = -g:CUDA_FLAGS = ${NVCCFLAGS}:" \ - kaldi.mk || die "sed unix/kaldi.mk failed" - fi -} - -src_compile() { - default - use doc && doxygen -} - -src_test() { - if use cuda; then - addwrite /dev/nvidiactl - addwrite /dev/nvidia0 - addwrite /dev/nvidia-uvm - fi - default -} - -src_install() { - dolib.so $(make print-libfiles) - dobin $(make print-binfiles) - use doc && dodoc -r html -} diff --git a/sci-misc/kaldi/kaldi-5.1.65.ebuild b/sci-misc/kaldi/kaldi-5.1.65.ebuild new file mode 100644 index 000000000..4304f695c --- /dev/null +++ b/sci-misc/kaldi/kaldi-5.1.65.ebuild @@ -0,0 +1,146 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit toolchain-funcs cuda flag-o-matic + +COMMIT_ID="9e06caa1fb0306898632c6fa3ad67571c4d06cf5" +DESCRIPTION="A toolkit for speech recognition" +HOMEPAGE="http://kaldi-asr.org/" +SRC_URI="https://github.com/kaldi-asr/kaldi/archive/${COMMIT_ID}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64" +IUSE="cuda doc double-precision speex test" +REQUIRED_USE="double-precision? ( !speex )" + +RDEPEND=" + >=sci-misc/openfst-1.6.0 + virtual/cblas + virtual/lapack + virtual/lapacke + cuda? ( dev-util/nvidia-cuda-toolkit ) + speex? ( media-libs/speex )" +DEPEND="${RDEPEND} + virtual/pkgconfig + doc? ( app-doc/doxygen )" + +S=${WORKDIR}/${PN}-${COMMIT_ID}/src + +PATCHES=( + "${FILESDIR}"/Makefile.0d5e4b1.patch + "${FILESDIR}"/default_rules.mk.96eec2b.patch +) + +# We need write acccess /dev/nvidiactl, /dev/nvidia0 and /dev/nvidia-uvm and the portage +# user is (usually) not in the video group +RESTRICT="cuda? ( userpriv )" + +pkg_pretend() { + local cblas_provider=$(eselect cblas show) + + if [[ ! ${cblas_provider} =~ (atlas|openblas) ]]; then + die "Build with '${cblas_provider}' CBLAS is not supported" + fi +} + +src_prepare() { + default + use cuda && cuda_src_prepare +} + +src_configure() { + cat <<-EOF > base/version.h + #define KALDI_VERSION "${PV}-${COMMIT_ID:0:5}" + #define KALDI_GIT_HEAD "${COMMIT_ID}" + EOF + + echo "true" > base/get_version.sh + + append-cxxflags \ + $($(tc-getPKG_CONFIG) --cflags cblas) \ + $($(tc-getPKG_CONFIG) --cflags lapack) + + append-libs \ + $($(tc-getPKG_CONFIG) --libs cblas) \ + $($(tc-getPKG_CONFIG) --libs lapack) + + use test || append-cppflags -DNDEBUG + + if use speex; then + append-cppflags -DHAVE_SPEEX + append-libs -lspeex + fi + + cat <<-EOF > kaldi.mk + KALDI_FLAVOR := dynamic + KALDILIBDIR := "${S}"/lib + CXX = $(tc-getCXX) + AR = $(tc-getAR) + AS = $(tc-getAS) + RANLIB = $(tc-getRANLIB) + DOUBLE_PRECISION = $(usex double-precision 1 0) + OPENFSTINC = "." + OPENFSTLIBS = -lfst + EOF + + local cblas_provider=$(eselect cblas show) + + if [[ ${cblas_provider} =~ atlas ]]; then + cat <<-EOF >> kaldi.mk + ATLASINC = "." + ATLASLIBS = -L. + EOF + + cat makefiles/linux_atlas.mk >> kaldi.mk + elif [[ ${cblas_provider} =~ openblas ]]; then + append-cxxflags $($(tc-getPKG_CONFIG) --cflags lapacke) + + cat <<-EOF >> kaldi.mk + OPENBLASINC = "." + OPENBLASLIBS = -L. + EOF + + cat makefiles/linux_openblas.mk >> kaldi.mk + fi + + cat <<-EOF >> kaldi.mk + CXXFLAGS += ${CXXFLAGS} + LDLIBS += ${LIBS} + EOF + + if use cuda; then + cat <<-EOF >> kaldi.mk + CUDA = true + CUDATKDIR = "${EPREFIX}"/opt/cuda + CUDA_ARCH := + CUDA_ARCH += + EOF + cat makefiles/cuda_64bit.mk >> kaldi.mk + sed -i \ + -e "s:CUDA_FLAGS = -g:CUDA_FLAGS = ${NVCCFLAGS}:" \ + kaldi.mk || die "sed unix/kaldi.mk failed" + fi +} + +src_compile() { + default + use doc && doxygen +} + +src_test() { + if use cuda; then + addwrite /dev/nvidiactl + addwrite /dev/nvidia0 + addwrite /dev/nvidia-uvm + fi + default +} + +src_install() { + dolib.so $(make print-libfiles) + dobin $(make print-binfiles) + use doc && dodoc -r html +} diff --git a/sci-misc/kaldi/metadata.xml b/sci-misc/kaldi/metadata.xml index fbed38966..e441381a1 100644 --- a/sci-misc/kaldi/metadata.xml +++ b/sci-misc/kaldi/metadata.xml @@ -17,5 +17,8 @@ <flag name="cuda"> Build with CUDA support. </flag> + <flag name="double-precision"> + Build in double precision mode. + </flag> </use> </pkgmetadata>