File: SConscript

package info (click to toggle)
rhvoice 1.14.0-3
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 803,312 kB
  • sloc: cpp: 50,834; ansic: 6,748; python: 5,886; perl: 2,411; xml: 1,908; makefile: 304; sh: 265; lisp: 141; awk: 65
file content (96 lines) | stat: -rw-r--r-- 3,998 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# -*- coding: utf-8; mode: Python; indent-tabs-mode: t -*-

import sys
import os
import os.path
from RHVoicePackaging.archiving import archiver
if sys.platform=="win32":
	import RHVoicePackaging.nvda
	import RHVoicePackaging.windows
import RHVoiceInfoParser

Import("env")
local_env=env.Clone()

nvda_addon_build_number=".10"

def list_files(dir):
	files=[]
	for name in sorted(os.listdir(dir.abspath)):
		if name[0]==".":
			continue
		node_path=os.path.join(dir.abspath,name)
		if os.path.isfile(node_path):
			files.append(dir.File(name))
		elif os.path.isdir(node_path):
			files.extend(list_files(dir.Dir(name)))
	return files

root_dir=Dir(".").srcnode()

lang_msis=dict()
lang_files=dict()
lang_ver_ids=dict()

msi_build_number=".2"
exe_build_number=".19"

for dir_name in ["languages","voices"]:
	type=dir_name[:-1]
	dir=root_dir.Dir(dir_name)
	for subdir_name in os.listdir(dir.abspath):
		if os.path.isfile(subdir_name):
			continue
		subdir=dir.Dir(subdir_name)
		data_files=list_files(subdir)
		props=RHVoiceInfoParser.parse(subdir.File(type+".info").abspath)
		if type=="language":
			props["language"]=props["name"]
		if props["language"].lower() not in local_env["languages"]:
			continue
		if type=="language":
			lang_ver_ids[props["name"]]=str(1000*int(props["format"])+int(props["revision"]))
			lang_files[props["name"]]=data_files
		props["display_language"]=props["language"].replace("-"," ")
		props["type"]=type
		if "file_name" not in props:
			props["file_name"]=props["name"]
		version="{format}.{revision}".format(**props)
		full_version=version
		if type=="voice":
			full_version=version+"."+lang_ver_ids[props["language"]]
		name_format_string="RHVoice-voice-{language}-{file_name}" if type=="voice" else "RHVoice-language-{language}"
		name=name_format_string.format(**props)
		package_name=props.get("package_name",name)
		description_format_string=u"RHVoice {name}, {display_language} voice" if type=="voice" else "RHVoice {display_language} language pack"
		description=description_format_string.format(**props)
		if sys.platform!="win32" and not local_env["dev"]:
			for f in data_files:
				local_env.InstallData(f,os.path.relpath(f.Dir(".").abspath,root_dir.abspath))
		packagers=dict()
		pkgdir=Dir("..").Dir("packages")
		packagers["zip"]=archiver(package_name+"-v"+version,pkgdir.Dir("zip"), local_env)
		for f in data_files:
			outdir=os.path.normpath(os.path.relpath(f.Dir(".").abspath,subdir.abspath))
			packagers["zip"].add(f, outdir)
		if sys.platform=="win32":
			packagers["nvda"]=RHVoicePackaging.nvda.addon_packager(package_name,pkgdir.Dir("nvda"),local_env,package_name,description,description,full_version+nvda_addon_build_number,True)
			packagers["msi"]=RHVoicePackaging.windows.data_packager(props["msi_upgrade_code"],package_name,pkgdir.Dir("sapi"),local_env,description,version+msi_build_number)
			for f in data_files:
				packagers["nvda"].add(f,os.path.normpath(os.path.join("data",os.path.relpath(f.Dir(".").abspath,subdir.abspath))))
				packagers["msi"].add(f,os.path.normpath(os.path.join("data",type+"s",props["file_name"],os.path.relpath(f.Dir(".").abspath,subdir.abspath))))
			if type=="language":
				lang_msis[props["name"]]=packagers["msi"]
				lang_files[props["name"]]=data_files
			else:
				packagers["msi"].visible="no"
				for f in lang_files[props["language"]]:
					packagers["nvda"].add(f,os.path.normpath(os.path.join("langdata",os.path.relpath(f.Dir(".").abspath,root_dir.Dir("languages").Dir(props["language"]).abspath))))
				packagers["exe"]=RHVoicePackaging.windows.nsis_bootstrapper_packager(package_name,pkgdir.Dir("sapi"),local_env,description,full_version+exe_build_number)
				if env["enable_x64"]:
					packagers["exe"].msis.append(local_env["WindowsInstallers_core_64"])
				packagers["exe"].msis.append(local_env["WindowsInstallers_core_32"])
				packagers["exe"].msis.append(lang_msis[props["language"]])
				packagers["exe"].msis.append(packagers["msi"])
		for p in packagers.values():
			p.package()