Skip to content

Merging From Upstream Sources

Reece Dunn edited this page May 30, 2014 · 6 revisions

The upstream version of eSpeak is maintained in two ways:

  1. a subversion repository at https://svn.code.sf.net/p/espeak/code/trunk -- this contains the combined sources for espeak and espeakedit;
  2. a source code drop of the latest source code located at http://espeak.sourceforge.net/test/latest.html -- this contains separate zip files for espeak and espeakedit.

The code drops differ from the subversion repository, often containing files missing from subversion. As such, this git repository uses the following branches:

  1. upstream -- the subversion mirror;
  2. development -- the source code drops;
  3. master -- various fixes intended to be reported upstream and a working autotools-based build system.

The integration chain is upstream => development => master.

New Release

When a new espeak version has been published, the order in which the code is synchronised is:

  1. Fetch the latest changes from subversion using:

    git checkout upstream
    git svn rebase
    
  2. Merge the changes into the development branch:

    git checkout development
    git merge -Xtheirs upstream
    
  3. This will produce conflicts in the generated files present in the subversion sources, so delete them:

    git rm phsource/compile_report
    git rm dictsource/dict_phonemes
    
  4. Fix up any other merge conflicts and commit the merge:

    git commit
    
  5. Download the latest source code drop for espeak and espeakedit from http://espeak.sourceforge.net/test/latest.html. If there is no source code for the latest subversion change, go to step 14.

  6. Extract the content of the espeak and espeakedit zip files.

  7. In the espeakedit zip folder, rename src/Makefile to src/Makefile.espeakedit. This matches the subversion layout.

  8. Copy the content of the espeakedit zip folder into the espeak zip folder, excluding the docs folder. NOTE: The docs have been updated in the git tree which is reflected in the espeak zip, but not the espeakedit zip.

  9. In the espeak git folder, delete all files except the README.md file.

  10. Copy the files from the espeak zip folder to the espeak git folder.

  11. Some of the files have the executable bit set even though they are not executable. Therefore, in the espeak git folder remove the executable bit:

    find * -type f -exec chmod -v 644 '{}' \;
    
  12. Some of the files in the espeak source code drop are incorrectly named. Therefore, rename them to their correct name to match the subversion repository:

    mv platforms/riscos/Makefile,fe1 platforms/riscos/Makefile
    mv platforms/riscos/copysource,feb platforms/riscos/copysource
    
  13. There are some .directory (Dolphin) files in the zip files, so remove them:

    rm phsource/*/.directory
    
  14. The ko (Korean) voice is not present in the zip archive but is in subversion, so restore the file:

    git checkout -f espeak-data/voices/asia/ko
    
  15. Check for other inconsistencies with the recent subversion code, correcting as necessary.

  16. Commit the source code drop changes to the git repository (using the correct version string for the commit message):

    git add .
    git commit -m "1.47.05 (from http://espeak.sourceforge.net/test/latest.html)"
    
  17. Merge the changes into the master branch:

    git checkout master
    git merge development
    
  18. Now, to support building new dictionaries:

    ./mkdictlist Makefile.am
    git add Makefile.am
    git commit -m "autotools: build the 'an' and 'fa' dictionaries"
    
Clone this wiki locally