[MacPorts] #63384: espeak-ng @1.50: phsource/intonation': No such file or directory.

MacPorts noreply at macports.org
Wed Aug 18 03:54:02 UTC 2021


#63384: espeak-ng @1.50: phsource/intonation': No such file or directory.
------------------------------+--------------------
  Reporter:  Git-Christopher  |      Owner:  (none)
      Type:  defect           |     Status:  new
  Priority:  Normal           |  Milestone:
 Component:  ports            |    Version:
Resolution:                   |   Keywords:
      Port:  espeak-ng        |
------------------------------+--------------------

Comment (by ryandesign):

 In this case, I don't believe that helps.

 This build system finishes by running the compiled espeak-ng program:

 {{{
 :info:build
 ESPEAK_DATA_PATH=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports
 .org_macports_release_tarballs_ports_audio_espeak-ng/espeak-ng/work
 /espeak-ng-1.50 src/espeak-ng --compile-intonations && \
 :info:build
 ESPEAK_DATA_PATH=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports
 .org_macports_release_tarballs_ports_audio_espeak-ng/espeak-ng/work
 /espeak-ng-1.50 src/espeak-ng --compile-phonemes && \
 :info:build             touch phsource/phonemes.stamp
 }}}

 It needs to know where its data is. At build time, it has not been
 installed yet, so the path to the data is within the build directory; it
 sets the ESPEAK_DATA_PATH environment variable to this value. The length
 of that path is pretty long in a standard MacPorts install:
 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports
 .org_macports_release_tarballs_ports_audio_espeak-ng/espeak-ng/work
 /espeak-ng-1.50/" per this user's log is 159 characters, but if a user
 uses a different MacPorts mirror it would be even longer. esound-ng uses a
 fixed-size character array to store the path that it gets from this
 environment variable, concatenated with the further 15 characters
 "/espeak-ng-data". The fixed size of the character array is 160 bytes (the
 #define is N_PATH_HOME), so in a standard MacPorts install, the path
 length exceeds the size of the array. The program is smart enough to
 detect that a memory overflow would occur and does not attempt to put the
 value into the variable, but it is evidently not smart enough to abort
 with an error explaining what the problem is.

 So in fact there is nothing unusual about the user's system that makes
 this fail; rather, there is something unusual about my system and the
 buildbot systems that makes it succeed there, namely that they use shorter
 build paths because they use ports trees in non-standard locations. On my
 system, the path to the source directory is only 129 characters and on the
 buildbot it is only 122 characters.

 It's unclear why N_PATH_HOME is set to 160. The size has already been
 increased twice over the years; it was previously 150, and 120 before
 that. And there is already a conditional that sets it much higher on
 Windows. It seems like the fix is just to increase this variable's size
 considerably. Conferring with upstream is probably a good idea.
 Alternately, a fix could be to set ESPEAK_DATA_PATH to a relative path.

-- 
Ticket URL: <https://trac.macports.org/ticket/63384#comment:4>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list