FS#51224 - [espeak] build fails

Attached to Project: Community Packages
Opened by Christian Braun (hcb) - Tuesday, 04 October 2016, 12:09 GMT
Last edited by Eli Schwartz (eschwartz) - Sunday, 10 September 2017, 17:09 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To No-one
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Description:

build fails with compiler error: narrowing conversion

Additional info:
* package version(s)
* config and/or log files etc.


Steps to reproduce:
This task depends upon

Closed by  Eli Schwartz (eschwartz)
Sunday, 10 September 2017, 17:09 GMT
Reason for closing:  Fixed
Additional comments about closing:  espeak 1:1.48.04-1
Comment by userwithuid (userwithuid) - Sunday, 04 December 2016, 17:14 GMT
Another build related issue:

If you want to use the pulseaudio backend (which you tried to do in the latest revision [1]), you have to add the switch in package() too, otherwise it's useless :-)

- make DESTDIR="$pkgdir" install
+ make AUDIO=pulseaudio DESTDIR="$pkgdir" install

Bonus: no more portaudio dependency

- cp portaudio19.h portaudio.h
-depends=('portaudio' 'libpulse')
+depends=('libpulse')

[1] https://git.archlinux.org/svntogit/community.git/commit/trunk?h=packages/espeak&id=21bf41f7c4b75e2ab87b74467878c0c219a0667d
Comment by Chris Brannon (cmb) - Tuesday, 04 April 2017, 22:35 GMT
Personally I would suggest keeping the audio backend set to runtime.
And yeah, this does need to be done in both the make and make install
lines. Anyway with AUDIO=pulseaudio, some blind people would lose their
console screenreader. Please no!
Losing the portaudio dependency might be nice for one group of people.
For another group of people, losing the (indirect) dependency on all
the libs pulled in by libpulse might be nice. But being a binary distro,
you have to make tradeoffs. And sometimes that means dependency bloat.
Comment by userwithuid (userwithuid) - Wednesday, 05 April 2017, 06:06 GMT
Just to make that clear: I personally don't really care, I just suggested to fix the inconsistency in the PKGBUILD.

But I am curious: What do you mean by "some blind people would lose their console screenreader"? Is portaudio required for that?

I'm asking because espeak development seems to have moved to espeak-ng [1], which uses pcaudiolib from the same dev for audio. On Linux, pcaudiolib will use either alsa or pulseaudio as backend (both are linked, so libpulse and alsa-lib will be hard dependencies).

[1] https://github.com/rhdunn/espeak
Comment by Chris Brannon (cmb) - Wednesday, 05 April 2017, 09:38 GMT
Well here's the problem.
Pulse does not make it easy for system services that are not tied to
a user (such as this screen reader) to play audio. AFAIK there's no
way to do it, unless you run pulse in system mode.
Honestly I'm a fan of system mode pulse, even though it's heavily
discouraged by pulse upstream. The arguments against it really do not
make sense on single-user systems like a laptop.
So anyway what it all comes down to is that the console screenreader
is a system service that does not play nicely with the
default / recommended configuration of pulse.
It's not a hard dependency on portaudio per se.
Comment by userwithuid (userwithuid) - Wednesday, 05 April 2017, 17:19 GMT
I see. I did a little digging on the espeakup + pulse + VT situation, e.g. [1], and I think I understand it better now. So what's the best solution in practice to have console screenreader working? Do you have to disable pulse completely so everything falls back to alsa? Run pulse in system mode? Sonehow disable/enable pulse when switching VTs? What approach do you use?


BTW on topic/@maint: Yeah, don't disable portaudio, but instead remove the already useless "AUDIO=pulseaudio" from the first make in the PKGBUILD


[1] http://eyesfreelinux.ninja/posts/speakup-espeakup-pulseaudio-problem.html
Comment by Chris Brannon (cmb) - Wednesday, 05 April 2017, 18:22 GMT
For a long time, my personal solution was just to avoid Pulse completely.
If something pulled it in as a dependency, I'd forcibly disable it.
Unfortunately the ostrich approach is less and less viable.
I'm having to catch up with the times. E.G., wanting to use bluetooth
audio for everything, and that's forcing my hand. I helped my girlfriend
with an Arch install this weekend, and we just put pulseaudio in system
mode. That's fine for us; there's just one physical user.
If there were multiple physical users (shared workstation or whatever),
the only recourse is probably to eschew console speech, at least right now.

Loading...