commit:     3a5a7f52627f48f5d7f1fae63564af6c953bd3b0
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Apr 19 03:00:49 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Apr 19 03:00:49 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3a5a7f52

app-accessibility/speech-tools: fix musl build

Closes: https://bugs.gentoo.org/829344
Closes: https://bugs.gentoo.org/896170
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/speech-tools-2.5.0-musl-isnan.patch      |  65 +++++++++
 .../speech-tools/speech-tools-2.5.0-r2.ebuild      | 156 +++++++++++++++++++++
 2 files changed, 221 insertions(+)

diff --git 
a/app-accessibility/speech-tools/files/speech-tools-2.5.0-musl-isnan.patch 
b/app-accessibility/speech-tools/files/speech-tools-2.5.0-musl-isnan.patch
new file mode 100644
index 000000000000..da0077313abd
--- /dev/null
+++ b/app-accessibility/speech-tools/files/speech-tools-2.5.0-musl-isnan.patch
@@ -0,0 +1,65 @@
+See https://bugs.openjdk.org/browse/JDK-8178689 for some analysis - we can
+safely replace the deprecated/obsolete isnanf (which musl doesn't immplement)
+with isnan.
+
+https://bugs.gentoo.org/896170
+https://bugs.gentoo.org/829344
+--- a/intonation/tilt/tilt_utils.cc
++++ b/intonation/tilt/tilt_utils.cc
+@@ -133,7 +133,7 @@ float rfc_to_t_tilt(EST_Features &e)
+ {
+     float t_tilt;
+     t_tilt = (rfc_to_a_tilt(e) + rfc_to_d_tilt(e)) / 2;
+-    if (isnanf(t_tilt))
++    if (isnan(t_tilt))
+       t_tilt = 0.0;
+     return t_tilt;
+ }
+--- a/sigpr/pda/smooth_pda.cc
++++ b/sigpr/pda/smooth_pda.cc
+@@ -112,7 +112,7 @@ void smooth_portion(EST_Track &c, EST_Features &op)
+ 
+     for (i = 0; i < c.num_frames(); ++i)
+     {   // occasionally NaNs result...
+-      if (isnanf(a[i]))
++      if (isnan(a[i]))
+       {
+           c.set_break(i);
+           c.a(i) = 0.0;
+--- a/sigpr/sigpr_frame.cc
++++ b/sigpr/sigpr_frame.cc
+@@ -314,7 +314,7 @@ void lpc2cep(const EST_FVector &lpc, EST_FVector &cep)
+     for (n = 0; n < cep.length(); n++) 
+     {
+       // check if NaN -- happens on some frames of silence
+-      if (isnanf(cep[n]) ) cep[n] = 0.0;
++      if (isnan(cep[n]) ) cep[n] = 0.0;
+       
+       if (cep[n] >  MAX_ABS_CEPS){
+           cerr << "WARNING : cepstral coeff " << n << " was " << 
+--- a/stats/confusion.cc
++++ b/stats/confusion.cc
+@@ -138,7 +138,7 @@ void print_confusion(const EST_FMatrix &a, EST_StrStr_KVL 
&list,
+       cout.precision(3);
+       cout.setf(ios::right);
+ //    cout.setf(ios::fixed, ios::floatfield);
+-      if (isnanf(correct(i)))
++      if (isnan(correct(i)))
+           cout << endl;
+       else
+           cout << correct(i) << endl;
+--- a/include/EST_math.h
++++ b/include/EST_math.h
+@@ -81,12 +81,6 @@ extern "C" {
+ #define isnanf(X) isnan(X)
+ #endif
+ 
+-/* Linux (and presumably Hurd too as Linux is GNU libc based) */
+-/* Sorry I haven't confirmed this cpp symbol yet              */
+-#if defined(linux)
+-#define isnanf(X) __isnanf(X)
+-#endif
+-
+ /* OS/2 with gcc EMX */
+ #if defined(__EMX__)
+ #define isnanf(X) isnan(X)

diff --git a/app-accessibility/speech-tools/speech-tools-2.5.0-r2.ebuild 
b/app-accessibility/speech-tools/speech-tools-2.5.0-r2.ebuild
new file mode 100644
index 000000000000..649cf3b379e0
--- /dev/null
+++ b/app-accessibility/speech-tools/speech-tools-2.5.0-r2.ebuild
@@ -0,0 +1,156 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools flag-o-matic toolchain-funcs
+
+MY_P=${P/speech-/speech_}
+PATCHSET="r3"
+
+DESCRIPTION="Speech tools for Festival Text to Speech engine"
+HOMEPAGE="https://www.cstr.ed.ac.uk/projects/speech_tools/";
+SRC_URI="http://www.festvox.org/packed/festival/$(ver_cut 
1-2)/${MY_P}-release.tar.gz
+       
https://dev.gentoo.org/~neurogeek/${PN}/speech_tools-2.1-${PATCHSET}-patches.tar.gz";
+S="${WORKDIR}/speech_tools"
+
+LICENSE="FESTIVAL HPND BSD rc regexp-UofT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86"
+IUSE="nas openmp X"
+
+RDEPEND="
+       media-libs/alsa-lib
+       sys-libs/ncurses:=
+       nas? ( media-libs/nas )
+       X? (
+               x11-libs/libX11
+               x11-libs/libXt
+       )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+DOCS=( README.md lib/cstrutt.dtd lib/example_data )
+
+PATCHES=(
+       "${WORKDIR}/patch/02_all_gcc42.patch"
+       "${WORKDIR}/patch/03_all_GentooLinux.patch"
+       "${WORKDIR}/patch/05_all_sharedlib.patch"
+       "${WORKDIR}/patch/06_all_gcc43-include.patch"
+       "${WORKDIR}/patch/09_all_remove-shared-refs.patch"
+       "${WORKDIR}/patch/10_all_base_class.patch"
+       "${WORKDIR}/patch/81_all_etcpath.patch"
+       "${WORKDIR}/patch/91_all_gentoo-config.patch"
+       "${WORKDIR}/patch/92_all_ldflags_fix.patch"
+       "${WORKDIR}/patch/94_all_ncurses_tinfo.patch"
+
+       # Fix underlinking, bug #493204
+       "${FILESDIR}/${PN}-2.1-underlinking.patch"
+       "${FILESDIR}/${PN}-2.5.0-fno-common.patch"
+       "${FILESDIR}/${PN}-2.5.0-drop-curses.patch"
+       "${FILESDIR}/${P}-warnings.patch"
+       "${FILESDIR}/${P}-musl-isnan.patch"
+)
+
+pkg_pretend() {
+       [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+       [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+src_prepare() {
+       default
+
+       sed -i -e '/^CXXFLAGS  =/s|CC_OTHER_FLAGS|CXX_OTHER_FLAGS|' \
+               config/compilers/gcc_defaults.mak || die
+
+       sed -i -e 's,{{HORRIBLELIBARCHKLUDGE}},"/usr/$(get_libdir)",' \
+               main/siod_main.cc || die
+
+       # bug #309983
+       sed -i -e "s:\(GCC_SYSTEM_OPTIONS =\).*:\1:" \
+               "${S}"/config/systems/sparc_SunOS5.mak || die
+
+       sed -i -e "s|\$(OMP_OPTS)|$(use openmp && echo -fopenmp)|g" \
+               -e "s|\$(OMP_DEFS)|$(use openmp && echo -DOMP_WAGON=1)|g" \
+               -e "/MAKE_SHARED_LIB =/s|-shared|$(use openmp && echo -fopenmp) 
-shared|" \
+               config/compilers/gcc_defaults.mak || die
+
+       eautoreconf
+}
+
+src_configure() {
+       local CONFIG=config/config.in
+
+       sed -i -e 's/@COMPILERTYPE@/gcc42/' ${CONFIG} || die
+
+       if use nas; then
+               sed -i -e "s/#.*\(INCLUDE_MODULES += NAS_AUDIO\)/\1/" \
+                       ${CONFIG} || die
+       fi
+
+       if ! use X; then
+               sed -i -e "s/-lX11 -lXt//" config/modules/esd_audio.mak || die
+       fi
+
+       econf
+}
+
+src_compile() {
+       # Lacks prototypes, bug #881863
+       append-cflags -std=gnu89
+       # Uses 'register' keyword removed in C++17, bug #894184
+       append-cxxflags -std=c++14
+
+       emake -j1 \
+               CC="$(tc-getCC)" \
+               CXX="$(tc-getCXX)" \
+               CC_OTHER_FLAGS="${CFLAGS}" \
+               CXX_OTHER_FLAGS="${CXXFLAGS}" \
+               LDFLAGS="${LDFLAGS}" \
+               AR="$(tc-getAR)" \
+               RANLIB="$(tc-getRANLIB)"
+}
+
+src_install() {
+       default
+
+       dolib.so lib/libest*.so*
+
+       insinto /usr/share/speech-tools
+       doins -r config base_class
+
+       insinto /usr/share/speech-tools/lib
+       doins -r lib/siod
+
+       mv include speech-tools || die
+       doheader -r speech-tools
+       dosym ../../include/speech-tools /usr/share/speech-tools/include
+
+       for file in bin/*; do
+               [ "${file}" = "bin/Makefile" ] && continue
+               dobin ${file}
+               dstfile="${ED}/usr/${file}"
+               sed -i -e 
"s:${S}/testsuite/data:/usr/share/speech-tools/testsuite:g" \
+                       ${dstfile} || die
+               sed -i -e "s:${S}/bin:/usr/$(get_libdir)/speech-tools:g" \
+                       ${dstfile} || die
+               sed -i -e "s:${S}/main:/usr/$(get_libdir)/speech-tools:g" \
+                       ${dstfile} || die
+
+               # This just changes LD_LIBRARY_PATH
+               sed -i -e "s:${S}/lib:/usr/$(get_libdir):g" ${dstfile} || die
+       done
+
+       exeinto /usr/$(get_libdir)/speech-tools
+       for file in `find main -perm /111 -type f`; do
+               doexe ${file}
+       done
+
+       # Remove bcat (only useful for testing on windows, see bug #418301).
+       rm "${ED}/usr/bin/bcat" || die
+       rm "${ED}/usr/$(get_libdir)/speech-tools/bcat" || die
+}

Reply via email to