├── .gitignore ├── MS_Windows_Installer ├── Aeneas_Installer.iss ├── Aeneas_Installer_TEMPLATE.iss ├── FFmpeg_Installer.iss ├── FFmpeg_Installer_TEMPLATE.iss ├── LICENSE.txt ├── MS_Windows_64-bit_Installer │ ├── Aeneas_Installer.iss │ ├── Aeneas_Installer_TEMPLATE.iss │ ├── FFmpeg_Installer.iss │ ├── FFmpeg_Installer_TEMPLATE.iss │ ├── LICENSE.txt │ ├── README.txt │ ├── ReadMe.md │ ├── aeneas-patches │ │ ├── patch-espeak-ng.diff │ │ └── patch-py38-utf8.diff │ ├── aeneas_check_setup.bat │ ├── build_aeneas_package.bat │ ├── build_espeak_package.bat │ ├── build_ffmpeg_package.bat │ ├── build_installer.bat │ ├── build_packages.bat │ ├── build_python_package.bat │ ├── build_setup.bat │ ├── clean.bat │ ├── clean_up.bat │ ├── copy_espeak_aeneas.bat │ ├── create_espeak-ng-x64_lib.bat │ ├── create_espeak-ng-x86_lib.bat │ ├── create_espeak_lib.bat │ ├── curl.bat │ ├── delete_espeak_aeneas.bat │ ├── dll2lib.bat │ ├── eSpeak-NG.reg │ ├── espeak-exports.txt │ ├── espeak-ng.lib │ ├── espeak.def │ ├── espeak.lib │ ├── ff-prompt.bat │ ├── install_espeak-ng_extra.bat │ ├── install_packages.bat │ ├── install_packages_TEMPLATE.bat │ ├── libespeak-ng-dll2lib-x64 │ │ ├── libespeak-ng-exports.txt │ │ ├── libespeak-ng.def │ │ ├── libespeak-ng.exp │ │ └── libespeak-ng.lib │ ├── libespeak-ng-dll2lib-x86 │ │ ├── libespeak-ng-exports.txt │ │ ├── libespeak-ng.def │ │ ├── libespeak-ng.exp │ │ └── libespeak-ng.lib │ ├── libespeak-ng-exports.txt │ ├── libespeak-ng.def │ ├── libespeak-ng.exp │ ├── libespeak-ng.lib │ ├── runas_admin.bat │ ├── sign_installer.sh │ ├── x64 Native Tools Command Prompt for VS 2017.lnk.txt │ └── x86_x64 Cross Tools Command Prompt for VS 2017.lnk.txt ├── README.txt ├── ReadMe.md ├── aeneas-patches │ ├── patch-espeak-ng.diff │ └── patch-py38-utf8.diff ├── aeneas_check_setup.bat ├── build_aeneas_package.bat ├── build_espeak_package.bat ├── build_ffmpeg_package.bat ├── build_installer.bat ├── build_packages.bat ├── build_python_package.bat ├── build_setup.bat ├── clean.bat ├── clean_up.bat ├── copy_espeak_aeneas.bat ├── create_espeak-ng-x64_lib.bat ├── create_espeak-ng-x86_lib.bat ├── create_espeak_lib.bat ├── curl-psh.bat ├── delete_espeak_aeneas.bat ├── dll2lib.bat ├── eSpeak-NG.reg ├── espeak-exports.txt ├── espeak-ng.lib ├── espeak.def ├── espeak.lib ├── ff-prompt.bat ├── install_espeak-ng_extra.bat ├── install_packages.bat ├── install_packages_TEMPLATE.bat ├── libespeak-ng-dll2lib-x64 │ ├── libespeak-ng-exports.txt │ ├── libespeak-ng.def │ ├── libespeak-ng.exp │ └── libespeak-ng.lib ├── libespeak-ng-dll2lib-x86 │ ├── libespeak-ng-exports.txt │ ├── libespeak-ng.def │ ├── libespeak-ng.exp │ └── libespeak-ng.lib ├── libespeak-ng-exports.txt ├── libespeak-ng.def ├── libespeak-ng.exp ├── libespeak-ng.lib ├── runas_admin.bat ├── sign_installer.sh ├── wget-py.bat ├── x64_x86 Cross Tools Command Prompt for VS 2017.lnk.txt └── x86 Native Tools Command Prompt for VS 2017.lnk.txt ├── Mac_OSX_Installer ├── Aeneas_Installer.pkgproj ├── Aeneas_Installer_TEMPLATE.pkgproj ├── INFO.txt ├── LICENSE.txt ├── Mac_SAB_Installer │ ├── ReadMe.md │ ├── SAB_License.rtf │ ├── SAB_ReadMe.rtf │ ├── Scripture_App_Builder.pkgproj │ ├── background.png │ ├── build_dmg.sh │ ├── build_full_dmg.sh │ ├── dmg_preview.png │ ├── icon.png │ └── sab_install_scripts │ │ └── postinstall ├── README.txt ├── ReadMe.md ├── aeneas-mac-uninstall-scripts │ ├── _complete_uninstall.sh │ ├── _uninstall_aeneas.sh │ ├── _uninstall_bs4.sh │ ├── _uninstall_espeak.sh │ ├── _uninstall_ffmpeg.sh │ ├── _uninstall_lxml.sh │ ├── _uninstall_numpy.sh │ └── _uninstall_python.sh ├── aeneas-patches │ ├── patch-espeak-ng-mac.diff │ ├── patch-py38-utf8-mac.diff │ └── patch-ttswrapper-mac.diff ├── build_aeneas_package.sh ├── build_dmg.sh ├── build_env.sh ├── build_espeak_package.sh ├── build_ffmpeg_package.sh ├── build_installer.sh ├── build_packages.sh ├── build_python_mp_package.sh ├── build_python_org_package.sh ├── build_python_package.sh ├── build_setup.sh ├── check_python.sh ├── clean_up.sh ├── create-dmg ├── developer_log.json ├── entitlements.plist ├── etc-macports-sources.conf ├── install_xcode_cl_tools.sh ├── notarize_installer.sh ├── postinstall-scripts │ ├── postinstall │ ├── postinstall_aeneas │ ├── postinstall_bs4 │ ├── postinstall_espeak │ ├── postinstall_ffmpeg │ ├── postinstall_lxml │ ├── postinstall_numpy │ └── postinstall_python ├── resign_packages.sh ├── restore_ports.tcl ├── sign_aeneas_package.sh ├── sign_espeak_package.sh ├── sign_ffmpeg_package.sh ├── sign_packages.sh └── sign_python_package.sh └── ReadMe.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.com 4 | *.class 5 | *.dll 6 | *.exe 7 | *.msi 8 | *.o 9 | *.so 10 | *.pyo 11 | *.pyc 12 | 13 | # Packages # 14 | ############ 15 | # it's better to unpack these files and commit the raw source 16 | # git has its own built in compression methods 17 | *.7z 18 | *.dmg 19 | *.pkg 20 | *.mpkg 21 | *.whl 22 | *.gz 23 | *.iso 24 | *.jar 25 | *.rar 26 | *.tar 27 | *.zip 28 | 29 | # Logs and databases # 30 | ###################### 31 | *.log 32 | *.sql 33 | *.sqlite 34 | 35 | # OS generated files # 36 | ###################### 37 | .DS_Store 38 | .DS_Store? 39 | Icon? 40 | ._* 41 | *~ 42 | *.bak 43 | *.swp 44 | *.swo 45 | .Spotlight-V100 46 | .Trashes 47 | ehthumbs.db 48 | Thumbs.db 49 | 50 | # Created by https://www.gitignore.io/api/osx,python,vim,windows 51 | 52 | ### OSX ### 53 | *.DS_Store 54 | .AppleDouble 55 | .LSOverride 56 | 57 | # Icon must end with two \r 58 | Icon 59 | 60 | 61 | # Thumbnails 62 | ._* 63 | 64 | # Files that might appear in the root of a volume 65 | .DocumentRevisions-V100 66 | .fseventsd 67 | .Spotlight-V100 68 | .TemporaryItems 69 | .Trashes 70 | .VolumeIcon.icns 71 | .com.apple.timemachine.donotpresent 72 | 73 | # Directories potentially created on remote AFP share 74 | .AppleDB 75 | .AppleDesktop 76 | Network Trash Folder 77 | Temporary Items 78 | .apdisk 79 | 80 | 81 | ### Python ### 82 | # Byte-compiled / optimized / DLL files 83 | __pycache__/ 84 | *.py[cod] 85 | *$py.class 86 | 87 | # C extensions 88 | *.so 89 | 90 | # Distribution / packaging 91 | .Python 92 | env/ 93 | build/ 94 | develop-eggs/ 95 | dist/ 96 | downloads/ 97 | eggs/ 98 | .eggs/ 99 | lib/ 100 | lib64/ 101 | parts/ 102 | sdist/ 103 | var/ 104 | *.egg-info/ 105 | .installed.cfg 106 | *.egg 107 | 108 | # PyInstaller 109 | # Usually these files are written by a python script from a template 110 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 111 | *.manifest 112 | *.spec 113 | 114 | # Installer logs 115 | pip-log.txt 116 | pip-delete-this-directory.txt 117 | 118 | # Unit test / coverage reports 119 | htmlcov/ 120 | .tox/ 121 | .coverage 122 | .coverage.* 123 | .cache 124 | nosetests.xml 125 | coverage.xml 126 | *,cover 127 | .hypothesis/ 128 | 129 | # Translations 130 | *.mo 131 | *.pot 132 | 133 | # Django stuff: 134 | *.log 135 | local_settings.py 136 | 137 | # Flask stuff: 138 | instance/ 139 | .webassets-cache 140 | 141 | # Scrapy stuff: 142 | .scrapy 143 | 144 | # Sphinx documentation 145 | docs/_build/ 146 | 147 | # PyBuilder 148 | target/ 149 | 150 | # IPython Notebook 151 | .ipynb_checkpoints 152 | 153 | # pyenv 154 | .python-version 155 | 156 | # celery beat schedule file 157 | celerybeat-schedule 158 | 159 | # dotenv 160 | .env 161 | 162 | # virtualenv 163 | venv/ 164 | ENV/ 165 | 166 | # Spyder project settings 167 | .spyderproject 168 | 169 | # Rope project settings 170 | .ropeproject 171 | 172 | 173 | ### Vim ### 174 | # swap 175 | [._]*.s[a-w][a-z] 176 | [._]s[a-w][a-z] 177 | # session 178 | Session.vim 179 | # temporary 180 | .netrwhist 181 | *~ 182 | # auto-generated tag files 183 | tags 184 | 185 | 186 | ### Windows ### 187 | # Windows image file caches 188 | Thumbs.db 189 | ehthumbs.db 190 | 191 | # Folder config file 192 | Desktop.ini 193 | 194 | # Recycle Bin used on file shares 195 | $RECYCLE.BIN/ 196 | 197 | # Windows Installer files 198 | *.cab 199 | *.msi 200 | *.msm 201 | *.msp 202 | 203 | # Windows shortcuts 204 | *.lnk 205 | -------------------------------------------------------------------------------- /MS_Windows_Installer/FFmpeg_Installer.iss: -------------------------------------------------------------------------------- 1 | ; Script generated by the Inno Setup Script Wizard. 2 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 3 | 4 | #define MyAppName "FFmpeg" 5 | #define MyAppVersion "4.3" 6 | #define MyAppPublisher "Daniel Bair" 7 | #define MyAppURL "https://github.com/sillsdev/aeneas-installer" 8 | #define MyAppExeName "ff-prompt.bat" 9 | #define MyAppFileName "ffmpeg-4.3-win32-static" 10 | 11 | [Setup] 12 | ; NOTE: The value of AppId uniquely identifies this application. 13 | ; Do not use the same AppId value in installers for other applications. 14 | ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 15 | AppId={{6B71161F-F9FB-4A47-B95F-3A044F1EB42F} 16 | AppName={#MyAppName} 17 | AppVersion={#MyAppVersion} 18 | AppVerName={#MyAppName} {#MyAppVersion} (32-bit) 19 | AppPublisher={#MyAppPublisher} 20 | AppPublisherURL={#MyAppURL} 21 | AppSupportURL={#MyAppURL} 22 | AppUpdatesURL={#MyAppURL} 23 | ;ArchitecturesAllowed=x86 24 | ;ArchitecturesInstallIn64BitMode=x64 25 | UsePreviousAppDir=no 26 | DefaultDirName={commonpf32}\{#MyAppName} 27 | DisableDirPage=yes 28 | DisableWelcomePage=no 29 | DefaultGroupName={#MyAppName} 30 | AllowNoIcons=no 31 | DisableProgramGroupPage=no 32 | LicenseFile={#MyAppFileName}\LICENSE.txt 33 | InfoBeforeFile={#MyAppFileName}\README.txt 34 | OutputDir=.\ 35 | OutputBaseFilename={#MyAppFileName} 36 | Compression=lzma 37 | SolidCompression=yes 38 | ChangesEnvironment=yes 39 | ;SignTool=sign_installer.sh 40 | 41 | [Languages] 42 | Name: "english"; MessagesFile: "compiler:Default.isl" 43 | 44 | [Files] 45 | Source: "{#MyAppFileName}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 46 | ; NOTE: Don't use "Flags: ignoreversion" on any shared system files 47 | 48 | [Icons] 49 | Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 50 | Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" 51 | 52 | [Run] 53 | Filename: "{app}\doc\ffmpeg.html"; Description: "View the documentation"; Flags: postinstall shellexec skipifsilent unchecked 54 | 55 | [Registry] 56 | Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{commonpf32}\FFmpeg\bin;{olddata}"; Check: NeedsAddPath(ExpandConstant('{commonpf32}\FFmpeg\bin')) 57 | 58 | [Code] 59 | function NeedsAddPath(Param: string): boolean; 60 | var 61 | OrigPath: string; 62 | begin 63 | if not RegQueryStringValue(HKEY_LOCAL_MACHINE, 64 | 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 65 | 'Path', OrigPath) 66 | then begin 67 | Result := True; 68 | exit; 69 | end; 70 | // look for the path with leading and trailing semicolon 71 | // Pos() returns 0 if not found 72 | Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0; 73 | end; 74 | -------------------------------------------------------------------------------- /MS_Windows_Installer/FFmpeg_Installer_TEMPLATE.iss: -------------------------------------------------------------------------------- 1 | ; Script generated by the Inno Setup Script Wizard. 2 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 3 | 4 | #define MyAppName "FFmpeg" 5 | #define MyAppVersion "[FFMPEG_VER]" 6 | #define MyAppPublisher "Daniel Bair" 7 | #define MyAppURL "https://github.com/sillsdev/aeneas-installer" 8 | #define MyAppExeName "ff-prompt.bat" 9 | #define MyAppFileName "ffmpeg-[FFMPEG_VER]-win32-static" 10 | 11 | [Setup] 12 | ; NOTE: The value of AppId uniquely identifies this application. 13 | ; Do not use the same AppId value in installers for other applications. 14 | ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 15 | AppId={{6B71161F-F9FB-4A47-B95F-3A044F1EB42F} 16 | AppName={#MyAppName} 17 | AppVersion={#MyAppVersion} 18 | AppVerName={#MyAppName} {#MyAppVersion} (32-bit) 19 | AppPublisher={#MyAppPublisher} 20 | AppPublisherURL={#MyAppURL} 21 | AppSupportURL={#MyAppURL} 22 | AppUpdatesURL={#MyAppURL} 23 | ;ArchitecturesAllowed=x86 24 | ;ArchitecturesInstallIn64BitMode=x64 25 | UsePreviousAppDir=no 26 | DefaultDirName={commonpf32}\{#MyAppName} 27 | DisableDirPage=yes 28 | DisableWelcomePage=no 29 | DefaultGroupName={#MyAppName} 30 | AllowNoIcons=no 31 | DisableProgramGroupPage=no 32 | LicenseFile={#MyAppFileName}\LICENSE.txt 33 | InfoBeforeFile={#MyAppFileName}\README.txt 34 | OutputDir=.\ 35 | OutputBaseFilename={#MyAppFileName} 36 | Compression=lzma 37 | SolidCompression=yes 38 | ChangesEnvironment=yes 39 | ;SignTool=sign_installer.sh 40 | 41 | [Languages] 42 | Name: "english"; MessagesFile: "compiler:Default.isl" 43 | 44 | [Files] 45 | Source: "{#MyAppFileName}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 46 | ; NOTE: Don't use "Flags: ignoreversion" on any shared system files 47 | 48 | [Icons] 49 | Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 50 | Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" 51 | 52 | [Run] 53 | Filename: "{app}\doc\ffmpeg.html"; Description: "View the documentation"; Flags: postinstall shellexec skipifsilent unchecked 54 | 55 | [Registry] 56 | Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{commonpf32}\FFmpeg\bin;{olddata}"; Check: NeedsAddPath(ExpandConstant('{commonpf32}\FFmpeg\bin')) 57 | 58 | [Code] 59 | function NeedsAddPath(Param: string): boolean; 60 | var 61 | OrigPath: string; 62 | begin 63 | if not RegQueryStringValue(HKEY_LOCAL_MACHINE, 64 | 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 65 | 'Path', OrigPath) 66 | then begin 67 | Result := True; 68 | exit; 69 | end; 70 | // look for the path with leading and trailing semicolon 71 | // Pos() returns 0 if not found 72 | Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0; 73 | end; 74 | -------------------------------------------------------------------------------- /MS_Windows_Installer/LICENSE.txt: -------------------------------------------------------------------------------- 1 | aeneas is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. . For more information on this, and how to apply and follow the GNU AGPL, see . 2 | 3 | -------------------------------------------------------------------- 4 | 5 | eSpeak-NG is licensed under the GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. . For more information on this, and how to apply and follow the GNU GPLv3, see . 6 | 7 | -------------------------------------------------------------------- 8 | 9 | FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later. However, FFmpeg incorporates several optional parts and optimizations that are covered by the GNU General Public License (GPL) version 2 or later. Copyright (C) 2007 Free Software Foundation, Inc. . For more information on this, and how to apply and follow the GNU GPLv3, see . 10 | 11 | -------------------------------------------------------------------- 12 | 13 | Python is licensed under the PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2, Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Python Software Foundation; All Rights Reserved. For more information on this, and how to apply and follow the PSFLv2, see https://www.python.org/download/releases/2.7/license/ 14 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/FFmpeg_Installer.iss: -------------------------------------------------------------------------------- 1 | ; Script generated by the Inno Setup Script Wizard. 2 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 3 | 4 | #define MyAppName "FFmpeg" 5 | #define MyAppVersion "6.0" 6 | #define MyAppPublisher "Daniel Bair" 7 | #define MyAppURL "https://github.com/sillsdev/aeneas-installer" 8 | #define MyAppExeName "ff-prompt.bat" 9 | #define MyAppFileName "ffmpeg-6.0-win64-static" 10 | 11 | [Setup] 12 | ; NOTE: The value of AppId uniquely identifies this application. 13 | ; Do not use the same AppId value in installers for other applications. 14 | ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 15 | AppId={{F3EDA0E9-6DA3-4B46-818E-0C07AB675A8A} 16 | AppName={#MyAppName} 17 | AppVersion={#MyAppVersion} 18 | AppVerName={#MyAppName} {#MyAppVersion} (64-bit) 19 | AppPublisher={#MyAppPublisher} 20 | AppPublisherURL={#MyAppURL} 21 | AppSupportURL={#MyAppURL} 22 | AppUpdatesURL={#MyAppURL} 23 | ArchitecturesAllowed=x64 24 | ArchitecturesInstallIn64BitMode=x64 25 | UsePreviousAppDir=no 26 | DefaultDirName={commonpf64}\{#MyAppName} 27 | DisableDirPage=yes 28 | DisableWelcomePage=no 29 | DefaultGroupName={#MyAppName} 30 | AllowNoIcons=no 31 | DisableProgramGroupPage=no 32 | LicenseFile={#MyAppFileName}\LICENSE 33 | InfoBeforeFile={#MyAppFileName}\README.txt 34 | OutputDir=.\ 35 | OutputBaseFilename={#MyAppFileName} 36 | Compression=lzma 37 | SolidCompression=yes 38 | ChangesEnvironment=yes 39 | ;SignTool=sign_installer.sh 40 | 41 | [Languages] 42 | Name: "english"; MessagesFile: "compiler:Default.isl" 43 | 44 | [Files] 45 | Source: "{#MyAppFileName}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 46 | ; NOTE: Don't use "Flags: ignoreversion" on any shared system files 47 | 48 | [Icons] 49 | Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 50 | Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" 51 | 52 | [Run] 53 | Filename: "{app}\doc\ffmpeg.html"; Description: "View the documentation"; Flags: postinstall shellexec skipifsilent unchecked 54 | 55 | [Registry] 56 | Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{commonpf64}\FFmpeg\bin;{olddata}"; Check: NeedsAddPath(ExpandConstant('{commonpf64}\FFmpeg\bin')) 57 | 58 | [Code] 59 | function NeedsAddPath(Param: string): boolean; 60 | var 61 | OrigPath: string; 62 | begin 63 | if not RegQueryStringValue(HKEY_LOCAL_MACHINE, 64 | 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 65 | 'Path', OrigPath) 66 | then begin 67 | Result := True; 68 | exit; 69 | end; 70 | // look for the path with leading and trailing semicolon 71 | // Pos() returns 0 if not found 72 | Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0; 73 | end; 74 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/FFmpeg_Installer_TEMPLATE.iss: -------------------------------------------------------------------------------- 1 | ; Script generated by the Inno Setup Script Wizard. 2 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 3 | 4 | #define MyAppName "FFmpeg" 5 | #define MyAppVersion "[FFMPEG_VER]" 6 | #define MyAppPublisher "Daniel Bair" 7 | #define MyAppURL "https://github.com/sillsdev/aeneas-installer" 8 | #define MyAppExeName "ff-prompt.bat" 9 | #define MyAppFileName "ffmpeg-[FFMPEG_VER]-win64-static" 10 | 11 | [Setup] 12 | ; NOTE: The value of AppId uniquely identifies this application. 13 | ; Do not use the same AppId value in installers for other applications. 14 | ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 15 | AppId={{F3EDA0E9-6DA3-4B46-818E-0C07AB675A8A} 16 | AppName={#MyAppName} 17 | AppVersion={#MyAppVersion} 18 | AppVerName={#MyAppName} {#MyAppVersion} (64-bit) 19 | AppPublisher={#MyAppPublisher} 20 | AppPublisherURL={#MyAppURL} 21 | AppSupportURL={#MyAppURL} 22 | AppUpdatesURL={#MyAppURL} 23 | ArchitecturesAllowed=x64 24 | ArchitecturesInstallIn64BitMode=x64 25 | UsePreviousAppDir=no 26 | DefaultDirName={commonpf64}\{#MyAppName} 27 | DisableDirPage=yes 28 | DisableWelcomePage=no 29 | DefaultGroupName={#MyAppName} 30 | AllowNoIcons=no 31 | DisableProgramGroupPage=no 32 | LicenseFile={#MyAppFileName}\LICENSE.txt 33 | InfoBeforeFile={#MyAppFileName}\README.txt 34 | OutputDir=.\ 35 | OutputBaseFilename={#MyAppFileName} 36 | Compression=lzma 37 | SolidCompression=yes 38 | ChangesEnvironment=yes 39 | ;SignTool=sign_installer.sh 40 | 41 | [Languages] 42 | Name: "english"; MessagesFile: "compiler:Default.isl" 43 | 44 | [Files] 45 | Source: "{#MyAppFileName}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 46 | ; NOTE: Don't use "Flags: ignoreversion" on any shared system files 47 | 48 | [Icons] 49 | Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 50 | Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" 51 | 52 | [Run] 53 | Filename: "{app}\doc\ffmpeg.html"; Description: "View the documentation"; Flags: postinstall shellexec skipifsilent unchecked 54 | 55 | [Registry] 56 | Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{commonpf64}\FFmpeg\bin;{olddata}"; Check: NeedsAddPath(ExpandConstant('{commonpf64}\FFmpeg\bin')) 57 | 58 | [Code] 59 | function NeedsAddPath(Param: string): boolean; 60 | var 61 | OrigPath: string; 62 | begin 63 | if not RegQueryStringValue(HKEY_LOCAL_MACHINE, 64 | 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 65 | 'Path', OrigPath) 66 | then begin 67 | Result := True; 68 | exit; 69 | end; 70 | // look for the path with leading and trailing semicolon 71 | // Pos() returns 0 if not found 72 | Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0; 73 | end; 74 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/LICENSE.txt: -------------------------------------------------------------------------------- 1 | aeneas is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. . For more information on this, and how to apply and follow the GNU AGPL, see . 2 | 3 | -------------------------------------------------------------------- 4 | 5 | eSpeak-NG is licensed under the GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. . For more information on this, and how to apply and follow the GNU GPLv3, see . 6 | 7 | -------------------------------------------------------------------- 8 | 9 | FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later. However, FFmpeg incorporates several optional parts and optimizations that are covered by the GNU General Public License (GPL) version 2 or later. Copyright (C) 2007 Free Software Foundation, Inc. . For more information on this, and how to apply and follow the GNU GPLv3, see . 10 | 11 | -------------------------------------------------------------------- 12 | 13 | Python is licensed under the PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2, Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Python Software Foundation; All Rights Reserved. For more information on this, and how to apply and follow the PSFLv2, see https://www.python.org/download/releases/2.7/license/ 14 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/README.txt: -------------------------------------------------------------------------------- 1 | This setup wizard was developed by Daniel Bair and is distributed by SIL International, and the source code is available for download at: https://github.com/sillsdev/aeneas-installer 2 | 3 | -------------------------------------------------------------------- 4 | 5 | aeneas is developed by Alberto Pettarin, ReadBeyond, and the source code is available for download at http://www.readbeyond.it/aeneas/ 6 | 7 | -------------------------------------------------------------------- 8 | 9 | eSpeak-ng is a text-to-speech engine, developed by Reece H. Dunn, and is available for download at https://github.com/espeak-ng/espeak-ng 10 | 11 | -------------------------------------------------------------------- 12 | 13 | FFmpeg is a video and audio converter, developed by Fabrice Bellard, and is available for download at http://www.ffmpeg.org/ 14 | 15 | -------------------------------------------------------------------- 16 | 17 | Python is a programming language, developed by the Python Software Foundation, and is available for download at http://www.python.org/ 18 | 19 | -------------------------------------------------------------------- 20 | 21 | Python BeautifulSoup sits atop an HTML or XML parser, providing Pythonic idioms for iterating, searching, and modifying the parse tree, and is available for download at https://www.crummy.com/software/BeautifulSoup/ 22 | 23 | -------------------------------------------------------------------- 24 | 25 | Python lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries, which provides safe and convenient access to these libraries using the ElementTree API, and is available for download at http://lxml.de/ 26 | 27 | -------------------------------------------------------------------- 28 | 29 | Python NumPy is a general-purpose array-processing package designed to efficiently manipulate large multi-dimensional arrays of arbitrary records without sacrificing too much speed for small multi-dimensional arrays, and is available for download at http://www.numpy.org/ 30 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/ReadMe.md: -------------------------------------------------------------------------------- 1 | This provides a simple installer for [Aeneas](https://github.com/readbeyond/aeneas) for MS Windows 8 and up. 2 | 3 | 1. To build this installer for MS Windows first download (and extract) or clone this repository. 4 | 2. Then open Command Prompt and _cd_ to _MS\_Windows\_Installer_ 5 | 3. Next run `build_setup.bat` which will install the necessary applications for building. 6 | 4. Then run `build_packages.bat` which will then build all the individual packages. 7 | 5. Finally run `build_installer.bat` which will then build the main installer. 8 | 9 | NOTE: This will build an installer for 64-bit Windows setups. 10 | 11 | 12 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/aeneas-patches/patch-py38-utf8.diff: -------------------------------------------------------------------------------- 1 | diff --git a/aeneas/diagnostics.py b/aeneas/diagnostics.py 2 | index 7d9e98a1fbe287c0286fdab504bb2e26a691b2d2..6f4e291f115ecba3f9db810e92f083deaafc1542 100644 3 | --- a/aeneas/diagnostics.py 4 | +++ b/aeneas/diagnostics.py 5 | @@ -56,9 +56,9 @@ def check_shell_encoding(cls): 6 | """ 7 | is_in_utf8 = True 8 | is_out_utf8 = True 9 | - if sys.stdin.encoding not in ["UTF-8", "UTF8"]: 10 | + if sys.stdin.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 11 | is_in_utf8 = False 12 | - if sys.stdout.encoding not in ["UTF-8", "UTF8"]: 13 | + if sys.stdout.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 14 | is_out_utf8 = False 15 | if (is_in_utf8) and (is_out_utf8): 16 | gf.print_success(u"shell encoding OK") 17 | 18 | diff --git a/aeneas/tools/abstract_cli_program.py b/aeneas/tools/abstract_cli_program.py 19 | index be5bb2fa8bfda1de88e4ed5a418aab2c00d625f7..b5b9faddc255a7e46e0316864766fec09f292b5b 100644 20 | --- a/aeneas/tools/abstract_cli_program.py 21 | +++ b/aeneas/tools/abstract_cli_program.py 22 | @@ -295,10 +295,10 @@ def run(self, arguments, show_help=True): 23 | if self.use_sys: 24 | # check that sys.stdin.encoding and sys.stdout.encoding are set to utf-8 25 | if not gf.FROZEN: 26 | - if sys.stdin.encoding not in ["UTF-8", "UTF8"]: 27 | + if sys.stdin.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 28 | self.print_warning(u"The default input encoding is not UTF-8.") 29 | self.print_warning(u"You might want to set 'PYTHONIOENCODING=UTF-8' in your shell.") 30 | - if sys.stdout.encoding not in ["UTF-8", "UTF8"]: 31 | + if sys.stdout.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 32 | self.print_warning(u"The default output encoding is not UTF-8.") 33 | self.print_warning(u"You might want to set 'PYTHONIOENCODING=UTF-8' in your shell.") 34 | # decode using sys.stdin.encoding 35 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/aeneas_check_setup.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 3 | :WIN32PATH 4 | set PF32=C:\Program Files 5 | (call ) 6 | GOTO ENDIF 7 | :WIN64PATH 8 | set PF64=C:\Program Files 9 | set PF32=C:\Program Files (x86) 10 | (call ) 11 | :ENDIF 12 | set PATH=%PF64%\Python39\;%PF64%\Python39\Scripts;%PF64%\eSpeak NG;%PF64%\FFmpeg\bin;%PATH% 13 | set PYTHONIOENCODING=UTF-8 14 | set AENEAS_USE_ESPEAKNG=True 15 | python -m aeneas.diagnostics 16 | C:\Windows\System32\ping 127.0.0.1 -n 5 -w 1000 > NUL 17 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/build_aeneas_package.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | IF /i {%2}=={ECHO} ECHO ON&SHIFT 4 | 5 | VERIFY OTHER 2>nul 6 | SETLOCAL ENABLEEXTENSIONS 7 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 8 | 9 | set CURDIR=%~dp0 10 | cd %CURDIR% 11 | echo Running %~n0 from %CURDIR% 12 | 13 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 14 | set PF32=C:\Program Files 15 | GOTO PFENDIF 16 | :WIN64PF 17 | set PF64=C:\Program Files 18 | set PF32=C:\Program Files (x86) 19 | :PFENDIF 20 | 21 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 22 | set PFSZ=C:\Program Files 23 | GOTO SEVENENDIF 24 | :WIN64SEVEN 25 | set PFSZ=C:\Program Files (x86) 26 | :SEVENENDIF 27 | 28 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 29 | set INNOPATH=%PF32%\Inno Setup 5 30 | GOTO INNOENDIF 31 | :INNOSIX 32 | set INNOPATH=%PF32%\Inno Setup 6 33 | :INNOENDIF 34 | 35 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF64%\FFmpeg\bin;%PF64%\eSpeak NG;%PF64%\Python39;%PF64%\Python39\Scripts;%PF64%\Git;%PF64%\Git\usr\bin;%PF64%\Git\mingw64\bin;%PATH% 36 | 37 | curl.exe --version 1>nul 2>nul 38 | if %ERRORLEVEL%==1 ( 39 | set CURL=call curl-psh.bat -L 40 | ) else ( 41 | set CURL=curl.exe -L 42 | ) 43 | 44 | mkdir python-wheels 1>nul 2>nul 45 | 46 | rmdir /q/s %USERPROFILE%\AppData\Roaming\Python\Python39\site-packages 47 | set PATH=%USERPROFILE%\AppData\Roaming\Python\Python39\Scripts;%PATH% 48 | python.exe -m ensurepip 49 | python -m pip install -U pip setuptools wheel 50 | 51 | DEL /Q *.whl 1>nul 2>nul 52 | DEL /Q python-wheels\*.whl 1>nul 2>nul 53 | 54 | python -m pip install -U numpy 55 | python -m pip install -U lxml beautifulsoup4 soupsieve 56 | 57 | REM python -m pip wheel pip 58 | python -m pip wheel numpy 59 | python -m pip wheel lxml beautifulsoup4 soupsieve 60 | 61 | python -m pip download aeneas==1.7.3.0 --no-cache-dir 62 | 63 | IF EXIST "%cd%\aeneas-1.7.3.0.tar.gz" GOTO ENDGET 64 | echo Downloading aeneas... 65 | %CURL% https://github.com/readbeyond/aeneas/archive/v1.7.3.tar.gz -o aeneas-1.7.3.0.tar.gz 66 | IF %ERRORLEVEL%==0 GOTO ENDIF 67 | echo Could not download aeneas... 68 | START https://github.com/readbeyond/aeneas/archive 69 | :ENDIF 70 | :ENDGET 71 | 72 | RMDIR /S /Q aeneas-1.7.3.0 73 | "7z.exe" e aeneas-1.7.3.0.tar.gz -aoa 74 | "7z.exe" x aeneas-1.7.3.0.tar -aoa 75 | 76 | IF EXIST "%cd%\aeneas-1.7.3" ( 77 | move /y aeneas-1.7.3 aeneas-1.7.3.0 78 | ) 79 | 80 | cd aeneas-1.7.3.0 81 | echo "Checking for patch.exe" 82 | 2>nul patch.exe --version 83 | if %ERRORLEVEL%==1 ( 84 | python -m pip install -U patch 85 | python.exe -m patch -v -p 1 --debug ..\aeneas-patches\patch-espeak-ng.diff 86 | python.exe -m patch -v -p 1 --debug ..\aeneas-patches\patch-py38-utf8.diff 87 | ) ELSE ( 88 | patch.exe -p1 < ..\aeneas-patches\patch-espeak-ng.diff 89 | patch.exe -p1 < ..\aeneas-patches\patch-py38-utf8.diff 90 | ) 91 | move /y aeneas\cew\speak_lib.h thirdparty\speak_lib.h 92 | copy /b/v/y ..\libespeak-ng-dll2lib-x64\libespeak-ng.lib thirdparty\libespeak-ng-x64.lib 93 | copy /b/v/y ..\libespeak-ng-dll2lib-x86\libespeak-ng.lib thirdparty\libespeak-ng-x86.lib 94 | set AENEAS_USE_ESPEAKNG=True 95 | python.exe setup.py build_ext --inplace 96 | python.exe setup.py bdist_wheel 97 | echo. 98 | set PYTHONIOENCODING=UTF-8 99 | python.exe -m aeneas.diagnostics 100 | python.exe -m aeneas.tools.execute_task --version 101 | python.exe -m aeneas.tools.synthesize_text list "This is a test|with two lines" eng -v C:\Windows\Temp\test.wav 102 | echo. 103 | copy /b/v/y dist\aeneas-*.whl ..\ 104 | cd %CURDIR% 105 | 106 | FOR /F "tokens=* USEBACKQ" %%F IN (`dir aeneas-*.whl /b`) DO (SET aeneas_file=%%F) 107 | IF %ERRORLEVEL%==0 ( 108 | python -m pip install -U pip %aeneas_file% 109 | copy_espeak_aeneas.bat 110 | RMDIR /S /Q aeneas-1.7.3.0 111 | DEL /Q aeneas-1.7.3.0.tar 112 | DEL /Q aeneas-1.7.3.0.tar.gz 113 | MOVE /Y *.whl "%cd%\python-wheels" 114 | ) 115 | 116 | ENDLOCAL 117 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/build_espeak_package.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | IF /i {%2}=={ECHO} ECHO ON&SHIFT 4 | 5 | VERIFY OTHER 2>nul 6 | SETLOCAL ENABLEEXTENSIONS 7 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 8 | 9 | set CURDIR=%~dp0 10 | cd %CURDIR% 11 | echo Running %~n0 from %CURDIR% 12 | 13 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 14 | set PF32=C:\Program Files 15 | GOTO PFENDIF 16 | :WIN64PF 17 | set PF64=C:\Program Files 18 | set PF32=C:\Program Files (x86) 19 | :PFENDIF 20 | 21 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 22 | set PFSZ=C:\Program Files 23 | GOTO SEVENENDIF 24 | :WIN64SEVEN 25 | set PFSZ=C:\Program Files (x86) 26 | :SEVENENDIF 27 | 28 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 29 | set INNOPATH=%PF32%\Inno Setup 5 30 | GOTO INNOENDIF 31 | :INNOSIX 32 | set INNOPATH=%PF32%\Inno Setup 6 33 | :INNOENDIF 34 | 35 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF64%\FFmpeg\bin;%PF64%\eSpeak NG;%PF64%\Python39;%PF64%\Python39\Scripts;%PF64%\Git;%PF64%\Git\usr\bin;%PF64%\Git\mingw64\bin;%PATH% 36 | 37 | curl.exe --version 1>nul 2>nul 38 | if %ERRORLEVEL%==1 ( 39 | set CURL=call curl-psh.bat -L 40 | ) else ( 41 | set CURL=curl.exe -L 42 | ) 43 | 44 | mkdir aeneas-win-installer-packages 1>nul 2>nul 45 | 46 | IF EXIST "%cd%\aeneas-win-installer-packages\espeak-ng-1.51-x64.msi" GOTO ENDGET 47 | echo Downloading eSpeak-ng... 48 | %CURL% https://github.com/espeak-ng/espeak-ng/releases/download/1.51/espeak-ng-X64.msi -o espeak-ng-1.51-x64.msi 49 | IF %ERRORLEVEL%==0 GOTO ENDIF 50 | echo Could not download eSpeak-ng... 51 | START https://github.com/espeak-ng/espeak-ng/releases 52 | :ENDIF 53 | :ENDGET 54 | IF EXIST "%cd%\espeak-ng-1.51-x64.msi" ( 55 | echo Installing eSpeak-ng... 56 | "%cd%\espeak-ng-1.51-x64.msi" /PASSIVE 57 | copy /b/v/y "%cd%\install_espeak-ng_extra.bat" "%temp%\install_espeak-ng_extra.bat" 58 | call "%temp%\install_espeak-ng_extra.bat" 59 | move /y "%cd%\espeak-ng-1.51-x64.msi" "%cd%\aeneas-win-installer-packages" 60 | ) 61 | 62 | ENDLOCAL 63 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/build_ffmpeg_package.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | IF /i {%2}=={ECHO} ECHO ON&SHIFT 4 | 5 | VERIFY OTHER 2>nul 6 | SETLOCAL ENABLEEXTENSIONS 7 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 8 | 9 | set CURDIR=%~dp0 10 | cd %CURDIR% 11 | echo Running %~n0 from %CURDIR% 12 | 13 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 14 | set PF32=C:\Program Files 15 | GOTO PFENDIF 16 | :WIN64PF 17 | set PF64=C:\Program Files 18 | set PF32=C:\Program Files (x86) 19 | :PFENDIF 20 | 21 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 22 | set PFSZ=C:\Program Files 23 | GOTO SEVENENDIF 24 | :WIN64SEVEN 25 | set PFSZ=C:\Program Files (x86) 26 | :SEVENENDIF 27 | 28 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 29 | set INNOPATH=%PF32%\Inno Setup 5 30 | GOTO INNOENDIF 31 | :INNOSIX 32 | set INNOPATH=%PF32%\Inno Setup 6 33 | :INNOENDIF 34 | 35 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF64%\FFmpeg\bin;%PF64%\eSpeak NG;%PF64%\Python39;%PF64%\Python39\Scripts;%PF64%\Git;%PF64%\Git\usr\bin;%PF64%\Git\mingw64\bin;%PATH% 36 | 37 | curl.exe --version 1>nul 2>nul 38 | if %ERRORLEVEL%==1 ( 39 | set CURL=call curl-psh.bat -L 40 | ) else ( 41 | set CURL=curl.exe -L 42 | ) 43 | 44 | mkdir aeneas-win-installer-packages 1>nul 2>nul 45 | cd %CURDIR% 46 | 47 | IF EXIST "%cd%\aeneas-win-installer-packages\ffmpeg-6.0-win64-static.exe" GOTO ENDGET 48 | echo Downloading FFmpeg... 49 | %CURL% https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-6.0-essentials_build.7z -o ffmpeg-6.0-win64-static.7z 50 | IF %ERRORLEVEL%==0 GOTO ENDIF 51 | echo Could not download FFmpeg... 52 | START https://www.gyan.dev/ffmpeg/builds/#release-builds 53 | :ENDIF 54 | rmdir /q/s ffmpeg-6.0 1>nul 2>nul 55 | rmdir /q/s ffmpeg-6.0-win64-static 1>nul 2>nul 56 | "\Program Files\7-Zip\7z.exe" x ffmpeg-6.0-win64-static.7z -aoa 57 | move /y ffmpeg-6.0-essentials_build ffmpeg-6.0-win64-static 58 | copy /b/v/y ff-prompt.bat ffmpeg-6.0-win64-static 59 | "ISCC.exe" FFmpeg_Installer.iss 60 | :ENDGET 61 | IF EXIST "%cd%\ffmpeg-6.0-win64-static.exe" ( 62 | echo Installing FFmpeg... 63 | "%cd%\ffmpeg-6.0-win64-static.exe" /SILENT /ALLUSERS 64 | move /y "%cd%\ffmpeg-6.0-win64-static.exe" "%cd%\aeneas-win-installer-packages" 65 | del /q ffmpeg-6.0-win64-static.zip 1>nul 2>nul 66 | rmdir /q/s ffmpeg-6.0-win64-static 1>nul 2>nul 67 | rmdir /q/s ffmpeg-6.0 1>nul 2>nul 68 | ) 69 | 70 | ENDLOCAL 71 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/build_packages.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | 4 | VERIFY OTHER 2>nul 5 | SETLOCAL ENABLEEXTENSIONS 6 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 7 | 8 | set CURDIR=%~dp0 9 | cd %CURDIR% 10 | echo Running %~n0 from %CURDIR% 11 | 12 | call "%cd%\build_espeak_package.bat" %1 13 | call "%cd%\build_ffmpeg_package.bat" %1 14 | call "%cd%\build_python_package.bat" %1 15 | call "%cd%\build_aeneas_package.bat" %1 16 | 17 | echo Now run build_installer.bat 18 | 19 | ENDLOCAL 20 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/build_python_package.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | IF /i {%2}=={ECHO} ECHO ON&SHIFT 4 | 5 | VERIFY OTHER 2>nul 6 | SETLOCAL ENABLEEXTENSIONS 7 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 8 | 9 | set CURDIR=%~dp0 10 | cd %CURDIR% 11 | echo Running %~n0 from %CURDIR% 12 | 13 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 14 | set PF32=C:\Program Files 15 | GOTO PFENDIF 16 | :WIN64PF 17 | set PF64=C:\Program Files 18 | set PF32=C:\Program Files (x86) 19 | :PFENDIF 20 | 21 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 22 | set PFSZ=C:\Program Files 23 | GOTO SEVENENDIF 24 | :WIN64SEVEN 25 | set PFSZ=C:\Program Files (x86) 26 | :SEVENENDIF 27 | 28 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 29 | set INNOPATH=%PF32%\Inno Setup 5 30 | GOTO INNOENDIF 31 | :INNOSIX 32 | set INNOPATH=%PF32%\Inno Setup 6 33 | :INNOENDIF 34 | 35 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF64%\FFmpeg\bin;%PF64%\eSpeak NG;%PF64%\Python39;%PF64%\Python39\Scripts;%PF64%\Git;%PF64%\Git\usr\bin;%PF64%\Git\mingw64\bin;%PATH% 36 | 37 | curl.exe --version 1>nul 2>nul 38 | if %ERRORLEVEL%==1 ( 39 | set CURL=call curl-psh.bat -L 40 | ) else ( 41 | set CURL=curl.exe -L 42 | ) 43 | 44 | mkdir aeneas-win-installer-packages 1>nul 2>nul 45 | 46 | IF EXIST "%cd%\aeneas-win-installer-packages\python-3.9.13-amd64.exe" GOTO ENDGET 47 | echo Downloading Python 3.9.13... 48 | %CURL% https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe -o python-3.9.13-amd64.exe 49 | IF %ERRORLEVEL%==0 GOTO ENDIF 50 | echo Could not download Python... 51 | START https://www.python.org/downloads/release/python-385/ 52 | :ENDIF 53 | :ENDGET 54 | IF EXIST "%cd%\python-3.9.13-amd64.exe" ( 55 | echo Installing Python 3.9.13... 56 | "%cd%\python-3.9.13-amd64.exe" /passive InstallAllUsers=1 PrependPath=1 TargetDir="%PF64%"\Python39 57 | move /y "%cd%\python-3.9.13-amd64.exe" "%cd%\aeneas-win-installer-packages" 58 | ) 59 | 60 | ENDLOCAL 61 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/build_setup.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | 4 | VERIFY OTHER 2>nul 5 | SETLOCAL ENABLEEXTENSIONS 6 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 7 | 8 | set CURDIR=%~dp0 9 | cd %CURDIR% 10 | echo Running %~n0 from %CURDIR% 11 | 12 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 13 | set PF32=C:\Program Files 14 | GOTO PFENDIF 15 | :WIN64PF 16 | set PF64=C:\Program Files 17 | set PF32=C:\Program Files (x86) 18 | :PFENDIF 19 | 20 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 21 | set PFSZ=C:\Program Files 22 | GOTO SEVENENDIF 23 | :WIN64SEVEN 24 | set PFSZ=C:\Program Files (x86) 25 | :SEVENENDIF 26 | 27 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 28 | set INNOPATH=%PF32%\Inno Setup 5 29 | GOTO INNOENDIF 30 | :INNOSIX 31 | set INNOPATH=%PF32%\Inno Setup 6 32 | :INNOENDIF 33 | 34 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF64%\FFmpeg\bin;%PF64%\eSpeak NG;%PF64%\Python39;%PF64%\Python39\Scripts;%PF64%\Git;%PF64%\Git\usr\bin;%PF64%\Git\mingw64\bin;%PATH% 35 | 36 | curl.exe --version 1>nul 2>nul 37 | if %ERRORLEVEL%==1 ( 38 | set CURL=call curl-psh.bat -L 39 | ) else ( 40 | set CURL=curl.exe -L 41 | ) 42 | 43 | IF NOT EXIST "%cd%\Git-2.41.0-64-bit.exe" ( 44 | echo Downloading Git for Windows... 45 | %CURL% "https://github.com/git-for-windows/git/releases/download/v2.41.0.windows.1/Git-2.41.0-64-bit.exe" -o "%cd%\Git-2.41.0-64-bit.exe" 46 | ) 47 | IF EXIST "%cd%\Git-2.41.0-64-bit.exe" ( 48 | echo Installing Git for Windows... 49 | Git-2.41.0-64-bit.exe 50 | ) ELSE ( 51 | echo Could not find Git for Windows... 52 | START https://git-scm.com/download/win 53 | ) 54 | 55 | curl.exe --version 1>nul 2>nul 56 | if %ERRORLEVEL%==1 ( 57 | set CURL=call curl-psh.bat -L 58 | ) else ( 59 | set CURL=curl.exe -L 60 | ) 61 | 62 | IF NOT EXIST "%cd%\7z2301-x64.exe" ( 63 | echo Downloading 7-zip... 64 | %CURL% "https://7-zip.org/a/7z2301-x64.exe" -o "%cd%\7z2301-x64.exe" 65 | ) 66 | IF EXIST "%cd%\7z1900-x64.exe" ( 67 | echo Installing 7-zip... 68 | 7z1900-x64.exe 69 | ) ELSE ( 70 | echo Could not find 7-zip... 71 | START http://www.7-zip.org/ 72 | ) 73 | 74 | IF NOT EXIST "%cd%\innosetup-6.2.2.exe" ( 75 | echo Downloading Inno Setup... 76 | %CURL% "https://files.jrsoftware.org/is/6/innosetup-6.2.2.exe" -o "%cd%\innosetup-6.2.2.exe" 77 | ) 78 | IF EXIST "%cd%\innosetup-6.2.2.exe" ( 79 | echo Installing InnoSetup... 80 | innosetup-6.2.2.exe 81 | ) ELSE ( 82 | echo Could not find InnoSetup... 83 | START http://www.jrsoftware.org/isdl.php 84 | ) 85 | 86 | REM IF NOT EXIST "%cd%\python-3.9.13-amd64.exe" ( 87 | REM echo Downloading Python 3.9.13... 88 | REM %CURL% "https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe" -o "%cd%\python-3.9.13-amd64.exe" 89 | REM ) 90 | REM IF EXIST "%cd%\python-3.9.13-amd64.exe" ( 91 | REM echo Installing Python 3.9.13... 92 | REM python-3.9.13-amd64.exe /passive InstallAllUsers=1 PrependPath=1 TargetDir="%PF64%"\Python39 93 | REM ) ELSE ( 94 | REM echo Could not find Python 3.9.13... 95 | REM START https://www.python.org/downloads/release/python-385/ 96 | REM ) 97 | 98 | REM IF NOT EXIST "%cd%\dotNetFx35setup.exe" ( 99 | REM echo Downloading Microsoft .NET Framework 3.5... 100 | REM %CURL% "https://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe" -o "%cd%\dotNetFx35setup.exe" 101 | REM ) 102 | REM IF EXIST "%cd%\dotNetFx35setup.exe" ( 103 | REM echo Installing Microsoft .NET Framework 3.5... 104 | REM dotNetFx35setup.exe /SILENT 105 | REM ) ELSE ( 106 | REM echo Could not find Microsoft .NET Framework 3.5... 107 | REM START http://www.microsoft.com/en-us/download/details.aspx?id=21 108 | REM ) 109 | 110 | REM IF NOT EXIST "%cd%\VCForPython27.msi" ( 111 | REM echo Downloading Visual C++ For Python27... 112 | REM %CURL% "https://download.microsoft.com/download/7/9/6/796EF2E4-801B-4FC4-AB28-B59FBF6D907B/VCForPython27.msi" -o "%cd%\VCForPython27.msi" 113 | REM ) 114 | REM IF EXIST "%cd%\VCForPython27.msi" ( 115 | REM echo Installing Visual C++ For Python27... 116 | REM VCForPython27.msi /PASSIVE 117 | REM ) ELSE ( 118 | REM echo Could not find Visual C++ For Python27... 119 | REM START http://www.microsoft.com/en-us/download/details.aspx?id=44266 120 | REM ) 121 | 122 | echo You need to have Microsoft VisualStudio C++ Build Tools installed 123 | START https://visualstudio.microsoft.com/visual-cpp-build-tools/ 124 | 125 | echo Now run build_packages.bat 126 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/clean.bat: -------------------------------------------------------------------------------- 1 | rm -rf numpy-* 2 | git clean -fdx 3 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/clean_up.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | del /q aeneas-win-installer-packages\* 3 | del /q python-wheels\* 4 | rmdir /s /q numpy-* 5 | rmdir /s /q aeneas-* 6 | rmdir /s /q espeak-* 7 | rmdir /s /q ffmpeg-* 8 | rmdir /s /q python-* 9 | del *.tar* 10 | del *.zip 11 | del *.whl 12 | del *.exe 13 | del *.msi 14 | del *.7z 15 | 16 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/copy_espeak_aeneas.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 4 | set PF32=C:\Program Files 5 | (call ) 6 | GOTO WIN32PATH 7 | :WIN64PATH 8 | set PF64=C:\Program Files 9 | set PF32=C:\Program Files (x86) 10 | (call ) 11 | :WIN32PATH 12 | 13 | set PATH=%PF64%\Python39\;%PF64%\Python39\Scripts;%PF64%\eSpeak NG;%PF64%\FFmpeg\bin;%PATH% 14 | 15 | echo Copying espeak-ng.exe to espeak.exe 16 | copy /b/v/y "%PF64%\eSpeak NG\espeak-ng.exe" "%PF64%\eSpeak NG\espeak.exe" 17 | 18 | echo Copying libespeak-ng.dll to %PF64%\Python39\Lib\site-packages\aeneas\cew 19 | copy /b/v/y "%PF64%\eSpeak NG\libespeak-ng.dll" "%PF64%\Python39\Lib\site-packages\aeneas\cew" 20 | copy /b/v/y "%PF64%\eSpeak NG\libespeak-ng.dll" "%UserProfile%\AppData\Roaming\Python\Python39\site-packages\aeneas\cew" 21 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/create_espeak-ng-x64_lib.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | REM xcopy /y C:\Windows\system32\espeak.dll . 3 | dll2lib 64 libespeak-ng.dll "C:\Program Files\eSpeak NG" . -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/create_espeak-ng-x86_lib.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | REM xcopy /y C:\Windows\system32\espeak.dll . 3 | dll2lib 32 libespeak-ng.dll "C:\Program Files (x86)\eSpeak NG" . -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/create_espeak_lib.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | REM xcopy /y C:\Windows\system32\espeak.dll . 3 | dll2lib 32 espeak.dll C:\Windows\system32\ . -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/curl.bat: -------------------------------------------------------------------------------- 1 | echo on 2 | powershell "(new-object System.Net.WebClient).DownloadFile('%2', '%4')" 3 | @echo off 4 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/delete_espeak_aeneas.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 4 | set PF32=C:\Program Files 5 | (call ) 6 | GOTO WIN32PATH 7 | :WIN64PATH 8 | set PF64=C:\Program Files 9 | set PF32=C:\Program Files (x86) 10 | (call ) 11 | :WIN32PATH 12 | 13 | set PATH=%PF64%\Python39\;%PF64%\Python39\Scripts;%PF64%\eSpeak NG;%PF64%\FFmpeg\bin;%PATH% 14 | 15 | echo Deleting espeak.exe from %PF64%\eSpeak NG\ 16 | del /f/q "%PF64%\eSpeak NG\espeak.exe" 17 | 18 | echo Deleting libespeak-ng.dll from %PF64%\Python39\Lib\site-packages\aeneas\cew 19 | del /f/q "%PF64%\Python39\Lib\site-packages\aeneas\cew\libespeak-ng.dll" 20 | del /f/q "%UserProfile%\AppData\Roaming\Python\Python39\site-packages\aeneas\cew\libespeak-ng.dll" -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/dll2lib.bat: -------------------------------------------------------------------------------- 1 | REM Usage: dll2lib [32|64] some-file.dll path-to-dll output-path 2 | REM 3 | REM Generates some-file.lib from some-file.dll, making an intermediate 4 | REM some-file.def from the results of dumpbin /exports some-file.dll. 5 | REM Currently must run without path on DLL. 6 | REM (Fix by removing path when of lib_name for LIBRARY line below?) 7 | REM 8 | REM Requires 'dumpbin' and 'lib' in PATH - run from VS developer prompt. 9 | REM 10 | REM Script inspired by http://stackoverflow.com/questions/9946322/how-to-generate-an-import-library-lib-file-from-a-dll 11 | SETLOCAL 12 | if "%1"=="32" (set machine=x86) else (set machine=x64) 13 | set dll_file=%2 14 | set dll_path=%3 15 | set out_path=%4 16 | cd "%out_path%" 17 | set out_path="%CD%" 18 | set dll_file_no_ext=%dll_file:~0,-4% 19 | set exports_file=%dll_file_no_ext%-exports.txt 20 | set def_file=%dll_file_no_ext%.def 21 | set lib_file=%dll_file_no_ext%.lib 22 | set lib_name=%dll_file_no_ext% 23 | 24 | cd "%dll_path%" 25 | dumpbin /exports %dll_file% > "%out_path%\%exports_file%" 26 | cd "%out_path%" 27 | 28 | echo LIBRARY %lib_name% > %def_file% 29 | echo EXPORTS >> %def_file% 30 | for /f "skip=19 tokens=1,4" %%A in (%exports_file%) do if NOT "%%B" == "" (echo %%B @%%A >> %def_file%) 31 | 32 | lib /def:%def_file% /out:%lib_file% /machine:%machine% 33 | 34 | REM Clean up temporary intermediate files 35 | REM del %exports_file% %def_file% %dll_file_no_ext%.exp -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/eSpeak-NG.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/MS_Windows_64-bit_Installer/eSpeak-NG.reg -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/espeak-exports.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/MS_Windows_64-bit_Installer/espeak-exports.txt -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/espeak-ng.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/MS_Windows_64-bit_Installer/espeak-ng.lib -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/espeak.def: -------------------------------------------------------------------------------- 1 | LIBRARY espeak 2 | EXPORTS 3 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/espeak.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/MS_Windows_64-bit_Installer/espeak.lib -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/ff-prompt.bat: -------------------------------------------------------------------------------- 1 | ECHO OFF 2 | REM FF Prompt 1.1 3 | REM Open a command prompt to run ffmpeg/ffplay/ffprobe 4 | REM Copyright (C) 2013 Kyle Schwarz 5 | 6 | TITLE FF Prompt 7 | 8 | IF NOT EXIST bin\ffmpeg.exe ( 9 | CLS 10 | ECHO bin\ffmpeg.exe could not be found. 11 | GOTO:error 12 | ) 13 | 14 | CD bin || GOTO:error 15 | PROMPT $G 16 | CLS 17 | ffmpeg -version 18 | SET PATH=%CD%;%PATH% 19 | ECHO. 20 | ECHO For help run: ffmpeg -h 21 | ECHO For formats run: ffmpeg -formats ^| more 22 | ECHO For codecs run: ffmpeg -codecs ^| more 23 | ECHO. 24 | ECHO Current directory is now: "%CD%" 25 | ECHO The bin directory has been added to PATH 26 | ECHO. 27 | 28 | CMD /F:ON /Q /K 29 | GOTO:EOF 30 | 31 | :error 32 | ECHO. 33 | ECHO Press any key to exit. 34 | PAUSE >nul 35 | GOTO:EOF 36 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/install_espeak-ng_extra.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | :-------------------------------------- 4 | REM --> Check for permissions 5 | >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 6 | 7 | REM --> If error flag set, we do not have admin. 8 | if '%errorlevel%' NEQ '0' ( 9 | echo Requesting administrative privileges... 10 | goto UACPrompt 11 | ) else ( goto gotAdmin ) 12 | 13 | :UACPrompt 14 | echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 15 | echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 16 | 17 | call "%temp%\getadmin.vbs" 18 | exit /B 19 | 20 | :gotAdmin 21 | if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) 22 | pushd "%CD%" 23 | CD /D "%~dp0" 24 | :-------------------------------------- 25 | 26 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 27 | set PF32=C:\Program Files 28 | (call ) 29 | GOTO WIN32PATH 30 | :WIN64PATH 31 | set PF64=C:\Program Files 32 | set PF32=C:\Program Files (x86) 33 | (call ) 34 | :WIN32PATH 35 | 36 | set PATH=%PF64%\Python39\;%PF64%\Python39\Scripts;%PF64%\eSpeak NG;%PF64%\FFmpeg\bin;%PATH% 37 | 38 | echo Copying espeak-ng.exe to espeak.exe 39 | copy /b/v/y "%PF64%\eSpeak NG\espeak-ng.exe" "%PF64%\eSpeak NG\espeak.exe" 40 | echo Copying espeak-ng.lib to %PF64%\Python39\libs\ 41 | copy /b/v/y "espeak-ng.lib" "%PF64%\Python39\libs\" 42 | echo Copying libespeak-ng.dll to %PF64%\Python39\Lib\site-packages\aeneas\cew 43 | copy /b/v/y "%PF64%\eSpeak NG\libespeak-ng.dll" "%PF64%\Python39\Lib\site-packages\aeneas\cew" 44 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/install_packages.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 4 | set PF32=C:\Program Files 5 | (call ) 6 | GOTO WIN32PATH 7 | :WIN64PATH 8 | set PF64=C:\Program Files 9 | set PF32=C:\Program Files (x86) 10 | (call ) 11 | :WIN32PATH 12 | 13 | set PATH=%PF64%\Python39\;%PF64%\Python39\Scripts;%PF64%\eSpeak NG;%PF64%\FFmpeg\bin;%PATH% 14 | 15 | echo Copying espeak-ng.exe to espeak.exe 16 | copy /b/v/y "%PF64%\eSpeak NG\espeak-ng.exe" "%PF64%\eSpeak NG\espeak.exe" 17 | echo Copying espeak-ng.lib to %PF64%\Python39\libs\ 18 | copy /b/v/y "espeak-ng.lib" "%PF64%\Python39\libs\" 19 | 20 | python -m ensurepip 21 | REM python -m pip install -U 22 | python -m pip install -U numpy-1.25.0-cp39-cp39-win_amd64.whl 23 | python -m pip install -U lxml-4.9.2-cp39-cp39-win_amd64.whl 24 | python -m pip install -U soupsieve-2.4.1-py3-none-any.whl 25 | python -m pip install -U beautifulsoup4-4.12.2-py3-none-any.whl 26 | python -m pip install -U aeneas-1.7.3.0-cp39-cp39-win_amd64.whl 27 | 28 | echo Copying libespeak-ng.dll to %PF64%\Python39\Lib\site-packages\aeneas\cew 29 | copy /b/v/y "%PF64%\eSpeak NG\libespeak-ng.dll" "%PF64%\Python39\Lib\site-packages\aeneas\cew" 30 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/install_packages_TEMPLATE.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 4 | set PF32=C:\Program Files 5 | (call ) 6 | GOTO WIN32PATH 7 | :WIN64PATH 8 | set PF64=C:\Program Files 9 | set PF32=C:\Program Files (x86) 10 | (call ) 11 | :WIN32PATH 12 | 13 | set PATH=%PF64%\Python39\;%PF64%\Python39\Scripts;%PF64%\eSpeak NG;%PF64%\FFmpeg\bin;%PATH% 14 | 15 | echo Copying espeak-ng.exe to espeak.exe 16 | copy /b/v/y "%PF64%\eSpeak NG\espeak-ng.exe" "%PF64%\eSpeak NG\espeak.exe" 17 | echo Copying espeak-ng.lib to %PF64%\Python39\libs\ 18 | copy /b/v/y "espeak-ng.lib" "%PF64%\Python39\libs\" 19 | 20 | python -m ensurepip 21 | REM python -m pip install -U [PIP_FILE] 22 | python -m pip install -U [NUMPY_FILE] 23 | python -m pip install -U [LXML_FILE] 24 | python -m pip install -U [SOUPSIEVE_FILE] 25 | python -m pip install -U [BS4_FILE] 26 | python -m pip install -U [AENEAS_FILE] 27 | 28 | echo Copying libespeak-ng.dll to %PF64%\Python39\Lib\site-packages\aeneas\cew 29 | copy /b/v/y "%PF64%\eSpeak NG\libespeak-ng.dll" "%PF64%\Python39\Lib\site-packages\aeneas\cew" 30 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x64/libespeak-ng-exports.txt: -------------------------------------------------------------------------------- 1 | Microsoft (R) COFF/PE Dumper Version 14.12.25830.2 2 | Copyright (C) Microsoft Corporation. All rights reserved. 3 | 4 | 5 | Dump of file libespeak-ng.dll 6 | 7 | File Type: DLL 8 | 9 | Section contains the following exports for libespeak-ng.dll 10 | 11 | 00000000 characteristics 12 | FFFFFFFF time date stamp 13 | 0.00 version 14 | 1 ordinal base 15 | 64 number of functions 16 | 64 number of names 17 | 18 | ordinal hint RVA name 19 | 20 | 1 0 0003CE40 DllCanUnloadNow 21 | 2 1 0003CDB0 DllGetClassObject 22 | 3 2 000240C0 GetFileLength 23 | 4 3 00015780 create_text_decoder 24 | 5 4 000157B0 destroy_text_decoder 25 | 6 5 00016470 espeak_Cancel 26 | 7 6 000161D0 espeak_Char 27 | 8 7 00016580 espeak_CompileDictionary 28 | 9 8 00039AB0 espeak_GetCurrentVoice 29 | 10 9 00024E60 espeak_GetParameter 30 | 11 A 00025110 espeak_Info 31 | 12 B 00015EF0 espeak_Initialize 32 | 13 C 00015770 espeak_IsPlaying 33 | 14 D 00016110 espeak_Key 34 | 15 E 00039890 espeak_ListVoices 35 | 16 F 000162B0 espeak_SetParameter 36 | 17 10 00024D80 espeak_SetPhonemeCallback 37 | 18 11 00024EA0 espeak_SetPhonemeTrace 38 | 19 12 00016310 espeak_SetPunctuationList 39 | 20 13 00024D60 espeak_SetSynthCallback 40 | 21 14 00024D70 espeak_SetUriCallback 41 | 22 15 000163C0 espeak_SetVoiceByFile 42 | 23 16 00016360 espeak_SetVoiceByName 43 | 24 17 00016420 espeak_SetVoiceByProperties 44 | 25 18 000164D0 espeak_Synchronize 45 | 26 19 00015FE0 espeak_Synth 46 | 27 1A 00016080 espeak_Synth_Mark 47 | 28 1B 00016520 espeak_Terminate 48 | 29 1C 00024ED0 espeak_TextToPhonemes 49 | 30 1D 00016470 espeak_ng_Cancel 50 | 31 1E 00015C50 espeak_ng_ClearErrorContext 51 | 32 1F 0000F3B0 espeak_ng_CompileDictionary 52 | 33 20 0000BF10 espeak_ng_CompileIntonation 53 | 34 21 0000F890 espeak_ng_CompileMbrolaVoice 54 | 35 22 0000B8A0 espeak_ng_CompilePhonemeData 55 | 36 23 0000B8C0 espeak_ng_CompilePhonemeDataPath 56 | 37 24 000153D0 espeak_ng_EncodingFromName 57 | 38 25 000246A0 espeak_ng_GetSampleRate 58 | 39 26 00015C90 espeak_ng_GetStatusCodeMessage 59 | 40 27 00024270 espeak_ng_Initialize 60 | 41 28 00023EA0 espeak_ng_InitializeOutput 61 | 42 29 00024140 espeak_ng_InitializePath 62 | 43 2A 00015E30 espeak_ng_PrintStatusCodeMessage 63 | 44 2B 00024E90 espeak_ng_SetParameter 64 | 45 2C 00016310 espeak_ng_SetPunctuationList 65 | 46 2D 000395F0 espeak_ng_SetVoiceByFile 66 | 47 2E 00039700 espeak_ng_SetVoiceByName 67 | 48 2F 00039840 espeak_ng_SetVoiceByProperties 68 | 49 30 00024D00 espeak_ng_SpeakCharacter 69 | 50 31 00024DF0 espeak_ng_SpeakKeyName 70 | 51 32 00024F90 espeak_ng_Synchronize 71 | 52 33 00024D90 espeak_ng_Synthesize 72 | 53 34 00024DC0 espeak_ng_SynthesizeMark 73 | 54 35 00024FB0 espeak_ng_Terminate 74 | 55 36 0000FCE0 strncpy0 75 | 56 37 000157C0 text_decoder_decode_string 76 | 57 38 00015850 text_decoder_decode_string_auto 77 | 58 39 00015940 text_decoder_decode_string_multibyte 78 | 59 3A 000158D0 text_decoder_decode_wstring 79 | 60 3B 00015B40 text_decoder_eof 80 | 61 3C 00015BA0 text_decoder_get_buffer 81 | 62 3D 00015B50 text_decoder_getc 82 | 63 3E 00015B60 text_decoder_peekc 83 | 64 3F 0002E1B0 utf8_in 84 | 85 | Summary 86 | 87 | 2A000 .data 88 | 2000 .pdata 89 | 2B000 .rdata 90 | 1000 .reloc 91 | 1000 .rsrc 92 | 3F000 .text 93 | 1000 _RDATA 94 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x64/libespeak-ng.def: -------------------------------------------------------------------------------- 1 | LIBRARY libespeak-ng 2 | EXPORTS 3 | DllCanUnloadNow @1 4 | DllGetClassObject @2 5 | GetFileLength @3 6 | create_text_decoder @4 7 | destroy_text_decoder @5 8 | espeak_Cancel @6 9 | espeak_Char @7 10 | espeak_CompileDictionary @8 11 | espeak_GetCurrentVoice @9 12 | espeak_GetParameter @10 13 | espeak_Info @11 14 | espeak_Initialize @12 15 | espeak_IsPlaying @13 16 | espeak_Key @14 17 | espeak_ListVoices @15 18 | espeak_SetParameter @16 19 | espeak_SetPhonemeCallback @17 20 | espeak_SetPhonemeTrace @18 21 | espeak_SetPunctuationList @19 22 | espeak_SetSynthCallback @20 23 | espeak_SetUriCallback @21 24 | espeak_SetVoiceByFile @22 25 | espeak_SetVoiceByName @23 26 | espeak_SetVoiceByProperties @24 27 | espeak_Synchronize @25 28 | espeak_Synth @26 29 | espeak_Synth_Mark @27 30 | espeak_Terminate @28 31 | espeak_TextToPhonemes @29 32 | espeak_ng_Cancel @30 33 | espeak_ng_ClearErrorContext @31 34 | espeak_ng_CompileDictionary @32 35 | espeak_ng_CompileIntonation @33 36 | espeak_ng_CompileMbrolaVoice @34 37 | espeak_ng_CompilePhonemeData @35 38 | espeak_ng_CompilePhonemeDataPath @36 39 | espeak_ng_EncodingFromName @37 40 | espeak_ng_GetSampleRate @38 41 | espeak_ng_GetStatusCodeMessage @39 42 | espeak_ng_Initialize @40 43 | espeak_ng_InitializeOutput @41 44 | espeak_ng_InitializePath @42 45 | espeak_ng_PrintStatusCodeMessage @43 46 | espeak_ng_SetParameter @44 47 | espeak_ng_SetPunctuationList @45 48 | espeak_ng_SetVoiceByFile @46 49 | espeak_ng_SetVoiceByName @47 50 | espeak_ng_SetVoiceByProperties @48 51 | espeak_ng_SpeakCharacter @49 52 | espeak_ng_SpeakKeyName @50 53 | espeak_ng_Synchronize @51 54 | espeak_ng_Synthesize @52 55 | espeak_ng_SynthesizeMark @53 56 | espeak_ng_Terminate @54 57 | strncpy0 @55 58 | text_decoder_decode_string @56 59 | text_decoder_decode_string_auto @57 60 | text_decoder_decode_string_multibyte @58 61 | text_decoder_decode_wstring @59 62 | text_decoder_eof @60 63 | text_decoder_get_buffer @61 64 | text_decoder_getc @62 65 | text_decoder_peekc @63 66 | utf8_in @64 67 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x64/libespeak-ng.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x64/libespeak-ng.exp -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x64/libespeak-ng.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x64/libespeak-ng.lib -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x86/libespeak-ng-exports.txt: -------------------------------------------------------------------------------- 1 | Microsoft (R) COFF/PE Dumper Version 14.12.25830.2 2 | Copyright (C) Microsoft Corporation. All rights reserved. 3 | 4 | 5 | Dump of file libespeak-ng.dll 6 | 7 | File Type: DLL 8 | 9 | Section contains the following exports for libespeak-ng.dll 10 | 11 | 00000000 characteristics 12 | FFFFFFFF time date stamp 13 | 0.00 version 14 | 1 ordinal base 15 | 64 number of functions 16 | 64 number of names 17 | 18 | ordinal hint RVA name 19 | 20 | 1 0 000371A0 DllCanUnloadNow 21 | 2 1 000370F0 DllGetClassObject 22 | 3 2 00021560 GetFileLength 23 | 4 3 00014650 create_text_decoder 24 | 5 4 00014680 destroy_text_decoder 25 | 6 5 000150B0 espeak_Cancel 26 | 7 6 00014E60 espeak_Char 27 | 8 7 000151A0 espeak_CompileDictionary 28 | 9 8 000346F0 espeak_GetCurrentVoice 29 | 10 9 00022150 espeak_GetParameter 30 | 11 A 000223C0 espeak_Info 31 | 12 B 00014C60 espeak_Initialize 32 | 13 C 00014640 espeak_IsPlaying 33 | 14 D 00014E10 espeak_Key 34 | 15 E 00034550 espeak_ListVoices 35 | 16 F 00014F20 espeak_SetParameter 36 | 17 10 00022060 espeak_SetPhonemeCallback 37 | 18 11 00022190 espeak_SetPhonemeTrace 38 | 19 12 00014F80 espeak_SetPunctuationList 39 | 20 13 00022040 espeak_SetSynthCallback 40 | 21 14 00022050 espeak_SetUriCallback 41 | 22 15 00015020 espeak_SetVoiceByFile 42 | 23 16 00014FD0 espeak_SetVoiceByName 43 | 24 17 00015070 espeak_SetVoiceByProperties 44 | 25 18 00015100 espeak_Synchronize 45 | 26 19 00014D30 espeak_Synth 46 | 27 1A 00014DA0 espeak_Synth_Mark 47 | 28 1B 00015150 espeak_Terminate 48 | 29 1C 000221C0 espeak_TextToPhonemes 49 | 30 1D 00022250 espeak_ng_Cancel 50 | 31 1E 000149E0 espeak_ng_ClearErrorContext 51 | 32 1F 0000E6F0 espeak_ng_CompileDictionary 52 | 33 20 0000B3F0 espeak_ng_CompileIntonation 53 | 34 21 0000EB20 espeak_ng_CompileMbrolaVoice 54 | 35 22 0000AC90 espeak_ng_CompilePhonemeData 55 | 36 23 0000ACB0 espeak_ng_CompilePhonemeDataPath 56 | 37 24 00014300 espeak_ng_EncodingFromName 57 | 38 25 00021AA0 espeak_ng_GetSampleRate 58 | 39 26 00014A10 espeak_ng_GetStatusCodeMessage 59 | 40 27 000216E0 espeak_ng_Initialize 60 | 41 28 000213B0 espeak_ng_InitializeOutput 61 | 42 29 000215D0 espeak_ng_InitializePath 62 | 43 2A 00014BA0 espeak_ng_PrintStatusCodeMessage 63 | 44 2B 00022170 espeak_ng_SetParameter 64 | 45 2C 00014F80 espeak_ng_SetPunctuationList 65 | 46 2D 00034210 espeak_ng_SetVoiceByFile 66 | 47 2E 00034340 espeak_ng_SetVoiceByName 67 | 48 2F 000344C0 espeak_ng_SetVoiceByProperties 68 | 49 30 000220F0 espeak_ng_SpeakCharacter 69 | 50 31 000220E0 espeak_ng_SpeakKeyName 70 | 51 32 000222A0 espeak_ng_Synchronize 71 | 52 33 00022070 espeak_ng_Synthesize 72 | 53 34 000220B0 espeak_ng_SynthesizeMark 73 | 54 35 000222B0 espeak_ng_Terminate 74 | 55 36 0000EF90 strncpy0 75 | 56 37 000146A0 text_decoder_decode_string 76 | 57 38 00014720 text_decoder_decode_string_auto 77 | 58 39 00014810 text_decoder_decode_string_multibyte 78 | 59 3A 000147A0 text_decoder_decode_wstring 79 | 60 3B 000148F0 text_decoder_eof 80 | 61 3C 00014950 text_decoder_get_buffer 81 | 62 3D 00014910 text_decoder_getc 82 | 63 3E 00014920 text_decoder_peekc 83 | 64 3F 00029830 utf8_in 84 | 85 | Summary 86 | 87 | 24000 .data 88 | 27000 .rdata 89 | 5000 .reloc 90 | 1000 .rsrc 91 | 39000 .text 92 | 1000 _RDATA 93 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x86/libespeak-ng.def: -------------------------------------------------------------------------------- 1 | LIBRARY libespeak-ng 2 | EXPORTS 3 | DllCanUnloadNow @1 4 | DllGetClassObject @2 5 | GetFileLength @3 6 | create_text_decoder @4 7 | destroy_text_decoder @5 8 | espeak_Cancel @6 9 | espeak_Char @7 10 | espeak_CompileDictionary @8 11 | espeak_GetCurrentVoice @9 12 | espeak_GetParameter @10 13 | espeak_Info @11 14 | espeak_Initialize @12 15 | espeak_IsPlaying @13 16 | espeak_Key @14 17 | espeak_ListVoices @15 18 | espeak_SetParameter @16 19 | espeak_SetPhonemeCallback @17 20 | espeak_SetPhonemeTrace @18 21 | espeak_SetPunctuationList @19 22 | espeak_SetSynthCallback @20 23 | espeak_SetUriCallback @21 24 | espeak_SetVoiceByFile @22 25 | espeak_SetVoiceByName @23 26 | espeak_SetVoiceByProperties @24 27 | espeak_Synchronize @25 28 | espeak_Synth @26 29 | espeak_Synth_Mark @27 30 | espeak_Terminate @28 31 | espeak_TextToPhonemes @29 32 | espeak_ng_Cancel @30 33 | espeak_ng_ClearErrorContext @31 34 | espeak_ng_CompileDictionary @32 35 | espeak_ng_CompileIntonation @33 36 | espeak_ng_CompileMbrolaVoice @34 37 | espeak_ng_CompilePhonemeData @35 38 | espeak_ng_CompilePhonemeDataPath @36 39 | espeak_ng_EncodingFromName @37 40 | espeak_ng_GetSampleRate @38 41 | espeak_ng_GetStatusCodeMessage @39 42 | espeak_ng_Initialize @40 43 | espeak_ng_InitializeOutput @41 44 | espeak_ng_InitializePath @42 45 | espeak_ng_PrintStatusCodeMessage @43 46 | espeak_ng_SetParameter @44 47 | espeak_ng_SetPunctuationList @45 48 | espeak_ng_SetVoiceByFile @46 49 | espeak_ng_SetVoiceByName @47 50 | espeak_ng_SetVoiceByProperties @48 51 | espeak_ng_SpeakCharacter @49 52 | espeak_ng_SpeakKeyName @50 53 | espeak_ng_Synchronize @51 54 | espeak_ng_Synthesize @52 55 | espeak_ng_SynthesizeMark @53 56 | espeak_ng_Terminate @54 57 | strncpy0 @55 58 | text_decoder_decode_string @56 59 | text_decoder_decode_string_auto @57 60 | text_decoder_decode_string_multibyte @58 61 | text_decoder_decode_wstring @59 62 | text_decoder_eof @60 63 | text_decoder_get_buffer @61 64 | text_decoder_getc @62 65 | text_decoder_peekc @63 66 | utf8_in @64 67 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x86/libespeak-ng.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x86/libespeak-ng.exp -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x86/libespeak-ng.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-dll2lib-x86/libespeak-ng.lib -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng-exports.txt: -------------------------------------------------------------------------------- 1 | Microsoft (R) COFF/PE Dumper Version 14.12.25830.2 2 | Copyright (C) Microsoft Corporation. All rights reserved. 3 | 4 | 5 | Dump of file libespeak-ng.dll 6 | 7 | File Type: DLL 8 | 9 | Section contains the following exports for libespeak-ng.dll 10 | 11 | 00000000 characteristics 12 | FFFFFFFF time date stamp 13 | 0.00 version 14 | 1 ordinal base 15 | 64 number of functions 16 | 64 number of names 17 | 18 | ordinal hint RVA name 19 | 20 | 1 0 000371A0 DllCanUnloadNow 21 | 2 1 000370F0 DllGetClassObject 22 | 3 2 00021560 GetFileLength 23 | 4 3 00014650 create_text_decoder 24 | 5 4 00014680 destroy_text_decoder 25 | 6 5 000150B0 espeak_Cancel 26 | 7 6 00014E60 espeak_Char 27 | 8 7 000151A0 espeak_CompileDictionary 28 | 9 8 000346F0 espeak_GetCurrentVoice 29 | 10 9 00022150 espeak_GetParameter 30 | 11 A 000223C0 espeak_Info 31 | 12 B 00014C60 espeak_Initialize 32 | 13 C 00014640 espeak_IsPlaying 33 | 14 D 00014E10 espeak_Key 34 | 15 E 00034550 espeak_ListVoices 35 | 16 F 00014F20 espeak_SetParameter 36 | 17 10 00022060 espeak_SetPhonemeCallback 37 | 18 11 00022190 espeak_SetPhonemeTrace 38 | 19 12 00014F80 espeak_SetPunctuationList 39 | 20 13 00022040 espeak_SetSynthCallback 40 | 21 14 00022050 espeak_SetUriCallback 41 | 22 15 00015020 espeak_SetVoiceByFile 42 | 23 16 00014FD0 espeak_SetVoiceByName 43 | 24 17 00015070 espeak_SetVoiceByProperties 44 | 25 18 00015100 espeak_Synchronize 45 | 26 19 00014D30 espeak_Synth 46 | 27 1A 00014DA0 espeak_Synth_Mark 47 | 28 1B 00015150 espeak_Terminate 48 | 29 1C 000221C0 espeak_TextToPhonemes 49 | 30 1D 00022250 espeak_ng_Cancel 50 | 31 1E 000149E0 espeak_ng_ClearErrorContext 51 | 32 1F 0000E6F0 espeak_ng_CompileDictionary 52 | 33 20 0000B3F0 espeak_ng_CompileIntonation 53 | 34 21 0000EB20 espeak_ng_CompileMbrolaVoice 54 | 35 22 0000AC90 espeak_ng_CompilePhonemeData 55 | 36 23 0000ACB0 espeak_ng_CompilePhonemeDataPath 56 | 37 24 00014300 espeak_ng_EncodingFromName 57 | 38 25 00021AA0 espeak_ng_GetSampleRate 58 | 39 26 00014A10 espeak_ng_GetStatusCodeMessage 59 | 40 27 000216E0 espeak_ng_Initialize 60 | 41 28 000213B0 espeak_ng_InitializeOutput 61 | 42 29 000215D0 espeak_ng_InitializePath 62 | 43 2A 00014BA0 espeak_ng_PrintStatusCodeMessage 63 | 44 2B 00022170 espeak_ng_SetParameter 64 | 45 2C 00014F80 espeak_ng_SetPunctuationList 65 | 46 2D 00034210 espeak_ng_SetVoiceByFile 66 | 47 2E 00034340 espeak_ng_SetVoiceByName 67 | 48 2F 000344C0 espeak_ng_SetVoiceByProperties 68 | 49 30 000220F0 espeak_ng_SpeakCharacter 69 | 50 31 000220E0 espeak_ng_SpeakKeyName 70 | 51 32 000222A0 espeak_ng_Synchronize 71 | 52 33 00022070 espeak_ng_Synthesize 72 | 53 34 000220B0 espeak_ng_SynthesizeMark 73 | 54 35 000222B0 espeak_ng_Terminate 74 | 55 36 0000EF90 strncpy0 75 | 56 37 000146A0 text_decoder_decode_string 76 | 57 38 00014720 text_decoder_decode_string_auto 77 | 58 39 00014810 text_decoder_decode_string_multibyte 78 | 59 3A 000147A0 text_decoder_decode_wstring 79 | 60 3B 000148F0 text_decoder_eof 80 | 61 3C 00014950 text_decoder_get_buffer 81 | 62 3D 00014910 text_decoder_getc 82 | 63 3E 00014920 text_decoder_peekc 83 | 64 3F 00029830 utf8_in 84 | 85 | Summary 86 | 87 | 24000 .data 88 | 27000 .rdata 89 | 5000 .reloc 90 | 1000 .rsrc 91 | 39000 .text 92 | 1000 _RDATA 93 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng.def: -------------------------------------------------------------------------------- 1 | LIBRARY libespeak-ng 2 | EXPORTS 3 | DllCanUnloadNow @1 4 | DllGetClassObject @2 5 | GetFileLength @3 6 | create_text_decoder @4 7 | destroy_text_decoder @5 8 | espeak_Cancel @6 9 | espeak_Char @7 10 | espeak_CompileDictionary @8 11 | espeak_GetCurrentVoice @9 12 | espeak_GetParameter @10 13 | espeak_Info @11 14 | espeak_Initialize @12 15 | espeak_IsPlaying @13 16 | espeak_Key @14 17 | espeak_ListVoices @15 18 | espeak_SetParameter @16 19 | espeak_SetPhonemeCallback @17 20 | espeak_SetPhonemeTrace @18 21 | espeak_SetPunctuationList @19 22 | espeak_SetSynthCallback @20 23 | espeak_SetUriCallback @21 24 | espeak_SetVoiceByFile @22 25 | espeak_SetVoiceByName @23 26 | espeak_SetVoiceByProperties @24 27 | espeak_Synchronize @25 28 | espeak_Synth @26 29 | espeak_Synth_Mark @27 30 | espeak_Terminate @28 31 | espeak_TextToPhonemes @29 32 | espeak_ng_Cancel @30 33 | espeak_ng_ClearErrorContext @31 34 | espeak_ng_CompileDictionary @32 35 | espeak_ng_CompileIntonation @33 36 | espeak_ng_CompileMbrolaVoice @34 37 | espeak_ng_CompilePhonemeData @35 38 | espeak_ng_CompilePhonemeDataPath @36 39 | espeak_ng_EncodingFromName @37 40 | espeak_ng_GetSampleRate @38 41 | espeak_ng_GetStatusCodeMessage @39 42 | espeak_ng_Initialize @40 43 | espeak_ng_InitializeOutput @41 44 | espeak_ng_InitializePath @42 45 | espeak_ng_PrintStatusCodeMessage @43 46 | espeak_ng_SetParameter @44 47 | espeak_ng_SetPunctuationList @45 48 | espeak_ng_SetVoiceByFile @46 49 | espeak_ng_SetVoiceByName @47 50 | espeak_ng_SetVoiceByProperties @48 51 | espeak_ng_SpeakCharacter @49 52 | espeak_ng_SpeakKeyName @50 53 | espeak_ng_Synchronize @51 54 | espeak_ng_Synthesize @52 55 | espeak_ng_SynthesizeMark @53 56 | espeak_ng_Terminate @54 57 | strncpy0 @55 58 | text_decoder_decode_string @56 59 | text_decoder_decode_string_auto @57 60 | text_decoder_decode_string_multibyte @58 61 | text_decoder_decode_wstring @59 62 | text_decoder_eof @60 63 | text_decoder_get_buffer @61 64 | text_decoder_getc @62 65 | text_decoder_peekc @63 66 | utf8_in @64 67 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng.exp -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/MS_Windows_64-bit_Installer/libespeak-ng.lib -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/runas_admin.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%2}=={ECHO} ECHO ON&SHIFT 3 | 4 | IF "%~1"=="" ( 5 | echo "USAGE: runas_admin script_name" 6 | exit /B 1 7 | ) 8 | echo copy "%~s1" "%temp%\%~snx1" 9 | copy /b/v/y "%~s1" "%temp%\%~snx1" 10 | 11 | :-------------------------------------- 12 | REM --> Check for permissions 13 | >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 14 | 15 | REM --> If error flag set, we do not have admin. 16 | if '%errorlevel%' NEQ '0' ( 17 | echo Requesting administrative privileges... 18 | goto UACPrompt 19 | ) else ( goto gotAdmin ) 20 | 21 | :UACPrompt 22 | echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 23 | echo UAC.ShellExecute "%temp%\%~snx1", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 24 | 25 | call "%temp%\getadmin.vbs" 26 | exit /B 27 | 28 | :gotAdmin 29 | if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) 30 | pushd "%CD%" 31 | CD /D "%~dp0" 32 | :-------------------------------------- 33 | 34 | call "%temp%\%~snx1" 35 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/sign_installer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | osslsigncode sign -pkcs12 "$HOME/MacInstaller.p12" -askpass -n "Aeneas Tools" -i "http://www.readbeyond.it/aeneas/" -t "http://timestamp.comodoca.com/authenticode" -in "./aeneas-win64-setup-1.7.3.0_3.exe" -out "./aeneas-win64-setup-1.7.3.0_3_signed.exe" 4 | osslsigncode verify "./aeneas-win64-setup-1.7.3.0_3_signed.exe" 5 | 6 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/x64 Native Tools Command Prompt for VS 2017.lnk.txt: -------------------------------------------------------------------------------- 1 | 2 | Link File: x64 Native Tools Command Prompt for VS 2017.lnk 3 | Link Flags: HAS SHELLIDLIST | POINTS TO FILE/DIR | HAS DESCRIPTION | HAS RELATIVE PATH STRING | HAS WORKING DIRECTORY | HAS CMD LINE ARGS | NO CUSTOM ICON | 4 | File Attributes: ARCHIVE 5 | Create Time: Sat Jul 16 2016 18:42:36 6 | Last Accessed time: Sat Jul 16 2016 18:42:36 7 | Last Modified Time: Sat Jul 16 2016 18:42:36 8 | Target Length: 232960 9 | Icon Index: 0 10 | ShowWnd: 1 SW_NORMAL 11 | HotKey: 0 12 | Target is on local volume 13 | Volume Type: Fixed (Hard Disk) 14 | Volume Serial: 1235dde9 15 | Vol Label: Windows 10 16 | Base Path: C:\Windows\System32\cmd.exe 17 | (App Path:) Remaining Path: 18 | Description: Open Visual Studio 2017 Tools Command Prompt for targeting x64 19 | Relative Path: ..\..\..\..\..\..\..\..\Windows\System32\cmd.exe 20 | Working Dir: C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\ 21 | Command Line: /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat" 22 | -------------------------------------------------------------------------------- /MS_Windows_Installer/MS_Windows_64-bit_Installer/x86_x64 Cross Tools Command Prompt for VS 2017.lnk.txt: -------------------------------------------------------------------------------- 1 | 2 | Link File: x86_x64 Cross Tools Command Prompt for VS 2017.lnk 3 | Link Flags: HAS SHELLIDLIST | POINTS TO FILE/DIR | HAS DESCRIPTION | HAS RELATIVE PATH STRING | HAS WORKING DIRECTORY | HAS CMD LINE ARGS | NO CUSTOM ICON | 4 | File Attributes: ARCHIVE 5 | Create Time: Sat Jul 16 2016 18:42:36 6 | Last Accessed time: Sat Jul 16 2016 18:42:36 7 | Last Modified Time: Sat Jul 16 2016 18:42:36 8 | Target Length: 232960 9 | Icon Index: 0 10 | ShowWnd: 1 SW_NORMAL 11 | HotKey: 0 12 | Target is on local volume 13 | Volume Type: Fixed (Hard Disk) 14 | Volume Serial: 1235dde9 15 | Vol Label: Windows 10 16 | Base Path: C:\Windows\System32\cmd.exe 17 | (App Path:) Remaining Path: 18 | Description: Open Visual Studio 2017 Tools Command Prompt for targeting x64 with x86-hosted tools 19 | Relative Path: ..\..\..\..\..\..\..\..\Windows\System32\cmd.exe 20 | Working Dir: C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\ 21 | Command Line: /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsx86_amd64.bat" 22 | -------------------------------------------------------------------------------- /MS_Windows_Installer/README.txt: -------------------------------------------------------------------------------- 1 | This setup wizard was developed by Daniel Bair and is distributed by SIL International, and the source code is available for download at: https://github.com/sillsdev/aeneas-installer 2 | 3 | -------------------------------------------------------------------- 4 | 5 | aeneas is developed by Alberto Pettarin, ReadBeyond, and the source code is available for download at http://www.readbeyond.it/aeneas/ 6 | 7 | -------------------------------------------------------------------- 8 | 9 | eSpeak-ng is a text-to-speech engine, developed by Reece H. Dunn, and is available for download at https://github.com/espeak-ng/espeak-ng 10 | 11 | -------------------------------------------------------------------- 12 | 13 | FFmpeg is a video and audio converter, developed by Fabrice Bellard, and is available for download at http://www.ffmpeg.org/ 14 | 15 | -------------------------------------------------------------------- 16 | 17 | Python is a programming language, developed by the Python Software Foundation, and is available for download at http://www.python.org/ 18 | 19 | -------------------------------------------------------------------- 20 | 21 | Python BeautifulSoup sits atop an HTML or XML parser, providing Pythonic idioms for iterating, searching, and modifying the parse tree, and is available for download at https://www.crummy.com/software/BeautifulSoup/ 22 | 23 | -------------------------------------------------------------------- 24 | 25 | Python lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries, which provides safe and convenient access to these libraries using the ElementTree API, and is available for download at http://lxml.de/ 26 | 27 | -------------------------------------------------------------------- 28 | 29 | Python NumPy is a general-purpose array-processing package designed to efficiently manipulate large multi-dimensional arrays of arbitrary records without sacrificing too much speed for small multi-dimensional arrays, and is available for download at http://www.numpy.org/ 30 | -------------------------------------------------------------------------------- /MS_Windows_Installer/ReadMe.md: -------------------------------------------------------------------------------- 1 | This provides a simple installer for [Aeneas](https://github.com/readbeyond/aeneas) for MS Windows 8 and up. 2 | 3 | 1. To build this installer for MS Windows first download (and extract) or clone this repository. 4 | 2. Then open Command Prompt and _cd_ to _MS\_Windows\_Installer_ 5 | 3. Next run `build_setup.bat` which will install the necessary applications for building. 6 | 4. Then run `build_packages.bat` which will then build all the individual packages. 7 | 5. Finally run `build_installer.bat` which will then build the main installer. 8 | 9 | NOTE: This will build an installer for 32-bit Windows setups. 10 | 11 | The 64-bit installer scripts can be found in the _MS\_Windows\_64-bit\_Installer_ folder. 12 | -------------------------------------------------------------------------------- /MS_Windows_Installer/aeneas-patches/patch-py38-utf8.diff: -------------------------------------------------------------------------------- 1 | diff --git a/aeneas/diagnostics.py b/aeneas/diagnostics.py 2 | index 7d9e98a1fbe287c0286fdab504bb2e26a691b2d2..6f4e291f115ecba3f9db810e92f083deaafc1542 100644 3 | --- a/aeneas/diagnostics.py 4 | +++ b/aeneas/diagnostics.py 5 | @@ -56,9 +56,9 @@ def check_shell_encoding(cls): 6 | """ 7 | is_in_utf8 = True 8 | is_out_utf8 = True 9 | - if sys.stdin.encoding not in ["UTF-8", "UTF8"]: 10 | + if sys.stdin.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 11 | is_in_utf8 = False 12 | - if sys.stdout.encoding not in ["UTF-8", "UTF8"]: 13 | + if sys.stdout.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 14 | is_out_utf8 = False 15 | if (is_in_utf8) and (is_out_utf8): 16 | gf.print_success(u"shell encoding OK") 17 | 18 | diff --git a/aeneas/tools/abstract_cli_program.py b/aeneas/tools/abstract_cli_program.py 19 | index be5bb2fa8bfda1de88e4ed5a418aab2c00d625f7..b5b9faddc255a7e46e0316864766fec09f292b5b 100644 20 | --- a/aeneas/tools/abstract_cli_program.py 21 | +++ b/aeneas/tools/abstract_cli_program.py 22 | @@ -295,10 +295,10 @@ def run(self, arguments, show_help=True): 23 | if self.use_sys: 24 | # check that sys.stdin.encoding and sys.stdout.encoding are set to utf-8 25 | if not gf.FROZEN: 26 | - if sys.stdin.encoding not in ["UTF-8", "UTF8"]: 27 | + if sys.stdin.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 28 | self.print_warning(u"The default input encoding is not UTF-8.") 29 | self.print_warning(u"You might want to set 'PYTHONIOENCODING=UTF-8' in your shell.") 30 | - if sys.stdout.encoding not in ["UTF-8", "UTF8"]: 31 | + if sys.stdout.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 32 | self.print_warning(u"The default output encoding is not UTF-8.") 33 | self.print_warning(u"You might want to set 'PYTHONIOENCODING=UTF-8' in your shell.") 34 | # decode using sys.stdin.encoding 35 | -------------------------------------------------------------------------------- /MS_Windows_Installer/aeneas_check_setup.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 3 | :WIN32PATH 4 | set PF32=C:\Program Files 5 | (call ) 6 | GOTO ENDIFPATH 7 | :WIN64PATH 8 | set PF32=C:\Program Files (x86) 9 | (call ) 10 | :ENDIFPATH 11 | set PATH=%PF32%\Python38\;%PF32%\Python38\Scripts;%PF32%\eSpeak NG;%PF32%\FFmpeg\bin;%PATH% 12 | set PYTHONIOENCODING=UTF-8 13 | python -m aeneas.diagnostics 14 | C:\Windows\System32\ping 127.0.0.1 -n 5 -w 1000 > NUL 15 | -------------------------------------------------------------------------------- /MS_Windows_Installer/build_aeneas_package.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | IF /i {%2}=={ECHO} ECHO ON&SHIFT 4 | 5 | VERIFY OTHER 2>nul 6 | SETLOCAL ENABLEEXTENSIONS 7 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 8 | 9 | set CURDIR=%~dp0 10 | cd %CURDIR% 11 | echo Running %~n0 from %CURDIR% 12 | 13 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 14 | set PF32=C:\Program Files 15 | GOTO PFENDIF 16 | :WIN64PF 17 | set PF32=C:\Program Files (x86) 18 | :PFENDIF 19 | 20 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 21 | set PFSZ=C:\Program Files 22 | GOTO SEVENENDIF 23 | :WIN64SEVEN 24 | set PFSZ=C:\Program Files (x86) 25 | :SEVENENDIF 26 | 27 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 28 | set INNOPATH=%PF32%\Inno Setup 5 29 | GOTO INNOENDIF 30 | :INNOSIX 31 | set INNOPATH=%PF32%\Inno Setup 6 32 | :INNOENDIF 33 | 34 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF32%\FFmpeg\bin;%PF32%\eSpeak NG;%PF32%\Python38;%PF32%\Python38\Scripts;%PF32%\Git;%PF32%\Git\usr\bin;%PF32%\Git\mingw32\bin;%PATH% 35 | 36 | curl.exe --version 1>nul 2>nul 37 | if %ERRORLEVEL%==1 ( 38 | set CURL=call curl-psh.bat -L 39 | ) else ( 40 | set CURL=curl.exe -L 41 | ) 42 | 43 | mkdir python-wheels 1>nul 2>nul 44 | 45 | rmdir /q/s %USERPROFILE%\AppData\Roaming\Python\Python38\site-packages 46 | set PATH=%USERPROFILE%\AppData\Roaming\Python\Python38\Scripts;%PATH% 47 | python.exe -m ensurepip 48 | python -m pip install -U pip setuptools wheel 49 | 50 | DEL /Q *.whl 1>nul 2>nul 51 | DEL /Q python-wheels\*.whl 1>nul 2>nul 52 | 53 | python -m pip install -U numpy 54 | python -m pip install -U lxml beautifulsoup4 soupsieve 55 | 56 | REM python -m pip wheel pip 57 | python -m pip wheel numpy 58 | python -m pip wheel lxml beautifulsoup4 soupsieve 59 | 60 | python -m pip download aeneas==1.7.3.0 --no-cache-dir 61 | 62 | IF EXIST "%cd%\aeneas-1.7.3.0.tar.gz" GOTO ENDGET 63 | echo Downloading aeneas... 64 | %CURL% https://github.com/readbeyond/aeneas/archive/v1.7.3.tar.gz -o aeneas-1.7.3.0.tar.gz 65 | IF %ERRORLEVEL%==0 GOTO ENDIF 66 | echo Could not download aeneas... 67 | START https://github.com/readbeyond/aeneas/archive 68 | :ENDIF 69 | :ENDGET 70 | 71 | RMDIR /S /Q aeneas-1.7.3.0 72 | "7z.exe" e aeneas-1.7.3.0.tar.gz -aoa 73 | "7z.exe" x aeneas-1.7.3.0.tar -aoa 74 | 75 | IF EXIST "%cd%\aeneas-1.7.3" ( 76 | move /y aeneas-1.7.3 aeneas-1.7.3.0 77 | ) 78 | 79 | cd aeneas-1.7.3.0 80 | echo "Checking for patch.exe" 81 | 2>nul patch.exe --version 82 | if %ERRORLEVEL%==1 ( 83 | python -m pip install -U patch 84 | python.exe -m patch -v -p 1 --debug ..\aeneas-patches\patch-espeak-ng.diff 85 | python.exe -m patch -v -p 1 --debug ..\aeneas-patches\patch-py38-utf8.diff 86 | ) ELSE ( 87 | patch.exe -p1 < ..\aeneas-patches\patch-espeak-ng.diff 88 | patch.exe -p1 < ..\aeneas-patches\patch-py38-utf8.diff 89 | ) 90 | move /y aeneas\cew\speak_lib.h thirdparty\speak_lib.h 91 | copy /b/v/y ..\libespeak-ng-dll2lib-x64\libespeak-ng.lib thirdparty\libespeak-ng-x64.lib 92 | copy /b/v/y ..\libespeak-ng-dll2lib-x86\libespeak-ng.lib thirdparty\libespeak-ng-x86.lib 93 | set AENEAS_USE_ESPEAKNG=True 94 | python.exe setup.py build_ext --inplace 95 | python.exe setup.py bdist_wheel 96 | echo. 97 | set PYTHONIOENCODING=UTF-8 98 | python.exe -m aeneas.diagnostics 99 | python.exe -m aeneas.tools.execute_task --version 100 | python.exe -m aeneas.tools.synthesize_text list "This is a test|with two lines" eng -v C:\Windows\Temp\test.wav 101 | echo. 102 | copy /b/v/y dist\aeneas-*.whl ..\ 103 | cd %CURDIR% 104 | 105 | FOR /F "tokens=* USEBACKQ" %%F IN (`dir aeneas-*.whl /b`) DO (SET aeneas_file=%%F) 106 | IF %ERRORLEVEL%==0 ( 107 | python -m pip install -U pip %aeneas_file% 108 | RMDIR /S /Q aeneas-1.7.3.0 109 | DEL /Q aeneas-1.7.3.0.tar 110 | DEL /Q aeneas-1.7.3.0.tar.gz 111 | MOVE /Y *.whl "%cd%\python-wheels" 112 | ) 113 | 114 | ENDLOCAL 115 | -------------------------------------------------------------------------------- /MS_Windows_Installer/build_espeak_package.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | IF /i {%2}=={ECHO} ECHO ON&SHIFT 4 | 5 | VERIFY OTHER 2>nul 6 | SETLOCAL ENABLEEXTENSIONS 7 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 8 | 9 | set CURDIR=%~dp0 10 | cd %CURDIR% 11 | echo Running %~n0 from %CURDIR% 12 | 13 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 14 | set PF32=C:\Program Files 15 | GOTO PFENDIF 16 | :WIN64PF 17 | set PF32=C:\Program Files (x86) 18 | :PFENDIF 19 | 20 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 21 | set PFSZ=C:\Program Files 22 | GOTO SEVENENDIF 23 | :WIN64SEVEN 24 | set PFSZ=C:\Program Files (x86) 25 | :SEVENENDIF 26 | 27 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 28 | set INNOPATH=%PF32%\Inno Setup 5 29 | GOTO INNOENDIF 30 | :INNOSIX 31 | set INNOPATH=%PF32%\Inno Setup 6 32 | :INNOENDIF 33 | 34 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF32%\FFmpeg\bin;%PF32%\eSpeak NG;%PF32%\Python38;%PF32%\Python38\Scripts;%PF32%\Git;%PF32%\Git\usr\bin;%PF32%\Git\mingw32\bin;%PATH% 35 | 36 | curl.exe --version 1>nul 2>nul 37 | if %ERRORLEVEL%==1 ( 38 | set CURL=call curl-psh.bat -L 39 | ) else ( 40 | set CURL=curl.exe -L 41 | ) 42 | 43 | mkdir aeneas-win-installer-packages 1>nul 2>nul 44 | 45 | IF EXIST "%cd%\aeneas-win-installer-packages\espeak-ng-1.50-x86.msi" GOTO ENDGET 46 | echo Downloading eSpeak-ng... 47 | %CURL% https://github.com/espeak-ng/espeak-ng/releases/download/1.50/espeak-ng-20191129-b702b03-x86.msi -o espeak-ng-1.50-x86.msi 48 | IF %ERRORLEVEL%==0 GOTO ENDIF 49 | echo Could not download eSpeak-ng... 50 | START https://github.com/espeak-ng/espeak-ng/releases 51 | :ENDIF 52 | :ENDGET 53 | IF EXIST "%cd%\espeak-ng-1.50-x86.msi" ( 54 | echo Installing eSpeak-ng... 55 | "%cd%\espeak-ng-1.50-x86.msi" /PASSIVE 56 | copy /b/v/y "%cd%\install_espeak-ng_extra.bat" "%temp%\install_espeak-ng_extra.bat" 57 | call "%temp%\install_espeak-ng_extra.bat" 58 | move /y "%cd%\espeak-ng-1.50-x86.msi" "%cd%\aeneas-win-installer-packages" 59 | ) 60 | 61 | ENDLOCAL 62 | -------------------------------------------------------------------------------- /MS_Windows_Installer/build_ffmpeg_package.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | IF /i {%2}=={ECHO} ECHO ON&SHIFT 4 | 5 | VERIFY OTHER 2>nul 6 | SETLOCAL ENABLEEXTENSIONS 7 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 8 | 9 | set CURDIR=%~dp0 10 | cd %CURDIR% 11 | echo Running %~n0 from %CURDIR% 12 | 13 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 14 | set PF32=C:\Program Files 15 | GOTO PFENDIF 16 | :WIN64PF 17 | set PF32=C:\Program Files (x86) 18 | :PFENDIF 19 | 20 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 21 | set PFSZ=C:\Program Files 22 | GOTO SEVENENDIF 23 | :WIN64SEVEN 24 | set PFSZ=C:\Program Files (x86) 25 | :SEVENENDIF 26 | 27 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 28 | set INNOPATH=%PF32%\Inno Setup 5 29 | GOTO INNOENDIF 30 | :INNOSIX 31 | set INNOPATH=%PF32%\Inno Setup 6 32 | :INNOENDIF 33 | 34 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF32%\FFmpeg\bin;%PF32%\eSpeak NG;%PF32%\Python38;%PF32%\Python38\Scripts;%PF32%\Git;%PF32%\Git\usr\bin;%PF32%\Git\mingw32\bin;%PATH% 35 | 36 | curl.exe --version 1>nul 2>nul 37 | if %ERRORLEVEL%==1 ( 38 | set CURL=call curl-psh.bat -L 39 | ) else ( 40 | set CURL=curl.exe -L 41 | ) 42 | 43 | mkdir aeneas-win-installer-packages 1>nul 2>nul 44 | cd %CURDIR% 45 | 46 | IF EXIST "%cd%\aeneas-win-installer-packages\ffmpeg-4.3-win32-static.exe" GOTO ENDGET 47 | echo Downloading FFmpeg... 48 | %CURL% https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-4.3-win32-static.zip -o ffmpeg-4.3-win32-static.zip 49 | IF %ERRORLEVEL%==0 GOTO ENDIF 50 | echo Could not download FFmpeg... 51 | START https://ffmpeg.zeranoe.com/builds/ 52 | :ENDIF 53 | rmdir /q/s ffmpeg-4.3 1>nul 2>nul 54 | rmdir /q/s ffmpeg-4.3-win32-static 1>nul 2>nul 55 | "7z.exe" x ffmpeg-4.3-win32-static.zip -aoa 56 | copy /b/v/y ff-prompt.bat ffmpeg-4.3-win32-static 57 | "ISCC.exe" FFmpeg_Installer.iss 58 | :ENDGET 59 | IF EXIST "%cd%\ffmpeg-4.3-win32-static.exe" ( 60 | echo Installing FFmpeg... 61 | "%cd%\ffmpeg-4.3-win32-static.exe" /SILENT /ALLUSERS 62 | move /y "%cd%\ffmpeg-4.3-win32-static.exe" "%cd%\aeneas-win-installer-packages" 63 | del /q ffmpeg-4.3-win32-static.zip 1>nul 2>nul 64 | rmdir /q/s ffmpeg-4.3-win32-static 1>nul 2>nul 65 | rmdir /q/s ffmpeg-4.3 1>nul 2>nul 66 | ) 67 | 68 | ENDLOCAL 69 | -------------------------------------------------------------------------------- /MS_Windows_Installer/build_installer.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | 4 | VERIFY OTHER 2>nul 5 | SETLOCAL ENABLEEXTENSIONS 6 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 7 | 8 | set CURDIR=%~dp0 9 | cd %CURDIR% 10 | echo Running %~n0 from %CURDIR% 11 | 12 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 13 | set PF32=C:\Program Files 14 | GOTO PFENDIF 15 | :WIN64PF 16 | set PF32=C:\Program Files (x86) 17 | :PFENDIF 18 | 19 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 20 | set PFSZ=C:\Program Files 21 | GOTO SEVENENDIF 22 | :WIN64SEVEN 23 | set PFSZ=C:\Program Files (x86) 24 | :SEVENENDIF 25 | 26 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 27 | set INNOPATH=%PF32%\Inno Setup 5 28 | GOTO INNOENDIF 29 | :INNOSIX 30 | set INNOPATH=%PF32%\Inno Setup 6 31 | :INNOENDIF 32 | 33 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF32%\FFmpeg\bin;%PF32%\eSpeak NG;%PF32%\Python38;%PF32%\Python38\Scripts;%PF32%\Git;%PF32%\Git\usr\bin;%PF32%\Git\mingw32\bin;%PATH% 34 | 35 | curl.exe --version 1>nul 2>nul 36 | if %ERRORLEVEL%==1 ( 37 | set CURL=call curl-psh.bat -L 38 | ) else ( 39 | set CURL=curl.exe -L 40 | ) 41 | 42 | set cat="cat.exe" 43 | set cut="cut.exe" 44 | set sed="sed.exe" 45 | set grep="grep.exe" 46 | 47 | echo. 48 | echo Finding package versions 49 | FOR /F "tokens=* USEBACKQ" %%F IN (`ffmpeg -version ^| %grep% version -m 1 ^| %cut% -d' ' -f3`) DO (SET ffmpeg_ver=%%F) 50 | FOR /F "tokens=* USEBACKQ" %%F IN (`espeak-ng --version ^| %cut% -d':' -f2 ^| %cut% -d' ' -f2`) DO (SET espeak_ver=%%F) 51 | FOR /F "tokens=* USEBACKQ" %%F IN (`python --version ^| %cut% -d' ' -f2`) DO (SET python_ver=%%F) 52 | 53 | REM FOR /F "tokens=* USEBACKQ" %%F IN (`python -m pip show pip ^| %grep% Version ^| %cut% -d' ' -f2`) DO (SET pip_ver=%%F) 54 | FOR /F "tokens=* USEBACKQ" %%F IN (`python -m pip show aeneas ^| %grep% Version ^| %cut% -d' ' -f2`) DO (SET aeneas_ver=%%F) 55 | FOR /F "tokens=* USEBACKQ" %%F IN (`python -m pip show numpy ^| %grep% Version ^| %cut% -d' ' -f2`) DO (SET numpy_ver=%%F) 56 | FOR /F "tokens=* USEBACKQ" %%F IN (`python -m pip show lxml ^| %grep% Version ^| %cut% -d' ' -f2`) DO (SET lxml_ver=%%F) 57 | FOR /F "tokens=* USEBACKQ" %%F IN (`python -m pip show beautifulsoup4 ^| %grep% Version ^| %cut% -d' ' -f2`) DO (SET bs4_ver=%%F) 58 | FOR /F "tokens=* USEBACKQ" %%F IN (`python -m pip show soupsieve ^| %grep% Version ^| %cut% -d' ' -f2`) DO (SET soupsieve_ver=%%F) 59 | 60 | echo. 61 | echo Finding package files 62 | FOR /F "tokens=* USEBACKQ" %%F IN (`dir aeneas-win-installer-packages\espeak-ng-*.msi /b`) DO (SET espeak_file=%%F) 63 | FOR /F "tokens=* USEBACKQ" %%F IN (`dir aeneas-win-installer-packages\ffmpeg-*.exe /b`) DO (SET ffmpeg_file=%%F) 64 | FOR /F "tokens=* USEBACKQ" %%F IN (`dir aeneas-win-installer-packages\python-*.exe /b`) DO (SET python_file=%%F) 65 | 66 | REM FOR /F "tokens=* USEBACKQ" %%F IN (`dir python-wheels\pip-%pip_ver%*.whl /b`) DO (SET pip_file=%%F) 67 | FOR /F "tokens=* USEBACKQ" %%F IN (`dir python-wheels\aeneas-%aeneas_ver%*.whl /b`) DO (SET aeneas_file=%%F) 68 | FOR /F "tokens=* USEBACKQ" %%F IN (`dir python-wheels\numpy-%numpy_ver%*.whl /b`) DO (SET numpy_file=%%F) 69 | FOR /F "tokens=* USEBACKQ" %%F IN (`dir python-wheels\lxml-%lxml_ver%*.whl /b`) DO (SET lxml_file=%%F) 70 | FOR /F "tokens=* USEBACKQ" %%F IN (`dir python-wheels\beautifulsoup4-%bs4_ver%*.whl /b`) DO (SET bs4_file=%%F) 71 | FOR /F "tokens=* USEBACKQ" %%F IN (`dir python-wheels\soupsieve-%soupsieve_ver%*.whl /b`) DO (SET soupsieve_file=%%F) 72 | 73 | echo. 74 | echo Parsing templates 75 | REM echo "%cat% install_packages_TEMPLATE.bat | %sed% -e 's/\[PIP_FILE\]/'%pip_file%'/g' | %sed% -e 's/\[FFMPEG_VER\]/'%ffmpeg_ver%'/g' | %sed% -e 's/\[FFMPEG_FILE\]/'%ffmpeg_file%'/g' | %sed% -e 's/\[ESPEAK_VER\]/'%espeak_ver%'/g' | %sed% -e 's/\[ESPEAK_FILE\]/'%espeak_file%'/g' | %sed% -e 's/\[PYTHON_VER\]/'%python_ver%'/g' | %sed% -e 's/\[PYTHON_FILE\]/'%python_file%'/g' | %sed% -e 's/\[NUMPY_VER\]/'%numpy_ver%'/g' | %sed% -e 's/\[NUMPY_FILE\]/'%numpy_file%'/g' | %sed% -e 's/\[LXML_VER\]/'%lxml_ver%'/g' | %sed% -e 's/\[LXML_FILE\]/'%lxml_file%'/g' | %sed% -e 's/\[BS4_VER\]/'%bs4_ver%'/g' | %sed% -e 's/\[BS4_FILE\]/'%bs4_file%'/g' | %sed% -e 's/\[SOUPSIEVE_VER\]/'%soupsieve_ver%'/g' | %sed% -e 's/\[SOUPSIEVE_FILE\]/'%soupsieve_file%'/g' | %sed% -e 's/\[AENEAS_VER\]/'%aeneas_ver%'/g' | %sed% -e 's/\[AENEAS_FILE\]/'%aeneas_file%'/g' > install_packages.bat" 76 | REM echo "%cat% Aeneas_Installer_TEMPLATE.iss | %sed% -e 's/\[PIP_FILE\]/'%pip_file%'/g' | %sed% -e 's/\[FFMPEG_VER\]/'%ffmpeg_ver%'/g' | %sed% -e 's/\[FFMPEG_FILE\]/'%ffmpeg_file%'/g' | %sed% -e 's/\[ESPEAK_VER\]/'%espeak_ver%'/g' | %sed% -e 's/\[ESPEAK_FILE\]/'%espeak_file%'/g' | %sed% -e 's/\[PYTHON_VER\]/'%python_ver%'/g' | %sed% -e 's/\[PYTHON_FILE\]/'%python_file%'/g' | %sed% -e 's/\[NUMPY_VER\]/'%numpy_ver%'/g' | %sed% -e 's/\[NUMPY_FILE\]/'%numpy_file%'/g' | %sed% -e 's/\[LXML_VER\]/'%lxml_ver%'/g' | %sed% -e 's/\[LXML_FILE\]/'%lxml_file%'/g' | %sed% -e 's/\[BS4_VER\]/'%bs4_ver%'/g' | %sed% -e 's/\[BS4_FILE\]/'%bs4_file%'/g' | %sed% -e 's/\[SOUPSIEVE_VER\]/'%soupsieve_ver%'/g' | %sed% -e 's/\[SOUPSIEVE_FILE\]/'%soupsieve_file%'/g' | %sed% -e 's/\[AENEAS_VER\]/'%aeneas_ver%'/g' | %sed% -e 's/\[AENEAS_FILE\]/'%aeneas_file%'/g' > Aeneas_Installer.iss" 77 | 78 | %cat% install_packages_TEMPLATE.bat | %sed% -e 's/\[PIP_FILE\]/'%pip_file%'/g' | %sed% -e 's/\[FFMPEG_VER\]/'%ffmpeg_ver%'/g' | %sed% -e 's/\[FFMPEG_FILE\]/'%ffmpeg_file%'/g' | %sed% -e 's/\[ESPEAK_VER\]/'%espeak_ver%'/g' | %sed% -e 's/\[ESPEAK_FILE\]/'%espeak_file%'/g' | %sed% -e 's/\[PYTHON_VER\]/'%python_ver%'/g' | %sed% -e 's/\[PYTHON_FILE\]/'%python_file%'/g' | %sed% -e 's/\[NUMPY_VER\]/'%numpy_ver%'/g' | %sed% -e 's/\[NUMPY_FILE\]/'%numpy_file%'/g' | %sed% -e 's/\[LXML_VER\]/'%lxml_ver%'/g' | %sed% -e 's/\[LXML_FILE\]/'%lxml_file%'/g' | %sed% -e 's/\[BS4_VER\]/'%bs4_ver%'/g' | %sed% -e 's/\[BS4_FILE\]/'%bs4_file%'/g' | %sed% -e 's/\[SOUPSIEVE_VER\]/'%soupsieve_ver%'/g' | %sed% -e 's/\[SOUPSIEVE_FILE\]/'%soupsieve_file%'/g' | %sed% -e 's/\[AENEAS_VER\]/'%aeneas_ver%'/g' | %sed% -e 's/\[AENEAS_FILE\]/'%aeneas_file%'/g' > install_packages.bat 79 | %cat% Aeneas_Installer_TEMPLATE.iss | %sed% -e 's/\[PIP_FILE\]/'%pip_file%'/g' | %sed% -e 's/\[FFMPEG_VER\]/'%ffmpeg_ver%'/g' | %sed% -e 's/\[FFMPEG_FILE\]/'%ffmpeg_file%'/g' | %sed% -e 's/\[ESPEAK_VER\]/'%espeak_ver%'/g' | %sed% -e 's/\[ESPEAK_FILE\]/'%espeak_file%'/g' | %sed% -e 's/\[PYTHON_VER\]/'%python_ver%'/g' | %sed% -e 's/\[PYTHON_FILE\]/'%python_file%'/g' | %sed% -e 's/\[NUMPY_VER\]/'%numpy_ver%'/g' | %sed% -e 's/\[NUMPY_FILE\]/'%numpy_file%'/g' | %sed% -e 's/\[LXML_VER\]/'%lxml_ver%'/g' | %sed% -e 's/\[LXML_FILE\]/'%lxml_file%'/g' | %sed% -e 's/\[BS4_VER\]/'%bs4_ver%'/g' | %sed% -e 's/\[BS4_FILE\]/'%bs4_file%'/g' | %sed% -e 's/\[SOUPSIEVE_VER\]/'%soupsieve_ver%'/g' | %sed% -e 's/\[SOUPSIEVE_FILE\]/'%soupsieve_file%'/g' | %sed% -e 's/\[AENEAS_VER\]/'%aeneas_ver%'/g' | %sed% -e 's/\[AENEAS_FILE\]/'%aeneas_file%'/g' > Aeneas_Installer.iss 80 | 81 | copy /b/v/y libespeak-ng-dll2lib-x86\libespeak-ng.lib espeak-ng.lib 82 | 83 | "%INNOPATH%\ISCC.exe" Aeneas_Installer.iss 84 | 85 | ENDLOCAL 86 | -------------------------------------------------------------------------------- /MS_Windows_Installer/build_packages.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | 4 | VERIFY OTHER 2>nul 5 | SETLOCAL ENABLEEXTENSIONS 6 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 7 | 8 | set CURDIR=%~dp0 9 | cd %CURDIR% 10 | echo Running %~n0 from %CURDIR% 11 | 12 | call "%cd%\build_espeak_package.bat" %1 13 | call "%cd%\build_ffmpeg_package.bat" %1 14 | call "%cd%\build_python_package.bat" %1 15 | call "%cd%\build_aeneas_package.bat" %1 16 | 17 | echo Now run build_installer.bat 18 | 19 | ENDLOCAL 20 | -------------------------------------------------------------------------------- /MS_Windows_Installer/build_python_package.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | IF /i {%2}=={ECHO} ECHO ON&SHIFT 4 | 5 | VERIFY OTHER 2>nul 6 | SETLOCAL ENABLEEXTENSIONS 7 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 8 | 9 | set CURDIR=%~dp0 10 | cd %CURDIR% 11 | echo Running %~n0 from %CURDIR% 12 | 13 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 14 | set PF32=C:\Program Files 15 | GOTO PFENDIF 16 | :WIN64PF 17 | set PF32=C:\Program Files (x86) 18 | :PFENDIF 19 | 20 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 21 | set PFSZ=C:\Program Files 22 | GOTO SEVENENDIF 23 | :WIN64SEVEN 24 | set PFSZ=C:\Program Files (x86) 25 | :SEVENENDIF 26 | 27 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 28 | set INNOPATH=%PF32%\Inno Setup 5 29 | GOTO INNOENDIF 30 | :INNOSIX 31 | set INNOPATH=%PF32%\Inno Setup 6 32 | :INNOENDIF 33 | 34 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF32%\FFmpeg\bin;%PF32%\eSpeak NG;%PF32%\Python38;%PF32%\Python38\Scripts;%PF32%\Git;%PF32%\Git\usr\bin;%PF32%\Git\mingw32\bin;%PATH% 35 | 36 | curl.exe --version 1>nul 2>nul 37 | if %ERRORLEVEL%==1 ( 38 | set CURL=call curl-psh.bat -L 39 | ) else ( 40 | set CURL=curl.exe -L 41 | ) 42 | 43 | mkdir aeneas-win-installer-packages 1>nul 2>nul 44 | 45 | IF EXIST "%cd%\aeneas-win-installer-packages\python-3.8.5.exe" GOTO ENDGET 46 | echo Downloading Python 3.8.5... 47 | %CURL% https://www.python.org/ftp/python/3.8.5/python-3.8.5.exe -o python-3.8.5.exe 48 | IF %ERRORLEVEL%==0 GOTO ENDIF 49 | echo Could not download Python... 50 | START https://www.python.org/downloads/release/python-385/ 51 | :ENDIF 52 | :ENDGET 53 | IF EXIST "%cd%\python-3.8.5.exe" ( 54 | echo Installing Python 3.8.5... 55 | "%cd%\python-3.8.5.exe" /passive InstallAllUsers=1 PrependPath=1 TargetDir="%PF32%"\Python38 56 | move /y "%cd%\python-3.8.5.exe" "%cd%\aeneas-win-installer-packages" 57 | ) 58 | 59 | ENDLOCAL 60 | -------------------------------------------------------------------------------- /MS_Windows_Installer/build_setup.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | 4 | VERIFY OTHER 2>nul 5 | SETLOCAL ENABLEEXTENSIONS 6 | IF ERRORLEVEL 1 ECHO Unable to enable extensions 7 | 8 | set CURDIR=%~dp0 9 | cd %CURDIR% 10 | echo Running %~n0 from %CURDIR% 11 | 12 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PF 13 | set PF32=C:\Program Files 14 | GOTO PFENDIF 15 | :WIN64PF 16 | set PF32=C:\Program Files (x86) 17 | :PFENDIF 18 | 19 | IF EXIST "C:\Program Files (x86)\7-Zip" GOTO WIN64SEVEN 20 | set PFSZ=C:\Program Files 21 | GOTO SEVENENDIF 22 | :WIN64SEVEN 23 | set PFSZ=C:\Program Files (x86) 24 | :SEVENENDIF 25 | 26 | IF EXIST "%PF32%\Inno Setup 6" GOTO INNOSIX 27 | set INNOPATH=%PF32%\Inno Setup 5 28 | GOTO INNOENDIF 29 | :INNOSIX 30 | set INNOPATH=%PF32%\Inno Setup 6 31 | :INNOENDIF 32 | 33 | set PATH=%INNOPATH%;%PFSZ%\7-Zip;%PF32%\FFmpeg\bin;%PF32%\eSpeak NG;%PF32%\Python38;%PF32%\Python38\Scripts;%PF32%\Git;%PF32%\Git\usr\bin;%PF32%\Git\mingw32\bin;%PATH% 34 | 35 | curl.exe --version 1>nul 2>nul 36 | if %ERRORLEVEL%==1 ( 37 | set CURL=call curl-psh.bat -L 38 | ) else ( 39 | set CURL=curl.exe -L 40 | ) 41 | 42 | IF NOT EXIST "%cd%\Git-2.41.0-32-bit.exe" ( 43 | echo Downloading Git for Windows... 44 | %CURL% "https://github.com/git-for-windows/git/releases/download/v2.41.0.windows.1/Git-2.41.0-32-bit.exe" -o "%cd%\Git-2.41.0-32-bit.exe" 45 | ) 46 | IF EXIST "%cd%\Git-2.41.0-32-bit.exe" ( 47 | echo Installing Git for Windows... 48 | Git-2.41.0-32-bit.exe 49 | ) ELSE ( 50 | echo Could not find Git for Windows... 51 | START https://git-scm.com/download/win 52 | ) 53 | 54 | curl.exe --version 1>nul 2>nul 55 | if %ERRORLEVEL%==1 ( 56 | set CURL=call curl-psh.bat -L 57 | ) else ( 58 | set CURL=curl.exe -L 59 | ) 60 | 61 | IF NOT EXIST "%cd%\7z1900.exe" ( 62 | echo Downloading 7-zip... 63 | %CURL% "https://www.7-zip.org/a/7z1900.exe" -o "%cd%\7z1900.exe" 64 | ) 65 | IF EXIST "%cd%\7z1900.exe" ( 66 | echo Installing 7-zip... 67 | 7z1900.exe 68 | ) ELSE ( 69 | echo Could not find 7-zip... 70 | START http://www.7-zip.org/ 71 | ) 72 | 73 | IF NOT EXIST "%cd%\innosetup-6.0.5.exe" ( 74 | echo Downloading Inno Setup... 75 | %CURL% "https://files.jrsoftware.org/is/6/innosetup-6.0.5.exe" -o "%cd%\innosetup-6.0.5.exe" 76 | ) 77 | IF EXIST "%cd%\innosetup-6.0.5.exe" ( 78 | echo Installing InnoSetup... 79 | innosetup-6.0.5.exe 80 | ) ELSE ( 81 | echo Could not find InnoSetup... 82 | START http://www.jrsoftware.org/isdl.php 83 | ) 84 | 85 | REM IF NOT EXIST "%cd%\python-3.9.13.exe" ( 86 | REM echo Downloading Python 3.9.13... 87 | REM %CURL% "https://www.python.org/ftp/python/3.9.13/python-3.9.13.exe" -o "%cd%\python-3.9.13.exe" 88 | REM ) 89 | REM IF EXIST "%cd%\python-3.9.13.exe" ( 90 | REM echo Installing Python 3.9.13... 91 | REM python-3.9.13.exe /passive InstallAllUsers=1 PrependPath=1 TargetDir="%PF32%"\Python38 92 | REM ) ELSE ( 93 | REM echo Could not find Python 3.9.13... 94 | REM START https://www.python.org/downloads/release/python-385/ 95 | REM ) 96 | 97 | REM IF NOT EXIST "%cd%\dotNetFx35setup.exe" ( 98 | REM echo Downloading Microsoft .NET Framework 3.5... 99 | REM %CURL% "https://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe" -o "%cd%\dotNetFx35setup.exe" 100 | REM ) 101 | REM IF EXIST "%cd%\dotNetFx35setup.exe" ( 102 | REM echo Installing Microsoft .NET Framework 3.5... 103 | REM dotNetFx35setup.exe /SILENT 104 | REM ) ELSE ( 105 | REM echo Could not find Microsoft .NET Framework 3.5... 106 | REM START http://www.microsoft.com/en-us/download/details.aspx?id=21 107 | REM ) 108 | 109 | REM IF NOT EXIST "%cd%\VCForPython27.msi" ( 110 | REM echo Downloading Visual C++ For Python27... 111 | REM %CURL% "https://download.microsoft.com/download/7/9/6/796EF2E4-801B-4FC4-AB28-B59FBF6D907B/VCForPython27.msi" -o "%cd%\VCForPython27.msi" 112 | REM ) 113 | REM IF EXIST "%cd%\VCForPython27.msi" ( 114 | REM echo Installing Visual C++ For Python27... 115 | REM VCForPython27.msi /PASSIVE 116 | REM ) ELSE ( 117 | REM echo Could not find Visual C++ For Python27... 118 | REM START http://www.microsoft.com/en-us/download/details.aspx?id=44266 119 | REM ) 120 | 121 | echo You need to have Microsoft VisualStudio C++ Build Tools installed 122 | START https://visualstudio.microsoft.com/visual-cpp-build-tools/ 123 | 124 | echo Now run build_packages.bat 125 | -------------------------------------------------------------------------------- /MS_Windows_Installer/clean.bat: -------------------------------------------------------------------------------- 1 | rm -rf numpy-* 2 | git clean -fdx 3 | -------------------------------------------------------------------------------- /MS_Windows_Installer/clean_up.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | del /q aeneas-win-installer-packages\* 3 | del /q python-wheels\* 4 | rmdir /s /q numpy-* 5 | rmdir /s /q aeneas-* 6 | rmdir /s /q espeak-* 7 | rmdir /s /q ffmpeg-* 8 | rmdir /s /q python-* 9 | del *.tar* 10 | del *.zip 11 | del *.whl 12 | del *.exe 13 | del *.msi 14 | del *.7z 15 | 16 | -------------------------------------------------------------------------------- /MS_Windows_Installer/copy_espeak_aeneas.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 4 | set PF32=C:\Program Files 5 | (call ) 6 | GOTO WIN32PATH 7 | :WIN64PATH 8 | set PF64=C:\Program Files 9 | set PF32=C:\Program Files (x86) 10 | (call ) 11 | :WIN32PATH 12 | 13 | set PATH=%PF32%\Python38\;%PF32%\Python38\Scripts;%PF32%\eSpeak NG;%PF32%\FFmpeg\bin;%PATH% 14 | 15 | echo Copying espeak-ng.exe to espeak.exe 16 | copy /b/v/y "%PF32%\eSpeak NG\espeak-ng.exe" "%PF32%\eSpeak NG\espeak.exe" 17 | 18 | echo Copying libespeak-ng.dll to %PF32%\Python38\Lib\site-packages\aeneas\cew 19 | copy /b/v/y "%PF32%\eSpeak NG\libespeak-ng.dll" "%PF32%\Python38\Lib\site-packages\aeneas\cew" 20 | -------------------------------------------------------------------------------- /MS_Windows_Installer/create_espeak-ng-x64_lib.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | REM xcopy /y C:\Windows\system32\espeak.dll . 3 | dll2lib 64 libespeak-ng.dll "C:\Program Files\eSpeak NG" . -------------------------------------------------------------------------------- /MS_Windows_Installer/create_espeak-ng-x86_lib.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | REM xcopy /y C:\Windows\system32\espeak.dll . 3 | dll2lib 32 libespeak-ng.dll "C:\Program Files (x86)\eSpeak NG" . -------------------------------------------------------------------------------- /MS_Windows_Installer/create_espeak_lib.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | REM xcopy /y C:\Windows\system32\espeak.dll . 3 | dll2lib 32 espeak.dll C:\Windows\system32\ . -------------------------------------------------------------------------------- /MS_Windows_Installer/curl-psh.bat: -------------------------------------------------------------------------------- 1 | echo on 2 | powershell "(new-object System.Net.WebClient).DownloadFile('%2', '%4')" 3 | @echo off 4 | -------------------------------------------------------------------------------- /MS_Windows_Installer/delete_espeak_aeneas.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 4 | set PF32=C:\Program Files 5 | (call ) 6 | GOTO WIN32PATH 7 | :WIN64PATH 8 | set PF64=C:\Program Files 9 | set PF32=C:\Program Files (x86) 10 | (call ) 11 | :WIN32PATH 12 | 13 | set PATH=%PF32%\Python38\;%PF32%\Python38\Scripts;%PF32%\eSpeak NG;%PF32%\FFmpeg\bin;%PATH% 14 | 15 | echo Deleting espeak.exe from %PF32%\eSpeak NG\ 16 | del /f/q "%PF32%\eSpeak NG\espeak.exe" 17 | 18 | echo Deleting libespeak-ng.dll from %PF32%\Python38\Lib\site-packages\aeneas\cew 19 | del /f/q "%PF32%\Python38\Lib\site-packages\aeneas\cew\libespeak-ng.dll" 20 | -------------------------------------------------------------------------------- /MS_Windows_Installer/dll2lib.bat: -------------------------------------------------------------------------------- 1 | REM Usage: dll2lib [32|64] some-file.dll path-to-dll output-path 2 | REM 3 | REM Generates some-file.lib from some-file.dll, making an intermediate 4 | REM some-file.def from the results of dumpbin /exports some-file.dll. 5 | REM Currently must run without path on DLL. 6 | REM (Fix by removing path when of lib_name for LIBRARY line below?) 7 | REM 8 | REM Requires 'dumpbin' and 'lib' in PATH - run from VS developer prompt. 9 | REM 10 | REM Script inspired by http://stackoverflow.com/questions/9946322/how-to-generate-an-import-library-lib-file-from-a-dll 11 | SETLOCAL 12 | if "%1"=="32" (set machine=x86) else (set machine=x64) 13 | set dll_file=%2 14 | set dll_path=%3 15 | set out_path=%4 16 | cd "%out_path%" 17 | set out_path="%CD%" 18 | set dll_file_no_ext=%dll_file:~0,-4% 19 | set exports_file=%dll_file_no_ext%-exports.txt 20 | set def_file=%dll_file_no_ext%.def 21 | set lib_file=%dll_file_no_ext%.lib 22 | set lib_name=%dll_file_no_ext% 23 | 24 | cd "%dll_path%" 25 | dumpbin /exports %dll_file% > "%out_path%\%exports_file%" 26 | cd "%out_path%" 27 | 28 | echo LIBRARY %lib_name% > %def_file% 29 | echo EXPORTS >> %def_file% 30 | for /f "skip=19 tokens=1,4" %%A in (%exports_file%) do if NOT "%%B" == "" (echo %%B @%%A >> %def_file%) 31 | 32 | lib /def:%def_file% /out:%lib_file% /machine:%machine% 33 | 34 | REM Clean up temporary intermediate files 35 | REM del %exports_file% %def_file% %dll_file_no_ext%.exp -------------------------------------------------------------------------------- /MS_Windows_Installer/eSpeak-NG.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/eSpeak-NG.reg -------------------------------------------------------------------------------- /MS_Windows_Installer/espeak-exports.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/espeak-exports.txt -------------------------------------------------------------------------------- /MS_Windows_Installer/espeak-ng.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/espeak-ng.lib -------------------------------------------------------------------------------- /MS_Windows_Installer/espeak.def: -------------------------------------------------------------------------------- 1 | LIBRARY espeak 2 | EXPORTS 3 | -------------------------------------------------------------------------------- /MS_Windows_Installer/espeak.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/espeak.lib -------------------------------------------------------------------------------- /MS_Windows_Installer/ff-prompt.bat: -------------------------------------------------------------------------------- 1 | ECHO OFF 2 | REM FF Prompt 1.1 3 | REM Open a command prompt to run ffmpeg/ffplay/ffprobe 4 | REM Copyright (C) 2013 Kyle Schwarz 5 | 6 | TITLE FF Prompt 7 | 8 | IF NOT EXIST bin\ffmpeg.exe ( 9 | CLS 10 | ECHO bin\ffmpeg.exe could not be found. 11 | GOTO:error 12 | ) 13 | 14 | CD bin || GOTO:error 15 | PROMPT $G 16 | CLS 17 | ffmpeg -version 18 | SET PATH=%CD%;%PATH% 19 | ECHO. 20 | ECHO For help run: ffmpeg -h 21 | ECHO For formats run: ffmpeg -formats ^| more 22 | ECHO For codecs run: ffmpeg -codecs ^| more 23 | ECHO. 24 | ECHO Current directory is now: "%CD%" 25 | ECHO The bin directory has been added to PATH 26 | ECHO. 27 | 28 | CMD /F:ON /Q /K 29 | GOTO:EOF 30 | 31 | :error 32 | ECHO. 33 | ECHO Press any key to exit. 34 | PAUSE >nul 35 | GOTO:EOF 36 | -------------------------------------------------------------------------------- /MS_Windows_Installer/install_espeak-ng_extra.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | :-------------------------------------- 4 | REM --> Check for permissions 5 | >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 6 | 7 | REM --> If error flag set, we do not have admin. 8 | if '%errorlevel%' NEQ '0' ( 9 | echo Requesting administrative privileges... 10 | goto UACPrompt 11 | ) else ( goto gotAdmin ) 12 | 13 | :UACPrompt 14 | echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 15 | echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 16 | 17 | call "%temp%\getadmin.vbs" 18 | exit /B 19 | 20 | :gotAdmin 21 | if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) 22 | pushd "%CD%" 23 | CD /D "%~dp0" 24 | :-------------------------------------- 25 | 26 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 27 | set PF32=C:\Program Files 28 | (call ) 29 | GOTO WIN32PATH 30 | :WIN64PATH 31 | set PF32=C:\Program Files (x86) 32 | (call ) 33 | :WIN32PATH 34 | 35 | set PATH=%PF32%\Python38\;%PF32%\Python38\Scripts;%PF32%\eSpeak NG;%PF32%\FFmpeg\bin;%PATH% 36 | 37 | echo Copying espeak-ng.exe to espeak.exe 38 | copy /b/v/y "%PF32%\eSpeak NG\espeak-ng.exe" "%PF32%\eSpeak NG\espeak.exe" 39 | echo Copying espeak-ng.lib to %PF32%\Python38\libs\ 40 | copy /b/v/y "espeak-ng.lib" "%PF32%\Python38\libs\" 41 | echo Copying libespeak-ng.dll to %PF32%\Python38\Lib\site-packages\aeneas\cew 42 | copy /b/v/y "%PF32%\eSpeak NG\libespeak-ng.dll" "%PF32%\Python38\Lib\site-packages\aeneas\cew" 43 | -------------------------------------------------------------------------------- /MS_Windows_Installer/install_packages.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 4 | set PF32=C:\Program Files 5 | (call ) 6 | GOTO WIN32PATH 7 | :WIN64PATH 8 | set PF32=C:\Program Files (x86) 9 | (call ) 10 | :WIN32PATH 11 | 12 | set PATH=%PF32%\Python38\;%PF32%\Python38\Scripts;%PF32%\eSpeak NG;%PF32%\FFmpeg\bin;%PATH% 13 | 14 | echo Copying espeak-ng.exe to espeak.exe 15 | copy /b/v/y "%PF32%\eSpeak NG\espeak-ng.exe" "%PF32%\eSpeak NG\espeak.exe" 16 | echo Copying espeak-ng.lib to %PF32%\Python38\libs\ 17 | copy /b/v/y "espeak-ng.lib" "%PF32%\Python38\libs\" 18 | 19 | python -m ensurepip 20 | REM python -m pip install -U 21 | python -m pip install -U numpy-1.19.1-cp38-cp38-win32.whl 22 | python -m pip install -U lxml-4.5.2-cp38-cp38-win32.whl 23 | python -m pip install -U soupsieve-2.0.1-py3-none-any.whl 24 | python -m pip install -U beautifulsoup4-4.9.1-py3-none-any.whl 25 | python -m pip install -U aeneas-1.7.3.0-cp38-cp38-win32.whl 26 | 27 | echo Copying libespeak-ng.dll to %PF32%\Python38\Lib\site-packages\aeneas\cew 28 | copy /b/v/y "%PF32%\eSpeak NG\libespeak-ng.dll" "%PF32%\Python38\Lib\site-packages\aeneas\cew" 29 | -------------------------------------------------------------------------------- /MS_Windows_Installer/install_packages_TEMPLATE.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | IF EXIST "C:\Program Files (x86)" GOTO WIN64PATH 4 | set PF32=C:\Program Files 5 | (call ) 6 | GOTO WIN32PATH 7 | :WIN64PATH 8 | set PF32=C:\Program Files (x86) 9 | (call ) 10 | :WIN32PATH 11 | 12 | set PATH=%PF32%\Python38\;%PF32%\Python38\Scripts;%PF32%\eSpeak NG;%PF32%\FFmpeg\bin;%PATH% 13 | 14 | echo Copying espeak-ng.exe to espeak.exe 15 | copy /b/v/y "%PF32%\eSpeak NG\espeak-ng.exe" "%PF32%\eSpeak NG\espeak.exe" 16 | echo Copying espeak-ng.lib to %PF32%\Python38\libs\ 17 | copy /b/v/y "espeak-ng.lib" "%PF32%\Python38\libs\" 18 | 19 | python -m ensurepip 20 | REM python -m pip install -U [PIP_FILE] 21 | python -m pip install -U [NUMPY_FILE] 22 | python -m pip install -U [LXML_FILE] 23 | python -m pip install -U [SOUPSIEVE_FILE] 24 | python -m pip install -U [BS4_FILE] 25 | python -m pip install -U [AENEAS_FILE] 26 | 27 | echo Copying libespeak-ng.dll to %PF32%\Python38\Lib\site-packages\aeneas\cew 28 | copy /b/v/y "%PF32%\eSpeak NG\libespeak-ng.dll" "%PF32%\Python38\Lib\site-packages\aeneas\cew" 29 | -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng-dll2lib-x64/libespeak-ng-exports.txt: -------------------------------------------------------------------------------- 1 | Microsoft (R) COFF/PE Dumper Version 14.12.25830.2 2 | Copyright (C) Microsoft Corporation. All rights reserved. 3 | 4 | 5 | Dump of file libespeak-ng.dll 6 | 7 | File Type: DLL 8 | 9 | Section contains the following exports for libespeak-ng.dll 10 | 11 | 00000000 characteristics 12 | FFFFFFFF time date stamp 13 | 0.00 version 14 | 1 ordinal base 15 | 64 number of functions 16 | 64 number of names 17 | 18 | ordinal hint RVA name 19 | 20 | 1 0 0003CE40 DllCanUnloadNow 21 | 2 1 0003CDB0 DllGetClassObject 22 | 3 2 000240C0 GetFileLength 23 | 4 3 00015780 create_text_decoder 24 | 5 4 000157B0 destroy_text_decoder 25 | 6 5 00016470 espeak_Cancel 26 | 7 6 000161D0 espeak_Char 27 | 8 7 00016580 espeak_CompileDictionary 28 | 9 8 00039AB0 espeak_GetCurrentVoice 29 | 10 9 00024E60 espeak_GetParameter 30 | 11 A 00025110 espeak_Info 31 | 12 B 00015EF0 espeak_Initialize 32 | 13 C 00015770 espeak_IsPlaying 33 | 14 D 00016110 espeak_Key 34 | 15 E 00039890 espeak_ListVoices 35 | 16 F 000162B0 espeak_SetParameter 36 | 17 10 00024D80 espeak_SetPhonemeCallback 37 | 18 11 00024EA0 espeak_SetPhonemeTrace 38 | 19 12 00016310 espeak_SetPunctuationList 39 | 20 13 00024D60 espeak_SetSynthCallback 40 | 21 14 00024D70 espeak_SetUriCallback 41 | 22 15 000163C0 espeak_SetVoiceByFile 42 | 23 16 00016360 espeak_SetVoiceByName 43 | 24 17 00016420 espeak_SetVoiceByProperties 44 | 25 18 000164D0 espeak_Synchronize 45 | 26 19 00015FE0 espeak_Synth 46 | 27 1A 00016080 espeak_Synth_Mark 47 | 28 1B 00016520 espeak_Terminate 48 | 29 1C 00024ED0 espeak_TextToPhonemes 49 | 30 1D 00016470 espeak_ng_Cancel 50 | 31 1E 00015C50 espeak_ng_ClearErrorContext 51 | 32 1F 0000F3B0 espeak_ng_CompileDictionary 52 | 33 20 0000BF10 espeak_ng_CompileIntonation 53 | 34 21 0000F890 espeak_ng_CompileMbrolaVoice 54 | 35 22 0000B8A0 espeak_ng_CompilePhonemeData 55 | 36 23 0000B8C0 espeak_ng_CompilePhonemeDataPath 56 | 37 24 000153D0 espeak_ng_EncodingFromName 57 | 38 25 000246A0 espeak_ng_GetSampleRate 58 | 39 26 00015C90 espeak_ng_GetStatusCodeMessage 59 | 40 27 00024270 espeak_ng_Initialize 60 | 41 28 00023EA0 espeak_ng_InitializeOutput 61 | 42 29 00024140 espeak_ng_InitializePath 62 | 43 2A 00015E30 espeak_ng_PrintStatusCodeMessage 63 | 44 2B 00024E90 espeak_ng_SetParameter 64 | 45 2C 00016310 espeak_ng_SetPunctuationList 65 | 46 2D 000395F0 espeak_ng_SetVoiceByFile 66 | 47 2E 00039700 espeak_ng_SetVoiceByName 67 | 48 2F 00039840 espeak_ng_SetVoiceByProperties 68 | 49 30 00024D00 espeak_ng_SpeakCharacter 69 | 50 31 00024DF0 espeak_ng_SpeakKeyName 70 | 51 32 00024F90 espeak_ng_Synchronize 71 | 52 33 00024D90 espeak_ng_Synthesize 72 | 53 34 00024DC0 espeak_ng_SynthesizeMark 73 | 54 35 00024FB0 espeak_ng_Terminate 74 | 55 36 0000FCE0 strncpy0 75 | 56 37 000157C0 text_decoder_decode_string 76 | 57 38 00015850 text_decoder_decode_string_auto 77 | 58 39 00015940 text_decoder_decode_string_multibyte 78 | 59 3A 000158D0 text_decoder_decode_wstring 79 | 60 3B 00015B40 text_decoder_eof 80 | 61 3C 00015BA0 text_decoder_get_buffer 81 | 62 3D 00015B50 text_decoder_getc 82 | 63 3E 00015B60 text_decoder_peekc 83 | 64 3F 0002E1B0 utf8_in 84 | 85 | Summary 86 | 87 | 2A000 .data 88 | 2000 .pdata 89 | 2B000 .rdata 90 | 1000 .reloc 91 | 1000 .rsrc 92 | 3F000 .text 93 | 1000 _RDATA 94 | -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng-dll2lib-x64/libespeak-ng.def: -------------------------------------------------------------------------------- 1 | LIBRARY libespeak-ng 2 | EXPORTS 3 | DllCanUnloadNow @1 4 | DllGetClassObject @2 5 | GetFileLength @3 6 | create_text_decoder @4 7 | destroy_text_decoder @5 8 | espeak_Cancel @6 9 | espeak_Char @7 10 | espeak_CompileDictionary @8 11 | espeak_GetCurrentVoice @9 12 | espeak_GetParameter @10 13 | espeak_Info @11 14 | espeak_Initialize @12 15 | espeak_IsPlaying @13 16 | espeak_Key @14 17 | espeak_ListVoices @15 18 | espeak_SetParameter @16 19 | espeak_SetPhonemeCallback @17 20 | espeak_SetPhonemeTrace @18 21 | espeak_SetPunctuationList @19 22 | espeak_SetSynthCallback @20 23 | espeak_SetUriCallback @21 24 | espeak_SetVoiceByFile @22 25 | espeak_SetVoiceByName @23 26 | espeak_SetVoiceByProperties @24 27 | espeak_Synchronize @25 28 | espeak_Synth @26 29 | espeak_Synth_Mark @27 30 | espeak_Terminate @28 31 | espeak_TextToPhonemes @29 32 | espeak_ng_Cancel @30 33 | espeak_ng_ClearErrorContext @31 34 | espeak_ng_CompileDictionary @32 35 | espeak_ng_CompileIntonation @33 36 | espeak_ng_CompileMbrolaVoice @34 37 | espeak_ng_CompilePhonemeData @35 38 | espeak_ng_CompilePhonemeDataPath @36 39 | espeak_ng_EncodingFromName @37 40 | espeak_ng_GetSampleRate @38 41 | espeak_ng_GetStatusCodeMessage @39 42 | espeak_ng_Initialize @40 43 | espeak_ng_InitializeOutput @41 44 | espeak_ng_InitializePath @42 45 | espeak_ng_PrintStatusCodeMessage @43 46 | espeak_ng_SetParameter @44 47 | espeak_ng_SetPunctuationList @45 48 | espeak_ng_SetVoiceByFile @46 49 | espeak_ng_SetVoiceByName @47 50 | espeak_ng_SetVoiceByProperties @48 51 | espeak_ng_SpeakCharacter @49 52 | espeak_ng_SpeakKeyName @50 53 | espeak_ng_Synchronize @51 54 | espeak_ng_Synthesize @52 55 | espeak_ng_SynthesizeMark @53 56 | espeak_ng_Terminate @54 57 | strncpy0 @55 58 | text_decoder_decode_string @56 59 | text_decoder_decode_string_auto @57 60 | text_decoder_decode_string_multibyte @58 61 | text_decoder_decode_wstring @59 62 | text_decoder_eof @60 63 | text_decoder_get_buffer @61 64 | text_decoder_getc @62 65 | text_decoder_peekc @63 66 | utf8_in @64 67 | -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng-dll2lib-x64/libespeak-ng.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/libespeak-ng-dll2lib-x64/libespeak-ng.exp -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng-dll2lib-x64/libespeak-ng.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/libespeak-ng-dll2lib-x64/libespeak-ng.lib -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng-dll2lib-x86/libespeak-ng-exports.txt: -------------------------------------------------------------------------------- 1 | Microsoft (R) COFF/PE Dumper Version 14.12.25830.2 2 | Copyright (C) Microsoft Corporation. All rights reserved. 3 | 4 | 5 | Dump of file libespeak-ng.dll 6 | 7 | File Type: DLL 8 | 9 | Section contains the following exports for libespeak-ng.dll 10 | 11 | 00000000 characteristics 12 | FFFFFFFF time date stamp 13 | 0.00 version 14 | 1 ordinal base 15 | 64 number of functions 16 | 64 number of names 17 | 18 | ordinal hint RVA name 19 | 20 | 1 0 000371A0 DllCanUnloadNow 21 | 2 1 000370F0 DllGetClassObject 22 | 3 2 00021560 GetFileLength 23 | 4 3 00014650 create_text_decoder 24 | 5 4 00014680 destroy_text_decoder 25 | 6 5 000150B0 espeak_Cancel 26 | 7 6 00014E60 espeak_Char 27 | 8 7 000151A0 espeak_CompileDictionary 28 | 9 8 000346F0 espeak_GetCurrentVoice 29 | 10 9 00022150 espeak_GetParameter 30 | 11 A 000223C0 espeak_Info 31 | 12 B 00014C60 espeak_Initialize 32 | 13 C 00014640 espeak_IsPlaying 33 | 14 D 00014E10 espeak_Key 34 | 15 E 00034550 espeak_ListVoices 35 | 16 F 00014F20 espeak_SetParameter 36 | 17 10 00022060 espeak_SetPhonemeCallback 37 | 18 11 00022190 espeak_SetPhonemeTrace 38 | 19 12 00014F80 espeak_SetPunctuationList 39 | 20 13 00022040 espeak_SetSynthCallback 40 | 21 14 00022050 espeak_SetUriCallback 41 | 22 15 00015020 espeak_SetVoiceByFile 42 | 23 16 00014FD0 espeak_SetVoiceByName 43 | 24 17 00015070 espeak_SetVoiceByProperties 44 | 25 18 00015100 espeak_Synchronize 45 | 26 19 00014D30 espeak_Synth 46 | 27 1A 00014DA0 espeak_Synth_Mark 47 | 28 1B 00015150 espeak_Terminate 48 | 29 1C 000221C0 espeak_TextToPhonemes 49 | 30 1D 00022250 espeak_ng_Cancel 50 | 31 1E 000149E0 espeak_ng_ClearErrorContext 51 | 32 1F 0000E6F0 espeak_ng_CompileDictionary 52 | 33 20 0000B3F0 espeak_ng_CompileIntonation 53 | 34 21 0000EB20 espeak_ng_CompileMbrolaVoice 54 | 35 22 0000AC90 espeak_ng_CompilePhonemeData 55 | 36 23 0000ACB0 espeak_ng_CompilePhonemeDataPath 56 | 37 24 00014300 espeak_ng_EncodingFromName 57 | 38 25 00021AA0 espeak_ng_GetSampleRate 58 | 39 26 00014A10 espeak_ng_GetStatusCodeMessage 59 | 40 27 000216E0 espeak_ng_Initialize 60 | 41 28 000213B0 espeak_ng_InitializeOutput 61 | 42 29 000215D0 espeak_ng_InitializePath 62 | 43 2A 00014BA0 espeak_ng_PrintStatusCodeMessage 63 | 44 2B 00022170 espeak_ng_SetParameter 64 | 45 2C 00014F80 espeak_ng_SetPunctuationList 65 | 46 2D 00034210 espeak_ng_SetVoiceByFile 66 | 47 2E 00034340 espeak_ng_SetVoiceByName 67 | 48 2F 000344C0 espeak_ng_SetVoiceByProperties 68 | 49 30 000220F0 espeak_ng_SpeakCharacter 69 | 50 31 000220E0 espeak_ng_SpeakKeyName 70 | 51 32 000222A0 espeak_ng_Synchronize 71 | 52 33 00022070 espeak_ng_Synthesize 72 | 53 34 000220B0 espeak_ng_SynthesizeMark 73 | 54 35 000222B0 espeak_ng_Terminate 74 | 55 36 0000EF90 strncpy0 75 | 56 37 000146A0 text_decoder_decode_string 76 | 57 38 00014720 text_decoder_decode_string_auto 77 | 58 39 00014810 text_decoder_decode_string_multibyte 78 | 59 3A 000147A0 text_decoder_decode_wstring 79 | 60 3B 000148F0 text_decoder_eof 80 | 61 3C 00014950 text_decoder_get_buffer 81 | 62 3D 00014910 text_decoder_getc 82 | 63 3E 00014920 text_decoder_peekc 83 | 64 3F 00029830 utf8_in 84 | 85 | Summary 86 | 87 | 24000 .data 88 | 27000 .rdata 89 | 5000 .reloc 90 | 1000 .rsrc 91 | 39000 .text 92 | 1000 _RDATA 93 | -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng-dll2lib-x86/libespeak-ng.def: -------------------------------------------------------------------------------- 1 | LIBRARY libespeak-ng 2 | EXPORTS 3 | DllCanUnloadNow @1 4 | DllGetClassObject @2 5 | GetFileLength @3 6 | create_text_decoder @4 7 | destroy_text_decoder @5 8 | espeak_Cancel @6 9 | espeak_Char @7 10 | espeak_CompileDictionary @8 11 | espeak_GetCurrentVoice @9 12 | espeak_GetParameter @10 13 | espeak_Info @11 14 | espeak_Initialize @12 15 | espeak_IsPlaying @13 16 | espeak_Key @14 17 | espeak_ListVoices @15 18 | espeak_SetParameter @16 19 | espeak_SetPhonemeCallback @17 20 | espeak_SetPhonemeTrace @18 21 | espeak_SetPunctuationList @19 22 | espeak_SetSynthCallback @20 23 | espeak_SetUriCallback @21 24 | espeak_SetVoiceByFile @22 25 | espeak_SetVoiceByName @23 26 | espeak_SetVoiceByProperties @24 27 | espeak_Synchronize @25 28 | espeak_Synth @26 29 | espeak_Synth_Mark @27 30 | espeak_Terminate @28 31 | espeak_TextToPhonemes @29 32 | espeak_ng_Cancel @30 33 | espeak_ng_ClearErrorContext @31 34 | espeak_ng_CompileDictionary @32 35 | espeak_ng_CompileIntonation @33 36 | espeak_ng_CompileMbrolaVoice @34 37 | espeak_ng_CompilePhonemeData @35 38 | espeak_ng_CompilePhonemeDataPath @36 39 | espeak_ng_EncodingFromName @37 40 | espeak_ng_GetSampleRate @38 41 | espeak_ng_GetStatusCodeMessage @39 42 | espeak_ng_Initialize @40 43 | espeak_ng_InitializeOutput @41 44 | espeak_ng_InitializePath @42 45 | espeak_ng_PrintStatusCodeMessage @43 46 | espeak_ng_SetParameter @44 47 | espeak_ng_SetPunctuationList @45 48 | espeak_ng_SetVoiceByFile @46 49 | espeak_ng_SetVoiceByName @47 50 | espeak_ng_SetVoiceByProperties @48 51 | espeak_ng_SpeakCharacter @49 52 | espeak_ng_SpeakKeyName @50 53 | espeak_ng_Synchronize @51 54 | espeak_ng_Synthesize @52 55 | espeak_ng_SynthesizeMark @53 56 | espeak_ng_Terminate @54 57 | strncpy0 @55 58 | text_decoder_decode_string @56 59 | text_decoder_decode_string_auto @57 60 | text_decoder_decode_string_multibyte @58 61 | text_decoder_decode_wstring @59 62 | text_decoder_eof @60 63 | text_decoder_get_buffer @61 64 | text_decoder_getc @62 65 | text_decoder_peekc @63 66 | utf8_in @64 67 | -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng-dll2lib-x86/libespeak-ng.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/libespeak-ng-dll2lib-x86/libespeak-ng.exp -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng-dll2lib-x86/libespeak-ng.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/libespeak-ng-dll2lib-x86/libespeak-ng.lib -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng-exports.txt: -------------------------------------------------------------------------------- 1 | Microsoft (R) COFF/PE Dumper Version 14.12.25830.2 2 | Copyright (C) Microsoft Corporation. All rights reserved. 3 | 4 | 5 | Dump of file libespeak-ng.dll 6 | 7 | File Type: DLL 8 | 9 | Section contains the following exports for libespeak-ng.dll 10 | 11 | 00000000 characteristics 12 | FFFFFFFF time date stamp 13 | 0.00 version 14 | 1 ordinal base 15 | 64 number of functions 16 | 64 number of names 17 | 18 | ordinal hint RVA name 19 | 20 | 1 0 000371A0 DllCanUnloadNow 21 | 2 1 000370F0 DllGetClassObject 22 | 3 2 00021560 GetFileLength 23 | 4 3 00014650 create_text_decoder 24 | 5 4 00014680 destroy_text_decoder 25 | 6 5 000150B0 espeak_Cancel 26 | 7 6 00014E60 espeak_Char 27 | 8 7 000151A0 espeak_CompileDictionary 28 | 9 8 000346F0 espeak_GetCurrentVoice 29 | 10 9 00022150 espeak_GetParameter 30 | 11 A 000223C0 espeak_Info 31 | 12 B 00014C60 espeak_Initialize 32 | 13 C 00014640 espeak_IsPlaying 33 | 14 D 00014E10 espeak_Key 34 | 15 E 00034550 espeak_ListVoices 35 | 16 F 00014F20 espeak_SetParameter 36 | 17 10 00022060 espeak_SetPhonemeCallback 37 | 18 11 00022190 espeak_SetPhonemeTrace 38 | 19 12 00014F80 espeak_SetPunctuationList 39 | 20 13 00022040 espeak_SetSynthCallback 40 | 21 14 00022050 espeak_SetUriCallback 41 | 22 15 00015020 espeak_SetVoiceByFile 42 | 23 16 00014FD0 espeak_SetVoiceByName 43 | 24 17 00015070 espeak_SetVoiceByProperties 44 | 25 18 00015100 espeak_Synchronize 45 | 26 19 00014D30 espeak_Synth 46 | 27 1A 00014DA0 espeak_Synth_Mark 47 | 28 1B 00015150 espeak_Terminate 48 | 29 1C 000221C0 espeak_TextToPhonemes 49 | 30 1D 00022250 espeak_ng_Cancel 50 | 31 1E 000149E0 espeak_ng_ClearErrorContext 51 | 32 1F 0000E6F0 espeak_ng_CompileDictionary 52 | 33 20 0000B3F0 espeak_ng_CompileIntonation 53 | 34 21 0000EB20 espeak_ng_CompileMbrolaVoice 54 | 35 22 0000AC90 espeak_ng_CompilePhonemeData 55 | 36 23 0000ACB0 espeak_ng_CompilePhonemeDataPath 56 | 37 24 00014300 espeak_ng_EncodingFromName 57 | 38 25 00021AA0 espeak_ng_GetSampleRate 58 | 39 26 00014A10 espeak_ng_GetStatusCodeMessage 59 | 40 27 000216E0 espeak_ng_Initialize 60 | 41 28 000213B0 espeak_ng_InitializeOutput 61 | 42 29 000215D0 espeak_ng_InitializePath 62 | 43 2A 00014BA0 espeak_ng_PrintStatusCodeMessage 63 | 44 2B 00022170 espeak_ng_SetParameter 64 | 45 2C 00014F80 espeak_ng_SetPunctuationList 65 | 46 2D 00034210 espeak_ng_SetVoiceByFile 66 | 47 2E 00034340 espeak_ng_SetVoiceByName 67 | 48 2F 000344C0 espeak_ng_SetVoiceByProperties 68 | 49 30 000220F0 espeak_ng_SpeakCharacter 69 | 50 31 000220E0 espeak_ng_SpeakKeyName 70 | 51 32 000222A0 espeak_ng_Synchronize 71 | 52 33 00022070 espeak_ng_Synthesize 72 | 53 34 000220B0 espeak_ng_SynthesizeMark 73 | 54 35 000222B0 espeak_ng_Terminate 74 | 55 36 0000EF90 strncpy0 75 | 56 37 000146A0 text_decoder_decode_string 76 | 57 38 00014720 text_decoder_decode_string_auto 77 | 58 39 00014810 text_decoder_decode_string_multibyte 78 | 59 3A 000147A0 text_decoder_decode_wstring 79 | 60 3B 000148F0 text_decoder_eof 80 | 61 3C 00014950 text_decoder_get_buffer 81 | 62 3D 00014910 text_decoder_getc 82 | 63 3E 00014920 text_decoder_peekc 83 | 64 3F 00029830 utf8_in 84 | 85 | Summary 86 | 87 | 24000 .data 88 | 27000 .rdata 89 | 5000 .reloc 90 | 1000 .rsrc 91 | 39000 .text 92 | 1000 _RDATA 93 | -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng.def: -------------------------------------------------------------------------------- 1 | LIBRARY libespeak-ng 2 | EXPORTS 3 | DllCanUnloadNow @1 4 | DllGetClassObject @2 5 | GetFileLength @3 6 | create_text_decoder @4 7 | destroy_text_decoder @5 8 | espeak_Cancel @6 9 | espeak_Char @7 10 | espeak_CompileDictionary @8 11 | espeak_GetCurrentVoice @9 12 | espeak_GetParameter @10 13 | espeak_Info @11 14 | espeak_Initialize @12 15 | espeak_IsPlaying @13 16 | espeak_Key @14 17 | espeak_ListVoices @15 18 | espeak_SetParameter @16 19 | espeak_SetPhonemeCallback @17 20 | espeak_SetPhonemeTrace @18 21 | espeak_SetPunctuationList @19 22 | espeak_SetSynthCallback @20 23 | espeak_SetUriCallback @21 24 | espeak_SetVoiceByFile @22 25 | espeak_SetVoiceByName @23 26 | espeak_SetVoiceByProperties @24 27 | espeak_Synchronize @25 28 | espeak_Synth @26 29 | espeak_Synth_Mark @27 30 | espeak_Terminate @28 31 | espeak_TextToPhonemes @29 32 | espeak_ng_Cancel @30 33 | espeak_ng_ClearErrorContext @31 34 | espeak_ng_CompileDictionary @32 35 | espeak_ng_CompileIntonation @33 36 | espeak_ng_CompileMbrolaVoice @34 37 | espeak_ng_CompilePhonemeData @35 38 | espeak_ng_CompilePhonemeDataPath @36 39 | espeak_ng_EncodingFromName @37 40 | espeak_ng_GetSampleRate @38 41 | espeak_ng_GetStatusCodeMessage @39 42 | espeak_ng_Initialize @40 43 | espeak_ng_InitializeOutput @41 44 | espeak_ng_InitializePath @42 45 | espeak_ng_PrintStatusCodeMessage @43 46 | espeak_ng_SetParameter @44 47 | espeak_ng_SetPunctuationList @45 48 | espeak_ng_SetVoiceByFile @46 49 | espeak_ng_SetVoiceByName @47 50 | espeak_ng_SetVoiceByProperties @48 51 | espeak_ng_SpeakCharacter @49 52 | espeak_ng_SpeakKeyName @50 53 | espeak_ng_Synchronize @51 54 | espeak_ng_Synthesize @52 55 | espeak_ng_SynthesizeMark @53 56 | espeak_ng_Terminate @54 57 | strncpy0 @55 58 | text_decoder_decode_string @56 59 | text_decoder_decode_string_auto @57 60 | text_decoder_decode_string_multibyte @58 61 | text_decoder_decode_wstring @59 62 | text_decoder_eof @60 63 | text_decoder_get_buffer @61 64 | text_decoder_getc @62 65 | text_decoder_peekc @63 66 | utf8_in @64 67 | -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/libespeak-ng.exp -------------------------------------------------------------------------------- /MS_Windows_Installer/libespeak-ng.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/MS_Windows_Installer/libespeak-ng.lib -------------------------------------------------------------------------------- /MS_Windows_Installer/runas_admin.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | IF /i {%1}=={ECHO} ECHO ON&SHIFT 3 | 4 | IF "%~1"=="" ( 5 | echo "USAGE: runas_admin script_name" 6 | exit /B 1 7 | ) 8 | echo copy "%~s1" "%temp%\%~snx1" 9 | copy /b/v/y "%~s1" "%temp%\%~snx1" 10 | 11 | :-------------------------------------- 12 | REM --> Check for permissions 13 | >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 14 | 15 | REM --> If error flag set, we do not have admin. 16 | if '%errorlevel%' NEQ '0' ( 17 | echo Requesting administrative privileges... 18 | goto UACPrompt 19 | ) else ( goto gotAdmin ) 20 | 21 | :UACPrompt 22 | echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 23 | echo UAC.ShellExecute "%temp%\%~snx1", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 24 | 25 | call "%temp%\getadmin.vbs" 26 | exit /B 27 | 28 | :gotAdmin 29 | if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) 30 | pushd "%CD%" 31 | CD /D "%~dp0" 32 | :-------------------------------------- 33 | 34 | call "%temp%\%~snx1" 35 | -------------------------------------------------------------------------------- /MS_Windows_Installer/sign_installer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | osslsigncode sign -pkcs12 "$HOME/MacInstaller.p12" -askpass -n "Aeneas Tools" -i "http://www.readbeyond.it/aeneas/" -t "http://timestamp.comodoca.com/authenticode" -in "./aeneas-win32-setup-1.7.3.0_3.exe" -out "./aeneas-win32-setup-1.7.3.0_3_signed.exe" 4 | osslsigncode verify "./aeneas-win32-setup-1.7.3.0_3_signed.exe" 5 | 6 | -------------------------------------------------------------------------------- /MS_Windows_Installer/wget-py.bat: -------------------------------------------------------------------------------- 1 | echo on 2 | python.exe -m pip show wget 1>nul 2>nul 3 | if %ERRORLEVEL%==1 ( 4 | python.exe -m pip install -U wget 5 | ) 6 | python.exe -m wget -o "%4" %2 7 | @echo off 8 | -------------------------------------------------------------------------------- /MS_Windows_Installer/x64_x86 Cross Tools Command Prompt for VS 2017.lnk.txt: -------------------------------------------------------------------------------- 1 | 2 | Link File: x64_x86 Cross Tools Command Prompt for VS 2017.lnk 3 | Link Flags: HAS SHELLIDLIST | POINTS TO FILE/DIR | HAS DESCRIPTION | HAS RELATIVE PATH STRING | HAS WORKING DIRECTORY | HAS CMD LINE ARGS | NO CUSTOM ICON | 4 | File Attributes: ARCHIVE 5 | Create Time: Sat Jul 16 2016 18:42:36 6 | Last Accessed time: Sat Jul 16 2016 18:42:36 7 | Last Modified Time: Sat Jul 16 2016 18:42:36 8 | Target Length: 232960 9 | Icon Index: 0 10 | ShowWnd: 1 SW_NORMAL 11 | HotKey: 0 12 | Target is on local volume 13 | Volume Type: Fixed (Hard Disk) 14 | Volume Serial: 1235dde9 15 | Vol Label: Windows 10 16 | Base Path: C:\Windows\System32\cmd.exe 17 | (App Path:) Remaining Path: 18 | Description: Open Visual Studio 2017 Tools Command Prompt for targeting x86 with x64-hosted tools 19 | Relative Path: ..\..\..\..\..\..\..\..\Windows\System32\cmd.exe 20 | Working Dir: C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\ 21 | Command Line: /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsamd64_x86.bat" 22 | -------------------------------------------------------------------------------- /MS_Windows_Installer/x86 Native Tools Command Prompt for VS 2017.lnk.txt: -------------------------------------------------------------------------------- 1 | 2 | Link File: x86 Native Tools Command Prompt for VS 2017.lnk 3 | Link Flags: HAS SHELLIDLIST | POINTS TO FILE/DIR | HAS DESCRIPTION | HAS RELATIVE PATH STRING | HAS WORKING DIRECTORY | HAS CMD LINE ARGS | NO CUSTOM ICON | 4 | File Attributes: ARCHIVE 5 | Create Time: Sat Jul 16 2016 18:42:36 6 | Last Accessed time: Sat Jul 16 2016 18:42:36 7 | Last Modified Time: Sat Jul 16 2016 18:42:36 8 | Target Length: 232960 9 | Icon Index: 0 10 | ShowWnd: 1 SW_NORMAL 11 | HotKey: 0 12 | Target is on local volume 13 | Volume Type: Fixed (Hard Disk) 14 | Volume Serial: 1235dde9 15 | Vol Label: Windows 10 16 | Base Path: C:\Windows\System32\cmd.exe 17 | (App Path:) Remaining Path: 18 | Description: Open Visual Studio 2017 Tools Command Prompt for targeting x86 19 | Relative Path: ..\..\..\..\..\..\..\..\Windows\System32\cmd.exe 20 | Working Dir: C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\ 21 | Command Line: /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars32.bat" 22 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/INFO.txt: -------------------------------------------------------------------------------- 1 | This will install aeneas 1.7.3 on your computer. 2 | 3 | aeneas is a Python library and a set of tools for automated audio and text synchronization. 4 | 5 | In addition to aeneas, the following independent programs necessary for running aeneas are contained in this installer: 6 | 1. eSpeak-ng 7 | 2. FFmpeg 8 | 3. Python 9 | 10 | You will be guided through the steps necessary to install this software. 11 | 12 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/LICENSE.txt: -------------------------------------------------------------------------------- 1 | aeneas is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. . For more information on this, and how to apply and follow the GNU AGPL, see . 2 | 3 | -------------------------------------------------------------------- 4 | 5 | eSpeak-ng is licensed under the GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. . For more information on this, and how to apply and follow the GNU GPLv3, see . 6 | 7 | -------------------------------------------------------------------- 8 | 9 | FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later. However, FFmpeg incorporates several optional parts and optimizations that are covered by the GNU General Public License (GPL) version 2 or later. Copyright (C) 2007 Free Software Foundation, Inc. . For more information on this, and how to apply and follow the GNU GPLv3, see . 10 | 11 | -------------------------------------------------------------------- 12 | 13 | Python is licensed under the PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2, Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Python Software Foundation; All Rights Reserved. For more information on this, and how to apply and follow the PSFLv2, see https://www.python.org/download/releases/2.7/license/ 14 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/Mac_SAB_Installer/ReadMe.md: -------------------------------------------------------------------------------- 1 | This provides a simple installer for Scripture App Builder for Mac with Aeneas included. 2 | Or, *build\_dmg.sh* can bundle Scripture App Builder for Mac and Aeneas_Installer in a standard DMG file. 3 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/Mac_SAB_Installer/SAB_License.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \paperw11900\paperh16840\margl1440\margr1440\vieww11940\viewh7800\viewkind0 5 | \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 6 | 7 | \f0\fs28 \cf0 \ 8 | This software is copyright \'a9 2014-2016, SIL International. It is released under the following license:\ 9 | \ 10 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \'93Software\'94), to use and redistribute the software, to build and distribute Android apps and EPUB documents from text and audio data, provided that you are the owner of the data or have permission to distribute it.\ 11 | \ 12 | The Software is protected by international copyright treaty provisions. You may not remove any copyright or other proprietary notice from the software. You may not reverse engineer, decompile, or disassemble the software.\ 13 | \ 14 | THE SOFTWARE IS PROVIDED \'93AS IS\'94, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\ 15 | \ 16 | } 17 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/Mac_SAB_Installer/SAB_ReadMe.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 LucidaGrande;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \paperw11900\paperh16840\margl1440\margr1440\vieww37900\viewh22200\viewkind0 5 | \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 6 | 7 | \f0\fs28 \cf0 \ 8 | WARNING: You will need to know how to handle certificates and provision profiles, which is outside the scope of this document.\ 9 | \ 10 | General Prerequisites\ 11 | \uc0\u9679 Java SDK 8 \'ad\'ad {\field{\*\fldinst{HYPERLINK "http://www.oracle.com/technetwork/java/javase/downloads/index.html"}}{\fldrslt http://www.oracle.com/technetwork/java/javase/downloads/index.html}}\ 12 | \uc0\u9679 Android SDK \'ad\'ad {\field{\*\fldinst{HYPERLINK "http://developer.android.com/sdk/index.html#mac-tools"}}{\fldrslt http://developer.android.com/sdk/index.html#mac-tools}}\ 13 | \uc0\u9679 Xcode Tools {\field{\*\fldinst{HYPERLINK "https://itunes.apple.com/en/app/xcode/id497799835?mt=12"}}{\fldrslt https://itunes.apple.com/en/app/xcode/id497799835}}\ 14 | \ 15 | iOS App Publishing\ 16 | 1. To distribute apps through the Apple App Store, you need to Enroll in the Apple Developer Program\ 17 | a. {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/programs/enroll/"}}{\fldrslt https://developer.apple.com/programs/enroll/}}\ 18 | b. This is not required to download tools, build, and test on phone before App Store Submission\ 19 | 2a. Install Xcode Command\'adLine Tools (stand\'adalone) or 2b\ 20 | a. {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/downloads/"}}{\fldrslt https://developer.apple.com/downloads/}}\ 21 | b. Login to developer account\ 22 | c. Search for \'93command line tools\'94 and select the newest version that matches your OS X version \ 23 | 2b. Install Xcode from App Store or 2c\ 24 | a. Search for Xcode and install\ 25 | 2c. Use terminal to to run \'93xcode-select --install\'94\ 26 | 3. Install sigh tool\ 27 | a. Use terminal to to run \'93sudo gem install sigh\'94 (this requires command line tools)\ 28 | 5. Install Scripture App Builder\ 29 | 6. Run SAB and set Android SDK Location in Setting\ 30 | 7. Run Android SDK Manager to install packages (just like Windows)\ 31 | 8. Download Apple Worldwide Developer Relations Certification Authority\ 32 | a. Download {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/certificationauthority/AppleWWDRCA.cer"}}{\fldrslt https://developer.apple.com/certificationauthority/AppleWWDRCA.cer}}\ 33 | b. Double\'ad click in Finder to install into Keychain Access 9. Install signing certificate (p12 file)\ 34 | 10. Download mobile provision files\ 35 | a. Create directory to download files (e.g. ~/Documents/)\ 36 | b. Use terminal to to run \'93sigh download_all\'94 (enter Apple ID Username & Password at prompts)\ 37 | 11. Open SAB\ 38 | 12. Got to Signing (iOS) tab for project\ 39 | 13. Select Identity and Provisioning Profile\ 40 | 14. Click on Build iOS App (and carefully look at output)\ 41 | 15. Output IPA is in ~/App\\ Builder/Scripture\\ Apps/Ipa\\ Output/\ 42 | \ 43 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/Mac_SAB_Installer/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/Mac_OSX_Installer/Mac_SAB_Installer/background.png -------------------------------------------------------------------------------- /Mac_OSX_Installer/Mac_SAB_Installer/build_dmg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 4 | 5 | CURDIR=`dirname $0` 6 | echo cd $CURDIR 7 | cd $CURDIR 8 | 9 | brew install danielbair/tap/create-dmg 10 | 11 | # mkdir -p aeneas-mac-uninstall-scripts 12 | # cp _*.sh aeneas-mac-uninstall-scripts 13 | DMGFILE="Scripture_App_Builder-3.3.dmg" 14 | BUILDTMP="$(mktemp -d -t createdmg.tmp.XXXXXXXX)" 15 | cp -r /Applications/Scripture\ App\ Builder.app $BUILDTMP 16 | rm -f "$DMGFILE" 17 | create-dmg --volname Scripture_App_Builder \ 18 | --window-pos 20 20 \ 19 | --icon-size 80 \ 20 | --icon 'Scripture App Builder.app' 144 144 \ 21 | --app-drop-link 344 144 \ 22 | $DMGFILE $BUILDTMP 23 | # rm -rf aeneas-mac-uninstall-scripts 24 | rm -rf "$BUILDTMP" 25 | open -R "$DMGFILE" 26 | open "$DMGFILE" 27 | 28 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/Mac_SAB_Installer/build_full_dmg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 4 | 5 | CURDIR=`dirname $0` 6 | echo cd $CURDIR 7 | cd $CURDIR 8 | 9 | brew install danielbair/tap/create-dmg 10 | 11 | mkdir -p aeneas-mac-uninstall-scripts 12 | cp ../_*.sh aeneas-mac-uninstall-scripts 13 | VERSION="1.7.2" 14 | DMGFILE="Scripture_App_Builder-full-3.3.dmg" 15 | BUILDTMP="$(mktemp -d -t createdmg.tmp.XXXXXXXX)" 16 | cp -r /Applications/Scripture\ App\ Builder.app $BUILDTMP 17 | rm -f "$DMGFILE" 18 | create-dmg --volname Scripture_App_Builder \ 19 | --icon-size 80 \ 20 | --window-pos 20 20 \ 21 | --window-size 800 480 \ 22 | --background background.png \ 23 | --icon 'Scripture App Builder.app' 142 344 \ 24 | --app-drop-link 398 344 \ 25 | --add-file aeneas-mac-setup-$VERSION.pkg ../aeneas-mac-setup-$VERSION.pkg 654 344 \ 26 | --add-folder aeneas-mac-uninstall-scripts aeneas-mac-uninstall-scripts 398 544 \ 27 | $DMGFILE $BUILDTMP 28 | rm -rf aeneas-mac-uninstall-scripts 29 | rm -rf "$BUILDTMP" 30 | open -R "$DMGFILE" 31 | open "$DMGFILE" 32 | 33 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/Mac_SAB_Installer/dmg_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/Mac_OSX_Installer/Mac_SAB_Installer/dmg_preview.png -------------------------------------------------------------------------------- /Mac_OSX_Installer/Mac_SAB_Installer/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sillsdev/aeneas-installer/0a6c4a29d36b978b2c44a59486b41c71653c0640/Mac_OSX_Installer/Mac_SAB_Installer/icon.png -------------------------------------------------------------------------------- /Mac_OSX_Installer/Mac_SAB_Installer/sab_install_scripts/postinstall: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #xcode-select -p 4 | xcode-select --install 5 | 6 | #which sigh 7 | if [ ! -f "/usr/local/bin/sigh" ]; then 8 | sudo gem install sigh 9 | fi 10 | 11 | if type -p java; then 12 | echo found java executable in PATH 13 | _java=java 14 | elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then 15 | echo found java executable in JAVA_HOME 16 | _java="$JAVA_HOME/bin/java" 17 | else 18 | echo "no java" 19 | fi 20 | if [[ "$_java" ]]; then 21 | version=$("$_java" -version 2>&1 | awk -F '"' '/version/ {print $2}') 22 | echo version "$version" 23 | if [[ "$version" > "1.8" ]]; then 24 | echo 'version is more than 1.8' 25 | else 26 | echo 'version is less than 1.8' 27 | fi 28 | fi 29 | 30 | #su $USER -c 'java -jar /Applications/Scripture\ App\ Builder.app/Contents/Java/bin/scripture-app-builder.jar' 31 | 32 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/README.txt: -------------------------------------------------------------------------------- 1 | This setup wizard was developed by Daniel Bair and is distributed by SIL International, and the source code is available for download at: https://github.com/sillsdev/aeneas-installer 2 | 3 | -------------------------------------------------------------------- 4 | 5 | aeneas is developed by Alberto Pettarin, ReadBeyond, and the source code is available for download at http://www.readbeyond.it/aeneas/ 6 | 7 | -------------------------------------------------------------------- 8 | 9 | eSpeak-ng is a text-to-speech engine, developed by Reece H. Dunn, and is available for download at https://github.com/espeak-ng/espeak-ng 10 | 11 | -------------------------------------------------------------------- 12 | 13 | FFmpeg is a video and audio converter, developed by Fabrice Bellard, and is available for download at http://www.ffmpeg.org/ 14 | 15 | -------------------------------------------------------------------- 16 | 17 | Python is a programming language, developed by the Python Software Foundation, and is available for download at http://www.python.org/ 18 | 19 | -------------------------------------------------------------------- 20 | 21 | Python BeautifulSoup sits atop an HTML or XML parser, providing Pythonic idioms for iterating, searching, and modifying the parse tree, and is available for download at https://www.crummy.com/software/BeautifulSoup/ 22 | 23 | -------------------------------------------------------------------- 24 | 25 | Python lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries, which provides safe and convenient access to these libraries using the ElementTree API, and is available for download at http://lxml.de/ 26 | 27 | -------------------------------------------------------------------- 28 | 29 | Python NumPy is a general-purpose array-processing package designed to efficiently manipulate large multi-dimensional arrays of arbitrary records without sacrificing too much speed for small multi-dimensional arrays, and is available for download at http://www.numpy.org/ 30 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/ReadMe.md: -------------------------------------------------------------------------------- 1 | This provides a simple installer for [Aeneas](https://github.com/readbeyond/aeneas) for Mac OS X 10.9 and up. 2 | 3 | 1. To build this installer for Mac OS X first download (and extract) or clone this repository. 4 | 2. Then open Terminal and _cd_ to _Mac\_OSX\_Installer_ 5 | 3. Then run `build_setup.sh` which will install the necessary applications needed for building. 6 | 4. Then run `build_packages.sh` which will then build the individual packages. 7 | 5. Finally run `build_installer.sh` which will then build the main installer. 8 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/aeneas-mac-uninstall-scripts/_complete_uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IFS=$'\n' 3 | 4 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 5 | 6 | #python -m ensurepip > /dev/null 7 | #sudo -H pip uninstall -y setuptools 8 | 9 | echo "Uninstalling aeneas and all its dependencies..." 10 | 11 | CURDIR=`dirname $0` 12 | cd $CURDIR 13 | 14 | for uninstaller in _uninstall_*.sh; do 15 | bash $uninstaller 16 | done 17 | 18 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/aeneas-mac-uninstall-scripts/_uninstall_aeneas.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IFS=$'\n' 3 | 4 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 5 | 6 | python3 -m ensurepip > /dev/null 7 | 8 | echo "Uninstalling python-aeneas..." 9 | 10 | sudo -H pip3 uninstall -y aeneas 11 | 12 | function pkgutil-rm { 13 | location=$(pkgutil --pkg-info $1 | grep "location:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 14 | volume=$(pkgutil --pkg-info $1 | grep "volume:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 15 | path=$(echo "$volume/$location/" | sed -e 's#//#/#g' -e 's#//#/#g' -e 's#//#/#g' -e 's#/$##'); 16 | for file in `pkgutil --only-files --files $1`; do 17 | sudo rm -v "$path/$file"; 18 | done 19 | find /usr/local -empty -type d -print -delete 20 | sudo pkgutil --forget $1 21 | } 22 | 23 | pkg=`pkgutil --pkgs | grep "aeneas"` 24 | if [[ ! -z $pkg ]]; then 25 | pkgutil-rm $pkg 26 | # sudo rm -f /usr/local/bin/aeneas* 27 | fi 28 | 29 | sudo chown -R $USER:admin /usr/local 30 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/aeneas-mac-uninstall-scripts/_uninstall_bs4.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IFS=$'\n' 3 | 4 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 5 | 6 | python3 -m ensurepip > /dev/null 7 | 8 | echo "Uninstalling python-beautifulsoup4..." 9 | 10 | sudo -H pip3 uninstall -y beautifulsoup4 soupsieve 11 | 12 | function pkgutil-rm { 13 | location=$(pkgutil --pkg-info $1 | grep "location:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 14 | volume=$(pkgutil --pkg-info $1 | grep "volume:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 15 | path=$(echo "$volume/$location/" | sed -e 's#//#/#g' -e 's#//#/#g' -e 's#//#/#g' -e 's#/$##'); 16 | for file in `pkgutil --only-files --files $1`; do 17 | sudo rm -v "$path/$file"; 18 | done 19 | find /usr/local -empty -type d -print -delete 20 | sudo pkgutil --forget $1 21 | } 22 | 23 | pkg=`pkgutil --pkgs | grep "bs4"` 24 | if [[ ! -z $pkg ]]; then 25 | pkgutil-rm $pkg 26 | fi 27 | 28 | sudo chown -R $USER:admin /usr/local 29 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/aeneas-mac-uninstall-scripts/_uninstall_espeak.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IFS=$'\n' 3 | 4 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 5 | 6 | echo "Uninstalling espeak..." 7 | 8 | function pkgutil-rm { 9 | location=$(pkgutil --pkg-info $1 | grep "location:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 10 | volume=$(pkgutil --pkg-info $1 | grep "volume:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 11 | path=$(echo "$volume/$location/" | sed -e 's#//#/#g' -e 's#//#/#g' -e 's#//#/#g' -e 's#/$##'); 12 | for file in `pkgutil --only-files --files $1`; do 13 | sudo rm -v "$path/$file"; 14 | done 15 | find /usr/local -empty -type d -print -delete 16 | sudo pkgutil --forget $1 17 | } 18 | 19 | pkg=`pkgutil --pkgs | grep "espeak"` 20 | if [[ ! -z $pkg ]]; then 21 | # sudo rm -rf /usr/local/Cellar/espeak* 22 | pkgutil-rm $pkg 23 | fi 24 | 25 | sudo chown -R $USER:admin /usr/local 26 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/aeneas-mac-uninstall-scripts/_uninstall_ffmpeg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IFS=$'\n' 3 | 4 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 5 | 6 | echo "Uninstalling ffmpeg..." 7 | 8 | function pkgutil-rm { 9 | location=$(pkgutil --pkg-info $1 | grep "location:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 10 | volume=$(pkgutil --pkg-info $1 | grep "volume:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 11 | path=$(echo "$volume/$location/" | sed -e 's#//#/#g' -e 's#//#/#g' -e 's#//#/#g' -e 's#/$##'); 12 | for file in `pkgutil --only-files --files $1`; do 13 | sudo rm -v "$path/$file"; 14 | done 15 | find /usr/local -empty -type d -print -delete 16 | sudo pkgutil --forget $1 17 | } 18 | 19 | pkg=`pkgutil --pkgs | grep "ffmpeg"` 20 | if [[ ! -z $pkg ]]; then 21 | pkgutil-rm $pkg 22 | fi 23 | 24 | sudo chown -R $USER:admin /usr/local 25 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/aeneas-mac-uninstall-scripts/_uninstall_lxml.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IFS=$'\n' 3 | 4 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 5 | 6 | python3 -m ensurepip > /dev/null 7 | 8 | echo "Uninstalling python-lxml..." 9 | 10 | sudo -H pip3 uninstall -y lxml 11 | 12 | function pkgutil-rm { 13 | location=$(pkgutil --pkg-info $1 | grep "location:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 14 | volume=$(pkgutil --pkg-info $1 | grep "volume:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 15 | path=$(echo "$volume/$location/" | sed -e 's#//#/#g' -e 's#//#/#g' -e 's#//#/#g' -e 's#/$##'); 16 | for file in `pkgutil --only-files --files $1`; do 17 | sudo rm -v "$path/$file"; 18 | done 19 | find /usr/local -empty -type d -print -delete 20 | sudo pkgutil --forget $1 21 | } 22 | 23 | pkg=`pkgutil --pkgs | grep "lxml"` 24 | if [[ ! -z $pkg ]]; then 25 | pkgutil-rm $pkg 26 | fi 27 | 28 | sudo chown -R $USER:admin /usr/local 29 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/aeneas-mac-uninstall-scripts/_uninstall_numpy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IFS=$'\n' 3 | 4 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 5 | 6 | python3 -m ensurepip > /dev/null 7 | 8 | echo "Uninstalling python-numpy..." 9 | 10 | sudo -H pip3 uninstall -y numpy 11 | 12 | function pkgutil-rm { 13 | location=$(pkgutil --pkg-info $1 | grep "location:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 14 | volume=$(pkgutil --pkg-info $1 | grep "volume:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 15 | path=$(echo "$volume/$location/" | sed -e 's#//#/#g' -e 's#//#/#g' -e 's#//#/#g' -e 's#/$##'); 16 | for file in `pkgutil --only-files --files $1`; do 17 | sudo rm -v "$path/$file"; 18 | done 19 | find /usr/local -empty -type d -print -delete 20 | sudo pkgutil --forget $1 21 | } 22 | 23 | pkg=`pkgutil --pkgs | grep "numpy"` 24 | if [[ ! -z $pkg ]]; then 25 | pkgutil-rm $pkg 26 | fi 27 | 28 | sudo chown -R $USER:admin /usr/local 29 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/aeneas-mac-uninstall-scripts/_uninstall_python.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IFS=$'\n' 3 | 4 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 5 | 6 | #python -m ensurepip > /dev/null 7 | #sudo -H pip uninstall -y setuptools 8 | 9 | echo "Uninstalling python packages..." 10 | 11 | function pkgutil-rm { 12 | location=$(pkgutil --pkg-info $1 | grep "location:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 13 | volume=$(pkgutil --pkg-info $1 | grep "volume:" | cut -d':' -f2 | sed -e "s/^[[:space:]]*//") 14 | path=$(echo "$volume/$location/" | sed -e 's#//#/#g' -e 's#//#/#g' -e 's#//#/#g' -e 's#/$##'); 15 | for file in `pkgutil --only-files --files $1`; do 16 | sudo rm -v "$path/$file"; 17 | done 18 | find /usr/local -empty -type d -print -delete 19 | sudo pkgutil --forget $1 20 | } 21 | 22 | pkgs=`pkgutil --pkgs | grep "org.python"` 23 | if [[ ! -z $pkgs ]]; then 24 | sudo rm -rf /usr/local/Cellar/python 25 | for pkg in $pkgs; do 26 | pkgutil-rm $pkg 27 | done 28 | fi 29 | 30 | sudo chown -R $USER:admin /usr/local 31 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/aeneas-patches/patch-py38-utf8-mac.diff: -------------------------------------------------------------------------------- 1 | diff --git a/aeneas/diagnostics.py b/aeneas/diagnostics.py 2 | index 7d9e98a1fbe287c0286fdab504bb2e26a691b2d2..6f4e291f115ecba3f9db810e92f083deaafc1542 100644 3 | --- a/aeneas/diagnostics.py 4 | +++ b/aeneas/diagnostics.py 5 | @@ -56,9 +56,9 @@ def check_shell_encoding(cls): 6 | """ 7 | is_in_utf8 = True 8 | is_out_utf8 = True 9 | - if sys.stdin.encoding not in ["UTF-8", "UTF8"]: 10 | + if sys.stdin.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 11 | is_in_utf8 = False 12 | - if sys.stdout.encoding not in ["UTF-8", "UTF8"]: 13 | + if sys.stdout.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 14 | is_out_utf8 = False 15 | if (is_in_utf8) and (is_out_utf8): 16 | gf.print_success(u"shell encoding OK") 17 | 18 | diff --git a/aeneas/tools/abstract_cli_program.py b/aeneas/tools/abstract_cli_program.py 19 | index be5bb2fa8bfda1de88e4ed5a418aab2c00d625f7..b5b9faddc255a7e46e0316864766fec09f292b5b 100644 20 | --- a/aeneas/tools/abstract_cli_program.py 21 | +++ b/aeneas/tools/abstract_cli_program.py 22 | @@ -295,10 +295,10 @@ def run(self, arguments, show_help=True): 23 | if self.use_sys: 24 | # check that sys.stdin.encoding and sys.stdout.encoding are set to utf-8 25 | if not gf.FROZEN: 26 | - if sys.stdin.encoding not in ["UTF-8", "UTF8"]: 27 | + if sys.stdin.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 28 | self.print_warning(u"The default input encoding is not UTF-8.") 29 | self.print_warning(u"You might want to set 'PYTHONIOENCODING=UTF-8' in your shell.") 30 | - if sys.stdout.encoding not in ["UTF-8", "UTF8"]: 31 | + if sys.stdout.encoding not in ["UTF-8", "UTF8", "utf-8", "utf8"]: 32 | self.print_warning(u"The default output encoding is not UTF-8.") 33 | self.print_warning(u"You might want to set 'PYTHONIOENCODING=UTF-8' in your shell.") 34 | # decode using sys.stdin.encoding 35 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/aeneas-patches/patch-ttswrapper-mac.diff: -------------------------------------------------------------------------------- 1 | diff --git a/aeneas/ttswrappers/macosttswrapper.py b/aeneas/ttswrappers/macosttswrapper.py 2 | index cb85ed608a90f0528cc8558b1298d9e238defc47..e2137436f5395c7639b206b3f9b278f5f3e7c959 100644 3 | --- a/aeneas/ttswrappers/macosttswrapper.py 4 | +++ b/aeneas/ttswrappers/macosttswrapper.py 5 | @@ -218,7 +218,7 @@ class MacOSTTSWrapper(BaseTTSWrapper): 6 | } 7 | DEFAULT_LANGUAGE = ENG 8 | 9 | - OUTPUT_AUDIO_FORMAT = ("pcm_s16le", 1, 22050) 10 | + OUTPUT_AUDIO_FORMAT = ("pcm_s16le", 1, 16000) 11 | 12 | HAS_SUBPROCESS_CALL = True 13 | 14 | @@ -235,5 +235,5 @@ def __init__(self, rconf=None, logger=None): 15 | self.CLI_PARAMETER_WAVE_PATH, # it will be replaced by the actual output file 16 | self.CLI_PARAMETER_TEXT_STDIN, # text is read from stdin, 17 | u"--data-format", # set output data format 18 | - u"LEF32@22050" # data format string 19 | + u"LEI16@16000" # data format string 20 | ]) 21 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_aeneas_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ./build_env.sh 4 | 5 | CURDIR=`pwd` 6 | cd "$CURDIR" 7 | 8 | echo -e "\n\nPreparing python environment for build\n\n" 9 | 10 | python3 -m ensurepip 11 | python3 -m pip install -U wheel pip setuptools 12 | 13 | python3 -m pip install -U numpy 14 | 15 | export AENEAS_WITH_CEW=False 16 | python3 -m pip install -U aeneas 17 | 18 | #python3 -m aeneas.diagnostics 19 | #python3 -m aeneas.tools.synthesize_text list "This is a test|with two lines" eng -v /tmp/test.wav 20 | 21 | export AENEAS_VER=`python3 -m pip show aeneas | grep "Version:" | cut -d' ' -f2` 22 | export NUMPY_VER=`python3 -m pip show numpy | grep "Version:" | cut -d' ' -f2` 23 | export LXML_VER=`python3 -m pip show lxml | grep "Version:" | cut -d' ' -f2` 24 | export BS4_VER=`python3 -m pip show beautifulsoup4 | grep "Version:" | cut -d' ' -f2` 25 | export SOUPSIEVE_VER=`python3 -m pip show soupsieve | grep "Version:" | cut -d' ' -f2` 26 | 27 | if [ ! -f "aeneas-mac-installer-packages/aeneas-$AENEAS_VER.pkg" ]; then 28 | echo -e "\n\nBuilding aeneas-$AENEAS_VER.pkg\n\n" 29 | export -n AENEAS_WITH_CEW 30 | python3 -m pip download --no-binary aeneas aeneas 31 | rm -rf aeneas-1.7.3.0 32 | tar -xf aeneas-1.7.3.0.tar.gz 33 | cd aeneas-1.7.3.0 34 | patch -p1 < ../aeneas-patches/patch-ttswrapper-mac.diff 35 | patch -p1 < ../aeneas-patches/patch-py38-utf8-mac.diff 36 | patch -p1 < ../aeneas-patches/patch-espeak-ng-mac.diff 37 | mv -v aeneas/cew/speak_lib.h thirdparty/speak_lib.h 38 | export AENEAS_USE_ESPEAKNG=True 39 | #python3 setup.py build_ext --inplace 40 | python3 setup.py bdist_wheel 41 | cp -v dist/aeneas-$AENEAS_VER*.whl ../ 42 | BUILDTMP="$(mktemp -d -t aeneas.tmp.XXXXXXXX)" 43 | cd "$CURDIR" 44 | AENEAS_FILE=`ls -1 aeneas-$AENEAS_VER*.whl` 45 | unzip $AENEAS_FILE -d $BUILDTMP/$AENEAS_FILE 46 | cd "$BUILDTMP" 47 | for file in `find $AENEAS_FILE -type f -not -path "*/espeak-ng-data/*" | perl -lne 'print if -B'`; do 48 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options hard "$file" 49 | done 50 | cd $AENEAS_FILE 51 | zip -r "$CURDIR/$AENEAS_FILE" . 52 | cd "$CURDIR" 53 | mkdir -p $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 54 | cp -v aeneas-$AENEAS_VER*.whl $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 55 | mv -v aeneas-$AENEAS_VER*.whl python-wheels/ 56 | mkdir -p $BUILDTMP/Scripts/ 57 | cat postinstall-scripts/postinstall_aeneas | sed 's#@PREFIX@#/opt/usr#g' > $BUILDTMP/Scripts/postinstall 58 | chmod +x $BUILDTMP/Scripts/postinstall 59 | pkgbuild --root "$BUILDTMP/Payload" --identifier "org.python.python.aeneas" --version "$AENEAS_VER" --scripts "$BUILDTMP/Scripts" "aeneas-$AENEAS_VER.pkg" 60 | [ $? = 0 ] || exit 1 61 | mv aeneas-$AENEAS_VER.pkg aeneas-mac-installer-packages/ 62 | rm -rf $BUILDTMP 63 | else 64 | echo "Found aeneas-$AENEAS_VER.pkg" 65 | fi 66 | cd $CURDIR 67 | if [ ! -f "aeneas-mac-installer-packages/numpy-$NUMPY_VER.pkg" ]; then 68 | echo -e "\n\nBuilding numpy-$NUMPY_VER.pkg\n\n" 69 | python3 -m pip wheel numpy 70 | BUILDTMP="$(mktemp -d -t numpy.tmp.XXXXXXXX)" 71 | cd "$CURDIR" 72 | NUMPY_FILE=`ls -1 numpy-$NUMPY_VER*.whl` 73 | unzip $NUMPY_FILE -d $BUILDTMP/$NUMPY_FILE 74 | cd "$BUILDTMP" 75 | for file in `find $NUMPY_FILE -type f | perl -lne 'print if -B'`; do 76 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options hard "$file" 77 | done 78 | cd $NUMPY_FILE 79 | zip -r "$CURDIR/$NUMPY_FILE" . 80 | cd "$CURDIR" 81 | mkdir -p $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 82 | cp -v numpy-$NUMPY_VER*.whl $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 83 | mv -v numpy-$NUMPY_VER*.whl python-wheels/ 84 | mkdir -p $BUILDTMP/Scripts/ 85 | cat postinstall-scripts/postinstall_numpy | sed 's#@PREFIX@#/opt/usr#g' > $BUILDTMP/Scripts/postinstall 86 | chmod +x $BUILDTMP/Scripts/postinstall 87 | pkgbuild --root "$BUILDTMP/Payload" --identifier "org.python.python.numpy" --version "$NUMPY_VER" --scripts "$BUILDTMP/Scripts" "numpy-$NUMPY_VER.pkg" 88 | [ $? = 0 ] || exit 1 89 | mv numpy-$NUMPY_VER.pkg aeneas-mac-installer-packages/ 90 | rm -rf $BUILDTMP 91 | else 92 | echo "Found numpy-$NUMPY_VER.pkg" 93 | fi 94 | if [ ! -f "aeneas-mac-installer-packages/lxml-$LXML_VER.pkg" ]; then 95 | echo -e "\n\nBuilding lxml-$LXML_VER.pkg\n\n" 96 | python3 -m pip wheel --verbose --no-binary lxml lxml 97 | BUILDTMP="$(mktemp -d -t lxml.tmp.XXXXXXXX)" 98 | cd "$CURDIR" 99 | LXML_FILE=`ls -1 lxml-$LXML_VER*.whl` 100 | unzip $LXML_FILE -d $BUILDTMP/$LXML_FILE 101 | cd "$BUILDTMP" 102 | for file in `find $LXML_FILE -type f | perl -lne 'print if -B'`; do 103 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options hard "$file" 104 | done 105 | cd $LXML_FILE 106 | zip -r "$CURDIR/$LXML_FILE" . 107 | cd "$CURDIR" 108 | mkdir -p $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 109 | cp -v lxml-$LXML_VER*.whl $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 110 | mv -v lxml-$LXML_VER*.whl python-wheels/ 111 | mkdir -p $BUILDTMP/Scripts/ 112 | cat postinstall-scripts/postinstall_lxml | sed 's#@PREFIX@#/opt/usr#g' > $BUILDTMP/Scripts/postinstall 113 | chmod +x $BUILDTMP/Scripts/postinstall 114 | pkgbuild --root "$BUILDTMP/Payload" --identifier "org.python.python.lxml" --version "$LXML_VER" --scripts "$BUILDTMP/Scripts" "lxml-$LXML_VER.pkg" 115 | [ $? = 0 ] || exit 1 116 | mv lxml-$LXML_VER.pkg aeneas-mac-installer-packages/ 117 | rm -rf $BUILDTMP 118 | else 119 | echo "Found lxml-$LXML_VER.pkg" 120 | fi 121 | if [ ! -f "aeneas-mac-installer-packages/bs4-$BS4_VER.pkg" ]; then 122 | echo -e "\n\nBuilding bs4-$BS4_VER.pkg\n\n" 123 | python3 -m pip wheel beautifulsoup4 124 | BUILDTMP="$(mktemp -d -t bs4.tmp.XXXXXXXX)" 125 | mkdir -p $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 126 | cp -v beautifulsoup4-$BS4_VER*.whl $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 127 | mv -v beautifulsoup4-$BS4_VER*.whl python-wheels/ 128 | cp -v soupsieve-$SOUPSIEVE_VER*.whl $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 129 | mv -v soupsieve-$SOUPSIEVE_VER*.whl python-wheels/ 130 | mkdir -p $BUILDTMP/Scripts/ 131 | cat postinstall-scripts/postinstall_bs4 | sed 's#@PREFIX@#/opt/usr#g' > $BUILDTMP/Scripts/postinstall 132 | chmod +x $BUILDTMP/Scripts/postinstall 133 | pkgbuild --root "$BUILDTMP/Payload" --identifier "org.python.python.bs4" --version "$BS4_VER" --scripts "$BUILDTMP/Scripts" "bs4-$BS4_VER.pkg" 134 | [ $? = 0 ] || exit 1 135 | mv bs4-$BS4_VER.pkg aeneas-mac-installer-packages/ 136 | rm -rf $BUILDTMP 137 | else 138 | echo "Found bs4-$BS4_VER.pkg" 139 | fi 140 | 141 | cd $CURDIR 142 | 143 | #echo -e "\n\nNow run build_installer.sh\n\n" 144 | 145 | exit 0 146 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_dmg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ./build_env.sh 4 | 5 | DMGFILE="Aeneas_Tools-$VERSION.dmg" 6 | BUILDTMP="$(mktemp -d -t createdmg.tmp.XXXXXXXX)" 7 | 8 | rm -f "$DMGFILE" 9 | ./create-dmg --volname Aeneas_Tools \ 10 | --window-pos 20 20 \ 11 | --icon-size 80 \ 12 | --add-file aeneas-mac-setup-$VERSION.pkg aeneas-mac-setup-$VERSION.pkg 244 4 \ 13 | --add-folder aeneas-mac-uninstall-scripts aeneas-mac-uninstall-scripts 344 184 \ 14 | --add-folder aeneas-mac-installer-packages aeneas-mac-installer-packages 144 184 \ 15 | $DMGFILE $BUILDTMP 16 | rm -rf "$BUILDTMP" 17 | open -R "$DMGFILE" 18 | open "$DMGFILE" 19 | 20 | cp -v Aeneas_Tools-$VERSION.dmg aeneas-mac-setup-$VERSION.dmg 21 | 22 | exit 0 23 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_env.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export IFS=$'\n' 4 | 5 | #export PATH="/usr/libexec/git-core/:$PATH" 6 | export MP_PREFIX="/opt/usr" 7 | export PATH="$MP_PREFIX/bin:$MP_PREFIX/sbin:$PATH" 8 | export PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:$PATH" 9 | 10 | CURDIR=`dirname $0` 11 | if [ $? = 0 ]; then 12 | cd `dirname $0` 13 | fi 14 | export CURDIR=`pwd` 15 | echo -e "\n\nRunning `basename $0`\n from $CURDIR\n" 16 | 17 | export REVISION=_4 18 | 19 | export FFMPEG_VER=`curl -JLks https://evermeet.cx/ffmpeg/info/ffmpeg/release | jq -r '.version'` 20 | export ESPEAK_VER=`port info --version espeak-ng | cut -d' ' -f2` 21 | #export PYTHON_VER=`port info --version python39 | cut -d' ' -f2` 22 | export PYTHON_VER='3.9.13' 23 | export AENEAS_VER=`python3 -m pip show aeneas | grep "Version:" | cut -d' ' -f2` 24 | export NUMPY_VER=`python3 -m pip show numpy | grep "Version:" | cut -d' ' -f2` 25 | export LXML_VER=`python3 -m pip show lxml | grep "Version:" | cut -d' ' -f2` 26 | export BS4_VER=`python3 -m pip show beautifulsoup4 | grep "Version:" | cut -d' ' -f2` 27 | export SOUPSIEVE_VER=`python3 -m pip show soupsieve | grep "Version:" | cut -d' ' -f2` 28 | export VERSION="$AENEAS_VER$REVISION" 29 | 30 | export CPLUS_INCLUDE_PATH="/opt/usr/include" 31 | export C_INCLUDE_PATH="/opt/usr/include" 32 | export LIBRARY_PATH="/opt/usr/lib" 33 | export LDFLAGS="-L/opt/usr/lib" 34 | 35 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_espeak_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ./build_env.sh 4 | 5 | CURDIR=`pwd` 6 | cd "$CURDIR" 7 | 8 | if [ ! -f "aeneas-mac-installer-packages/espeak-ng-$ESPEAK_VER.pkg" ]; then 9 | echo -e "\n\nBuilding espeak-ng-$ESPEAK_VER.pkg\n\n" 10 | sudo port -Npfu uninstall espeak-ng pcaudiolib sonic 11 | sudo port -Npfk install espeak-ng 12 | sudo port -Npf mpkg espeak-ng 13 | SOURCETMP="$(mktemp -d -t espeak.src.XXXXXXXX)" 14 | BUILDTMP="$(mktemp -d -t espeak.build.XXXXXXXX)" 15 | pkgutil --expand-full `port work espeak-ng`/espeak-ng-$ESPEAK_VER.mpkg $SOURCETMP/espeak-ng-$ESPEAK_VER.mpkg 16 | SOURCETMP="$SOURCETMP/espeak-ng-$ESPEAK_VER.mpkg" 17 | mkdir -vp $BUILDTMP/Payload 18 | mkdir -vp $BUILDTMP/Scripts 19 | for PKG in $SOURCETMP/*.pkg; do 20 | ditto -v $PKG/Payload $BUILDTMP/Payload 21 | done 22 | cat postinstall-scripts/postinstall_espeak | sed 's#@PREFIX@#/opt/usr#g' > $BUILDTMP/Scripts/postinstall 23 | chmod +x $BUILDTMP/Scripts/postinstall 24 | cd "$BUILDTMP" 25 | for file in `find Payload -type f | perl -lne 'print if -B'`; do 26 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options hard "$file" 27 | done 28 | cd "$CURDIR" 29 | pkgbuild --prior `port work espeak-ng`/espeak-ng-$ESPEAK_VER-component.pkg --version "$ESPEAK_VER" --root "$BUILDTMP/Payload" --scripts "$BUILDTMP/Scripts" "espeak-ng-$ESPEAK_VER.pkg" 30 | [ $? = 0 ] || exit 1 31 | sudo installer -pkg espeak-ng-$ESPEAK_VER.pkg -target / -dumplog -verboseR 32 | [ $? = 0 ] || exit 1 33 | mv espeak-ng-$ESPEAK_VER.pkg aeneas-mac-installer-packages/ 34 | rm -rf $SOURCETMP 35 | rm -rf $BUILDTMP 36 | else 37 | echo "Found espeak-ng-$ESPEAK_VER.pkg" 38 | fi 39 | 40 | cd $CURDIR 41 | 42 | #echo -e "\n\nNow run build_installer.sh\n\n" 43 | 44 | exit 0 45 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_ffmpeg_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ./build_env.sh 4 | 5 | CURDIR=`pwd` 6 | cd "$CURDIR" 7 | 8 | if [ ! -f "aeneas-mac-installer-packages/ffmpeg-$FFMPEG_VER.pkg" ]; then 9 | echo -e "\n\nBuilding ffmpeg-$FFMPEG_VER.pkg\n\n" 10 | BUILDTMP="$(mktemp -d -t ffmpeg.tmp.XXXXXXXX)" 11 | mkdir -vp $BUILDTMP/Payload 12 | mkdir -vp $BUILDTMP/Scripts 13 | rm -rf ff*.zip 14 | wget --trust-server-names https://ffmpeg.zeranoe.com/builds/macos64/static/ffmpeg-$FFMPEG_VER-macos64-static.zip 15 | if [ $? = 0 ]; then 16 | mkdir -vp $BUILDTMP/Payload/opt 17 | unzip ffmpeg-$FFMPEG_VER-macos64-static.zip -d $BUILDTMP 18 | mv -v $BUILDTMP/ffmpeg-$FFMPEG_VER-macos64-static $BUILDTMP/Payload/opt/usr 19 | mkdir -vp $BUILDTMP/Payload/opt/usr/share/ffmpeg 20 | mv -v $BUILDTMP/Payload/opt/usr/doc $BUILDTMP/Payload/opt/usr/share/ffmpeg/ 21 | mv -v $BUILDTMP/Payload/opt/usr/presets $BUILDTMP/Payload/opt/usr/share/ffmpeg/ 22 | mv -v $BUILDTMP/Payload/opt/usr/LICENSE* $BUILDTMP/Payload/opt/usr/share/ffmpeg/ 23 | mv -v $BUILDTMP/Payload/opt/usr/README* $BUILDTMP/Payload/opt/usr/share/ffmpeg/ 24 | fi 25 | if [ ! -f "./ffmpeg-$FFMPEG_VER-macos64-static.zip" ]; then 26 | wget --trust-server-names -N https://evermeet.cx/ffmpeg/ffmpeg-$FFMPEG_VER.zip 27 | wget --trust-server-names -N https://evermeet.cx/ffmpeg/ffprobe-$FFMPEG_VER.zip 28 | wget --trust-server-names -N https://evermeet.cx/ffmpeg/ffplay-$FFMPEG_VER.zip 29 | mkdir -vp $BUILDTMP/Payload/opt/usr/bin 30 | unzip ffmpeg-$FFMPEG_VER.zip -d $BUILDTMP/Payload/opt/usr/bin/ 31 | unzip ffprobe-$FFMPEG_VER.zip -d $BUILDTMP/Payload/opt/usr/bin/ 32 | unzip ffplay-$FFMPEG_VER.zip -d $BUILDTMP/Payload/opt/usr/bin/ 33 | wget --trust-server-names -N https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VER.tar.gz 34 | tar -xzf ffmpeg-$FFMPEG_VER.tar.gz -C $BUILDTMP/ 35 | mkdir -vp $BUILDTMP/Payload/opt/usr/share/ffmpeg 36 | mv $BUILDTMP/ffmpeg-$FFMPEG_VER/doc $BUILDTMP/Payload/opt/usr/share/ffmpeg/ 37 | mv $BUILDTMP/ffmpeg-$FFMPEG_VER/presets $BUILDTMP/Payload/opt/usr/share/ffmpeg/ 38 | mv $BUILDTMP/ffmpeg-$FFMPEG_VER/LICENSE* $BUILDTMP/Payload/opt/usr/share/ffmpeg/ 39 | mv $BUILDTMP/ffmpeg-$FFMPEG_VER/README* $BUILDTMP/Payload/opt/usr/share/ffmpeg/ 40 | fi 41 | cat postinstall-scripts/postinstall_ffmpeg | sed 's#@PREFIX@#/opt/usr#g' > $BUILDTMP/Scripts/postinstall 42 | chmod +x $BUILDTMP/Scripts/postinstall 43 | cd "$BUILDTMP" 44 | for file in `find Payload -type f | perl -lne 'print if -B'`; do 45 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options hard "$file" 46 | done 47 | cd "$CURDIR" 48 | pkgbuild --root "$BUILDTMP/Payload" --identifier "org.ffmpeg.ffmpeg" --version "$FFMPEG_VER" --scripts "$BUILDTMP/Scripts" "ffmpeg-$FFMPEG_VER.pkg" 49 | [ $? = 0 ] || exit 1 50 | sudo installer -pkg ffmpeg-$FFMPEG_VER.pkg -target / -dumplog -verboseR 51 | mv ffmpeg-$FFMPEG_VER.pkg aeneas-mac-installer-packages/ 52 | rm -rf $BUILDTMP 53 | else 54 | echo "Found ffmpeg-$FFMPEG_VER.pkg" 55 | fi 56 | 57 | cd $CURDIR 58 | 59 | #echo -e "\n\nNow run build_installer.sh\n\n" 60 | 61 | exit 0 62 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_installer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | pkgutil --pkgs | grep "pkg.Packages" 4 | if [ $? = 0 ]; then 5 | if [ ! -f "./Packages.dmg" ]; then 6 | wget --trust-server-names -N http://s.sudre.free.fr/Software/files/Packages.dmg 7 | fi 8 | mkdir -p /tmp/packages-installer/ 9 | hdiutil attach Packages.dmg -mountpoint /tmp/packages-installer/ 10 | sudo installer -pkg /tmp/packages-installer/ -target / 11 | hdiutil detach /tmp/packages-installer/ 12 | fi 13 | 14 | source ./build_env.sh 15 | 16 | bash ./sign_packages.sh 17 | 18 | cat Aeneas_Installer_TEMPLATE.pkgproj |\ 19 | sed -e 's/\[FFMPEG_VER\]/'$FFMPEG_VER'/g' |\ 20 | sed -e 's/\[ESPEAK_VER\]/'$ESPEAK_VER'/g' |\ 21 | sed -e 's/\[PYTHON_VER\]/'$PYTHON_VER'/g' |\ 22 | sed -e 's/\[NUMPY_VER\]/'$NUMPY_VER'/g' |\ 23 | sed -e 's/\[LXML_VER\]/'$LXML_VER'/g' |\ 24 | sed -e 's/\[BS4_VER\]/'$BS4_VER'/g' |\ 25 | sed -e 's/\[AENEAS_VER\]/'$AENEAS_VER'/g' |\ 26 | sed -e 's/\[INSTALLER_VER\]/'$VERSION'/g' |\ 27 | sed -e 's/\[USER\]/'$USER'/g' |\ 28 | tee Aeneas_Installer.pkgproj 29 | 30 | packagesbuild -v Aeneas_Installer.pkgproj 31 | [ $? = 0 ] || exit 1 32 | 33 | if [ -f "aeneas-mac-setup-$VERSION.pkg" ]; then 34 | echo -e "Resulting Installer program filename is:\n$(pwd)/aeneas-mac-setup-$VERSION.pkg" 35 | productsign --timestamp --sign "Developer ID Installer" aeneas-mac-setup-$VERSION.pkg /tmp/aeneas-mac-setup-$VERSION.pkg 36 | cp -v /tmp/aeneas-mac-setup-$VERSION.pkg ./ 37 | xcrun notarytool submit --keychain-profile "notarytool" --wait aeneas-mac-setup-$VERSION.pkg 38 | xcrun stapler staple aeneas-mac-setup-$VERSION.pkg 39 | fi 40 | 41 | exit 0 42 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ./build_env.sh 4 | 5 | cd $CURDIR 6 | 7 | echo -e "\n\nBegining package builds\n\n" 8 | 9 | sudo port selfupdate 10 | 11 | mkdir -p ./aeneas-mac-installer-packages 12 | mkdir -p ./python-wheels 13 | 14 | bash ./build_espeak_package.sh 15 | bash ./build_ffmpeg_package.sh 16 | bash ./build_python_package.sh 17 | bash ./build_aeneas_package.sh 18 | 19 | echo -e "\n\nNow run build_installer.sh\n\n" 20 | 21 | exit 0 22 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_python_mp_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ./build_env.sh 4 | 5 | CURDIR=`pwd` 6 | cd "$CURDIR" 7 | 8 | if [ ! -f "aeneas-mac-installer-packages/python-$PYTHON_VER.pkg" ]; then 9 | echo -e "\n\nBuilding python-$PYTHON_VER.pkg\n\n" 10 | #sudo port -Npfu uninstall --follow-dependents python38 11 | #sudo port -Npfk install --no-rev-upgrade python38 12 | #sudo port select --set python python38 13 | #sudo port select --set python3 python38 14 | sudo port -Npf mpkg python38 15 | SOURCETMP="$(mktemp -d -t python.src.XXXXXXXX)" 16 | BUILDTMP="$(mktemp -d -t python.build.XXXXXXXX)" 17 | pkgutil --expand-full `port work python38`/python38-$PYTHON_VER.mpkg $SOURCETMP/python38-$PYTHON_VER.mpkg 18 | SOURCETMP="$SOURCETMP/python38-$PYTHON_VER.mpkg" 19 | mkdir -vp $BUILDTMP/Payload 20 | mkdir -vp $BUILDTMP/Scripts 21 | for PKG in $SOURCETMP/*.pkg; do 22 | #cp -va $PKG/Payload/* $BUILDTMP/Payload/ 23 | ditto -v $PKG/Payload $BUILDTMP/Payload 24 | done 25 | cat postinstall-scripts/postinstall_python | sed 's#@PREFIX@#/opt/usr#g' > $BUILDTMP/Scripts/postinstall 26 | chmod +x $BUILDTMP/Scripts/postinstall 27 | cd "$BUILDTMP" 28 | #find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf 29 | for file in `find Payload -type f | perl -lne 'print if -B'`; do 30 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options hard "$file" 31 | done 32 | cd "$CURDIR" 33 | pkgbuild --prior `port work python38`/python38-$PYTHON_VER-component.pkg --version "$PYTHON_VER" --root "$BUILDTMP/Payload" --scripts "$BUILDTMP/Scripts" "python-$PYTHON_VER.pkg" 34 | [ $? = 0 ] || exit 1 35 | sudo installer -pkg python-$PYTHON_VER.pkg -target / -dumplog -verboseR 36 | [ $? = 0 ] || exit 1 37 | mv python-$PYTHON_VER.pkg aeneas-mac-installer-packages/ 38 | rm -rf $SOURCETMP 39 | rm -rf $BUILDTMP 40 | else 41 | echo "Found python-$PYTHON_VER.pkg" 42 | fi 43 | 44 | sudo -H /opt/usr/bin/python3 -m ensurepip 45 | sudo -H /opt/usr/bin/python3 -m pip install -U setuptools pip wheel 46 | 47 | cd $CURDIR 48 | 49 | #echo -e "\n\nNow run build_installer.sh\n\n" 50 | 51 | exit 0 52 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_python_org_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ./build_env.sh 4 | 5 | CURDIR=`pwd` 6 | cd "$CURDIR" 7 | 8 | if [ ! -f "aeneas-mac-installer-packages/python-$PYTHON_VER.pkg" ]; then 9 | echo -e "\n\nBuilding python-$PYTHON_VER.pkg\n\n" 10 | if [ ! -f "./python-$PYTHON_VER-macosx10.9.pkg" ]; then 11 | wget --trust-server-names https://www.python.org/ftp/python/$PYTHON_VER/python-$PYTHON_VER-macosx10.9.pkg 12 | fi 13 | SOURCETMP="$(mktemp -d -t python.src.XXXXXXXX)" 14 | BUILDTMP="$(mktemp -d -t python.build.XXXXXXXX)" 15 | 16 | pkgutil --expand-full python-$PYTHON_VER-macosx10.9.pkg $SOURCETMP/python-$PYTHON_VER-macosx10.9.pkg 17 | SOURCETMP="$SOURCETMP/python-$PYTHON_VER-macosx10.9.pkg" 18 | 19 | mkdir -vp $BUILDTMP/Payload 20 | mkdir -vp $BUILDTMP/Scripts 21 | #touch $BUILDTMP/Scripts/postinstall 22 | echo "#!/bin/sh" > $BUILDTMP/Scripts/postinstall 23 | PKGS="Python_Framework.pkg 24 | Python_Command_Line_Tools.pkg 25 | Python_Shell_Profile_Updater.pkg 26 | Python_Install_Pip.pkg 27 | Python_Documentation.pkg 28 | Python_Applications.pkg" 29 | for PKG in $PKGS; do 30 | PKG_ROOT=`cat $SOURCETMP/$PKG/PackageInfo | grep "install-location" | cut -d' ' -f10 | cut -d'=' -f2 | cut -d'"' -f2` 31 | if [ -n "$PKG_ROOT" ]; then 32 | #mkdir -vp $BUILDTMP/Payload$PKG_ROOT 33 | ditto -v $SOURCETMP/$PKG/Payload $BUILDTMP/Payload$PKG_ROOT 34 | fi 35 | SCRIPT_NAME="`basename $PKG`-postinstall" 36 | if [ -f "$SOURCETMP/$PKG/Scripts/postinstall" ]; then 37 | cp -va $SOURCETMP/$PKG/Scripts/postinstall $BUILDTMP/Scripts/$SCRIPT_NAME 38 | echo "/bin/sh ./$SCRIPT_NAME" >> $BUILDTMP/Scripts/postinstall 39 | fi 40 | done 41 | echo "exit 0" >> $BUILDTMP/Scripts/postinstall 42 | chmod +x $BUILDTMP/Scripts/postinstall 43 | cd "$BUILDTMP" 44 | for file in `find Payload -type f | perl -lne 'print if -B'`; do 45 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options hard "$file" 46 | done 47 | cd "$CURDIR" 48 | pkgbuild --root "$BUILDTMP/Payload" --identifier "org.python.python" --version "$PYTHON_VER" --scripts "$BUILDTMP/Scripts" "python-$PYTHON_VER.pkg" 49 | [ $? = 0 ] || exit 1 50 | sudo installer -pkg python-$PYTHON_VER.pkg -target / -dumplog -verboseR 51 | [ $? = 0 ] || exit 1 52 | mv python-$PYTHON_VER.pkg aeneas-mac-installer-packages/ 53 | rm -rf $SOURCETMP 54 | rm -rf $BUILDTMP 55 | else 56 | echo "Found python-$PYTHON_VER.pkg" 57 | fi 58 | 59 | sudo -H /opt/usr/bin/python3 -m ensurepip 60 | sudo -H /opt/usr/bin/python3 -m pip install -U setuptools pip wheel 61 | 62 | cd $CURDIR 63 | 64 | #echo -e "\n\nNow run build_installer.sh\n\n" 65 | 66 | exit 0 67 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_python_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ./build_env.sh 4 | 5 | CURDIR=`pwd` 6 | cd "$CURDIR" 7 | 8 | if [ ! -f "aeneas-mac-installer-packages/python-$PYTHON_VER.pkg" ]; then 9 | echo -e "\n\nBuilding python-$PYTHON_VER.pkg\n\n" 10 | if [ ! -f "./python-$PYTHON_VER-macosx10.9.pkg" ]; then 11 | wget --trust-server-names https://www.python.org/ftp/python/$PYTHON_VER/python-$PYTHON_VER-macosx10.9.pkg 12 | fi 13 | SOURCETMP="$(mktemp -d -t python.src.XXXXXXXX)" 14 | BUILDTMP="$(mktemp -d -t python.build.XXXXXXXX)" 15 | 16 | pkgutil --expand-full python-$PYTHON_VER-macosx10.9.pkg $SOURCETMP/python-$PYTHON_VER-macosx10.9.pkg 17 | SOURCETMP="$SOURCETMP/python-$PYTHON_VER-macosx10.9.pkg" 18 | 19 | mkdir -vp $BUILDTMP/Payload 20 | mkdir -vp $BUILDTMP/Scripts 21 | #touch $BUILDTMP/Scripts/postinstall 22 | echo "#!/bin/sh" > $BUILDTMP/Scripts/postinstall 23 | PKGS="Python_Framework.pkg 24 | Python_Command_Line_Tools.pkg 25 | Python_Shell_Profile_Updater.pkg 26 | Python_Install_Pip.pkg 27 | Python_Documentation.pkg 28 | Python_Applications.pkg" 29 | for PKG in $PKGS; do 30 | PKG_ROOT=`cat $SOURCETMP/$PKG/PackageInfo | grep "install-location" | cut -d' ' -f10 | cut -d'=' -f2 | cut -d'"' -f2` 31 | if [ -n "$PKG_ROOT" ]; then 32 | #mkdir -vp $BUILDTMP/Payload$PKG_ROOT 33 | ditto -v $SOURCETMP/$PKG/Payload $BUILDTMP/Payload$PKG_ROOT 34 | fi 35 | SCRIPT_NAME="`basename $PKG`-postinstall" 36 | if [ -f "$SOURCETMP/$PKG/Scripts/postinstall" ]; then 37 | cp -va $SOURCETMP/$PKG/Scripts/postinstall $BUILDTMP/Scripts/$SCRIPT_NAME 38 | echo "/bin/sh ./$SCRIPT_NAME" >> $BUILDTMP/Scripts/postinstall 39 | fi 40 | done 41 | echo "exit 0" >> $BUILDTMP/Scripts/postinstall 42 | chmod +x $BUILDTMP/Scripts/postinstall 43 | cd "$BUILDTMP" 44 | for file in `find Payload -type f | perl -lne 'print if -B'`; do 45 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options hard "$file" 46 | done 47 | cd "$CURDIR" 48 | pkgbuild --root "$BUILDTMP/Payload" --identifier "org.python.python" --version "$PYTHON_VER" --scripts "$BUILDTMP/Scripts" "python-$PYTHON_VER.pkg" 49 | [ $? = 0 ] || exit 1 50 | sudo installer -pkg python-$PYTHON_VER.pkg -target / -dumplog -verboseR 51 | [ $? = 0 ] || exit 1 52 | mv python-$PYTHON_VER.pkg aeneas-mac-installer-packages/ 53 | rm -rf $SOURCETMP 54 | rm -rf $BUILDTMP 55 | else 56 | echo "Found python-$PYTHON_VER.pkg" 57 | fi 58 | 59 | sudo -H /opt/usr/bin/python3 -m ensurepip 60 | sudo -H /opt/usr/bin/python3 -m pip install -U setuptools pip wheel 61 | 62 | cd $CURDIR 63 | 64 | #echo -e "\n\nNow run build_installer.sh\n\n" 65 | 66 | exit 0 67 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/build_setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #export PATH="/usr/libexec/git-core/:$PATH" 4 | export PATH=/bin:/sbin:/usr/bin:/usr/sbin 5 | 6 | export MP_PREFIX="/opt/usr" 7 | export PATH="$MP_PREFIX/bin:$MP_PREFIX/sbin:$PATH" 8 | export PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:$PATH" 9 | 10 | cd `dirname $0` 11 | export CURDIR=`pwd` 12 | echo -e "\n\nRunning `basename $0`\n from $CURDIR\n" 13 | 14 | export CPLUS_INCLUDE_PATH="/opt/usr/include" 15 | export C_INCLUDE_PATH="/opt/usr/include" 16 | export LIBRARY_PATH="/opt/usr/lib" 17 | export LDFLAGS="-L/opt/usr/lib" 18 | 19 | 20 | cd $CURDIR 21 | 22 | echo -e "\n\nPreparing package build environment\n\n" 23 | 24 | #./install_xcode_cl_tools.sh 25 | xcode-select --install 26 | 27 | curl https://www.python.org/ftp/python/3.9.13/python-3.9.13-macosx10.9.pkg --output python-3.9.13-macosx10.9.pkg 28 | sudo installer -pkg python-3.9.13-macosx10.9.pkg -target / 29 | 30 | sudo mkdir -p $MP_PREFIX 31 | cd $MP_PREFIX 32 | sudo git clone https://github.com/macports/macports-base.git 33 | sudo git checkout v2.8.1 34 | cd macports-base 35 | sudo ./configure --enable-readline --prefix=$MP_PREFIX --with-applications-dir=/Applications/MacPorts`echo $MP_PREFIX | sed 's#/#-#g'` --without-startupitems 36 | sudo make 37 | sudo make install 38 | sudo make distclean 39 | 40 | cd $MP_PREFIX 41 | #sudo git clone https://github.com/macports/macports-ports.git 42 | sudo git clone https://github.com/danielbair/custom-macports-ports.git 43 | 44 | cd $CURDIR 45 | sudo cp -v ./etc-macports-sources.conf $MP_PREFIX/etc/macports/sources.conf 46 | sudo port selfupdate 47 | 48 | sudo port install jq wget 49 | 50 | pkgutil --pkgs | grep "pkg.Packages" 51 | if [ $? = 0 ]; then 52 | if [ ! -f "./Packages.dmg" ]; then 53 | wget --trust-server-names -N http://s.sudre.free.fr/Software/files/Packages.dmg 54 | fi 55 | mkdir -p /tmp/packages-installer/ 56 | hdiutil attach Packages.dmg -mountpoint /tmp/packages-installer/ 57 | sudo installer -pkg /tmp/packages-installer/ -target / 58 | hdiutil detach /tmp/packages-installer/ 59 | fi 60 | 61 | echo -e "\n\nNow run build_packages.sh\n\n" 62 | 63 | exit 0 64 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/check_python.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -eq 0 ] 4 | then 5 | echo "Useage: `basename $0` version" 6 | exit 2 7 | fi 8 | 9 | vercomp () { 10 | if [[ $1 == $2 ]] 11 | then 12 | return 0 13 | fi 14 | local IFS=. 15 | local i ver1=($1) ver2=($2) 16 | # fill empty fields in ver1 with zeros 17 | for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) 18 | do 19 | ver1[i]=0 20 | done 21 | for ((i=0; i<${#ver1[@]}; i++)) 22 | do 23 | if [[ -z ${ver2[i]} ]] 24 | then 25 | # fill empty fields in ver2 with zeros 26 | ver2[i]=0 27 | fi 28 | if ((10#${ver1[i]} > 10#${ver2[i]})) 29 | then 30 | return 1 31 | fi 32 | if ((10#${ver1[i]} < 10#${ver2[i]})) 33 | then 34 | return 2 35 | fi 36 | done 37 | return 0 38 | } 39 | 40 | testvercomp () { 41 | vercomp $1 $3 42 | case $? in 43 | 0) op='=';; 44 | 1) op='>';; 45 | 2) op='<';; 46 | esac 47 | if [[ $op != $2 ]] 48 | then 49 | echo "FAIL: Expected '$2', Actual '$op'; Arg1 '$1', Arg2 '$2', Arg3 '$3'" 50 | else 51 | echo "Pass: '$1 $op $2'" 52 | fi 53 | } 54 | 55 | V=`python3 --version | cut -d' ' -f2` 56 | 57 | testvercomp $V '<' $1 58 | 59 | exit 0 60 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/clean_up.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | find . -name "*.mpkg" -print0 -exec rm -vrf "{}" \; 4 | find . -name "*.pkg" -print -delete 5 | find . -name "*.dmg" -print -delete 6 | find . -name "*.zip" -print -delete 7 | find . -name "*.gz" -print -delete 8 | find . -name aeneas-1.7* -type d -print0 -exec rm -vrf "{}" \; 9 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.cs.allow-jit 6 | 7 | com.apple.security.cs.allow-unsigned-executable-memory 8 | 9 | com.apple.security.cs.disable-executable-page-protection 10 | 11 | com.apple.security.cs.allow-dyld-environment-variables 12 | 13 | com.apple.security.cs.disable-library-validation 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/etc-macports-sources.conf: -------------------------------------------------------------------------------- 1 | # MacPorts system-wide configuration file for ports tree sources. 2 | # 3 | # To change how MacPorts fetches base, see rsync_server and rsync_dir in 4 | # macports.conf. 5 | 6 | # To add a local source, add a "file://" entry. 7 | # 8 | # Example: file:///Users/landonf/misc/MacPorts/ports 9 | # 10 | # To prevent a source from synchronizing when `port sync` is used, 11 | # append "[nosync]" at the end. 12 | # 13 | # Example: file:///Users/landonf/misc/MacPorts/ports [nosync] 14 | # 15 | # Note that MacPorts parses source URLs in order; when a port appears in 16 | # multiple sources, it installs the first occurrence. For local sources 17 | # to shadow remote ones, "file://" URLs must come before other URLs. 18 | 19 | # A list of rsync mirrors is available at 20 | # https://trac.macports.org/wiki/Mirrors#Portfiles. 21 | # 22 | # If an "rsync://" URL points to a .tar file, a signed .rmd160 file must 23 | # exist in the same directory on the server and will be used to verify 24 | # its integrity. 25 | # 26 | # For proper functionality of various resources (port groups, mirror 27 | # sites, etc.), the primary MacPorts source must always be tagged 28 | # "[default]", even if switched from the default "rsync://" URL. 29 | 30 | rsync://rsync.macports.org/macports/release/tarballs/ports.tar [default] 31 | file:///opt/usr/custom-macports-ports 32 | #file:///opt/usr/macports-ports [default] 33 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/install_xcode_cl_tools.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Installing the Xcode command line tools on 10.7.x or higher 4 | 5 | osx_vers=$(sw_vers -productVersion | awk -F "." '{print $2}') 6 | cmd_line_tools_temp_file="/tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress" 7 | 8 | # Installing the latest Xcode command line tools on 10.9.x or higher 9 | 10 | if [[ "$osx_vers" -ge 9 ]]; then 11 | 12 | # Create the placeholder file which is checked by the softwareupdate tool 13 | # before allowing the installation of the Xcode command line tools. 14 | 15 | touch "$cmd_line_tools_temp_file" 16 | 17 | # Find the last listed update in the Software Update feed with "Command Line Tools" in the name 18 | 19 | cmd_line_tools=$(softwareupdate -l | awk '/\*\ Command Line Tools/ { $1=$1;print }' | tail -1 | sed 's/^[[ \t]]*//;s/[[ \t]]*$//;s/*//' | cut -c 2-) 20 | 21 | #Install the command line tools 22 | 23 | softwareupdate -i "$cmd_line_tools" -v 24 | 25 | # Remove the temp file 26 | 27 | if [[ -f "$cmd_line_tools_temp_file" ]]; then 28 | rm "$cmd_line_tools_temp_file" 29 | fi 30 | fi 31 | 32 | # Installing the latest Xcode command line tools on 10.7.x and 10.8.x 33 | 34 | # on 10.7/10.8, instead of using the software update feed, the command line tools are downloaded 35 | # instead from public download URLs, which can be found in the dvtdownloadableindex: 36 | # https://devimages.apple.com.edgekey.net/downloads/xcode/simulators/index-3905972D-B609-49CE-8D06-51ADC78E07BC.dvtdownloadableindex 37 | 38 | if [[ "$osx_vers" -eq 7 ]] || [[ "$osx_vers" -eq 8 ]]; then 39 | 40 | if [[ "$osx_vers" -eq 7 ]]; then 41 | DMGURL=http://devimages.apple.com/downloads/xcode/command_line_tools_for_xcode_os_x_lion_april_2013.dmg 42 | fi 43 | 44 | if [[ "$osx_vers" -eq 8 ]]; then 45 | DMGURL=http://devimages.apple.com/downloads/xcode/command_line_tools_for_osx_mountain_lion_april_2014.dmg 46 | fi 47 | 48 | TOOLS=cltools.dmg 49 | curl "$DMGURL" -o "$TOOLS" 50 | TMPMOUNT=`/usr/bin/mktemp -d /tmp/clitools.XXXX` 51 | hdiutil attach "$TOOLS" -mountpoint "$TMPMOUNT" -nobrowse 52 | # The "-allowUntrusted" flag has been added to the installer 53 | # command to accomodate for now-expired certificates used 54 | # to sign the downloaded command line tools. 55 | sudo installer -allowUntrusted -pkg "$(find $TMPMOUNT -name '*.mpkg')" -target / 56 | hdiutil detach "$TMPMOUNT" 57 | rm -rf "$TMPMOUNT" 58 | rm "$TOOLS" 59 | fi 60 | 61 | exit 0 62 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/notarize_installer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ./build_env.sh 4 | 5 | if [ "$1" == "sign" ]; then 6 | mv -v aeneas-mac-setup-$VERSION.pkg aeneas-mac-setup-$VERSION-unsigned.pkg 7 | productsign --timestamp --sign "Developer ID Installer" aeneas-mac-setup-$VERSION-unsigned.pkg aeneas-mac-setup-$VERSION.pkg 8 | exit 0 9 | fi 10 | 11 | if [ "$1" == "log" ]; then 12 | xcrun altool --notarization-info $2 --verbose -p "@keychain:altool" 13 | exit 0 14 | fi 15 | 16 | if [ "$1" == "notarize" ]; then 17 | xcrun altool --notarize-app -f "aeneas-mac-setup-$VERSION.pkg" --primary-bundle-id com.danielbair.pkg.aeneas-mac-setup --verbose -p "@keychain:altool" 18 | exit 0 19 | fi 20 | 21 | if [ "$1" == "staple" ]; then 22 | xcrun stapler staple "aeneas-mac-setup-$VERSION.pkg" 23 | spctl -a -vvv -t install "aeneas-mac-setup-$VERSION.pkg" 24 | exit 0 25 | fi 26 | 27 | xcrun notarytool submit "aeneas-mac-setup-$VERSION.pkg" --keychain-profile "notarytool" --wait 28 | 29 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/postinstall-scripts/postinstall: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "This script will update your shell profile." 4 | echo "These changes will be effective only in shell windows that you open" 5 | echo "after running this script." 6 | 7 | AENEAS_VER=1.7.3.0 8 | AENEAS_ROOT="/opt/usr" 9 | 10 | if [ `id -ur` = 0 ]; then 11 | # Run from the installer, do some trickery to fetch the information 12 | # we need. 13 | theShell="`finger $USER | grep Shell: | head -1 | awk '{ print $NF }'`" 14 | 15 | else 16 | theShell="${SHELL}" 17 | fi 18 | 19 | # Make sure the directory ${AENEAS_ROOT}/bin is on the users PATH. 20 | BSH="`basename "${theShell}"`" 21 | case "${BSH}" in 22 | bash|ksh|sh|*csh|zsh) 23 | if [ `id -ur` = 0 ]; then 24 | P=`su - ${USER} -c 'echo A-X-4-X@@$PATH@@X-4-X-A' | grep 'A-X-4-X@@.*@@X-4-X-A' | sed -e 's/^A-X-4-X@@//g' -e 's/@@X-4-X-A$//g'` 25 | else 26 | P="`(exec -l ${theShell} -c 'echo $PATH')`" 27 | fi 28 | ;; 29 | *) 30 | echo "Sorry, I don't know how to patch $BSH shells" 31 | exit 0 32 | ;; 33 | esac 34 | 35 | # Now ensure that our bin directory is on $P and before /usr/bin at that 36 | for elem in `echo $P | tr ':' ' '` 37 | do 38 | if [ "${elem}" = "${AENEAS_ROOT}/bin" ]; then 39 | echo "All right, you're a aeneas lover already" 40 | exit 0 41 | elif [ "${elem}" = "/usr/bin" ]; then 42 | break 43 | fi 44 | done 45 | 46 | echo "${AENEAS_ROOT}/bin is not on your PATH or at least not early enough" 47 | case "${BSH}" in 48 | *csh) 49 | if [ -f "${HOME}/.tcshrc" ]; then 50 | RC="${HOME}/.tcshrc" 51 | else 52 | RC="${HOME}/.cshrc" 53 | fi 54 | # Create backup copy before patching 55 | if [ -f "${RC}" ]; then 56 | cp -fp "${RC}" "${RC}.pysave" 57 | fi 58 | echo "" >> "${RC}" 59 | echo "# Setting PATH for aeneas ${AENEAS_VER}" >> "${RC}" 60 | echo "# The original version is saved in .cshrc.pysave" >> "${RC}" 61 | echo "set path=(${AENEAS_ROOT}/sbin "'$path'")" >> "${RC}" 62 | echo "set path=(${AENEAS_ROOT}/bin "'$path'")" >> "${RC}" 63 | if [ `id -ur` = 0 ]; then 64 | chown "${USER}" "${RC}" 65 | fi 66 | exit 0 67 | ;; 68 | bash) 69 | if [ -e "${HOME}/.bash_profile" ]; then 70 | PR="${HOME}/.bash_profile" 71 | elif [ -e "${HOME}/.bash_login" ]; then 72 | PR="${HOME}/.bash_login" 73 | elif [ -e "${HOME}/.profile" ]; then 74 | PR="${HOME}/.profile" 75 | else 76 | PR="${HOME}/.bash_profile" 77 | fi 78 | ;; 79 | zsh) 80 | PR="${HOME}/.zprofile" 81 | ;; 82 | *sh) 83 | PR="${HOME}/.profile" 84 | ;; 85 | esac 86 | 87 | # Create backup copy before patching 88 | if [ -f "${PR}" ]; then 89 | cp -fp "${PR}" "${PR}.pysave" 90 | fi 91 | echo "" >> "${PR}" 92 | echo "# Setting PATH for aeneas ${AENEAS_VER}" >> "${PR}" 93 | echo "# The original version is saved in `basename ${PR}`.pysave" >> "${PR}" 94 | echo 'PATH="'"${AENEAS_ROOT}/sbin"':${PATH}"' >> "${PR}" 95 | echo 'PATH="'"${AENEAS_ROOT}/bin"':${PATH}"' >> "${PR}" 96 | echo 'export PATH' >> "${PR}" 97 | if [ `id -ur` = 0 ]; then 98 | chown "${USER}" "${PR}" 99 | fi 100 | exit 0 101 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/postinstall-scripts/postinstall_aeneas: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH" 4 | 5 | if [ ! -f $HOME/.bash_profile ]; then 6 | touch $HOME/.bash_profile 7 | /bin/chmod 0700 $HOME/.bash_profile 8 | /usr/sbin/chown $USER $HOME/.bash_profile 9 | if [ -f $HOME/.profile ]; then 10 | if [ ! -n "$(/usr/bin/grep '. ~/.profile' $HOME/.bash_profile)" ]; then 11 | echo '[ -r ~/.profile ] && . ~/.profile' >> $HOME/.bash_profile 12 | fi 13 | fi 14 | fi 15 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.bash_profile)" ]; then 16 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.bash_profile 17 | fi 18 | if [ ! -f $HOME/.zshenv ]; then 19 | touch $HOME/.zshenv 20 | /bin/chmod 0700 $HOME/.zshenv 21 | /usr/sbin/chown $USER $HOME/.zshenv 22 | fi 23 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.zshenv)" ]; then 24 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.zshenv 25 | fi 26 | 27 | python3 -m pip install -U @PREFIX@/share/aeneas_tools/aeneas-*.whl 28 | 29 | osascript <> $HOME/.bash_profile 12 | fi 13 | fi 14 | fi 15 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.bash_profile)" ]; then 16 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.bash_profile 17 | fi 18 | if [ ! -f $HOME/.zshenv ]; then 19 | touch $HOME/.zshenv 20 | /bin/chmod 0700 $HOME/.zshenv 21 | /usr/sbin/chown $USER $HOME/.zshenv 22 | fi 23 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.zshenv)" ]; then 24 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.zshenv 25 | fi 26 | 27 | python3 -m pip install -U @PREFIX@/share/aeneas_tools/bs4-*.whl 28 | python3 -m pip install -U @PREFIX@/share/aeneas_tools/soupsieve-*.whl 29 | 30 | exit 0 31 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/postinstall-scripts/postinstall_espeak: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ ! -f $HOME/.bash_profile ]; then 3 | touch $HOME/.bash_profile 4 | /bin/chmod 0700 $HOME/.bash_profile 5 | /usr/sbin/chown $USER $HOME/.bash_profile 6 | if [ -f $HOME/.profile ]; then 7 | if [ ! -n "$(/usr/bin/grep '. ~/.profile' $HOME/.bash_profile)" ]; then 8 | echo '[ -r ~/.profile ] && . ~/.profile' >> $HOME/.bash_profile 9 | fi 10 | fi 11 | fi 12 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.bash_profile)" ]; then 13 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.bash_profile 14 | fi 15 | if [ ! -f $HOME/.zshenv ]; then 16 | touch $HOME/.zshenv 17 | /bin/chmod 0700 $HOME/.zshenv 18 | /usr/sbin/chown $USER $HOME/.zshenv 19 | fi 20 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.zshenv)" ]; then 21 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.zshenv 22 | fi 23 | exit 0 24 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/postinstall-scripts/postinstall_ffmpeg: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ ! -f $HOME/.bash_profile ]; then 3 | touch $HOME/.bash_profile 4 | /bin/chmod 0700 $HOME/.bash_profile 5 | /usr/sbin/chown $USER $HOME/.bash_profile 6 | if [ -f $HOME/.profile ]; then 7 | if [ ! -n "$(/usr/bin/grep '. ~/.profile' $HOME/.bash_profile)" ]; then 8 | echo '[ -r ~/.profile ] && . ~/.profile' >> $HOME/.bash_profile 9 | fi 10 | fi 11 | fi 12 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.bash_profile)" ]; then 13 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.bash_profile 14 | fi 15 | if [ ! -f $HOME/.zshenv ]; then 16 | touch $HOME/.zshenv 17 | /bin/chmod 0700 $HOME/.zshenv 18 | /usr/sbin/chown $USER $HOME/.zshenv 19 | fi 20 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.zshenv)" ]; then 21 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.zshenv 22 | fi 23 | exit 0 24 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/postinstall-scripts/postinstall_lxml: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH" 4 | 5 | if [ ! -f $HOME/.bash_profile ]; then 6 | touch $HOME/.bash_profile 7 | /bin/chmod 0700 $HOME/.bash_profile 8 | /usr/sbin/chown $USER $HOME/.bash_profile 9 | if [ -f $HOME/.profile ]; then 10 | if [ ! -n "$(/usr/bin/grep '. ~/.profile' $HOME/.bash_profile)" ]; then 11 | echo '[ -r ~/.profile ] && . ~/.profile' >> $HOME/.bash_profile 12 | fi 13 | fi 14 | fi 15 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.bash_profile)" ]; then 16 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.bash_profile 17 | fi 18 | if [ ! -f $HOME/.zshenv ]; then 19 | touch $HOME/.zshenv 20 | /bin/chmod 0700 $HOME/.zshenv 21 | /usr/sbin/chown $USER $HOME/.zshenv 22 | fi 23 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.zshenv)" ]; then 24 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.zshenv 25 | fi 26 | 27 | python3 -m pip install -U @PREFIX@/share/aeneas_tools/lxml-*.whl 28 | 29 | exit 0 30 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/postinstall-scripts/postinstall_numpy: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH" 4 | 5 | if [ ! -f $HOME/.bash_profile ]; then 6 | touch $HOME/.bash_profile 7 | /bin/chmod 0700 $HOME/.bash_profile 8 | /usr/sbin/chown $USER $HOME/.bash_profile 9 | if [ -f $HOME/.profile ]; then 10 | if [ ! -n "$(/usr/bin/grep '. ~/.profile' $HOME/.bash_profile)" ]; then 11 | echo '[ -r ~/.profile ] && . ~/.profile' >> $HOME/.bash_profile 12 | fi 13 | fi 14 | fi 15 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.bash_profile)" ]; then 16 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.bash_profile 17 | fi 18 | if [ ! -f $HOME/.zshenv ]; then 19 | touch $HOME/.zshenv 20 | /bin/chmod 0700 $HOME/.zshenv 21 | /usr/sbin/chown $USER $HOME/.zshenv 22 | fi 23 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.zshenv)" ]; then 24 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.zshenv 25 | fi 26 | 27 | python3 -m pip install -U @PREFIX@/share/aeneas_tools/numpy-*.whl 28 | 29 | exit 0 30 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/postinstall-scripts/postinstall_python: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ ! -f $HOME/.bash_profile ]; then 3 | touch $HOME/.bash_profile 4 | /bin/chmod 0700 $HOME/.bash_profile 5 | /usr/sbin/chown $USER $HOME/.bash_profile 6 | if [ -f $HOME/.profile ]; then 7 | if [ ! -n "$(/usr/bin/grep '. ~/.profile' $HOME/.bash_profile)" ]; then 8 | echo '[ -r ~/.profile ] && . ~/.profile' >> $HOME/.bash_profile 9 | fi 10 | fi 11 | fi 12 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.bash_profile)" ]; then 13 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.bash_profile 14 | fi 15 | if [ ! -f $HOME/.zshenv ]; then 16 | touch $HOME/.zshenv 17 | /bin/chmod 0700 $HOME/.zshenv 18 | /usr/sbin/chown $USER $HOME/.zshenv 19 | fi 20 | if [ ! -n "$(/usr/bin/grep '^export PATH="@PREFIX@/bin:@PREFIX@/sbin:' $HOME/.zshenv)" ]; then 21 | echo 'export PATH="@PREFIX@/bin:@PREFIX@/sbin:$PATH"' >> $HOME/.zshenv 22 | fi 23 | 24 | python3 -m ensurepip 25 | 26 | exit 0 27 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/resign_packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | IFS=$'\n' 4 | 5 | source ./build_env.sh 6 | 7 | cd $CURDIR 8 | 9 | echo -e "\n\nBegining package signing\n\n" 10 | 11 | mkdir -p ./aeneas-mac-installer-packages 12 | mkdir -p ./python-wheels 13 | 14 | bash ./sign_espeak_package.sh 15 | bash ./sign_ffmpeg_package.sh 16 | bash ./sign_python_package.sh 17 | bash ./sign_aeneas_package.sh 18 | 19 | echo -e "\n\nNow run build_installer.sh\n\n" 20 | 21 | exit 0 22 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/sign_aeneas_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | IFS=$'\n' 4 | 5 | source ./build_env.sh 6 | 7 | CURDIR=`pwd` 8 | cd "$CURDIR" 9 | 10 | AENEAS_FILE=$(basename `ls -1 python-wheels/aeneas-$AENEAS_VER*.whl`) 11 | if [ -f "python-wheels/$AENEAS_FILE" ]; then 12 | BUILDTMP="$(mktemp -d -t aeneas.tmp.XXXXXXXX)" 13 | cd "$CURDIR" 14 | unzip python-wheels/$AENEAS_FILE -d $BUILDTMP/$AENEAS_FILE 15 | cd "$BUILDTMP" 16 | for file in `find $AENEAS_FILE -type f -not -path "*/espeak-ng-data/*" | perl -lne 'print if -B'`; do 17 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options runtime "$file" 18 | done 19 | cd $AENEAS_FILE 20 | zip -r "$CURDIR/$AENEAS_FILE" . 21 | cd "$CURDIR" 22 | mkdir -p $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 23 | cp -v aeneas-$AENEAS_VER*.whl $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 24 | mv -v aeneas-$AENEAS_VER*.whl python-wheels/ 25 | mkdir -p $BUILDTMP/Scripts/ 26 | cat postinstall-scripts/postinstall_aeneas | sed 's#@PREFIX@#/opt/usr#g' > $BUILDTMP/Scripts/postinstall 27 | chmod +x $BUILDTMP/Scripts/postinstall 28 | pkgbuild --identifier "org.python.python.aeneas" --version "$AENEAS_VER" --root "$BUILDTMP/Payload" --scripts "$BUILDTMP/Scripts" "aeneas-$AENEAS_VER.pkg" 29 | [ $? = 0 ] || exit 1 30 | productsign --timestamp --sign "Developer ID Installer" aeneas-$AENEAS_VER.pkg aeneas-mac-installer-packages/aeneas-$AENEAS_VER.pkg 31 | rm -rf $BUILDTMP 32 | else 33 | echo "Found aeneas-$AENEAS_VER.pkg" 34 | fi 35 | cd $CURDIR 36 | NUMPY_FILE=$(basename `ls -1 python-wheels/numpy-$NUMPY_VER*.whl`) 37 | if [ -f "python-wheels/$NUMPY_FILE" ]; then 38 | BUILDTMP="$(mktemp -d -t numpy.tmp.XXXXXXXX)" 39 | cd "$CURDIR" 40 | unzip python-wheels/$NUMPY_FILE -d $BUILDTMP/$NUMPY_FILE 41 | cd "$BUILDTMP" 42 | for file in `find $NUMPY_FILE -type f | perl -lne 'print if -B'`; do 43 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options runtime "$file" 44 | done 45 | cd $NUMPY_FILE 46 | zip -r "$CURDIR/$NUMPY_FILE" . 47 | cd "$CURDIR" 48 | mkdir -p $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 49 | cp -v numpy-$NUMPY_VER*.whl $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 50 | mv -v numpy-$NUMPY_VER*.whl python-wheels/ 51 | mkdir -p $BUILDTMP/Scripts/ 52 | cat postinstall-scripts/postinstall_numpy | sed 's#@PREFIX@#/opt/usr#g' > $BUILDTMP/Scripts/postinstall 53 | chmod +x $BUILDTMP/Scripts/postinstall 54 | pkgbuild --identifier "org.python.python.numpy" --version "$NUMPY_VER" --root "$BUILDTMP/Payload" --scripts "$BUILDTMP/Scripts" "numpy-$NUMPY_VER.pkg" 55 | [ $? = 0 ] || exit 1 56 | productsign --timestamp --sign "Developer ID Installer" numpy-$NUMPY_VER.pkg aeneas-mac-installer-packages/numpy-$NUMPY_VER.pkg 57 | rm -rf $BUILDTMP 58 | else 59 | echo "Found numpy-$NUMPY_VER.pkg" 60 | fi 61 | cd $CURDIR 62 | LXML_FILE=$(basename `ls -1 python-wheels/lxml-$LXML_VER*.whl`) 63 | if [ -f "python-wheels/$LXML_FILE" ]; then 64 | BUILDTMP="$(mktemp -d -t lxml.tmp.XXXXXXXX)" 65 | cd "$CURDIR" 66 | unzip python-wheels/$LXML_FILE -d $BUILDTMP/$LXML_FILE 67 | cd "$BUILDTMP" 68 | for file in `find $LXML_FILE -type f | perl -lne 'print if -B'`; do 69 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options runtime "$file" 70 | done 71 | cd $LXML_FILE 72 | zip -r "$CURDIR/$LXML_FILE" . 73 | cd "$CURDIR" 74 | mkdir -p $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 75 | cp -v lxml-$LXML_VER*.whl $BUILDTMP/Payload/opt/usr/share/aeneas_tools/ 76 | mv -v lxml-$LXML_VER*.whl python-wheels/ 77 | mkdir -p $BUILDTMP/Scripts/ 78 | cat postinstall-scripts/postinstall_lxml | sed 's#@PREFIX@#/opt/usr#g' > $BUILDTMP/Scripts/postinstall 79 | chmod +x $BUILDTMP/Scripts/postinstall 80 | pkgbuild --identifier "org.python.python.lxml" --version "$LXML_VER" --root "$BUILDTMP/Payload" --scripts "$BUILDTMP/Scripts" "lxml-$LXML_VER.pkg" 81 | [ $? = 0 ] || exit 1 82 | productsign --timestamp --sign "Developer ID Installer" lxml-$LXML_VER.pkg aeneas-mac-installer-packages/lxml-$LXML_VER.pkg 83 | rm -rf $BUILDTMP 84 | else 85 | echo "Found lxml-$LXML_VER.pkg" 86 | fi 87 | 88 | cd $CURDIR 89 | 90 | #echo -e "\n\nNow run build_installer.sh\n\n" 91 | 92 | exit 0 93 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/sign_espeak_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | IFS=$'\n' 4 | 5 | source ./build_env.sh 6 | 7 | CURDIR=`pwd` 8 | cd "$CURDIR" 9 | 10 | if [ -f "aeneas-mac-installer-packages/espeak-ng-$ESPEAK_VER.pkg" ]; then 11 | BUILDTMP="$(mktemp -d -t espeak.build.XXXXXXXX)" 12 | pkgutil --expand-full aeneas-mac-installer-packages/espeak-ng-$ESPEAK_VER.pkg $BUILDTMP/espeak-ng-$ESPEAK_VER.pkg 13 | BUILDTMP="$BUILDTMP/espeak-ng-$ESPEAK_VER.pkg" 14 | cd "$BUILDTMP" 15 | for file in `find $BUILDTMP/Payload -type f | perl -lne 'print if -B'`; do 16 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options runtime "$file" 17 | done 18 | cd "$CURDIR" 19 | pkgbuild --prior aeneas-mac-installer-packages/espeak-ng-$ESPEAK_VER.pkg --root "$BUILDTMP/Payload" --scripts "$BUILDTMP/Scripts" "espeak-ng-$ESPEAK_VER.pkg" 20 | [ $? = 0 ] || exit 1 21 | productsign --timestamp --sign "Developer ID Installer" espeak-ng-$ESPEAK_VER.pkg aeneas-mac-installer-packages/espeak-ng-$ESPEAK_VER.pkg 22 | rm -rf $BUILDTMP 23 | else 24 | echo "Found espeak-ng-$ESPEAK_VER.pkg" 25 | fi 26 | 27 | cd $CURDIR 28 | 29 | #echo -e "\n\nNow run build_installer.sh\n\n" 30 | 31 | exit 0 32 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/sign_ffmpeg_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | IFS=$'\n' 4 | 5 | source ./build_env.sh 6 | 7 | CURDIR=`pwd` 8 | cd "$CURDIR" 9 | 10 | if [ -f "aeneas-mac-installer-packages/ffmpeg-$FFMPEG_VER.pkg" ]; then 11 | BUILDTMP="$(mktemp -d -t ffmpeg.tmp.XXXXXXXX)" 12 | pkgutil --expand-full aeneas-mac-installer-packages/ffmpeg-$FFMPEG_VER.pkg $BUILDTMP/ffmpeg-$FFMPEG_VER.pkg 13 | BUILDTMP="$BUILDTMP/ffmpeg-$FFMPEG_VER.pkg" 14 | cd "$BUILDTMP" 15 | for file in `find $BUILDTMP/Payload -type f | perl -lne 'print if -B'`; do 16 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options runtime "$file" 17 | done 18 | cd "$CURDIR" 19 | pkgbuild --prior aeneas-mac-installer-packages/ffmpeg-$FFMPEG_VER.pkg --root "$BUILDTMP/Payload" --scripts "$BUILDTMP/Scripts" "ffmpeg-$FFMPEG_VER.pkg" 20 | [ $? = 0 ] || exit 1 21 | productsign --timestamp --sign "Developer ID Installer" ffmpeg-$FFMPEG_VER.pkg aeneas-mac-installer-packages/ffmpeg-$FFMPEG_VER.pkg 22 | rm -rf $BUILDTMP 23 | else 24 | echo "Found ffmpeg-$FFMPEG_VER.pkg" 25 | fi 26 | 27 | cd $CURDIR 28 | 29 | #echo -e "\n\nNow run build_installer.sh\n\n" 30 | 31 | exit 0 32 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/sign_packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export PATH=/usr/local/bin:/usr/local/sbin:$PATH 4 | 5 | CURDIR=`dirname $0` 6 | cd $CURDIR 7 | 8 | bash ./sign_espeak_package.sh 9 | bash ./sign_ffmpeg_package.sh 10 | bash ./sign_python_package.sh 11 | bash ./sign_aeneas_package.sh 12 | 13 | cd aeneas-mac-installer-packages 14 | for file in *.pkg; do 15 | xcrun notarytool submit --keychain-profile "notarytool" --wait $file 16 | xcrun stapler staple $file 17 | done 18 | 19 | -------------------------------------------------------------------------------- /Mac_OSX_Installer/sign_python_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | IFS=$'\n' 4 | 5 | source ./build_env.sh 6 | 7 | CURDIR=`pwd` 8 | cd "$CURDIR" 9 | 10 | if [ -f "aeneas-mac-installer-packages/python-$PYTHON_VER.pkg" ]; then 11 | BUILDTMP="$(mktemp -d "$TMPDIR"/python.build.XXXXXXXX)" 12 | pkgutil --expand-full aeneas-mac-installer-packages/python-$PYTHON_VER.pkg $BUILDTMP/python-$PYTHON_VER.pkg 13 | BUILDTMP="$BUILDTMP/python-$PYTHON_VER.pkg" 14 | cd "$BUILDTMP" 15 | for file in `find $BUILDTMP/Payload -type f | perl -lne 'print if -B'`; do 16 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options runtime "$file" 17 | done 18 | codesign -s "Developer ID Application" -v --force --entitlements "$CURDIR/entitlements.plist" --deep --options runtime Payload/Library/Frameworks/Python.framework/Versions/3.9/Python 19 | cd "$CURDIR" 20 | pkgbuild --prior aeneas-mac-installer-packages/python-$PYTHON_VER.pkg --root "$BUILDTMP/Payload" --scripts "$BUILDTMP/Scripts" "python-$PYTHON_VER.pkg" 21 | [ $? = 0 ] || exit 1 22 | productsign --timestamp --sign "Developer ID Installer" python-$PYTHON_VER.pkg aeneas-mac-installer-packages/python-$PYTHON_VER.pkg 23 | rm -rf $BUILDTMP 24 | else 25 | echo "Found python-$PYTHON_VER.pkg" 26 | fi 27 | 28 | cd $CURDIR 29 | 30 | #echo -e "\n\nNow run build_installer.sh\n\n" 31 | 32 | exit 0 33 | -------------------------------------------------------------------------------- /ReadMe.md: -------------------------------------------------------------------------------- 1 | This provides a simple installer for [Aeneas](https://github.com/readbeyond/aeneas) for Mac OS X 10.9 and up, and for MS Windows 8 and up. 2 | 3 | You can download prebuilt installers from the [releases](https://github.com/sillsdev/aeneas-installer/releases) section. 4 | 5 | To build this installer for Mac OS X first download (and extract) or clone this repository. 6 | Then open Terminal and _cd_ to _Mac\_OSX\_Installer_ and follow the Readme.md instructions there. 7 | 8 | Or to build this installer for MS Windows first download (and extract) or clone this repository. 9 | Then open Command Prompt and _cd_ to _MS\_Windows\_Installer_ and follow the Readme.md instructions there. 10 | --------------------------------------------------------------------------------