-
Notifications
You must be signed in to change notification settings - Fork 16
Merging From Upstream Sources
The upstream version of eSpeak is maintained in two ways:
- a subversion repository at https://svn.code.sf.net/p/espeak/code/trunk -- this contains the combined sources for espeak and espeakedit;
- 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:
- upstream -- the subversion mirror;
- development -- the source code drops;
- master -- various fixes intended to be reported upstream and a working autotools-based build system.
The integration chain is upstream => development => master
.
When a new espeak version has been published, the order in which the code is synchronised is:
-
Fetch the latest changes from subversion using:
git checkout upstream git svn rebase
-
Merge the changes into the development branch:
git checkout development git merge -Xtheirs upstream
-
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
-
Fix up any other merge conflicts and commit the merge:
git commit
-
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.
-
Extract the content of the espeak and espeakedit zip files.
-
In the espeakedit zip folder, rename
src/Makefile
tosrc/Makefile.espeakedit
. This matches the subversion layout. -
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.
-
In the espeak git folder, delete all files except the README.md file.
-
Copy the files from the espeak zip folder to the espeak git folder.
-
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 '{}' \;
-
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
-
There are some
.directory
(Dolphin) files in the zip files, so remove them:rm phsource/*/.directory
-
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
-
Check for other inconsistencies with the recent subversion code, correcting as necessary.
-
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)"
-
Merge the changes into the master branch:
git checkout master git merge development
-
Now, to support building new dictionaries:
./mkdictlist Makefile.am git add Makefile.am git commit -m "autotools: build the 'an' and 'fa' dictionaries"