Remove files in code
parent
1a49c4cd0b
commit
36c2ff5b86
@ -1,594 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 0_setup.py
|
|
||||||
# \brief Run all setup processes
|
|
||||||
# \date 2009-02-18 15:28GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Run all setup processes
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
|
||||||
sys.path.append("configuration")
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Setup')
|
|
||||||
parser.add_argument('--noconf', '-nc', action='store_true')
|
|
||||||
parser.add_argument('--noverify', '-nv', action='store_true')
|
|
||||||
parser.add_argument('--preset', '-p', action='store_true')
|
|
||||||
# parser.add_argument('--haltonerror', '-eh', action='store_true')
|
|
||||||
parser.add_argument('--includeproject', '-ipj', nargs='+')
|
|
||||||
parser.add_argument('--excludeproject', '-epj', nargs='+')
|
|
||||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
|
||||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if not args.includeproject == None and not args.excludeproject == None:
|
|
||||||
print "ERROR --includeproject cannot be combined with --excludeproject, exit."
|
|
||||||
exit()
|
|
||||||
|
|
||||||
if not args.includeprocess == None and not args.excludeprocess == None:
|
|
||||||
print "ERROR --includeprocess cannot be combined with --excludeprocess, exit."
|
|
||||||
exit()
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
try:
|
|
||||||
from buildsite import *
|
|
||||||
except ImportError:
|
|
||||||
printLog(log, "*** FIRST RUN ***")
|
|
||||||
if args.noconf:
|
|
||||||
printLog(log, "ERROR --noconf is invalid on first run, exit.")
|
|
||||||
exit()
|
|
||||||
from tools import *
|
|
||||||
|
|
||||||
if not args.noconf:
|
|
||||||
try:
|
|
||||||
BuildQuality
|
|
||||||
except NameError:
|
|
||||||
BuildQuality = 1
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
RemapLocalFrom
|
|
||||||
except NameError:
|
|
||||||
RemapLocalFrom = 'R:'
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
RemapLocalTo
|
|
||||||
except NameError:
|
|
||||||
RemapLocalTo = os.getenv('RC_ROOT').replace('\\', '/')
|
|
||||||
if (not RemapLocalTo) or (not ':' in RemapLocalTo):
|
|
||||||
RemapLocalTo = 'R:'
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
ToolDirectories
|
|
||||||
except NameError:
|
|
||||||
ToolDirectories = [ 'R:/distribution/nel_tools_win_x64', 'R:/distribution/ryzom_tools_win_x64' ]
|
|
||||||
try:
|
|
||||||
ToolSuffix
|
|
||||||
except NameError:
|
|
||||||
ToolSuffix = ".exe"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
ScriptDirectory
|
|
||||||
except NameError:
|
|
||||||
ScriptDirectory = "R:/code/nel/tools/build_gamedata"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
WorkspaceDirectory
|
|
||||||
except NameError:
|
|
||||||
WorkspaceDirectory = "R:/leveldesign/workspace"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
DatabaseDirectory
|
|
||||||
except NameError:
|
|
||||||
DatabaseDirectory = "R:/graphics"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
SoundDirectory
|
|
||||||
except NameError:
|
|
||||||
SoundDirectory = "R:/sound"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
SoundDfnDirectory
|
|
||||||
except NameError:
|
|
||||||
SoundDfnDirectory = "R:/sound/DFN"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
ExportBuildDirectory
|
|
||||||
except NameError:
|
|
||||||
ExportBuildDirectory = "R:/pipeline/export"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
InstallDirectory
|
|
||||||
except NameError:
|
|
||||||
InstallDirectory = "R:/pipeline/install"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
ClientDevDirectory
|
|
||||||
except NameError:
|
|
||||||
ClientDevDirectory = "R:/pipeline/client_dev"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
ClientDevLiveDirectory
|
|
||||||
except NameError:
|
|
||||||
ClientDevLiveDirectory = "R:/pipeline/client_dev_live"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
ClientPatchDirectory
|
|
||||||
except NameError:
|
|
||||||
ClientPatchDirectory = "R:/pipeline/client_patch"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
ClientInstallDirectory
|
|
||||||
except NameError:
|
|
||||||
ClientInstallDirectory = "R:/pipeline/client_install"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
ShardInstallDirectory
|
|
||||||
except NameError:
|
|
||||||
ShardInstallDirectory = "R:/pipeline/shard"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
ShardDevDirectory
|
|
||||||
except NameError:
|
|
||||||
ShardDevDirectory = "R:/pipeline/shard_dev"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
WorldEditInstallDirectory
|
|
||||||
except NameError:
|
|
||||||
WorldEditInstallDirectory = "R:/pipeline/worldedit"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
WorldEditorFilesDirectory
|
|
||||||
except NameError:
|
|
||||||
WorldEditorFilesDirectory = "R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
LeveldesignDirectory
|
|
||||||
except NameError:
|
|
||||||
LeveldesignDirectory = "R:/leveldesign"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
LeveldesignDfnDirectory
|
|
||||||
except NameError:
|
|
||||||
LeveldesignDfnDirectory = "R:/leveldesign/DFN"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
LeveldesignWorldDirectory
|
|
||||||
except NameError:
|
|
||||||
LeveldesignWorldDirectory = "R:/leveldesign/world"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
PrimitivesDirectory
|
|
||||||
except NameError:
|
|
||||||
PrimitivesDirectory = "R:/leveldesign/primitives"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
LeveldesignDataCommonDirectory
|
|
||||||
except NameError:
|
|
||||||
LeveldesignDataCommonDirectory = "R:/leveldesign/common"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
LeveldesignDataShardDirectory
|
|
||||||
except NameError:
|
|
||||||
LeveldesignDataShardDirectory = "R:/leveldesign/shard"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
TranslationDirectory
|
|
||||||
except NameError:
|
|
||||||
TranslationDirectory = "R:/leveldesign/translation"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
GamedevDirectory
|
|
||||||
except NameError:
|
|
||||||
GamedevDirectory = "R:/code/ryzom/client/data/gamedev"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
DataCommonDirectory
|
|
||||||
except NameError:
|
|
||||||
DataCommonDirectory = "R:/code/ryzom/common/data_common"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
DataShardDirectory
|
|
||||||
except NameError:
|
|
||||||
DataShardDirectory = "R:/code/ryzom/server/data_shard"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
WindowsExeDllCfgDirectories
|
|
||||||
except NameError:
|
|
||||||
# TODO: Separate 64bit and 32bit
|
|
||||||
WindowsExeDllCfgDirectories = [ '', 'R:/build/fv_x64/bin/Release', 'R:/distribution/external_x64', 'R:/code/ryzom/client', '', '', '' ]
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
LinuxServiceExecutableDirectory
|
|
||||||
except NameError:
|
|
||||||
LinuxServiceExecutableDirectory = "R:/build/server_gcc/bin"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
LinuxClientExecutableDirectory
|
|
||||||
except NameError:
|
|
||||||
LinuxClientExecutableDirectory = "R:/build/client_gcc/bin"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
PatchmanDevDirectory
|
|
||||||
except NameError:
|
|
||||||
PatchmanDevDirectory = "R:/patchman/terminal_dev"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
PatchmanCfgAdminDirectory
|
|
||||||
except NameError:
|
|
||||||
PatchmanCfgAdminDirectory = "R:/patchman/admin_install"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
PatchmanCfgDefaultDirectory
|
|
||||||
except NameError:
|
|
||||||
PatchmanCfgDefaultDirectory = "R:/patchman/default"
|
|
||||||
try:
|
|
||||||
if args.preset:
|
|
||||||
DummyUnknownName
|
|
||||||
PatchmanBridgeServerDirectory
|
|
||||||
except NameError:
|
|
||||||
PatchmanBridgeServerDirectory = "R:/pipeline/bridge_server"
|
|
||||||
try:
|
|
||||||
SignToolExecutable
|
|
||||||
except NameError:
|
|
||||||
SignToolExecutable = "C:/Program Files/Microsoft SDKs/Windows/v6.0A/Bin/signtool.exe"
|
|
||||||
try:
|
|
||||||
SignToolSha1
|
|
||||||
except NameError:
|
|
||||||
SignToolSha1 = ""
|
|
||||||
try:
|
|
||||||
SignToolTimestamp
|
|
||||||
except NameError:
|
|
||||||
SignToolTimestamp = "http://timestamp.comodoca.com/authenticode"
|
|
||||||
try:
|
|
||||||
MaxAvailable
|
|
||||||
except NameError:
|
|
||||||
MaxAvailable = 1
|
|
||||||
try:
|
|
||||||
MaxDirectory
|
|
||||||
except NameError:
|
|
||||||
MaxDirectory = "C:/Program Files (x86)/Autodesk/3ds Max 2010"
|
|
||||||
try:
|
|
||||||
MaxUserDirectory
|
|
||||||
except NameError:
|
|
||||||
import os
|
|
||||||
try:
|
|
||||||
MaxUserDirectory = os.path.normpath(os.environ["LOCALAPPDATA"] + "/Autodesk/3dsMax/2010 - 32bit/enu")
|
|
||||||
except KeyError:
|
|
||||||
MaxAvailable = 0
|
|
||||||
MaxUserDirectory = "C:/Users/Kaetemi/AppData/Local/Autodesk/3dsMax/2010 - 32bit/enu"
|
|
||||||
try:
|
|
||||||
MaxExecutable
|
|
||||||
except NameError:
|
|
||||||
MaxExecutable = "3dsmax.exe"
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Setup build site")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "This script will set up the buildsite configuration, and create needed directories.")
|
|
||||||
printLog(log, "To use the defaults, simply hit ENTER, else type in the new value.")
|
|
||||||
printLog(log, "Use -- if you need to insert an empty value.")
|
|
||||||
printLog(log, "")
|
|
||||||
BuildQuality = int(askVar(log, "Build Quality", str(BuildQuality)))
|
|
||||||
if not args.preset:
|
|
||||||
ToolDirectories[0] = askVar(log, "[IN] Primary Tool Directory", ToolDirectories[0]).replace("\\", "/")
|
|
||||||
ToolDirectories[1] = askVar(log, "[IN] Secondary Tool Directory", ToolDirectories[1]).replace("\\", "/")
|
|
||||||
ToolSuffix = askVar(log, "Tool Suffix", ToolSuffix)
|
|
||||||
ScriptDirectory = askVar(log, "[IN] Script Directory", os.getcwd().replace("\\", "/")).replace("\\", "/")
|
|
||||||
WorkspaceDirectory = askVar(log, "[IN] Workspace Directory", WorkspaceDirectory).replace("\\", "/")
|
|
||||||
DatabaseDirectory = askVar(log, "[IN] Database Directory", DatabaseDirectory).replace("\\", "/")
|
|
||||||
SoundDirectory = askVar(log, "[IN] Sound Directory", SoundDirectory).replace("\\", "/")
|
|
||||||
SoundDfnDirectory = askVar(log, "[IN] Sound DFN Directory", SoundDfnDirectory).replace("\\", "/")
|
|
||||||
ExportBuildDirectory = askVar(log, "[OUT] Export Build Directory", ExportBuildDirectory).replace("\\", "/")
|
|
||||||
InstallDirectory = askVar(log, "[OUT] Install Directory", InstallDirectory).replace("\\", "/")
|
|
||||||
ClientDevDirectory = askVar(log, "[OUT] Client Dev Directory", ClientDevDirectory).replace("\\", "/")
|
|
||||||
ClientDevLiveDirectory = askVar(log, "[OUT] Client Dev Live Directory", ClientDevLiveDirectory).replace("\\", "/")
|
|
||||||
ClientPatchDirectory = askVar(log, "[OUT] Client Patch Directory", ClientPatchDirectory).replace("\\", "/")
|
|
||||||
ClientInstallDirectory = askVar(log, "[OUT] Client Install Directory", ClientInstallDirectory).replace("\\", "/")
|
|
||||||
ShardInstallDirectory = askVar(log, "[OUT] Shard Data Install Directory", ShardInstallDirectory).replace("\\", "/")
|
|
||||||
ShardDevDirectory = askVar(log, "[OUT] Shard Dev Directory", ShardDevDirectory).replace("\\", "/")
|
|
||||||
WorldEditInstallDirectory = askVar(log, "[OUT] World Edit Data Install Directory", WorldEditInstallDirectory).replace("\\", "/")
|
|
||||||
LeveldesignDirectory = askVar(log, "[IN] Leveldesign Directory", LeveldesignDirectory).replace("\\", "/")
|
|
||||||
LeveldesignDfnDirectory = askVar(log, "[IN] Leveldesign DFN Directory", LeveldesignDfnDirectory).replace("\\", "/")
|
|
||||||
LeveldesignWorldDirectory = askVar(log, "[IN] Leveldesign World Directory", LeveldesignWorldDirectory).replace("\\", "/")
|
|
||||||
PrimitivesDirectory = askVar(log, "[IN] Primitives Directory", PrimitivesDirectory).replace("\\", "/")
|
|
||||||
GamedevDirectory = askVar(log, "[IN] Gamedev Directory", GamedevDirectory).replace("\\", "/")
|
|
||||||
DataShardDirectory = askVar(log, "[IN] Data Shard Directory", DataShardDirectory).replace("\\", "/")
|
|
||||||
DataCommonDirectory = askVar(log, "[IN] Data Common Directory", DataCommonDirectory).replace("\\", "/")
|
|
||||||
TranslationDirectory = askVar(log, "[IN] Translation Directory", TranslationDirectory).replace("\\", "/")
|
|
||||||
LeveldesignDataShardDirectory = askVar(log, "[IN] Leveldesign Data Shard Directory", LeveldesignDataShardDirectory).replace("\\", "/")
|
|
||||||
LeveldesignDataCommonDirectory = askVar(log, "[IN] Leveldesign Data Common Directory", LeveldesignDataCommonDirectory).replace("\\", "/")
|
|
||||||
WorldEditorFilesDirectory = askVar(log, "[IN] World Editor Files Directory", WorldEditorFilesDirectory).replace("\\", "/")
|
|
||||||
WindowsExeDllCfgDirectories[0] = askVar(log, "[IN] Primary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[0]).replace("\\", "/")
|
|
||||||
WindowsExeDllCfgDirectories[1] = askVar(log, "[IN] Secondary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[1]).replace("\\", "/")
|
|
||||||
WindowsExeDllCfgDirectories[2] = askVar(log, "[IN] Tertiary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[2]).replace("\\", "/")
|
|
||||||
WindowsExeDllCfgDirectories[3] = askVar(log, "[IN] Quaternary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[3]).replace("\\", "/")
|
|
||||||
WindowsExeDllCfgDirectories[4] = askVar(log, "[IN] Quinary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[4]).replace("\\", "/")
|
|
||||||
WindowsExeDllCfgDirectories[5] = askVar(log, "[IN] Senary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[5]).replace("\\", "/")
|
|
||||||
WindowsExeDllCfgDirectories[6] = askVar(log, "[IN] Septenary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[6]).replace("\\", "/")
|
|
||||||
LinuxServiceExecutableDirectory = askVar(log, "[IN] Linux Service Executable Directory", LinuxServiceExecutableDirectory).replace("\\", "/")
|
|
||||||
LinuxClientExecutableDirectory = askVar(log, "[IN] Linux Client Executable Directory", LinuxClientExecutableDirectory).replace("\\", "/")
|
|
||||||
PatchmanDevDirectory = askVar(log, "[IN] Patchman Directory", PatchmanDevDirectory).replace("\\", "/")
|
|
||||||
PatchmanCfgAdminDirectory = askVar(log, "[IN] Patchman Cfg Admin Directory", PatchmanCfgAdminDirectory).replace("\\", "/")
|
|
||||||
PatchmanCfgDefaultDirectory = askVar(log, "[IN] Patchman Cfg Default Directory", PatchmanCfgDefaultDirectory).replace("\\", "/")
|
|
||||||
PatchmanBridgeServerDirectory = askVar(log, "[OUT] Patchman Bridge Server Patch Directory", PatchmanBridgeServerDirectory).replace("\\", "/")
|
|
||||||
SignToolExecutable = askVar(log, "Sign Tool Executable", SignToolExecutable).replace("\\", "/")
|
|
||||||
SignToolSha1 = askVar(log, "Sign Tool Signature SHA1", SignToolSha1)
|
|
||||||
SignToolTimestamp = askVar(log, "Sign Tool Timestamp Authority", SignToolTimestamp)
|
|
||||||
MaxAvailable = int(askVar(log, "3dsMax Available", str(MaxAvailable)))
|
|
||||||
if MaxAvailable:
|
|
||||||
MaxDirectory = askVar(log, "3dsMax Directory", MaxDirectory).replace("\\", "/")
|
|
||||||
MaxUserDirectory = askVar(log, "3dsMax User Directory", MaxUserDirectory).replace("\\", "/")
|
|
||||||
MaxExecutable = askVar(log, "3dsMax Executable", MaxExecutable)
|
|
||||||
if os.path.isfile("configuration/buildsite.py"):
|
|
||||||
os.remove("configuration/buildsite.py")
|
|
||||||
sf = open("configuration/buildsite.py", "w")
|
|
||||||
sf.write("#!/usr/bin/python\n")
|
|
||||||
sf.write("# \n")
|
|
||||||
sf.write("# \\file site.py\n")
|
|
||||||
sf.write("# \\brief Site configuration\n")
|
|
||||||
sf.write("# \\date " + time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "\n")
|
|
||||||
sf.write("# \\author Jan Boon (Kaetemi)\n")
|
|
||||||
sf.write("# Python port of game data build pipeline.\n")
|
|
||||||
sf.write("# Site configuration.\n")
|
|
||||||
sf.write("# \n")
|
|
||||||
sf.write("# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>\n")
|
|
||||||
sf.write("# Copyright (C) 2009-2014 by authors\n")
|
|
||||||
sf.write("# \n")
|
|
||||||
sf.write("# This program is free software: you can redistribute it and/or modify\n")
|
|
||||||
sf.write("# it under the terms of the GNU Affero General Public License as\n")
|
|
||||||
sf.write("# published by the Free Software Foundation, either version 3 of the\n")
|
|
||||||
sf.write("# License, or (at your option) any later version.\n")
|
|
||||||
sf.write("# \n")
|
|
||||||
sf.write("# This program is distributed in the hope that it will be useful,\n")
|
|
||||||
sf.write("# but WITHOUT ANY WARRANTY; without even the implied warranty of\n")
|
|
||||||
sf.write("# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n")
|
|
||||||
sf.write("# GNU Affero General Public License for more details.\n")
|
|
||||||
sf.write("# \n")
|
|
||||||
sf.write("# You should have received a copy of the GNU Affero General Public License\n")
|
|
||||||
sf.write("# along with this program. If not, see <http://www.gnu.org/licenses/>.\n")
|
|
||||||
sf.write("# \n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# *** SITE INSTALLATION ***\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# Use '/' in path name, not '\'\n")
|
|
||||||
sf.write("# Don't put '/' at the end of a directory name\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# Quality option for this site (1 for BEST, 0 for DRAFT)\n")
|
|
||||||
sf.write("BuildQuality = " + str(BuildQuality) + "\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("RemapLocalFrom = \"" + str(RemapLocalFrom) + "\"\n")
|
|
||||||
sf.write("RemapLocalTo = \"" + str(RemapLocalTo) + "\"\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("ToolDirectories = " + str(ToolDirectories) + "\n")
|
|
||||||
sf.write("ToolSuffix = \"" + str(ToolSuffix) + "\"\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# Build script directory\n")
|
|
||||||
sf.write("ScriptDirectory = \"" + str(ScriptDirectory) + "\"\n")
|
|
||||||
sf.write("WorkspaceDirectory = \"" + str(WorkspaceDirectory) + "\"\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# Data build directories\n")
|
|
||||||
sf.write("DatabaseDirectory = \"" + str(DatabaseDirectory) + "\"\n")
|
|
||||||
sf.write("SoundDirectory = \"" + str(SoundDirectory) + "\"\n")
|
|
||||||
sf.write("SoundDfnDirectory = \"" + str(SoundDfnDirectory) + "\"\n")
|
|
||||||
sf.write("ExportBuildDirectory = \"" + str(ExportBuildDirectory) + "\"\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# Install directories\n")
|
|
||||||
sf.write("InstallDirectory = \"" + str(InstallDirectory) + "\"\n")
|
|
||||||
sf.write("ClientDevDirectory = \"" + str(ClientDevDirectory) + "\"\n")
|
|
||||||
sf.write("ClientDevLiveDirectory = \"" + str(ClientDevLiveDirectory) + "\"\n")
|
|
||||||
sf.write("ClientPatchDirectory = \"" + str(ClientPatchDirectory) + "\"\n")
|
|
||||||
sf.write("ClientInstallDirectory = \"" + str(ClientInstallDirectory) + "\"\n")
|
|
||||||
sf.write("ShardInstallDirectory = \"" + str(ShardInstallDirectory) + "\"\n")
|
|
||||||
sf.write("ShardDevDirectory = \"" + str(ShardDevDirectory) + "\"\n")
|
|
||||||
sf.write("WorldEditInstallDirectory = \"" + str(WorldEditInstallDirectory) + "\"\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# Utility directories\n")
|
|
||||||
sf.write("WorldEditorFilesDirectory = \"" + str(WorldEditorFilesDirectory) + "\"\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# Leveldesign directories\n")
|
|
||||||
sf.write("LeveldesignDirectory = \"" + str(LeveldesignDirectory) + "\"\n")
|
|
||||||
sf.write("LeveldesignDfnDirectory = \"" + str(LeveldesignDfnDirectory) + "\"\n")
|
|
||||||
sf.write("LeveldesignWorldDirectory = \"" + str(LeveldesignWorldDirectory) + "\"\n")
|
|
||||||
sf.write("PrimitivesDirectory = \"" + str(PrimitivesDirectory) + "\"\n")
|
|
||||||
sf.write("LeveldesignDataCommonDirectory = \"" + str(LeveldesignDataCommonDirectory) + "\"\n")
|
|
||||||
sf.write("LeveldesignDataShardDirectory = \"" + str(LeveldesignDataShardDirectory) + "\"\n")
|
|
||||||
sf.write("TranslationDirectory = \"" + str(TranslationDirectory) + "\"\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# Misc data directories\n")
|
|
||||||
sf.write("GamedevDirectory = \"" + str(GamedevDirectory) + "\"\n")
|
|
||||||
sf.write("DataCommonDirectory = \"" + str(DataCommonDirectory) + "\"\n")
|
|
||||||
sf.write("DataShardDirectory = \"" + str(DataShardDirectory) + "\"\n")
|
|
||||||
sf.write("WindowsExeDllCfgDirectories = " + str(WindowsExeDllCfgDirectories) + "\n")
|
|
||||||
sf.write("LinuxServiceExecutableDirectory = \"" + str(LinuxServiceExecutableDirectory) + "\"\n")
|
|
||||||
sf.write("LinuxClientExecutableDirectory = \"" + str(LinuxClientExecutableDirectory) + "\"\n")
|
|
||||||
sf.write("PatchmanDevDirectory = \"" + str(PatchmanDevDirectory) + "\"\n")
|
|
||||||
sf.write("PatchmanCfgAdminDirectory = \"" + str(PatchmanCfgAdminDirectory) + "\"\n")
|
|
||||||
sf.write("PatchmanCfgDefaultDirectory = \"" + str(PatchmanCfgDefaultDirectory) + "\"\n")
|
|
||||||
sf.write("PatchmanBridgeServerDirectory = \"" + str(PatchmanBridgeServerDirectory) + "\"\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# Sign tool\n")
|
|
||||||
sf.write("SignToolExecutable = \"" + str(SignToolExecutable) + "\"\n")
|
|
||||||
sf.write("SignToolSha1 = \"" + str(SignToolSha1) + "\"\n")
|
|
||||||
sf.write("SignToolTimestamp = \"" + str(SignToolTimestamp) + "\"\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# 3dsMax directives\n")
|
|
||||||
sf.write("MaxAvailable = " + str(MaxAvailable) + "\n")
|
|
||||||
sf.write("MaxDirectory = \"" + str(MaxDirectory) + "\"\n")
|
|
||||||
sf.write("MaxUserDirectory = \"" + str(MaxUserDirectory) + "\"\n")
|
|
||||||
sf.write("MaxExecutable = \"" + str(MaxExecutable) + "\"\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("\n")
|
|
||||||
sf.write("# end of file\n")
|
|
||||||
sf.flush()
|
|
||||||
sf.close()
|
|
||||||
sf = open("configuration/buildsite_local.py", "w")
|
|
||||||
sfr = open("configuration/buildsite.py", "r")
|
|
||||||
for l in sfr:
|
|
||||||
sf.write(l.replace(RemapLocalFrom + '/', RemapLocalTo + '/'))
|
|
||||||
sf.flush()
|
|
||||||
sfr.close()
|
|
||||||
sf.close()
|
|
||||||
|
|
||||||
from buildsite_local import *
|
|
||||||
|
|
||||||
sys.path.append(WorkspaceDirectory)
|
|
||||||
from projects import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Run the setup projects")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
# For each project
|
|
||||||
for projectName in ProjectsToProcess:
|
|
||||||
if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)):
|
|
||||||
printLog(log, "PROJECT " + projectName)
|
|
||||||
os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName))
|
|
||||||
os.chdir("processes")
|
|
||||||
try:
|
|
||||||
if not args.includeprocess == None:
|
|
||||||
subprocess.call([ "python", "0_setup.py", "--includeprocess" ] + args.includeprocess)
|
|
||||||
elif not args.excludeprocess == None:
|
|
||||||
subprocess.call([ "python", "0_setup.py", "--excludeprocess" ] + args.excludeprocess)
|
|
||||||
else:
|
|
||||||
subprocess.call([ "python", "0_setup.py" ])
|
|
||||||
except Exception, e:
|
|
||||||
printLog(log, "<" + projectName + "> " + str(e))
|
|
||||||
os.chdir("..")
|
|
||||||
try:
|
|
||||||
projectLog = open("processes/log.log", "r")
|
|
||||||
projectLogData = projectLog.read()
|
|
||||||
projectLog.close()
|
|
||||||
log.write(projectLogData)
|
|
||||||
except Exception, e:
|
|
||||||
printLog(log, "<" + projectName + "> " + str(e))
|
|
||||||
else:
|
|
||||||
printLog(log, "IGNORE PROJECT " + projectName)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Additional directories
|
|
||||||
printLog(log, ">>> Setup additional directories <<<")
|
|
||||||
mkPath(log, ClientDevDirectory)
|
|
||||||
mkPath(log, ClientDevLiveDirectory)
|
|
||||||
mkPath(log, ClientPatchDirectory)
|
|
||||||
mkPath(log, ClientInstallDirectory)
|
|
||||||
|
|
||||||
if not args.noverify:
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Verify tool paths")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
if MaxAvailable:
|
|
||||||
findMax(log, MaxDirectory, MaxExecutable)
|
|
||||||
findTool(log, ToolDirectories, TgaToDdsTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildInterfaceTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildSmallbankTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildFarbankTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, ZoneDependenciesTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, ZoneWelderTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, ZoneElevationTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildRbankTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildIndoorRbankTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildIgBoxesTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, GetNeighborsTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, ZoneLighterTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, ZoneIgLighterTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, IgLighterTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, AnimBuilderTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, TileEditTool, ToolSuffix)
|
|
||||||
# findTool(log, ToolDirectories, BuildImagesetTool, ToolSuffix) # kaetemi stuff, ignore this
|
|
||||||
findTool(log, ToolDirectories, MakeSheetIdTool, ToolSuffix)
|
|
||||||
# findTool(log, ToolDirectories, BuildSheetsTool, ToolSuffix) # kaetemi stuff, ignore this
|
|
||||||
# findTool(log, ToolDirectories, BuildSoundTool, ToolSuffix) # kaetemi stuff, ignore this
|
|
||||||
# findTool(log, ToolDirectories, BuildSoundTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildSoundbankTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildSamplebankTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildCoarseMeshTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, LightmapOptimizerTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildClodtexTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildShadowSkinTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, PanoplyMakerTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, HlsBankMakerTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, LandExportTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, PrimExportTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, IgElevationTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, IgAddTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildClodBankTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, SheetsPackerTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BnpMakeTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, AiBuildWmapTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, TgaCutTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, PatchGenTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, TranslationToolsTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, BuildWorldPackedColTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, R2IslandsTexturesTool, ToolSuffix)
|
|
||||||
findTool(log, ToolDirectories, PatchmanServiceTool, ToolSuffix)
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
if os.path.isfile("0_setup.log"):
|
|
||||||
os.remove("0_setup.log")
|
|
||||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_setup.log")
|
|
||||||
shutil.move("log.log", "0_setup.log")
|
|
@ -1,108 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file b1_client_dev.py
|
|
||||||
# \brief Install to client dev
|
|
||||||
# \date 2009-02-18 16:19GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Install to client dev
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util, socket
|
|
||||||
sys.path.append("configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite_local import *
|
|
||||||
from tools import *
|
|
||||||
|
|
||||||
sys.path.append(WorkspaceDirectory)
|
|
||||||
from projects import *
|
|
||||||
|
|
||||||
# Log error
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Install to client dev")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
mkPath(log, ClientDevLiveDirectory)
|
|
||||||
if not os.path.isfile(ClientDevLiveDirectory + "/client.cfg"):
|
|
||||||
printLog(log, ">>> Generate live dev client.cfg <<<")
|
|
||||||
cfg = open(ClientDevLiveDirectory + "/client.cfg", "w")
|
|
||||||
cfg.write("RootConfigFilename = \"client_default.cfg\";\n")
|
|
||||||
cfg.write("PreDataPath = {\n")
|
|
||||||
cfg.write("\t\"user\", \"patch\", \"" + DataCommonDirectory + "\", \"" + GamedevDirectory + "\", \"" + LeveldesignDirectory + "/translation/translated\", \"" + InstallDirectory + "\", \"data\", \"examples\" \n")
|
|
||||||
cfg.write("};\n")
|
|
||||||
cfg.write("PreLoadPath = \"" + InstallDirectory + "\";\n")
|
|
||||||
cfg.write("PatchWanted = 0;\n")
|
|
||||||
cfg.write("DisplayLuaDebugInfo = 1;\n")
|
|
||||||
cfg.write("AllowDebugLua = 1;\n")
|
|
||||||
cfg.write("FullScreen = 0;\n")
|
|
||||||
cfg.flush()
|
|
||||||
cfg.close()
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
mkPath(log, ClientDevDirectory)
|
|
||||||
if not os.path.isfile(ClientDevDirectory + "/client.cfg"):
|
|
||||||
printLog(log, ">>> Generate local dev client.cfg <<<")
|
|
||||||
cfg = open(ClientDevDirectory + "/client.cfg", "w")
|
|
||||||
cfgr = open(ClientDevLiveDirectory + "/client.cfg", "r")
|
|
||||||
for l in cfgr:
|
|
||||||
cfg.write(l)
|
|
||||||
cfgr.close()
|
|
||||||
cfg.write("StartupHost = \"http://" + socket.gethostname() + ":9042\";\n")
|
|
||||||
cfg.write("Application = {\n")
|
|
||||||
cfg.write(" \"dev\", \"./client_ryzom_r.exe\", \"./\" \n")
|
|
||||||
cfg.write("};\n")
|
|
||||||
cfg.flush()
|
|
||||||
cfg.close()
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
printLog(log, ">>> Install data <<<")
|
|
||||||
for category in InstallClientData:
|
|
||||||
if (category["UnpackTo"] != None):
|
|
||||||
printLog(log, "CATEGORY " + category["Name"])
|
|
||||||
targetPath = ClientDevDirectory
|
|
||||||
targetPathLive = ClientDevLiveDirectory
|
|
||||||
if (category["UnpackTo"] != ""):
|
|
||||||
targetPath += "/" + category["UnpackTo"]
|
|
||||||
targetPathLive += "/" + category["UnpackTo"]
|
|
||||||
mkPath(log, targetPath)
|
|
||||||
mkPath(log, targetPathLive)
|
|
||||||
for package in category["Packages"]:
|
|
||||||
printLog(log, "PACKAGE " + package[0])
|
|
||||||
mkPath(log, InstallDirectory + "/" + package[0])
|
|
||||||
if "exedll" in package[0]:
|
|
||||||
if package[0] == "exedll": # or package[0] == platformExeDll # TODO: 64-bit and Linux separation of exedll, only include one
|
|
||||||
copyFileIfNeeded(log, InstallDirectory + "/" + package[0] + "/client_default.cfg", targetPath)
|
|
||||||
copyFileIfNeeded(log, InstallDirectory + "/" + package[0] + "/client_default.cfg", targetPathLive)
|
|
||||||
else:
|
|
||||||
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + package[0], targetPath)
|
|
||||||
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + package[0], targetPathLive)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
if os.path.isfile("b1_client_dev.log"):
|
|
||||||
os.remove("b1_client_dev.log")
|
|
||||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_client_dev.log")
|
|
||||||
shutil.move("log.log", "b1_client_dev.log")
|
|
@ -1,123 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file c1_shard_patch.py
|
|
||||||
# \brief Create a new patch for the patchman bridge
|
|
||||||
# \date 2014-02-20 00:27GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Create a new patch for the patchman bridge
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://www.ryzomcore.org/>
|
|
||||||
# Copyright (C) 2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util, tarfile, argparse
|
|
||||||
sys.path.append("configuration")
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Shard Patch')
|
|
||||||
parser.add_argument('--admininstall', '-ai', action='store_true')
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite_local import *
|
|
||||||
from tools import *
|
|
||||||
|
|
||||||
sys.path.append(WorkspaceDirectory)
|
|
||||||
from projects import *
|
|
||||||
|
|
||||||
# Log error
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Create a new patch for the patchman bridge")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Find tools
|
|
||||||
SevenZip = findTool(log, ToolDirectories, SevenZipTool, ToolSuffix)
|
|
||||||
|
|
||||||
# List the directories that will be used
|
|
||||||
archiveDirectories = [ ]
|
|
||||||
for dir in InstallShardDataDirectories:
|
|
||||||
if not dir in archiveDirectories:
|
|
||||||
archiveDirectories += [ dir ]
|
|
||||||
for package in InstallShardDataFiles:
|
|
||||||
dstDir = package[0]
|
|
||||||
if not dstDir in archiveDirectories:
|
|
||||||
archiveDirectories += [ dstDir ]
|
|
||||||
for multiDir in InstallShardDataMultiDirectories:
|
|
||||||
dstDir = multiDir[0]
|
|
||||||
if not dstDir in archiveDirectories:
|
|
||||||
archiveDirectories += [ dstDir ]
|
|
||||||
for multiDir in InstallShardDataPrimitivesDirectories:
|
|
||||||
dstDir = multiDir[0]
|
|
||||||
if not dstDir in archiveDirectories:
|
|
||||||
archiveDirectories += [ dstDir ]
|
|
||||||
for execDir in InstallShardDataExecutables:
|
|
||||||
dstDir = execDir[0]
|
|
||||||
if not dstDir in archiveDirectories:
|
|
||||||
archiveDirectories += [ dstDir ]
|
|
||||||
|
|
||||||
printLog(log, ">>> Archive new admin_install.tgz <<<")
|
|
||||||
mkPath(log, PatchmanBridgeServerDirectory)
|
|
||||||
adminInstallTgz = PatchmanBridgeServerDirectory + "/admin_install.tgz"
|
|
||||||
patchmanExecutable = LinuxServiceExecutableDirectory + "/ryzom_patchman_service"
|
|
||||||
if needUpdateDirNoSubdirFile(log, PatchmanCfgAdminDirectory + "/bin", adminInstallTgz) or needUpdateDirNoSubdirFile(log, PatchmanCfgAdminDirectory + "/patchman", adminInstallTgz) or needUpdate(log, patchmanExecutable, adminInstallTgz):
|
|
||||||
printLog(log, "WRITE " + adminInstallTgz)
|
|
||||||
if os.path.isfile(adminInstallTgz):
|
|
||||||
os.remove(adminInstallTgz)
|
|
||||||
tar = tarfile.open(adminInstallTgz, "w:gz")
|
|
||||||
tar.add(PatchmanCfgAdminDirectory + "/bin", arcname = "bin")
|
|
||||||
tar.add(PatchmanCfgAdminDirectory + "/patchman", arcname = "patchman")
|
|
||||||
tar.add(patchmanExecutable, arcname = "patchman/ryzom_patchman_service")
|
|
||||||
tar.close()
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP " + adminInstallTgz)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
if not args.admininstall:
|
|
||||||
if SevenZip == "":
|
|
||||||
toolLogFail(log, SevenZipTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
printLog(log, ">>> Create new version <<<")
|
|
||||||
newVersion = 1
|
|
||||||
vstr = str(newVersion).zfill(6)
|
|
||||||
vpath = PatchmanBridgeServerDirectory + "/" + vstr
|
|
||||||
while os.path.exists(vpath):
|
|
||||||
newVersion = newVersion + 1
|
|
||||||
vstr = str(newVersion).zfill(6)
|
|
||||||
vpath = PatchmanBridgeServerDirectory + "/" + vstr
|
|
||||||
mkPath(log, vpath)
|
|
||||||
for dir in archiveDirectories:
|
|
||||||
mkPath(log, ShardInstallDirectory + "/" + dir)
|
|
||||||
# tgzPath = vpath + "/" + dir + ".tgz"
|
|
||||||
# printLog(log, "WRITE " + tgzPath)
|
|
||||||
# tar = tarfile.open(tgzPath, "w:gz")
|
|
||||||
# tar.add(ShardInstallDirectory + "/" + dir, arcname = dir)
|
|
||||||
# tar.close()
|
|
||||||
sevenZipPath = vpath + "/" + dir + ".7z"
|
|
||||||
printLog(log, "WRITE " + sevenZipPath)
|
|
||||||
subprocess.call([ SevenZip, "a", sevenZipPath, ShardInstallDirectory + "/" + dir ])
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
if os.path.isfile("c1_shard_patch.log"):
|
|
||||||
os.remove("c1_shard_patch.log")
|
|
||||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_shard_patch.log")
|
|
||||||
shutil.move("log.log", "c1_shard_patch.log")
|
|
@ -1,610 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file export.py
|
|
||||||
# \brief Useful scripts
|
|
||||||
# \date 2009-02-18 09:22GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Useful scripts
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util, multiprocessing, math
|
|
||||||
|
|
||||||
ActiveProjectDirectory = os.getenv("NELBUILDACTIVEPROJECT", "configuration/project")
|
|
||||||
sys.path.append(ActiveProjectDirectory)
|
|
||||||
|
|
||||||
def printLog(log, text):
|
|
||||||
log.write(text + "\n")
|
|
||||||
print text
|
|
||||||
|
|
||||||
pendingProcesses = []
|
|
||||||
processLimit = math.ceil(multiprocessing.cpu_count() * 0.75)
|
|
||||||
|
|
||||||
def callParallelProcess(command):
|
|
||||||
res = 0
|
|
||||||
if len(pendingProcesses) >= processLimit:
|
|
||||||
waitingProc = pendingProcesses.pop(0)
|
|
||||||
res = waitingProc.wait()
|
|
||||||
proc = subprocess.Popen(command)
|
|
||||||
pendingProcesses.append(proc)
|
|
||||||
return res
|
|
||||||
|
|
||||||
def flushParallelProcesses():
|
|
||||||
res = 0
|
|
||||||
while (len(pendingProcesses) > 0):
|
|
||||||
waitingProc = pendingProcesses.pop(0)
|
|
||||||
procRes = waitingProc.wait()
|
|
||||||
if procRes != 0:
|
|
||||||
res = procRes
|
|
||||||
return res
|
|
||||||
|
|
||||||
def mkPath(log, path):
|
|
||||||
printLog(log, "DIR " + path)
|
|
||||||
distutils.dir_util.mkpath(path)
|
|
||||||
|
|
||||||
def needUpdate(log, source, dest):
|
|
||||||
if (os.path.isfile(source)):
|
|
||||||
if (os.path.isfile(dest)):
|
|
||||||
if (os.stat(source).st_mtime > os.stat(dest).st_mtime):
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
return 0
|
|
||||||
return 1
|
|
||||||
printLog(log, "MISSING " + source)
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateRemoveDest(log, source, dest):
|
|
||||||
if (os.path.isfile(source)):
|
|
||||||
if (os.path.isfile(dest)):
|
|
||||||
if (os.stat(source).st_mtime > os.stat(dest).st_mtime):
|
|
||||||
os.remove(dest)
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
return 0
|
|
||||||
return 1
|
|
||||||
printLog(log, "MISSING " + source)
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateLogRemoveDest(log, source, dest):
|
|
||||||
if (os.path.isfile(source)):
|
|
||||||
if (os.path.isfile(dest)):
|
|
||||||
if (os.stat(source).st_mtime > os.stat(dest).st_mtime):
|
|
||||||
os.remove(dest)
|
|
||||||
printLog(log, source + " -> " + dest)
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP " + dest)
|
|
||||||
return 0
|
|
||||||
printLog(log, source + " -> " + dest)
|
|
||||||
return 1
|
|
||||||
printLog(log, "MISSING " + source)
|
|
||||||
printLog(log, "SKIP " + dest)
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def copyFileList(log, dir_source, dir_target, files):
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
if (os.path.isfile(dir_source + "/" + fileName)):
|
|
||||||
if needUpdateLogRemoveDest(log, dir_source + "/" + fileName, dir_target + "/" + fileName):
|
|
||||||
shutil.copy(dir_source + "/" + fileName, dir_target + "/" + fileName)
|
|
||||||
|
|
||||||
def copyFileListLogless(log, dir_source, dir_target, files):
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
if (os.path.isfile(dir_source + "/" + fileName)):
|
|
||||||
if needUpdateRemoveDest(log, dir_source + "/" + fileName, dir_target + "/" + fileName):
|
|
||||||
shutil.copy(dir_source + "/" + fileName, dir_target + "/" + fileName)
|
|
||||||
|
|
||||||
def copyFileListNoTree(log, dir_source, dir_target, files):
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
if (os.path.isfile(dir_source + "/" + fileName)):
|
|
||||||
printLog(log, dir_source + "/" + fileName + " -> " + dir_target + "/" + os.path.basename(fileName))
|
|
||||||
shutil.copy(dir_source + "/" + fileName, dir_target + "/" + os.path.basename(fileName))
|
|
||||||
|
|
||||||
def copyFileListNoTreeIfNeeded(log, dir_source, dir_target, files):
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
if (os.path.isfile(dir_source + "/" + fileName)):
|
|
||||||
srcFile = dir_source + "/" + fileName
|
|
||||||
destFile = dir_target + "/" + os.path.basename(fileName)
|
|
||||||
if needUpdateLogRemoveDest(log, srcFile, destFile):
|
|
||||||
shutil.copy(srcFile, destFile)
|
|
||||||
|
|
||||||
def removeFilesRecursive(log, dir_files):
|
|
||||||
files = os.listdir(dir_files)
|
|
||||||
for fileName in files:
|
|
||||||
if (fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*"):
|
|
||||||
if os.path.isdir(dir_files + "/" + fileName):
|
|
||||||
removeFilesRecursive(log, dir_files + "/" + fileName)
|
|
||||||
else:
|
|
||||||
printLog(log, "RM " + dir_files + "/" + fileName)
|
|
||||||
os.remove(dir_files + "/" + fileName)
|
|
||||||
|
|
||||||
def removeFilesDirsRecursive(log, dir_files):
|
|
||||||
files = os.listdir(dir_files)
|
|
||||||
for fileName in files:
|
|
||||||
if (fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*"):
|
|
||||||
if os.path.isdir(dir_files + "/" + fileName):
|
|
||||||
removeFilesRecursive(log, dir_files + "/" + fileName)
|
|
||||||
else:
|
|
||||||
printLog(log, "RM " + dir_files + "/" + fileName)
|
|
||||||
os.remove(dir_files + "/" + fileName)
|
|
||||||
printLog(log, "RMDIR " + dir_files)
|
|
||||||
os.rmdir(dir_files)
|
|
||||||
|
|
||||||
def removeFilesRecursiveExt(log, dir_files, file_ext):
|
|
||||||
files = os.listdir(dir_files)
|
|
||||||
len_file_ext = len(file_ext)
|
|
||||||
for fileName in files:
|
|
||||||
if (fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*"):
|
|
||||||
if os.path.isdir(dir_files + "/" + fileName):
|
|
||||||
removeFilesRecursiveExt(log, dir_files + "/" + fileName, file_ext)
|
|
||||||
elif (fileName[-len_file_ext:].lower() == file_ext.lower()):
|
|
||||||
printLog(log, "RM " + dir_files + "/" + fileName)
|
|
||||||
os.remove(dir_files + "/" + fileName)
|
|
||||||
|
|
||||||
def copyFilesRecursive(log, dir_source, dir_target):
|
|
||||||
files = os.listdir(dir_source)
|
|
||||||
mkPath(log, dir_target)
|
|
||||||
for fileName in files:
|
|
||||||
if (fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*"):
|
|
||||||
if os.path.isdir(dir_source + "/" + fileName):
|
|
||||||
copyFilesRecursive(log, dir_source + "/" + fileName, dir_target + "/" + fileName)
|
|
||||||
else:
|
|
||||||
printLog(log, dir_source + "/" + fileName + " -> " + dir_target + "/" + fileName)
|
|
||||||
shutil.copy(dir_source + "/" + fileName, dir_target + "/" + fileName)
|
|
||||||
|
|
||||||
def copyFiles(log, dir_source, dir_target):
|
|
||||||
copyFileList(log, dir_source, dir_target, os.listdir(dir_source))
|
|
||||||
|
|
||||||
def copyFilesLogless(log, dir_source, dir_target):
|
|
||||||
copyFileListLogless(log, dir_source, dir_target, os.listdir(dir_source))
|
|
||||||
|
|
||||||
def copyFilesExt(log, dir_source, dir_target, file_ext):
|
|
||||||
files = os.listdir(dir_source)
|
|
||||||
len_file_ext = len(file_ext)
|
|
||||||
for fileName in files:
|
|
||||||
if (fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*") and (fileName[-len_file_ext:].lower() == file_ext.lower()):
|
|
||||||
if (os.path.isfile(dir_source + "/" + fileName)):
|
|
||||||
printLog(log, dir_source + "/" + fileName + " -> " + dir_target + "/" + fileName)
|
|
||||||
shutil.copy(dir_source + "/" + fileName, dir_target + "/" + fileName)
|
|
||||||
|
|
||||||
def copyFilesRenamePrefixExt(log, dir_source, dir_target, old_prefix, new_prefix, file_ext):
|
|
||||||
files = os.listdir(dir_source)
|
|
||||||
len_file_ext = len(file_ext)
|
|
||||||
len_prefix = len(old_prefix)
|
|
||||||
for fileName in files:
|
|
||||||
if (fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*") and (fileName[-len_file_ext:].lower() == file_ext.lower()) and ((fileName[:len_prefix].lower() == old_prefix.lower())):
|
|
||||||
if (os.path.isfile(dir_source + "/" + fileName)):
|
|
||||||
printLog(log, dir_source + "/" + fileName + " -> " + dir_target + "/" + new_prefix + fileName[-(len(fileName) - len_prefix):])
|
|
||||||
shutil.copy(dir_source + "/" + fileName, dir_target + "/" + new_prefix + fileName[-(len(fileName) - len_prefix):])
|
|
||||||
|
|
||||||
def copyFilesExtNoSubdir(log, dir_source, dir_target, file_ext):
|
|
||||||
files = findFilesNoSubdir(log, dir_source, file_ext)
|
|
||||||
copyFileListNoTree(log, dir_source, dir_target, files)
|
|
||||||
|
|
||||||
def copyFilesExtNoTree(log, dir_source, dir_target, file_ext):
|
|
||||||
files = findFiles(log, dir_source, "", file_ext)
|
|
||||||
copyFileListNoTree(log, dir_source, dir_target, files)
|
|
||||||
|
|
||||||
def copyFilesExtNoTreeIfNeeded(log, dir_source, dir_target, file_ext):
|
|
||||||
files = findFiles(log, dir_source, "", file_ext)
|
|
||||||
copyFileListNoTreeIfNeeded(log, dir_source, dir_target, files)
|
|
||||||
|
|
||||||
def copyFilesExtNoSubdirIfNeeded(log, dir_source, dir_target, file_ext):
|
|
||||||
files = findFilesNoSubdir(log, dir_source, file_ext)
|
|
||||||
copyFileListNoTreeIfNeeded(log, dir_source, dir_target, files)
|
|
||||||
|
|
||||||
def copyFilesNoTreeIfNeeded(log, dir_source, dir_target):
|
|
||||||
copyFileListNoTreeIfNeeded(log, dir_source, dir_target, os.listdir(dir_source))
|
|
||||||
|
|
||||||
def copyFilesRecursiveNoTreeIfNeeded(log, dir_source, dir_target):
|
|
||||||
files = findFilesRecursive(log, dir_source, "")
|
|
||||||
copyFileListNoTreeIfNeeded(log, dir_source, dir_target, files)
|
|
||||||
|
|
||||||
def copyFileListExtReplaceNoTreeIfNeeded(log, dir_source, dir_target, files, file_ext, target_ext):
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
if (os.path.isfile(dir_source + "/" + fileName)):
|
|
||||||
srcFile = dir_source + "/" + fileName
|
|
||||||
destFile = dir_target + "/" + os.path.basename(fileName)[0:-len(file_ext)] + target_ext
|
|
||||||
if needUpdateLogRemoveDest(log, srcFile, destFile):
|
|
||||||
shutil.copy(srcFile, destFile)
|
|
||||||
|
|
||||||
def copyFilesExtReplaceNoTreeIfNeeded(log, dir_source, dir_target, file_ext, target_ext):
|
|
||||||
files = findFiles(log, dir_source, "", file_ext)
|
|
||||||
copyFileListExtReplaceNoTreeIfNeeded(log, dir_source, dir_target, files, file_ext, target_ext)
|
|
||||||
|
|
||||||
def copyFileIfNeeded(log, srcFile, destFile):
|
|
||||||
if needUpdateLogRemoveDest(log, srcFile, destFile):
|
|
||||||
shutil.copy(srcFile, destFile)
|
|
||||||
|
|
||||||
def moveFileListNoTree(log, dir_source, dir_target, files):
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
if (os.path.isfile(dir_source + "/" + fileName)):
|
|
||||||
printLog(log, "MOVE " + dir_source + "/" + fileName + " -> " + dir_target + "/" + os.path.basename(fileName))
|
|
||||||
shutil.move(dir_source + "/" + fileName, dir_target + "/" + os.path.basename(fileName))
|
|
||||||
|
|
||||||
def moveFilesExtNoTree(log, dir_source, dir_target, file_ext):
|
|
||||||
files = findFiles(log, dir_source, "", file_ext)
|
|
||||||
moveFileListNoTree(log, dir_source, dir_target, files)
|
|
||||||
|
|
||||||
def moveFilesNoSubdir(log, dir_source, dir_target):
|
|
||||||
files = os.listdir(dir_source)
|
|
||||||
moveFileListNoTree(log, dir_source, dir_target, files)
|
|
||||||
|
|
||||||
def moveDir(log, dir_source, dir_target):
|
|
||||||
printLog(log, "MOVE " + dir_source + " -> " + dir_target)
|
|
||||||
shutil.move(dir_source, dir_target)
|
|
||||||
|
|
||||||
def findFilesRecursive(log, dir_where, dir_sub):
|
|
||||||
result = [ ]
|
|
||||||
files = os.listdir(dir_where + "/" + dir_sub)
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
filePath = dir_sub + fileName
|
|
||||||
fileFull = dir_where + "/" + dir_sub + fileName
|
|
||||||
if os.path.isfile(fileFull):
|
|
||||||
result += [ filePath ]
|
|
||||||
elif os.path.isdir(fileFull):
|
|
||||||
result += findFilesRecursive(log, dir_where, filePath + "/")
|
|
||||||
else:
|
|
||||||
printLog(log, "findFilesRecursive: file not dir or file?!" + filePath)
|
|
||||||
return result
|
|
||||||
|
|
||||||
def findFiles(log, dir_where, dir_sub, file_ext):
|
|
||||||
result = [ ]
|
|
||||||
files = os.listdir(dir_where + "/" + dir_sub)
|
|
||||||
len_file_ext = len(file_ext)
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
filePath = dir_sub + fileName
|
|
||||||
fileFull = dir_where + "/" + dir_sub + fileName
|
|
||||||
if os.path.isfile(fileFull):
|
|
||||||
if fileName[-len_file_ext:].lower() == file_ext.lower():
|
|
||||||
result += [ filePath ]
|
|
||||||
elif os.path.isdir(fileFull):
|
|
||||||
result += findFiles(log, dir_where, filePath + "/", file_ext)
|
|
||||||
else:
|
|
||||||
printLog(log, "findFiles: file not dir or file?!" + filePath)
|
|
||||||
return result
|
|
||||||
|
|
||||||
def isLegalFileName(fileName):
|
|
||||||
return fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*"
|
|
||||||
|
|
||||||
def findFilesNoSubdir(log, dir_where, file_ext):
|
|
||||||
result = [ ]
|
|
||||||
files = os.listdir(dir_where)
|
|
||||||
len_file_ext = len(file_ext)
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
fileFull = dir_where + "/" + fileName
|
|
||||||
if os.path.isfile(fileFull):
|
|
||||||
if fileName[-len_file_ext:].lower() == file_ext.lower():
|
|
||||||
result += [ fileName ]
|
|
||||||
elif not os.path.isdir(fileFull):
|
|
||||||
printLog(log, "findFilesNoSubdir: file not dir or file?!" + fileFull)
|
|
||||||
return result
|
|
||||||
|
|
||||||
def findFilesNoSubdirFiltered(log, dir_where, file_ext, filter):
|
|
||||||
if len(filter) == 0:
|
|
||||||
return findFilesNoSubdir(log, dir_where, file_ext)
|
|
||||||
result = [ ]
|
|
||||||
files = os.listdir(dir_where)
|
|
||||||
len_file_ext = len(file_ext)
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
fileFull = dir_where + "/" + fileName
|
|
||||||
if os.path.isfile(fileFull):
|
|
||||||
if fileName[-len_file_ext:].lower() == file_ext.lower():
|
|
||||||
fileNameLower = fileName.lower()
|
|
||||||
for filterWord in filter:
|
|
||||||
if filterWord in fileNameLower:
|
|
||||||
result += [ fileName ]
|
|
||||||
break
|
|
||||||
elif not os.path.isdir(fileFull):
|
|
||||||
printLog(log, "findFilesNoSubdir: file not dir or file?!" + fileFull)
|
|
||||||
return result
|
|
||||||
|
|
||||||
def findFile(log, dir_where, file_name):
|
|
||||||
files = os.listdir(dir_where)
|
|
||||||
for fileName in files:
|
|
||||||
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":
|
|
||||||
filePath = dir_where + "/" + fileName
|
|
||||||
if os.path.isfile(filePath):
|
|
||||||
if fileName == file_name:
|
|
||||||
return filePath
|
|
||||||
elif os.path.isdir(filePath):
|
|
||||||
result = findFile(log, filePath, file_name)
|
|
||||||
if result != "":
|
|
||||||
return result
|
|
||||||
else:
|
|
||||||
printLog(log, "findFile: file not dir or file?! " + filePath)
|
|
||||||
return ""
|
|
||||||
|
|
||||||
def needUpdateDirByLowercaseTagLog(log, dir_source, ext_source, dir_dest, ext_dest):
|
|
||||||
updateCount = 0
|
|
||||||
skipCount = 0
|
|
||||||
lenSrcExt = len(ext_source)
|
|
||||||
sourceFiles = findFilesNoSubdir(log, dir_source, ext_source)
|
|
||||||
destFiles = findFilesNoSubdir(log, dir_dest, ext_dest)
|
|
||||||
for file in sourceFiles:
|
|
||||||
sourceFile = dir_source + "/" + file
|
|
||||||
tagFile = dir_dest + "/" + file[0:-lenSrcExt].lower() + ext_dest
|
|
||||||
if os.path.isfile(tagFile):
|
|
||||||
sourceTime = os.stat(sourceFile).st_mtime
|
|
||||||
tagTime = os.stat(tagFile).st_mtime
|
|
||||||
if (sourceTime > tagTime):
|
|
||||||
updateCount = updateCount + 1
|
|
||||||
else:
|
|
||||||
skipCount = skipCount + 1
|
|
||||||
else:
|
|
||||||
updateCount = updateCount + 1
|
|
||||||
if updateCount > 0:
|
|
||||||
printLog(log, "UPDATE " + str(updateCount) + " / " + str(len(sourceFiles)) + "; SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateDirByTagLogFiltered(log, dir_source, ext_source, dir_dest, ext_dest, filter):
|
|
||||||
updateCount = 0
|
|
||||||
skipCount = 0
|
|
||||||
lenSrcExt = len(ext_source)
|
|
||||||
sourceFiles = findFilesNoSubdirFiltered(log, dir_source, ext_source, filter)
|
|
||||||
destFiles = findFilesNoSubdir(log, dir_dest, ext_dest)
|
|
||||||
for file in sourceFiles:
|
|
||||||
sourceFile = dir_source + "/" + file
|
|
||||||
tagFile = dir_dest + "/" + file[0:-lenSrcExt] + ext_dest
|
|
||||||
if os.path.isfile(tagFile):
|
|
||||||
sourceTime = os.stat(sourceFile).st_mtime
|
|
||||||
tagTime = os.stat(tagFile).st_mtime
|
|
||||||
if (sourceTime > tagTime):
|
|
||||||
updateCount = updateCount + 1
|
|
||||||
else:
|
|
||||||
skipCount = skipCount + 1
|
|
||||||
else:
|
|
||||||
updateCount = updateCount + 1
|
|
||||||
if updateCount > 0:
|
|
||||||
printLog(log, "UPDATE " + str(updateCount) + " / " + str(len(sourceFiles)) + "; SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateDirByTagLog(log, dir_source, ext_source, dir_dest, ext_dest):
|
|
||||||
updateCount = 0
|
|
||||||
skipCount = 0
|
|
||||||
lenSrcExt = len(ext_source)
|
|
||||||
sourceFiles = findFilesNoSubdir(log, dir_source, ext_source)
|
|
||||||
destFiles = findFilesNoSubdir(log, dir_dest, ext_dest)
|
|
||||||
for file in sourceFiles:
|
|
||||||
sourceFile = dir_source + "/" + file
|
|
||||||
tagFile = dir_dest + "/" + file[0:-lenSrcExt] + ext_dest
|
|
||||||
if os.path.isfile(tagFile):
|
|
||||||
sourceTime = os.stat(sourceFile).st_mtime
|
|
||||||
tagTime = os.stat(tagFile).st_mtime
|
|
||||||
if (sourceTime > tagTime):
|
|
||||||
updateCount = updateCount + 1
|
|
||||||
else:
|
|
||||||
skipCount = skipCount + 1
|
|
||||||
else:
|
|
||||||
updateCount = updateCount + 1
|
|
||||||
if updateCount > 0:
|
|
||||||
printLog(log, "UPDATE " + str(updateCount) + " / " + str(len(sourceFiles)) + "; SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP " + str(skipCount) + " / " + str(len(sourceFiles)) + "; DEST " + str(len(destFiles)))
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateDirNoSubdirFile(log, dir_source, file_dest):
|
|
||||||
if not os.path.isfile(file_dest):
|
|
||||||
return 1
|
|
||||||
destTime = os.stat(file_dest).st_mtime
|
|
||||||
sourceFiles = os.listdir(dir_source)
|
|
||||||
for file in sourceFiles:
|
|
||||||
filePath = dir_source + "/" + file
|
|
||||||
if os.path.isfile(filePath):
|
|
||||||
fileTime = os.stat(filePath).st_mtime
|
|
||||||
if fileTime > destTime:
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateFileDirNoSubdir(log, file_source, dir_dest):
|
|
||||||
if not os.path.isfile(file_source):
|
|
||||||
printLog(log, "WARNING MISSING " + file_source)
|
|
||||||
return 0
|
|
||||||
sourceTime = os.stat(file_source).st_mtime
|
|
||||||
destFiles = os.listdir(dir_dest)
|
|
||||||
for file in destFiles:
|
|
||||||
filePath = dir_dest + "/" + file
|
|
||||||
if os.path.isfile(filePath):
|
|
||||||
fileTime = os.stat(filePath).st_mtime
|
|
||||||
if sourceTime > fileTime:
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateDirNoSubdirMultiFile(log, dir_source, root_file, files_dest):
|
|
||||||
for file_dest in files_dest:
|
|
||||||
if needUpdateDirNoSubdirFile(log, dir_source, root_file + "/" + file_dest):
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateDirNoSubdirMultiFileExt(log, dir_source, root_file, files_dest, file_ext):
|
|
||||||
for file_dest in files_dest:
|
|
||||||
if needUpdateDirNoSubdirFile(log, dir_source, root_file + "/" + file_dest + file_ext):
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateMultiDirNoSubdirFile(log, root_dir, dirs_source, file_dest):
|
|
||||||
for dir_source in dirs_source:
|
|
||||||
if needUpdateDirNoSubdirFile(log, root_dir + "/" + dir_source, file_dest):
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateMultiDirNoSubdirMultiFileExt(log, root_dir, dirs_source, root_file, files_dest, file_ext):
|
|
||||||
for file_dest in files_dest:
|
|
||||||
if needUpdateMultiDirNoSubdirFile(log, root_dir, dirs_source, root_file + "/" + file_dest + file_ext):
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateMultiDirNoSubdir(log, root_dir, dirs_source, dir_dest):
|
|
||||||
for dir_source in dirs_source:
|
|
||||||
if needUpdateDirNoSubdir(log, root_dir + "/" + dir_source, dir_dest):
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateDirNoSubdirExtFile(log, dir_source, dir_ext, file_dest):
|
|
||||||
if not os.path.isfile(file_dest):
|
|
||||||
return 1
|
|
||||||
destTime = os.stat(file_dest).st_mtime
|
|
||||||
sourceFiles = os.listdir(dir_source)
|
|
||||||
for file in sourceFiles:
|
|
||||||
if file.endswith(dir_ext):
|
|
||||||
filePath = dir_source + "/" + file
|
|
||||||
if os.path.isfile(filePath):
|
|
||||||
fileTime = os.stat(filePath).st_mtime
|
|
||||||
if fileTime > destTime:
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateDirNoSubdirExtMultiFileExt(log, dir_source, dir_ext, root_file, files_dest, file_ext):
|
|
||||||
for file_dest in files_dest:
|
|
||||||
if needUpdateDirNoSubdirExtFile(log, dir_source, dir_ext, root_file + "/" + file_dest + file_ext):
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateDirNoSubdir(log, dir_source, dir_dest):
|
|
||||||
latestSourceFile = 0
|
|
||||||
oldestDestFile = 0
|
|
||||||
sourceFiles = os.listdir(dir_source)
|
|
||||||
destFiles = os.listdir(dir_dest)
|
|
||||||
for file in sourceFiles:
|
|
||||||
filePath = dir_source + "/" + file
|
|
||||||
if os.path.isfile(filePath):
|
|
||||||
fileTime = os.stat(filePath).st_mtime
|
|
||||||
if fileTime > latestSourceFile:
|
|
||||||
latestSourceFile = fileTime
|
|
||||||
for file in destFiles:
|
|
||||||
filePath = dir_dest + "/" + file
|
|
||||||
if os.path.isfile(filePath):
|
|
||||||
fileTime = os.stat(filePath).st_mtime
|
|
||||||
if oldestDestFile == 0 or fileTime < oldestDestFile:
|
|
||||||
oldestDestFile = fileTime
|
|
||||||
if latestSourceFile > oldestDestFile:
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateDirNoSubdirLogExt(log, dir_source, ext_source, dir_dest, ext_dest):
|
|
||||||
latestSourceFile = 0
|
|
||||||
latestDestFile = 0
|
|
||||||
sourceFiles = findFilesNoSubdir(log, dir_source, ext_source)
|
|
||||||
destFiles = findFilesNoSubdir(log, dir_dest, ext_dest)
|
|
||||||
for file in sourceFiles:
|
|
||||||
fileTime = os.stat(dir_source + "/" + file).st_mtime
|
|
||||||
if (fileTime > latestSourceFile):
|
|
||||||
latestSourceFile = fileTime
|
|
||||||
for file in destFiles:
|
|
||||||
fileTime = os.stat(dir_dest + "/" + file).st_mtime
|
|
||||||
if (fileTime > latestDestFile):
|
|
||||||
latestDestFile = fileTime
|
|
||||||
if latestSourceFile > latestDestFile or len(sourceFiles) > len(destFiles):
|
|
||||||
printLog(log, "UPDATE; Source: " + str(latestSourceFile) + ", " + str(len(sourceFiles)) + " files; Dest: " + str(latestDestFile) + ", " + str(len(destFiles)) + " files")
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP *")
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def needUpdateDirNoSubdirLogExtMultidir(log, all_dir_base, all_dir_source, dir_source, ext_source, dir_dest, ext_dest):
|
|
||||||
latestSourceFile = 0
|
|
||||||
latestDestFile = 0
|
|
||||||
sourceFilesAll = [ ]
|
|
||||||
for dir in all_dir_source:
|
|
||||||
sourceFilesAll += findFilesNoSubdir(log, all_dir_base + "/" + dir, ext_source)
|
|
||||||
sourceFiles = findFilesNoSubdir(log, dir_source, ext_source)
|
|
||||||
destFiles = findFilesNoSubdir(log, dir_dest, ext_dest)
|
|
||||||
for file in sourceFiles:
|
|
||||||
fileTime = os.stat(dir_source + "/" + file).st_mtime
|
|
||||||
if (fileTime > latestSourceFile):
|
|
||||||
latestSourceFile = fileTime
|
|
||||||
for file in destFiles:
|
|
||||||
fileTime = os.stat(dir_dest + "/" + file).st_mtime
|
|
||||||
if (fileTime > latestDestFile):
|
|
||||||
latestDestFile = fileTime
|
|
||||||
if latestSourceFile > latestDestFile or len(sourceFilesAll) > len(destFiles):
|
|
||||||
printLog(log, "UPDATE; Source: " + str(latestSourceFile) + ", " + str(len(sourceFilesAll)) + " files; Dest: " + str(latestDestFile) + ", " + str(len(destFiles)) + " files")
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP *")
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def findFileMultiDir(log, dirs_where, file_name):
|
|
||||||
try:
|
|
||||||
for dir in dirs_where:
|
|
||||||
if dir != "":
|
|
||||||
file = findFile(log, dir, file_name)
|
|
||||||
if file != "":
|
|
||||||
return file
|
|
||||||
except Exception, e:
|
|
||||||
printLog(log, "EXCEPTION " + str(e))
|
|
||||||
printLog(log, "FILE NOT FOUND " + file_name)
|
|
||||||
return ""
|
|
||||||
|
|
||||||
def findTool(log, dirs_where, file_name, suffix):
|
|
||||||
try:
|
|
||||||
for dir in dirs_where:
|
|
||||||
if dir != "":
|
|
||||||
tool = findFile(log, dir, file_name + suffix)
|
|
||||||
if tool != "":
|
|
||||||
printLog(log, "TOOL " + tool)
|
|
||||||
return tool
|
|
||||||
except Exception, e:
|
|
||||||
printLog(log, "EXCEPTION " + str(e))
|
|
||||||
printLog(log, "TOOL NOT FOUND " + file_name + suffix)
|
|
||||||
return ""
|
|
||||||
|
|
||||||
def findMax(log, dir, file):
|
|
||||||
tool = dir + "/" + file
|
|
||||||
if os.path.isfile(tool):
|
|
||||||
printLog(log, "3DSMAX " + tool)
|
|
||||||
return tool
|
|
||||||
printLog(log, "3DSMAX NOT FOUND " + file)
|
|
||||||
return ""
|
|
||||||
|
|
||||||
def toolLogFail(log, tool, suffix):
|
|
||||||
printLog(log, "FAIL " + tool + suffix + " is not found")
|
|
||||||
|
|
||||||
def askVar(log, name, default):
|
|
||||||
sys.stdout.write(name + " (" + default + "): ")
|
|
||||||
line = sys.stdin.readline()
|
|
||||||
linestrip = line.strip()
|
|
||||||
if linestrip == "--":
|
|
||||||
log.write(name + " (" + default + "): ''\n")
|
|
||||||
return ""
|
|
||||||
elif linestrip == "":
|
|
||||||
log.write(name + " (" + default + "): '" + default + "'\n")
|
|
||||||
return default
|
|
||||||
else:
|
|
||||||
log.write(name + " (" + default + "): '" + linestrip + "'\n")
|
|
||||||
return linestrip
|
|
@ -1,102 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file process.py
|
|
||||||
# \brief Tools configuration
|
|
||||||
# \date 2009-03-10 11:33GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Tools configuration.
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
# *** PROCESS TIMEOUT ***
|
|
||||||
SkelExportTimeout = 600000
|
|
||||||
SwtExportTimeout = 600000
|
|
||||||
ShapeExportTimeout = 3600000
|
|
||||||
ZoneExportTimeout = 1800000
|
|
||||||
ZoneBuildDependTimeout = 1800000
|
|
||||||
ZoneBuildWeldTimeout = 60000
|
|
||||||
ZoneLightBuildTimeout = 600000
|
|
||||||
ZoneIgLightBuildTimeout = 600000
|
|
||||||
SmallbankBuildTimeout = 60000
|
|
||||||
FarbankBuildTimeout = 180000
|
|
||||||
AnimExportTimeout = 1800000
|
|
||||||
IgExportTimeout = 600000
|
|
||||||
CmbExportTimeout = 60000
|
|
||||||
RbankBuildTesselTimeout = 6000000
|
|
||||||
RbankBuildSmoothTimeout = 6000000
|
|
||||||
RbankBuildProclocalTimeout = 6000000
|
|
||||||
RbankBuildProcglobalTimeout = 18000000
|
|
||||||
RbankBuildIndoorTimeout = 18000000
|
|
||||||
# WmapBuildTimeout = 60000
|
|
||||||
LigoExportTimeout = 3600000
|
|
||||||
LigoBuildTimeout = 1800000
|
|
||||||
PacsPrimExportTimeout = 600000
|
|
||||||
|
|
||||||
MapsBuildTimeout = 60000 # 1min
|
|
||||||
MaxShapeExportTimeout = 600000 # 10min
|
|
||||||
|
|
||||||
# *** TOOLS CONFIGURATION ***
|
|
||||||
|
|
||||||
TgaToDdsTool = "tga2dds"
|
|
||||||
BuildInterfaceTool = "build_interface"
|
|
||||||
ExecTimeoutTool = "exec_timeout"
|
|
||||||
BuildSmallbankTool = "build_smallbank"
|
|
||||||
BuildFarbankTool = "build_far_bank"
|
|
||||||
ZoneDependenciesTool = "zone_dependencies"
|
|
||||||
ZoneWelderTool = "zone_welder"
|
|
||||||
ZoneElevationTool = "zone_elevation"
|
|
||||||
BuildRbankTool = "build_rbank"
|
|
||||||
BuildIndoorRbankTool = "build_indoor_rbank"
|
|
||||||
BuildIgBoxesTool = "build_ig_boxes"
|
|
||||||
GetNeighborsTool = "get_neighbors"
|
|
||||||
ZoneLighterTool = "zone_lighter"
|
|
||||||
ZoneIgLighterTool = "zone_ig_lighter"
|
|
||||||
IgLighterTool = "ig_lighter"
|
|
||||||
AnimBuilderTool = "anim_builder"
|
|
||||||
TileEditTool = "tile_edit"
|
|
||||||
# BuildImagesetTool = "th_build_imageset" # kaetemi stuff, ignore this
|
|
||||||
MakeSheetIdTool = "make_sheet_id"
|
|
||||||
# BuildSheetsTool = "th_build_sheets" # kaetemi stuff, ignore this
|
|
||||||
# BuildSoundTool = "th_build_sound" # kaetemi stuff, ignore this
|
|
||||||
# BuildSoundTool = "build_sound"
|
|
||||||
BuildSoundbankTool = "build_soundbank"
|
|
||||||
BuildSamplebankTool = "build_samplebank"
|
|
||||||
BuildCoarseMeshTool = "build_coarse_mesh"
|
|
||||||
LightmapOptimizerTool = "lightmap_optimizer"
|
|
||||||
BuildClodtexTool = "build_clodtex"
|
|
||||||
BuildShadowSkinTool = "build_shadow_skin"
|
|
||||||
PanoplyMakerTool = "panoply_maker"
|
|
||||||
HlsBankMakerTool = "hls_bank_maker"
|
|
||||||
LandExportTool = "land_export"
|
|
||||||
PrimExportTool = "prim_export"
|
|
||||||
IgElevationTool = "ig_elevation"
|
|
||||||
IgAddTool = "ig_add"
|
|
||||||
BuildClodBankTool = "build_clod_bank"
|
|
||||||
SheetsPackerTool = "sheets_packer"
|
|
||||||
SheetsPackerShardTool = "sheets_packer_shard"
|
|
||||||
BnpMakeTool = "bnp_make"
|
|
||||||
SnpMakeTool = "snp_make"
|
|
||||||
AiBuildWmapTool = "ai_build_wmap"
|
|
||||||
TgaCutTool = "tga_cut"
|
|
||||||
PatchGenTool = "patch_gen"
|
|
||||||
TranslationToolsTool = "translation_tools"
|
|
||||||
BuildWorldPackedColTool = "build_world_packed_col"
|
|
||||||
R2IslandsTexturesTool = "r2_islands_textures"
|
|
||||||
PatchmanServiceTool = "ryzom_patchman_service"
|
|
||||||
SevenZipTool = "7za"
|
|
@ -1,181 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file d1_client_patch.py
|
|
||||||
# \brief Install to client patch
|
|
||||||
# \date 2009-02-18 16:19GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Install to client patch
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
|
||||||
sys.path.append("configuration")
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Client Patch')
|
|
||||||
parser.add_argument('--bnponly', '-bo', action='store_true')
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite_local import *
|
|
||||||
from tools import *
|
|
||||||
|
|
||||||
sys.path.append(WorkspaceDirectory)
|
|
||||||
from projects import *
|
|
||||||
|
|
||||||
# Log error
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Install to client patch")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Find tools
|
|
||||||
BnpMake = findTool(log, ToolDirectories, BnpMakeTool, ToolSuffix)
|
|
||||||
SnpMake = findTool(log, ToolDirectories, SnpMakeTool, ToolSuffix);
|
|
||||||
PatchGen = findTool(log, ToolDirectories, PatchGenTool, ToolSuffix)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Find **** HARDCODED **** WINDOWS **** tools ... TODO: fix patch_gen tool !!!
|
|
||||||
Lzma = findFileMultiDir(log, ToolDirectories + WindowsExeDllCfgDirectories, "lzma.exe")
|
|
||||||
printLog(log, "LZMA " + Lzma)
|
|
||||||
XDelta = findFileMultiDir(log, ToolDirectories + WindowsExeDllCfgDirectories, "xdelta.exe")
|
|
||||||
printLog(log, "XDELTA " + XDelta)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
if BnpMake == "":
|
|
||||||
toolLogFail(log, BnpMakeTool, ToolSuffix)
|
|
||||||
elif PatchGen == "" and not args.bnponly:
|
|
||||||
toolLogFail(log, PatchGenTool, ToolSuffix)
|
|
||||||
elif Lzma == "" and not args.bnponly:
|
|
||||||
toolLogFail(log, "LZMA", ToolSuffix)
|
|
||||||
elif XDelta == "" and not args.bnponly:
|
|
||||||
toolLogFail(log, "XDELTA", ToolSuffix)
|
|
||||||
elif os.path.dirname(Lzma) != os.path.dirname(XDelta):
|
|
||||||
printLog(log, "FAIL lzma.exe and xdelta.exe must be in the same directory")
|
|
||||||
else:
|
|
||||||
mkPath(log, ClientPatchDirectory)
|
|
||||||
if not args.bnponly:
|
|
||||||
productXml = ClientPatchDirectory + "/" + ProductName + ".xml"
|
|
||||||
if not os.path.isfile(productXml):
|
|
||||||
printLog(log, ">>> Create new product <<<")
|
|
||||||
subprocess.call([ PatchGen, "createNewProduct", productXml ])
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, ">>> Rewrite " + ProductName + ".xml <<<") # because we know better.
|
|
||||||
shutil.move(productXml, productXml + ".old")
|
|
||||||
oldCfg = open(productXml + ".old", "r")
|
|
||||||
cfg = open(productXml, "w")
|
|
||||||
inCategories = 0
|
|
||||||
for line in oldCfg:
|
|
||||||
if not inCategories:
|
|
||||||
if line.strip() == "<_Categories>":
|
|
||||||
inCategories = 1
|
|
||||||
cfg.write("\t<_Categories>\n")
|
|
||||||
for category in InstallClientData:
|
|
||||||
packExt = ".bnp"
|
|
||||||
if (category["StreamedPackages"]):
|
|
||||||
packExt = ".snp"
|
|
||||||
cfg.write("\t\t<_Category>\n")
|
|
||||||
cfg.write("\t\t\t<_Name type=\"STRING\" value=\"" + category["Name"] + "\"/>\n")
|
|
||||||
if category["UnpackTo"] != None:
|
|
||||||
if category["UnpackTo"] != "":
|
|
||||||
cfg.write("\t\t\t<_UnpackTo type=\"STRING\" value=\"./" + category["UnpackTo"] + "/\"/>\n")
|
|
||||||
else:
|
|
||||||
cfg.write("\t\t\t<_UnpackTo type=\"STRING\" value=\"./\"/>\n")
|
|
||||||
cfg.write("\t\t\t<_IsOptional type=\"SINT32\" value=\"" + str(category["IsOptional"]) + "\"/>\n")
|
|
||||||
cfg.write("\t\t\t<_IsIncremental type=\"SINT32\" value=\"" + str(category["IsIncremental"]) + "\"/>\n")
|
|
||||||
for package in category["Packages"]:
|
|
||||||
if (len(package[1]) > 0):
|
|
||||||
cfg.write("\t\t\t<_Files type=\"STRING\" value=\"" + package[1][0] + "\"/>\n")
|
|
||||||
else:
|
|
||||||
cfg.write("\t\t\t<_Files type=\"STRING\" value=\"" + package[0] + packExt + "\"/>\n")
|
|
||||||
for ref in category["Refs"]:
|
|
||||||
cfg.write("\t\t\t<_Files type=\"STRING\" value=\"" + ref + "_.ref\"/>\n")
|
|
||||||
cfg.write("\t\t</_Category>\n")
|
|
||||||
cfg.write("\t</_Categories>\n")
|
|
||||||
else:
|
|
||||||
cfg.write(line)
|
|
||||||
else:
|
|
||||||
if line.strip() == "</_Categories>":
|
|
||||||
inCategories = 0
|
|
||||||
oldCfg.close()
|
|
||||||
cfg.close()
|
|
||||||
os.remove(productXml + ".old")
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, ">>> Make bnp <<<")
|
|
||||||
targetPath = ClientPatchDirectory + "/bnp"
|
|
||||||
tagPath = ClientPatchDirectory + "/bnp_tag"
|
|
||||||
mkPath(log, targetPath)
|
|
||||||
mkPath(log, tagPath)
|
|
||||||
for category in InstallClientData:
|
|
||||||
packExt = ".bnp"
|
|
||||||
if (category["StreamedPackages"]):
|
|
||||||
packExt = ".snp"
|
|
||||||
for package in category["Packages"]:
|
|
||||||
printLog(log, "PACKAGE " + package[0])
|
|
||||||
sourcePath = InstallDirectory + "/" + package[0]
|
|
||||||
mkPath(log, sourcePath)
|
|
||||||
targetBnp = targetPath + "/" + package[0] + packExt
|
|
||||||
tagBnp = tagPath + "/" + package[0] + packExt + ".tag"
|
|
||||||
if (len(package[1]) > 0):
|
|
||||||
targetBnp = targetPath + "/" + package[1][0]
|
|
||||||
tagBnp = tagPath + "/" + package[1][0] + ".tag"
|
|
||||||
printLog(log, "TARGET " + package[1][0])
|
|
||||||
needUpdateBnp = 1
|
|
||||||
if (len(package) > 2):
|
|
||||||
needUpdateBnp = needUpdate(log, sourcePath + "/" + package[2], tagBnp)
|
|
||||||
else:
|
|
||||||
needUpdateBnp = needUpdateDirNoSubdirFile(log, sourcePath, tagBnp)
|
|
||||||
if (needUpdateBnp):
|
|
||||||
subRet = 0
|
|
||||||
open(tagBnp, 'a').close()
|
|
||||||
os.utime(tagBnp, None)
|
|
||||||
if (category["StreamedPackages"]):
|
|
||||||
printLog(log, "SNP " + targetBnp)
|
|
||||||
# cwDir = os.getcwd().replace("\\", "/")
|
|
||||||
# toolDir = os.path.dirname(Lzma).replace("\\", "/")
|
|
||||||
# os.chdir(toolDir)
|
|
||||||
subRet = subprocess.call([ SnpMake, "-p", sourcePath, targetBnp, ClientPatchDirectory + "/stream" ] + package[1][1:])
|
|
||||||
# os.chdir(cwDir)
|
|
||||||
else:
|
|
||||||
printLog(log, "BNP " + targetBnp)
|
|
||||||
subRet = subprocess.call([ BnpMake, "-p", sourcePath, "-o", targetBnp ] + package[1][1:])
|
|
||||||
if (subRet != 0):
|
|
||||||
os.remove(tagBnp)
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP " + targetBnp)
|
|
||||||
printLog(log, "")
|
|
||||||
if not args.bnponly:
|
|
||||||
printLog(log, ">>> Update product <<<")
|
|
||||||
cwDir = os.getcwd().replace("\\", "/")
|
|
||||||
toolDir = os.path.dirname(Lzma).replace("\\", "/")
|
|
||||||
os.chdir(toolDir)
|
|
||||||
subprocess.call([ PatchGen, "updateProduct", productXml ])
|
|
||||||
os.chdir(cwDir)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
if os.path.isfile("d1_client_patch.log"):
|
|
||||||
os.remove("d1_client_patch.log")
|
|
||||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_client_patch.log")
|
|
||||||
shutil.move("log.log", "d1_client_patch.log")
|
|
@ -1,97 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 2_build.py
|
|
||||||
# \brief Build ai_wmap
|
|
||||||
# \date 2010-05-24 13:42GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Build ai_wmap
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../../configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from process import *
|
|
||||||
from tools import *
|
|
||||||
from directories import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Build ai_wmap")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Find tools
|
|
||||||
AiBuildWmap = findTool(log, ToolDirectories, AiBuildWmapTool, ToolSuffix)
|
|
||||||
TgaCut = findTool(log, ToolDirectories, TgaCutTool, ToolSuffix)
|
|
||||||
|
|
||||||
if AiBuildWmap == "":
|
|
||||||
toolLogFail(log, AiBuildWmapTool, ToolSuffix)
|
|
||||||
if TgaCut == "":
|
|
||||||
toolLogFail(log, TgaCutTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
printLog(log, ">>> Copy ai_build_wmap.cfg <<<")
|
|
||||||
cfgPath = ActiveProjectDirectory + "/generated/ai_build_wmap.cfg"
|
|
||||||
tagPath = ExportBuildDirectory + "/" + AiWmapBuildTagDirectory + "/ai_wmap_build.tag"
|
|
||||||
shutil.copy(cfgPath, "ai_build_wmap.cfg")
|
|
||||||
printLog(log, ">>> Check up packed sheets <<<")
|
|
||||||
subprocess.call([ AiBuildWmap, "checkPackedSheets" ])
|
|
||||||
printLog(log, ">>> Build ai_wmap <<<")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + RbankOutputBuildDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + AiWmapBuildDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + AiWmapBuildTagDirectory)
|
|
||||||
if (needUpdate(log, "continents.packed_sheets", tagPath) or needUpdateMultiDirNoSubdirFile(log, ExportBuildDirectory, [ RbankOutputBuildDirectory ] + IgLookupDirectories + PacsPrimLookupDirectories, tagPath)):
|
|
||||||
printLog(log, ">>> Generate wmap <<<")
|
|
||||||
subprocess.call([ AiBuildWmap, "pacsCrunch " + AiWmapContinentName ])
|
|
||||||
printLog(log, ">>> Generate sized wmap <<<")
|
|
||||||
subprocess.call([ AiBuildWmap, "pacsBuildGabarit " + AiWmapContinentName ])
|
|
||||||
printLog(log, ">>> Generate cwmaps for each size <<<")
|
|
||||||
callParallelProcess([ AiBuildWmap, "pacsBuildWmap " + AiWmapContinentName + "_0" ])
|
|
||||||
callParallelProcess([ AiBuildWmap, "pacsBuildWmap " + AiWmapContinentName + "_1" ])
|
|
||||||
callParallelProcess([ AiBuildWmap, "pacsBuildWmap " + AiWmapContinentName + "_2" ])
|
|
||||||
flushParallelProcesses()
|
|
||||||
printLog(log, ">>> Generate bitmap for each size <<<")
|
|
||||||
callParallelProcess([ AiBuildWmap, "pacsBuildBitmap " + AiWmapContinentName + "_0" ])
|
|
||||||
callParallelProcess([ AiBuildWmap, "pacsBuildBitmap " + AiWmapContinentName + "_1" ])
|
|
||||||
callParallelProcess([ AiBuildWmap, "pacsBuildBitmap " + AiWmapContinentName + "_2" ])
|
|
||||||
flushParallelProcesses()
|
|
||||||
printLog(log, ">>> Clear height maps for size 1 and 2 <<<")
|
|
||||||
subprocess.call([ AiBuildWmap, "pacsClearHeightmap " + AiWmapContinentName ])
|
|
||||||
printLog(log, ">>> Cut tga for world editor <<<")
|
|
||||||
subprocess.call([ TgaCut, ExportBuildDirectory + "/" + AiWmapBuildDirectory + "/" + AiWmapContinentName + "_0.tga" ])
|
|
||||||
moveFilesExtNoTree(log, ".", ExportBuildDirectory + "/" + AiWmapBuildDirectory, ".tga")
|
|
||||||
printLog(log, ">>> Remove wmap <<<")
|
|
||||||
removeFilesRecursiveExt(log, ExportBuildDirectory + "/" + AiWmapBuildDirectory, ".wmap")
|
|
||||||
tagFile = open(tagPath, "w")
|
|
||||||
tagFile.write(time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())) + "\n")
|
|
||||||
tagFile.close()
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP *")
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
|
@ -1,120 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 0_setup.py
|
|
||||||
# \brief setup cartographer
|
|
||||||
# \date 2014-09-13 13:32GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Setup cartographer
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2014 Jan BOON
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../../configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from process import *
|
|
||||||
from tools import *
|
|
||||||
from directories import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Setup cartographer")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Setup build directories
|
|
||||||
printLog(log, ">>> Setup build directories <<<")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + CartographerBuildDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + CartographerMapBuildDirectory)
|
|
||||||
|
|
||||||
# Setup lookup directories
|
|
||||||
printLog(log, ">>> Setup lookup directories <<<")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + AiWmapBuildDirectory) # IN
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneLightBuildDirectory) # IN (.zonel)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneLightIgLandBuildDirectory) # IN (.ig)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + SmallbankExportDirectory) # IN
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + FarbankBuildDirectory) # IN
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + DisplaceExportDirectory) # IN
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + TilesExportDirectory) # IN
|
|
||||||
mkPath(log, LeveldesignDataCommonDirectory) # IN
|
|
||||||
mkPath(log, LeveldesignDfnDirectory) # IN
|
|
||||||
mkPath(log, LeveldesignDirectory) # IN
|
|
||||||
for dir in PropertiesExportBuildSearchPaths:
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + dir)
|
|
||||||
|
|
||||||
# Setup client directories
|
|
||||||
printLog(log, ">>> Setup install directories <<<")
|
|
||||||
mkPath(log, InstallDirectory + "/" + CartographerInstallDirectory)
|
|
||||||
mkPath(log, InstallDirectory + "/" + IslandsInstallDirectory)
|
|
||||||
|
|
||||||
# Setup client directories
|
|
||||||
printLog(log, ">>> Setup configuration <<<")
|
|
||||||
mkPath(log, ActiveProjectDirectory + "/generated")
|
|
||||||
cfg = open(ActiveProjectDirectory + "/generated/island_screenshots.cfg", "w")
|
|
||||||
cfg.write("\n")
|
|
||||||
cfg.write("// BUILD CARTOGRAPHER CONFIGURATION\n")
|
|
||||||
cfg.write("\n")
|
|
||||||
cfg.write("SearchPaths = {\n")
|
|
||||||
cfg.write("\t\"" + ExportBuildDirectory + "/" + AiWmapBuildDirectory + "\", \n")
|
|
||||||
cfg.write("\t\"" + ExportBuildDirectory + "/" + ZoneLightBuildDirectory + "\", \n")
|
|
||||||
cfg.write("\t\"" + ExportBuildDirectory + "/" + ZoneLightIgLandBuildDirectory + "\", \n")
|
|
||||||
cfg.write("\t\"" + ExportBuildDirectory + "/" + SmallbankExportDirectory + "\", \n")
|
|
||||||
cfg.write("\t\"" + ExportBuildDirectory + "/" + FarbankBuildDirectory + "\", \n")
|
|
||||||
cfg.write("\t\"" + ExportBuildDirectory + "/" + DisplaceExportDirectory + "\", \n")
|
|
||||||
cfg.write("\t\"" + ExportBuildDirectory + "/" + TilesExportDirectory + "\", \n")
|
|
||||||
cfg.write("\t\"" + LeveldesignDataCommonDirectory + "\", \n")
|
|
||||||
cfg.write("\t\"" + LeveldesignDfnDirectory + "\", \n")
|
|
||||||
cfg.write("\t\"" + LeveldesignDirectory + "\", \n")
|
|
||||||
for dir in PropertiesExportBuildSearchPaths:
|
|
||||||
cfg.write("\t\"" + ExportBuildDirectory + "/" + dir + "\", \n")
|
|
||||||
cfg.write("};\n")
|
|
||||||
cfg.write("\n")
|
|
||||||
cfg.write("OutDir = \"" + ExportBuildDirectory + "/" + CartographerBuildDirectory + "\";\n")
|
|
||||||
cfg.write("\n")
|
|
||||||
cfg.write("Continents = {\n")
|
|
||||||
cfg.write("\t\"" + CartographerContinent + "\", \n")
|
|
||||||
cfg.write("};\n")
|
|
||||||
cfg.write("\n")
|
|
||||||
cfg.write("SeasonSuffixes = {\n")
|
|
||||||
if CartographerSeasonSuffixes:
|
|
||||||
for suffix in CartographerSeasonSuffixes:
|
|
||||||
cfg.write("\t\"" + suffix + "\", \n")
|
|
||||||
else:
|
|
||||||
for suffix in MultipleTilesPostfix:
|
|
||||||
cfg.write("\t\"" + suffix + "\", \n")
|
|
||||||
cfg.write("};\n")
|
|
||||||
cfg.write("\n")
|
|
||||||
cfg.write("InverseZTest = true;\n")
|
|
||||||
cfg.write("Vegetation = true;\n")
|
|
||||||
cfg.write("MeterPixelSize = 2;\n")
|
|
||||||
cfg.write("\n")
|
|
||||||
cfg.write("CompleteIslandsFile = \"" + ExportBuildDirectory + "/" + CartographerBuildDirectory + "/" + IslandsXmlFile + "\";\n")
|
|
||||||
cfg.write("EntryPointsFile = \"r2_entry_points.txt\";\n")
|
|
||||||
cfg.write("\n")
|
|
||||||
cfg.close()
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
|
@ -1,63 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 1_export.py
|
|
||||||
# \brief Export font
|
|
||||||
# \date 2009-03-10-19-43-GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Export font
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../../configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from process import *
|
|
||||||
from tools import *
|
|
||||||
from directories import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Export font")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
printLog(log, ">>> Export font <<<")
|
|
||||||
fontExportDir = ExportBuildDirectory + "/" + FontExportDirectory
|
|
||||||
mkPath(log, fontExportDir)
|
|
||||||
for dir in FontSourceDirectories:
|
|
||||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, fontExportDir, ".ttf")
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, fontExportDir, ".otf")
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, fontExportDir, ".afm")
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, fontExportDir, ".pfb")
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, fontExportDir, ".pfm")
|
|
||||||
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
|
@ -1,62 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 3_install.py
|
|
||||||
# \brief Install font
|
|
||||||
# \date 2009-03-10-19-43-GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Install font
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../../configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite_local import *
|
|
||||||
from process import *
|
|
||||||
from tools import *
|
|
||||||
from directories import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Install font")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
installPath = InstallDirectory + "/" + FontInstallDirectory
|
|
||||||
mkPath(log, installPath)
|
|
||||||
fontExportDir = ExportBuildDirectory + "/" + FontExportDirectory
|
|
||||||
mkPath(log, fontExportDir)
|
|
||||||
|
|
||||||
printLog(log, ">>> Install font <<<")
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, fontExportDir, installPath, ".ttf")
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, fontExportDir, installPath, ".otf")
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, fontExportDir, installPath, ".afm")
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, fontExportDir, installPath, ".pfb")
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, fontExportDir, installPath, ".pfm")
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
log.close()
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
|
@ -1,275 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 2_build.py
|
|
||||||
# \brief Build ig
|
|
||||||
# \date 2010-05-24 13:42GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Build ig
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../../configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from process import *
|
|
||||||
from tools import *
|
|
||||||
from directories import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Build ig")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Find tools
|
|
||||||
ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
|
|
||||||
PrimExport = findTool(log, ToolDirectories, PrimExportTool , ToolSuffix)
|
|
||||||
IgElevation = findTool(log, ToolDirectories, IgElevationTool, ToolSuffix)
|
|
||||||
IgAdd = findTool(log, ToolDirectories, IgAddTool, ToolSuffix)
|
|
||||||
|
|
||||||
configDir = ActiveProjectDirectory + "/generated"
|
|
||||||
mkPath(log, configDir)
|
|
||||||
|
|
||||||
def igElevation(inputIgDir, outputIgDir):
|
|
||||||
printLog(log, ">>> IG Elevation <<<")
|
|
||||||
mkPath(log, inputIgDir)
|
|
||||||
mkPath(log, outputIgDir)
|
|
||||||
needUpdateIg = needUpdateDirByTagLog(log, inputIgDir, ".ig", outputIgDir, ".ig")
|
|
||||||
if needUpdateIg:
|
|
||||||
printLog(log, "DETECT UPDATE IG->Elevated")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP IG->Elevated")
|
|
||||||
needUpdateHeightMap = needUpdateFileDirNoSubdir(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportHeightmap1, outputIgDir) or needUpdateFileDirNoSubdir(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportHeightmap2, outputIgDir)
|
|
||||||
if needUpdateHeightMap:
|
|
||||||
printLog(log, "DETECT UPDATE HeightMap->Elevated")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP HeightMap->Elevated")
|
|
||||||
needUpdateLand = needUpdateFileDirNoSubdir(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportLand, outputIgDir)
|
|
||||||
if needUpdateLand:
|
|
||||||
printLog(log, "DETECT UPDATE Land->Elevated")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Land->Elevated")
|
|
||||||
if needUpdateIg or needUpdateHeightMap or needUpdateLand:
|
|
||||||
printLog(log, "DETECT DECIDE UPDATE")
|
|
||||||
mkPath(log, inputIgDir)
|
|
||||||
mkPath(log, outputIgDir)
|
|
||||||
mkPath(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory)
|
|
||||||
|
|
||||||
configFile = configDir + "/ig_elevation.cfg"
|
|
||||||
if os.path.isfile(configFile):
|
|
||||||
os.remove(configFile)
|
|
||||||
|
|
||||||
printLog(log, "CONFIG " + configFile)
|
|
||||||
cf = open(configFile, "w")
|
|
||||||
cf.write("// ig_elevation.cfg\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("InputIGDir = \"" + inputIgDir + "\";\n")
|
|
||||||
cf.write("OutputIGDir = \"" + outputIgDir + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("CellSize = 160.0;")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("HeightMapFile1 = \"" + DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportHeightmap1 + "\";\n")
|
|
||||||
cf.write("ZFactor1 = " + LigoExportZFactor1 + ";\n")
|
|
||||||
cf.write("HeightMapFile2 = \"" + DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportHeightmap2 + "\";\n")
|
|
||||||
cf.write("ZFactor2 = " + LigoExportZFactor2 + ";\n")
|
|
||||||
cf.write("ExtendCoords = " + str(LigoExportExtendCoords) + ";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("LandFile = \"" + DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportLand + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.close()
|
|
||||||
subprocess.call([ IgElevation, configFile ])
|
|
||||||
os.remove(configFile)
|
|
||||||
|
|
||||||
# Copy remaining IG files
|
|
||||||
#BUG:copyFilesLogless(log, inputIgDir, outputIgDir)
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT DECIDE SKIP")
|
|
||||||
printLog(log, "SKIP *")
|
|
||||||
|
|
||||||
# Build process
|
|
||||||
if (ContinentLeveldesignWorldDirectory != "") or (len(IgOtherSourceDirectories) > 0):
|
|
||||||
printLog(log, ">>> Prim IG: ON <<<")
|
|
||||||
configFile = configDir + "/prim_export.cfg"
|
|
||||||
if os.path.isfile(configFile):
|
|
||||||
os.remove(configFile)
|
|
||||||
|
|
||||||
outIgDir = ExportBuildDirectory + "/" + IgElevLandPrimBuildDirectory
|
|
||||||
mkPath(log, outIgDir)
|
|
||||||
zoneWDir = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory
|
|
||||||
mkPath(log, zoneWDir)
|
|
||||||
smallBank = DatabaseDirectory + "/" + TileRootSourceDirectory + "/" + BankTileBankName + ".bank"
|
|
||||||
farBank = ExportBuildDirectory + "/" + FarbankBuildDirectory + "/" + BankTileBankName + MultipleTilesPostfix[0] + ".farbank"
|
|
||||||
displaceDir = DatabaseDirectory + "/" + DisplaceSourceDirectory
|
|
||||||
continentDir = LeveldesignWorldDirectory + "/" + ContinentLeveldesignWorldDirectory
|
|
||||||
mkPath(log, continentDir)
|
|
||||||
formDir = LeveldesignDirectory
|
|
||||||
mkPath(log, LeveldesignDirectory)
|
|
||||||
worldEditorFiles = WorldEditorFilesDirectory
|
|
||||||
mkPath(log, WorldEditorFilesDirectory)
|
|
||||||
|
|
||||||
printLog(log, "CONFIG " + configFile)
|
|
||||||
cf = open(configFile, "w")
|
|
||||||
cf.write("// prim_export.cfg\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("OutIGDir = \"" + outIgDir + "\";\n")
|
|
||||||
cf.write("ZoneWDir = \"" + zoneWDir + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("SmallBank = \"" + smallBank + "\";\n")
|
|
||||||
cf.write("FarBank = \"" + farBank + "\";\n")
|
|
||||||
cf.write("DisplaceDir = \"" + displaceDir + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("CellSize = 160.0;")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("PrimDirs = {\n")
|
|
||||||
cf.write("\t\"" + continentDir + "\", \n")
|
|
||||||
for dir in IgPrimitiveSourceDirectories:
|
|
||||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
|
||||||
cf.write("\t\"" + DatabaseDirectory + "/" + dir + "\", \n")
|
|
||||||
cf.write("};\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("FormDir = \"" + formDir + "\";\n")
|
|
||||||
cf.write("WorldEditorFiles = \"" + worldEditorFiles + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.close()
|
|
||||||
subprocess.call([ PrimExport, configFile ])
|
|
||||||
os.remove(configFile)
|
|
||||||
|
|
||||||
igElevation(ExportBuildDirectory + "/" + LigoIgLandBuildDirectory, ExportBuildDirectory + "/" + IgElevLandLigoBuildDirectory)
|
|
||||||
|
|
||||||
igElevation(ExportBuildDirectory + "/" + IgStaticLandExportDirectory, ExportBuildDirectory + "/" + IgElevLandStaticBuildDirectory)
|
|
||||||
|
|
||||||
printLog(log, ">>> Merge land IGs <<<")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory)
|
|
||||||
removeFilesRecursive(log, ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory)
|
|
||||||
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgLandBuildDirectory)
|
|
||||||
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgElevLandPrimBuildDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgElevLandLigoBuildDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgElevLandStaticBuildDirectory)
|
|
||||||
igFilesPrim = findFiles(log, ExportBuildDirectory + "/" + IgElevLandPrimBuildDirectory, "", ".ig")
|
|
||||||
igFilesLigo = findFiles(log, ExportBuildDirectory + "/" + IgElevLandLigoBuildDirectory, "", ".ig")
|
|
||||||
igFilesStatic = findFiles(log, ExportBuildDirectory + "/" + IgElevLandStaticBuildDirectory, "", ".ig")
|
|
||||||
igFilesAll = [ ]
|
|
||||||
for igFile in igFilesPrim:
|
|
||||||
if not igFile in igFilesAll:
|
|
||||||
igFilesAll += [ igFile ]
|
|
||||||
for igFile in igFilesLigo:
|
|
||||||
if not igFile in igFilesAll:
|
|
||||||
igFilesAll += [ igFile ]
|
|
||||||
for igFile in igFilesStatic:
|
|
||||||
if not igFile in igFilesAll:
|
|
||||||
igFilesAll += [ igFile ]
|
|
||||||
igFilesAll.sort()
|
|
||||||
for igFile in igFilesAll:
|
|
||||||
primIgFile = ExportBuildDirectory + "/" + IgElevLandPrimBuildDirectory + "/" + igFile
|
|
||||||
ligoIgFile = ExportBuildDirectory + "/" + IgElevLandLigoBuildDirectory + "/" + igFile
|
|
||||||
staticIgFile = ExportBuildDirectory + "/" + IgElevLandStaticBuildDirectory + "/" + igFile
|
|
||||||
tempIgFile = ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory + "/" + igFile
|
|
||||||
outIgFile = ExportBuildDirectory + "/" + IgLandBuildDirectory + "/" + igFile
|
|
||||||
activeFile = ""
|
|
||||||
needsUpdate = 0
|
|
||||||
sourceTools = ""
|
|
||||||
if igFile in igFilesPrim:
|
|
||||||
if needUpdate(log, primIgFile, outIgFile):
|
|
||||||
needsUpdate = 1
|
|
||||||
if not needsUpdate == 1 and igFile in igFilesLigo:
|
|
||||||
if needUpdate(log, ligoIgFile, outIgFile):
|
|
||||||
needsUpdate = 1
|
|
||||||
if not needsUpdate == 1 and igFile in igFilesStatic:
|
|
||||||
if needUpdate(log, staticIgFile, outIgFile):
|
|
||||||
needsUpdate = 1
|
|
||||||
if needsUpdate == 1:
|
|
||||||
if os.path.isfile(outIgFile):
|
|
||||||
os.remove(outIgFile)
|
|
||||||
if igFile in igFilesPrim:
|
|
||||||
sourceTools += " [Prim]"
|
|
||||||
activeFile = primIgFile
|
|
||||||
if igFile in igFilesLigo:
|
|
||||||
if activeFile == "":
|
|
||||||
activeFile = ligoIgFile
|
|
||||||
else:
|
|
||||||
sourceTools += " [Ligo]"
|
|
||||||
subprocess.call([ IgAdd, tempIgFile, ligoIgFile, activeFile ])
|
|
||||||
activeFile = tempIgFile
|
|
||||||
if igFile in igFilesStatic:
|
|
||||||
if activeFile == "":
|
|
||||||
activeFile = staticIgFile
|
|
||||||
else:
|
|
||||||
sourceTools += " [Static]"
|
|
||||||
subprocess.call([ IgAdd, outIgFile, staticIgFile, activeFile ])
|
|
||||||
activeFile = outIgFile
|
|
||||||
else:
|
|
||||||
shutil.copy(activeFile, outIgFile)
|
|
||||||
printLog(log, "MERGE " + igFile + sourceTools)
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP " + igFile)
|
|
||||||
|
|
||||||
# Remove temporary land IGs
|
|
||||||
printLog(log, ">>> Remove temporary land IGs <<<")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory)
|
|
||||||
removeFilesRecursive(log, ExportBuildDirectory + "/" + IgTempLandMergeBuildDirectory)
|
|
||||||
|
|
||||||
# Remove outdated land IGs
|
|
||||||
printLog(log, ">>> Remove outdated land IGs <<<")
|
|
||||||
igFilesOut = findFiles(log, ExportBuildDirectory + "/" + IgLandBuildDirectory, "", ".ig")
|
|
||||||
for igFile in igFilesOut:
|
|
||||||
if not igFile in igFilesAll:
|
|
||||||
printLog(log, "RM " + ExportBuildDirectory + "/" + IgLandBuildDirectory + "/" + igFile)
|
|
||||||
os.remove(ExportBuildDirectory + "/" + IgLandBuildDirectory + "/" + igFile)
|
|
||||||
|
|
||||||
# Verify land IGs
|
|
||||||
printLog(log, ">>> Verify land IGs <<<")
|
|
||||||
for igFile in igFilesAll:
|
|
||||||
if not igFile in igFilesOut:
|
|
||||||
printLog(log, "MISSING " + igFile)
|
|
||||||
|
|
||||||
# Write land IGs TXT
|
|
||||||
printLog(log, ">>> Write land IGs TXT <<<")
|
|
||||||
igTxtFile = ExportBuildDirectory + "/" + IgLandBuildDirectory + "/" + LandscapeName + "_ig.txt"
|
|
||||||
if needUpdateDirNoSubdirFile(log, ExportBuildDirectory + "/" + IgLandBuildDirectory, igTxtFile):
|
|
||||||
printLog(log, "WRITE " + ExportBuildDirectory + "/" + IgLandBuildDirectory + "/" + LandscapeName + "_ig.txt")
|
|
||||||
if os.path.isfile(igTxtFile):
|
|
||||||
os.remove(igTxtFile)
|
|
||||||
igTxt = open(igTxtFile, "w")
|
|
||||||
for igFile in igFilesAll:
|
|
||||||
igTxt.write(igFile + "\n")
|
|
||||||
igTxt.close()
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP *")
|
|
||||||
|
|
||||||
# Merge other IGs
|
|
||||||
printLog(log, ">>> Merge other IGs <<<") # (not true merge, since not necesserary)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgStaticOtherExportDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoIgOtherBuildDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgOtherBuildDirectory)
|
|
||||||
# copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + IgStaticOtherExportDirectory, ExportBuildDirectory + "/" + IgOtherBuildDirectory, ".ig")
|
|
||||||
igElevation(ExportBuildDirectory + "/" + IgStaticOtherExportDirectory, ExportBuildDirectory + "/" + IgOtherBuildDirectory)
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + LigoIgOtherBuildDirectory, ExportBuildDirectory + "/" + IgOtherBuildDirectory, ".ig")
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
|
@ -1,121 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 0_setup.py
|
|
||||||
# \brief setup ligo
|
|
||||||
# \date 2010-05-24 08:13GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Setup ligo
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../../configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from process import *
|
|
||||||
from tools import *
|
|
||||||
from directories import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Setup ligo")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Setup source directories
|
|
||||||
printLog(log, ">>> Setup source directories <<<")
|
|
||||||
mkPath(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory)
|
|
||||||
mkPath(log, DatabaseDirectory + "/" + LigoMaxSourceDirectory)
|
|
||||||
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory[0])
|
|
||||||
|
|
||||||
# Setup export directories
|
|
||||||
printLog(log, ">>> Setup export directories <<<")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + SmallbankExportDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoEcosystemExportDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoEcosystemIgExportDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoEcosystemZoneExportDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoEcosystemZoneLigoExportDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoEcosystemCmbExportDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoEcosystemTagExportDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneExportDirectory)
|
|
||||||
|
|
||||||
# Setup build directories
|
|
||||||
printLog(log, ">>> Setup build directories <<<")
|
|
||||||
if LigoExportLand != "":
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoZoneBuildDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoIgLandBuildDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + LigoIgOtherBuildDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + RBankCmbExportDirectory)
|
|
||||||
|
|
||||||
# Setup client directories
|
|
||||||
printLog(log, ">>> Setup client directories <<<")
|
|
||||||
|
|
||||||
# Setup land exporter cfg
|
|
||||||
if LigoExportLand != "":
|
|
||||||
printLog(log, ">>> Setup land exporter cfg <<<")
|
|
||||||
mkPath(log, ActiveProjectDirectory + "/generated")
|
|
||||||
cf = open(ActiveProjectDirectory + "/generated/land_exporter.cfg", "w")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("// Ligo settings\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("OutZoneDir = \"" + ExportBuildDirectory + "/" + LigoZoneBuildDirectory + "\";\n")
|
|
||||||
cf.write("OutIGDir = \"" + ExportBuildDirectory + "/" + LigoIgLandBuildDirectory + "\";\n")
|
|
||||||
cf.write("AdditionnalIGOutDir = \"" + ExportBuildDirectory + "/" + LigoIgOtherBuildDirectory + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("RefZoneDir = \"" + ExportBuildDirectory + "/" + LigoEcosystemZoneExportDirectory+ "\";\n") # FIXME
|
|
||||||
cf.write("RefIGDir = \"" + ExportBuildDirectory + "/" + LigoEcosystemIgExportDirectory + "\";\n")
|
|
||||||
cf.write("AdditionnalIGInDir = \"" + ExportBuildDirectory + "/" + LigoEcosystemIgExportDirectory + "\";\n") # FIXME
|
|
||||||
cf.write("ContinentsDir = \"" + LeveldesignWorldDirectory + "\";\n")
|
|
||||||
cf.write("LigoBankDir = \"" + ExportBuildDirectory + "/" + LigoEcosystemZoneLigoExportDirectory + "\";\n") # FIXME
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("TileBankFile = \"" + DatabaseDirectory + "/" + LigoTileBankFile + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("ColorMapFile = \"" + DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportColormap + "\";\n")
|
|
||||||
cf.write("HeightMapFile1 = \"" + DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportHeightmap1 + "\";\n")
|
|
||||||
cf.write("ZFactor1 = " + LigoExportZFactor1 + ";\n")
|
|
||||||
cf.write("HeightMapFile2 = \"" + DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportHeightmap2 + "\";\n")
|
|
||||||
cf.write("ZFactor2 = " + LigoExportZFactor2 + ";\n")
|
|
||||||
cf.write("ExtendCoords = " + str(LigoExportExtendCoords) + ";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("ZoneLight = 0;\n")
|
|
||||||
cf.write("CellSize = 160;\n")
|
|
||||||
cf.write("Threshold = 1;\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("DFNDir = \"" + LeveldesignDfnDirectory + "\";\n")
|
|
||||||
cf.write("RefCMBDir = \"" + ExportBuildDirectory + "/" + LigoEcosystemCmbExportDirectory + "\";\n") # FIXME
|
|
||||||
cf.write("OutCMBDir = \"" + ExportBuildDirectory + "/" + RBankCmbExportDirectory + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("ContinentFile = \"" + LeveldesignWorldDirectory + "/" + ContinentFile + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("ExportCollisions = 1;\n")
|
|
||||||
cf.write("ExportAdditionnalIGs = 1;\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("ZoneRegionFile = \"" + DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportLand + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.close()
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
|
@ -1,339 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 2_build.py
|
|
||||||
# \brief Build rbank
|
|
||||||
# \date 2009-03-10-22-43-GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Build rbank
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../../configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from process import *
|
|
||||||
from tools import *
|
|
||||||
from directories import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Build rbank")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Find tools
|
|
||||||
BuildIgBoxes = findTool(log, ToolDirectories, BuildIgBoxesTool, ToolSuffix)
|
|
||||||
ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
|
|
||||||
BuildRbank = findTool(log, ToolDirectories, BuildRbankTool, ToolSuffix)
|
|
||||||
GetNeighbors = findTool(log, ToolDirectories, GetNeighborsTool, ToolSuffix)
|
|
||||||
BuildIndoorRbank = findTool(log, ToolDirectories, BuildIndoorRbankTool, ToolSuffix)
|
|
||||||
# AiBuildWmap = findTool(log, ToolDirectories, AiBuildWmapTool, ToolSuffix)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Build rbank bbox
|
|
||||||
printLog(log, ">>> Build rbank bbox <<<")
|
|
||||||
tempBbox = ExportBuildDirectory + "/" + RbankBboxBuildDirectory + "/temp.bbox"
|
|
||||||
rebuiltBbox = False
|
|
||||||
if BuildIgBoxes == "":
|
|
||||||
toolLogFail(log, BuildIgBoxesTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + RbankBboxBuildDirectory)
|
|
||||||
needUpdateIg = needUpdateMultiDirNoSubdirFile(log, ExportBuildDirectory, IgLookupDirectories, tempBbox)
|
|
||||||
if needUpdateIg:
|
|
||||||
printLog(log, "DETECT UPDATE IG->Bbox")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP IG->Bbox")
|
|
||||||
needUpdateShape = needUpdateMultiDirNoSubdirFile(log, ExportBuildDirectory, ShapeLookupDirectories, tempBbox)
|
|
||||||
if needUpdateShape:
|
|
||||||
printLog(log, "DETECT UPDATE Shape->Bbox")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Shape->Bbox")
|
|
||||||
if needUpdateIg or needUpdateShape:
|
|
||||||
rebuiltBbox = True
|
|
||||||
printLog(log, "DETECT DECIDE UPDATE")
|
|
||||||
cf = open("build_ig_boxes.cfg", "w")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("Pathes = {\n")
|
|
||||||
for dir in IgLookupDirectories:
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + dir)
|
|
||||||
cf.write("\t\"" + ExportBuildDirectory + "/" + dir + "\", \n")
|
|
||||||
for dir in ShapeLookupDirectories:
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + dir)
|
|
||||||
cf.write("\t\"" + ExportBuildDirectory + "/" + dir + "\", \n")
|
|
||||||
cf.write("};\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("IGs = {\n")
|
|
||||||
for dir in IgLookupDirectories:
|
|
||||||
files = findFiles(log, ExportBuildDirectory + "/" + dir, "", ".ig")
|
|
||||||
for file in files:
|
|
||||||
cf.write("\t\"" + os.path.basename(file)[0:-len(".ig")] + "\", \n")
|
|
||||||
cf.write("};\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("Output = \"" + tempBbox + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.close()
|
|
||||||
subprocess.call([ BuildIgBoxes ])
|
|
||||||
os.remove("build_ig_boxes.cfg")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT DECIDE SKIP")
|
|
||||||
printLog(log, "SKIP *")
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
printLog(log, ">>> Build rbank build config <<<")
|
|
||||||
cf = open("build_rbank.cfg", "w")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("// Rbank settings\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("Verbose = " + str(RBankVerbose) + ";\n")
|
|
||||||
cf.write("CheckConsistency = " + str(RBankConsistencyCheck) + ";\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory)
|
|
||||||
cf.write("ZonePath = \"" + ExportBuildDirectory + "/" + ZoneWeldBuildDirectory + "/\";\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + SmallbankExportDirectory)
|
|
||||||
cf.write("BanksPath = \"" + ExportBuildDirectory + "/" + SmallbankExportDirectory + "/\";\n")
|
|
||||||
cf.write("Bank = \"" + ExportBuildDirectory + "/" + SmallbankExportDirectory + "/" + BankTileBankName + ".smallbank\";\n")
|
|
||||||
cf.write("ZoneExt = \".zonew\";\n")
|
|
||||||
cf.write("ZoneNHExt = \".zonenhw\";\n")
|
|
||||||
cf.write("IGBoxes = \"" + tempBbox + "\";\n")
|
|
||||||
mkPath(log, LeveldesignWorldDirectory)
|
|
||||||
cf.write("LevelDesignWorldPath = \"" + LeveldesignWorldDirectory + "\";\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgLandBuildDirectory)
|
|
||||||
cf.write("IgLandPath = \"" + ExportBuildDirectory + "/" + IgLandBuildDirectory + "\";\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + IgOtherBuildDirectory)
|
|
||||||
cf.write("IgVillagePath = \"" + ExportBuildDirectory + "/" + IgOtherBuildDirectory + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + RbankTessellationBuildDirectory)
|
|
||||||
cf.write("TessellationPath = \"" + ExportBuildDirectory + "/" + RbankTessellationBuildDirectory + "/\";\n")
|
|
||||||
cf.write("TessellateLevel = " + str(BuildQuality) + ";\n") # BuildQuality
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("WaterThreshold = 1.0;\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("OutputRootPath = \"" + ExportBuildDirectory + "/\";\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + RbankSmoothBuildDirectory)
|
|
||||||
cf.write("SmoothDirectory = \"" + RbankSmoothBuildDirectory + "/\";\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + RbankRawBuildDirectory)
|
|
||||||
cf.write("RawDirectory = \"" + RbankRawBuildDirectory + "/\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("ReduceSurfaces = " + str(RbankReduceSurfaces) + ";\n")
|
|
||||||
cf.write("SmoothBorders = " + str(RbankSmoothBorders) + ";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("ComputeElevation = " + str(RbankComputeElevation) + ";\n")
|
|
||||||
cf.write("ComputeLevels = " + str(RbankComputeLevels) + ";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("LinkElements = " + str(RbankLinkElements) + ";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("CutEdges = " + str(RbankCutEdges) + ";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("UseZoneSquare = " + str(RbankUseZoneSquare) + ";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("// The whole landscape\n")
|
|
||||||
cf.write("ZoneUL = \"" + RbankZoneUl + "\";\n")
|
|
||||||
cf.write("ZoneDR = \"" + RbankZoneDr + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + RbankPreprocBuildDirectory)
|
|
||||||
cf.write("PreprocessDirectory = \"" + ExportBuildDirectory + "/" + RbankPreprocBuildDirectory + "/\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("// The global retriever processing settings\n")
|
|
||||||
cf.write("GlobalRetriever = \"temp.gr\";\n")
|
|
||||||
cf.write("RetrieverBank = \"temp.rbank\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("GlobalUL = \"" + RbankZoneUl + "\";\n")
|
|
||||||
cf.write("GlobalDR = \"" + RbankZoneDr + "\";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("// Which kind of stuff to do\n")
|
|
||||||
cf.write("TessellateZones = 0;\n")
|
|
||||||
cf.write("MoulineZones = 0;\n")
|
|
||||||
cf.write("ProcessRetrievers = 0;\n")
|
|
||||||
cf.write("ProcessGlobal = 0;\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("Zones = {\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory)
|
|
||||||
files = findFiles(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory, "", ".zonew")
|
|
||||||
for file in files:
|
|
||||||
cf.write("\t\"" + os.path.basename(file) + "\", \n")
|
|
||||||
cf.write("};\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("Pathes = {\n")
|
|
||||||
mkPath(log, WorldEditorFilesDirectory);
|
|
||||||
cf.write("\t\"" + WorldEditorFilesDirectory + "\", \n");
|
|
||||||
for dir in IgLookupDirectories:
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + dir)
|
|
||||||
cf.write("\t\"" + ExportBuildDirectory + "/" + dir + "\", \n")
|
|
||||||
for dir in ShapeLookupDirectories:
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + dir)
|
|
||||||
cf.write("\t\"" + ExportBuildDirectory + "/" + dir + "\", \n")
|
|
||||||
cf.write("};\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.close()
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
printLog(log, ">>> Build rbank check prims <<<")
|
|
||||||
if BuildRbank == "":
|
|
||||||
toolLogFail(log, BuildRbankTool, ToolSuffix)
|
|
||||||
elif ExecTimeout == "":
|
|
||||||
toolLogFail(log, ExecTimeoutTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
subprocess.call([ ExecTimeout, str(RbankBuildTesselTimeout), BuildRbank, "-C", "-p", "-g" ])
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
printLog(log, ">>> Build rbank process all passes <<<")
|
|
||||||
if BuildRbank == "":
|
|
||||||
toolLogFail(log, BuildRbankTool, ToolSuffix)
|
|
||||||
if GetNeighbors == "":
|
|
||||||
toolLogFail(log, GetNeighborsTool, ToolSuffix)
|
|
||||||
elif ExecTimeout == "":
|
|
||||||
toolLogFail(log, ExecTimeoutTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
zonefiles = findFiles(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory, "", ".zonew")
|
|
||||||
zonesToBuild = []
|
|
||||||
for zonefile in zonefiles:
|
|
||||||
zone = os.path.basename(zonefile)[0:-len(".zonew")]
|
|
||||||
lr1 = ExportBuildDirectory + "/" + RbankSmoothBuildDirectory + "/" + zone + ".lr"
|
|
||||||
nearzones = subprocess.Popen([ GetNeighbors, zone ], stdout = subprocess.PIPE).communicate()[0].strip().split(" ")
|
|
||||||
printLog(log, "ZONE " + zone + ": " + str(nearzones))
|
|
||||||
zoneToBuild = 0
|
|
||||||
for nearzone in nearzones:
|
|
||||||
sourcePath = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory + "/" + nearzone + ".zonew"
|
|
||||||
if (os.path.isfile(sourcePath)):
|
|
||||||
if (rebuiltBbox or needUpdate(log, sourcePath, lr1)):
|
|
||||||
zoneToBuild = 1
|
|
||||||
zonesToBuild.append(os.path.basename(zonefile))
|
|
||||||
sourcePath = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory + "/" + zone + ".zonew"
|
|
||||||
if zoneToBuild:
|
|
||||||
printLog(log, sourcePath + " -> " + lr1)
|
|
||||||
# subprocess.call([ ExecTimeout, str(RbankBuildTesselTimeout), BuildRbank, "-c", "-P", "-g", os.path.basename(zonefile) ])
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP " + lr1)
|
|
||||||
while len(zonesToBuild) > 0:
|
|
||||||
processCommand = [ ExecTimeout, str(RbankBuildTesselTimeout), BuildRbank, "-c", "-P", "-g" ]
|
|
||||||
processCommand.extend(zonesToBuild[:min(len(zonesToBuild), 64)])
|
|
||||||
if len(zonesToBuild) > 64:
|
|
||||||
zonesToBuild = zonesToBuild[64:]
|
|
||||||
else:
|
|
||||||
zonesToBuild = []
|
|
||||||
print processCommand
|
|
||||||
callParallelProcess(processCommand)
|
|
||||||
flushParallelProcesses()
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
printLog(log, ">>> Detect modifications to rebuild lr <<<")
|
|
||||||
needUpdateCmbLr = needUpdateDirByTagLog(log, ExportBuildDirectory + "/" + RBankCmbExportDirectory, ".cmb", ExportBuildDirectory + "/" + RbankRetrieversBuildDirectory, ".lr")
|
|
||||||
if needUpdateCmbLr:
|
|
||||||
printLog(log, "DETECT UPDATE Cmb->Lr")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Cmb->Lr")
|
|
||||||
needUpdateCmbRbank = needUpdateDirNoSubdirFile(log, ExportBuildDirectory + "/" + RBankCmbExportDirectory, ExportBuildDirectory + "/" + RbankOutputBuildDirectory + "/" + RbankRbankName + ".rbank")
|
|
||||||
if needUpdateCmbRbank:
|
|
||||||
printLog(log, "DETECT UPDATE Cmb->Rbank")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Cmb->Rbank")
|
|
||||||
needUpdateLrRbank = needUpdateDirNoSubdirFile(log, ExportBuildDirectory + "/" + RbankSmoothBuildDirectory, ExportBuildDirectory + "/" + RbankOutputBuildDirectory + "/" + RbankRbankName + ".rbank")
|
|
||||||
if needUpdateLrRbank:
|
|
||||||
printLog(log, "DETECT UPDATE Lr->Rbank")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Lr->Rbank")
|
|
||||||
needUpdateBboxRbank = needUpdate(log, tempBbox, ExportBuildDirectory + "/" + RbankOutputBuildDirectory + "/" + RbankRbankName + ".rbank")
|
|
||||||
if needUpdateBboxRbank:
|
|
||||||
printLog(log, "DETECT UPDATE Lr->Rbank")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Lr->Rbank")
|
|
||||||
|
|
||||||
if rebuiltBbox or needUpdateCmbLr or needUpdateCmbRbank or needUpdateLrRbank or needUpdateBboxRbank:
|
|
||||||
printLog(log, "DETECT DECIDE UPDATE")
|
|
||||||
printLog(log, ">>> Build rbank process global <<<") # This generates temp lr files. TODO: Check if the LR changed?
|
|
||||||
if BuildRbank == "":
|
|
||||||
toolLogFail(log, BuildRbankTool, ToolSuffix)
|
|
||||||
elif ExecTimeout == "":
|
|
||||||
toolLogFail(log, ExecTimeoutTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
subprocess.call([ ExecTimeout, str(RbankBuildProcglobalTimeout), BuildRbank, "-c", "-P", "-G" ])
|
|
||||||
printLog(log, "")
|
|
||||||
os.remove("build_rbank.cfg")
|
|
||||||
|
|
||||||
printLog(log, ">>> Build rbank indoor <<<") # This generates the retrievers for the ig that have the cmb export
|
|
||||||
if BuildIndoorRbank == "":
|
|
||||||
toolLogFail(log, BuildIndoorRbankTool, ToolSuffix)
|
|
||||||
elif ExecTimeout == "":
|
|
||||||
toolLogFail(log, ExecTimeoutTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
retrieversDir = ExportBuildDirectory + "/" + RbankRetrieversBuildDirectory
|
|
||||||
mkPath(log, retrieversDir)
|
|
||||||
removeFilesRecursiveExt(log, retrieversDir, ".rbank")
|
|
||||||
removeFilesRecursiveExt(log, retrieversDir, ".gr")
|
|
||||||
removeFilesRecursiveExt(log, retrieversDir, ".lr")
|
|
||||||
cf = open("build_indoor_rbank.cfg", "w")
|
|
||||||
cf.write("\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + RBankCmbExportDirectory)
|
|
||||||
cf.write("MeshPath = \"" + ExportBuildDirectory + "/" + RBankCmbExportDirectory + "/\";\n")
|
|
||||||
# cf.write("Meshes = { };\n")
|
|
||||||
cf.write("Meshes = \n")
|
|
||||||
cf.write("{\n")
|
|
||||||
meshFiles = findFilesNoSubdir(log, ExportBuildDirectory + "/" + RBankCmbExportDirectory, ".cmb")
|
|
||||||
lenCmbExt = len(".cmb")
|
|
||||||
for file in meshFiles:
|
|
||||||
cf.write("\t\"" + file[0:-lenCmbExt] + "\", \n")
|
|
||||||
cf.write("};\n")
|
|
||||||
cf.write("OutputPath = \"" + retrieversDir + "/\";\n")
|
|
||||||
# mkPath(log, ExportBuildDirectory + "/" + RbankOutputBuildDirectory)
|
|
||||||
# cf.write("OutputPath = \"" + ExportBuildDirectory + "/" + RbankOutputBuildDirectory + "/\";\n")
|
|
||||||
cf.write("OutputPrefix = \"unused\";\n")
|
|
||||||
cf.write("Merge = 1;\n")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + RbankSmoothBuildDirectory)
|
|
||||||
cf.write("MergePath = \"" + ExportBuildDirectory + "/" + RbankSmoothBuildDirectory + "/\";\n")
|
|
||||||
cf.write("MergeInputPrefix = \"temp\";\n")
|
|
||||||
cf.write("MergeOutputPrefix = \"tempMerged\";\n")
|
|
||||||
# cf.write("MergeOutputPrefix = \"" + RbankRbankName + "\";\n")
|
|
||||||
cf.write("AddToRetriever = 1;\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.close()
|
|
||||||
subprocess.call([ ExecTimeout, str(RbankBuildIndoorTimeout), BuildIndoorRbank ])
|
|
||||||
os.remove("build_indoor_rbank.cfg")
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
retrieversDir = ExportBuildDirectory + "/" + RbankRetrieversBuildDirectory
|
|
||||||
mkPath(log, retrieversDir)
|
|
||||||
outputDir = ExportBuildDirectory + "/" + RbankOutputBuildDirectory
|
|
||||||
mkPath(log, outputDir)
|
|
||||||
printLog(log, ">>> Move gr, rbank and lr <<<") # This simply renames everything
|
|
||||||
if needUpdateDirNoSubdir(log, retrieversDir, outputDir):
|
|
||||||
removeFilesRecursiveExt(log, outputDir, ".rbank")
|
|
||||||
removeFilesRecursiveExt(log, outputDir, ".gr")
|
|
||||||
removeFilesRecursiveExt(log, outputDir, ".lr")
|
|
||||||
copyFilesRenamePrefixExt(log, retrieversDir, outputDir, "tempMerged", RbankRbankName, ".rbank")
|
|
||||||
copyFilesRenamePrefixExt(log, retrieversDir, outputDir, "tempMerged", RbankRbankName, ".gr")
|
|
||||||
copyFilesRenamePrefixExt(log, retrieversDir, outputDir, "tempMerged_", RbankRbankName + "_", ".lr")
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP *")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT DECIDE SKIP")
|
|
||||||
printLog(log, "SKIP *")
|
|
||||||
|
|
||||||
# Remove pacs.packed_prims when done
|
|
||||||
if os.path.isfile("pacs.packed_prims"):
|
|
||||||
os.remove("pacs.packed_prims")
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
|
@ -1,198 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 2_build.py
|
|
||||||
# \brief Build shape
|
|
||||||
# \date 2010-05-24 13:42GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Build shape
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../../configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from process import *
|
|
||||||
from tools import *
|
|
||||||
from directories import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Build shape")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Find tools
|
|
||||||
ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
|
|
||||||
BuildShadowSkin = findTool(log, ToolDirectories, BuildShadowSkinTool, ToolSuffix)
|
|
||||||
BuildClodtex = findTool(log, ToolDirectories, BuildClodtexTool, ToolSuffix)
|
|
||||||
LightmapOptimizer = findTool(log, ToolDirectories, LightmapOptimizerTool, ToolSuffix)
|
|
||||||
TgaToDds = findTool(log, ToolDirectories, TgaToDdsTool, ToolSuffix)
|
|
||||||
BuildCoarseMesh = findTool(log, ToolDirectories, BuildCoarseMeshTool, ToolSuffix)
|
|
||||||
|
|
||||||
shapeDirectory = ExportBuildDirectory + "/" + ShapeNotOptimizedExportDirectory
|
|
||||||
if BuildShadowSkinEnabled:
|
|
||||||
mkPath(log, shapeDirectory)
|
|
||||||
shadowSkinBuildDirectory = ExportBuildDirectory + "/" + ShapeShadowSkinBuildDirectory
|
|
||||||
printLog(log, ">>> BuildShadowSkin <<<")
|
|
||||||
shadowSkinShapes = findFilesNoSubdir(log, shapeDirectory, ".shape")
|
|
||||||
for shadowSkinShape in shadowSkinShapes:
|
|
||||||
srcShape = shapeDirectory + "/" + shadowSkinShape
|
|
||||||
dstShape = shadowSkinBuildDirectory + "/" + shadowSkinShape
|
|
||||||
if needUpdateLogRemoveDest(log, srcShape, dstShape):
|
|
||||||
subprocess.call([ BuildShadowSkin, srcShape, dstShape, str(BuildShadowSkinRatio), str(BuildShadowSkinMaxface) ])
|
|
||||||
shapeDirectory = shadowSkinBuildDirectory
|
|
||||||
|
|
||||||
mkPath(log, shapeDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory)
|
|
||||||
if ClodConfigFile != "":
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory)
|
|
||||||
printLog(log, ">>> Build CLodTex <<<")
|
|
||||||
subprocess.call([ BuildClodtex, "-d", DatabaseDirectory + "/" + ClodConfigFile, ExportBuildDirectory + "/" + ClodExportDirectory, shapeDirectory, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory ])
|
|
||||||
else:
|
|
||||||
printLog(log, ">>> Copy Shape <<<")
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, shapeDirectory, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory, ".shape")
|
|
||||||
|
|
||||||
printLog(log, ">>> Copy non-ShadowSkin non-CLodTex Shape <<<")
|
|
||||||
shapeDirectory = ExportBuildDirectory + "/" + ShapeNotOptimizedExportDirectory
|
|
||||||
mkPath(log, shapeDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory)
|
|
||||||
copyFilesExtNoTreeIfNeeded(log, shapeDirectory, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory, ".shape")
|
|
||||||
shapeDirectory = ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory
|
|
||||||
|
|
||||||
# copy lightmap_not_optimized to lightmap
|
|
||||||
printLog(log, ">>> Optimize lightmaps <<<")
|
|
||||||
loPathLightmapsOriginal = ExportBuildDirectory + "/" + ShapeLightmapNotOptimizedExportDirectory
|
|
||||||
loPathShapesOriginal = ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory
|
|
||||||
mkPath(log, loPathLightmapsOriginal)
|
|
||||||
loPathLightmaps = ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory
|
|
||||||
loPathShapes = ExportBuildDirectory + "/" + ShapeOptimizedBuildDirectory
|
|
||||||
loPathTags = ExportBuildDirectory + "/" + ShapeTagExportDirectory
|
|
||||||
mkPath(log, loPathLightmaps)
|
|
||||||
mkPath(log, loPathShapes)
|
|
||||||
mkPath(log, loPathTags)
|
|
||||||
if needUpdateDirByTagLog(log, loPathLightmapsOriginal, ".txt", loPathLightmaps, ".txt") or needUpdateDirNoSubdir(log, loPathLightmapsOriginal, loPathLightmaps) or needUpdateDirNoSubdir(log, loPathShapesOriginal, loPathShapes) or needUpdateDirNoSubdir(log, loPathShapes, loPathLightmaps) or needUpdateDirNoSubdir(log, loPathTags, loPathLightmaps):
|
|
||||||
removeFilesRecursive(log, loPathLightmaps)
|
|
||||||
copyFiles(log, loPathLightmapsOriginal, loPathLightmaps)
|
|
||||||
removeFilesRecursive(log, loPathShapes)
|
|
||||||
copyFiles(log, loPathShapesOriginal, loPathShapes)
|
|
||||||
# Optimize lightmaps if any. Additionnaly, output a file indicating which lightmaps are 8 bits
|
|
||||||
# lightmap_optimizer <path_lightmaps> <path_shapes> [path_tags] [path_flag8bit]
|
|
||||||
subprocess.call([ LightmapOptimizer, loPathLightmaps, loPathShapes, loPathTags, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory + "/list_lm_8bit.txt" ])
|
|
||||||
else:
|
|
||||||
printLog(log, "SKIP *")
|
|
||||||
|
|
||||||
# Convert lightmap in 16 bits mode if they are not 8 bits lightmap
|
|
||||||
printLog(log, ">>> Convert lightmaps in 16 or 8 bits <<<")
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory)
|
|
||||||
lightMapTgas = findFilesNoSubdir(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory, ".tga")
|
|
||||||
listLm8Bit = [ ]
|
|
||||||
listLm8BitFile = open(ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory + "/list_lm_8bit.txt", "r")
|
|
||||||
for line in listLm8BitFile:
|
|
||||||
lineStrip = line.strip()
|
|
||||||
if (len(lineStrip) > 0):
|
|
||||||
listLm8Bit += [ lineStrip ]
|
|
||||||
for lightMapTga in lightMapTgas:
|
|
||||||
srcTga = ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory + "/" + lightMapTga
|
|
||||||
dstTga = ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory + "/" + lightMapTga
|
|
||||||
if needUpdateLogRemoveDest(log, srcTga, dstTga):
|
|
||||||
if lightMapTga in listLm8Bit: # THIS MAY NOT WORK, PLEASE VERIFY CONTENTS OF list_lm_8bit.txt!!!
|
|
||||||
subprocess.call([ TgaToDds, srcTga, "-o", dstTga, "-a", "tga8" ])
|
|
||||||
else:
|
|
||||||
subprocess.call([ TgaToDds, srcTga, "-o", dstTga, "-a", "tga16" ])
|
|
||||||
|
|
||||||
# Corse meshes for this process ?
|
|
||||||
if len(CoarseMeshTextureNames) > 0:
|
|
||||||
printLog(log, ">>> Build coarse meshes <<<")
|
|
||||||
shapeWithCoarseMesh = ExportBuildDirectory + "/" + ShapeWithCoarseMeshExportDirectory
|
|
||||||
mkPath(log, shapeWithCoarseMesh)
|
|
||||||
shapeWithCoarseMeshBuilded = ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory
|
|
||||||
mkPath(log, shapeWithCoarseMeshBuilded)
|
|
||||||
# This builds from shapeWithCoarseMesh .shape to shapeWithCoarseMesh .tga
|
|
||||||
# And from shapeWithCoarseMesh .shape to shapeWithCoarseMeshBuilded .shape
|
|
||||||
# Then builds from shapeWithCoarseMesh .tga to shapeWithCoarseMeshBuilded .tga
|
|
||||||
# Depends on MapLookupDirectories
|
|
||||||
needUpdateMaps = needUpdateMultiDirNoSubdirMultiFileExt(log, ExportBuildDirectory, MapLookupDirectories, shapeWithCoarseMesh, CoarseMeshTextureNames, ".tga") or needUpdateMultiDirNoSubdir(log, ExportBuildDirectory, MapLookupDirectories, shapeWithCoarseMeshBuilded)
|
|
||||||
if needUpdateMaps:
|
|
||||||
printLog(log, "DETECT UPDATE Maps->*")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Maps->*")
|
|
||||||
needUpdateShapeShape = needUpdateDirByTagLog(log, shapeWithCoarseMesh, ".shape", shapeWithCoarseMeshBuilded, ".shape")
|
|
||||||
if needUpdateShapeShape:
|
|
||||||
printLog(log, "DETECT UPDATE Shape->Shape")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Shape->Shape")
|
|
||||||
needUpdateShapeCoarse = needUpdateDirNoSubdirExtMultiFileExt(log, shapeWithCoarseMesh, ".shape", shapeWithCoarseMesh, CoarseMeshTextureNames, ".tga")
|
|
||||||
if needUpdateShapeCoarse:
|
|
||||||
printLog(log, "DETECT UPDATE Shape->Coarse")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Shape->Coarse")
|
|
||||||
if needUpdateMaps or needUpdateShapeShape or needUpdateShapeCoarse:
|
|
||||||
cf = open("config_generated.cfg", "w")
|
|
||||||
cf.write("texture_mul_size = " + TextureMulSizeValue + ";\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("search_path = \n")
|
|
||||||
cf.write("{\n")
|
|
||||||
cf.write("\t\"" + shapeWithCoarseMesh + "\", \n")
|
|
||||||
for dir in MapLookupDirectories:
|
|
||||||
cf.write("\t\"" + ExportBuildDirectory + "/" + dir + "\", \n")
|
|
||||||
cf.write("};\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("list_mesh = \n")
|
|
||||||
cf.write("{\n")
|
|
||||||
# For each shape with coarse mesh
|
|
||||||
files = findFiles(log, shapeWithCoarseMesh, "", ".shape")
|
|
||||||
for file in files:
|
|
||||||
sourceFile = shapeWithCoarseMesh + "/" + file
|
|
||||||
if os.path.isfile(sourceFile):
|
|
||||||
destFile = shapeWithCoarseMeshBuilded + "/" + file
|
|
||||||
cf.write("\t\"" + file + "\", \"" + destFile + "\", \n")
|
|
||||||
cf.write("};\n")
|
|
||||||
cf.write("\n")
|
|
||||||
cf.write("output_textures = \n")
|
|
||||||
cf.write("{\n")
|
|
||||||
# For each shape with coarse mesh
|
|
||||||
for tn in CoarseMeshTextureNames:
|
|
||||||
cf.write("\t\"" + shapeWithCoarseMesh + "/" + tn + ".tga\", \n")
|
|
||||||
cf.write("};\n")
|
|
||||||
cf.close()
|
|
||||||
subprocess.call([ BuildCoarseMesh, "config_generated.cfg" ])
|
|
||||||
os.remove("config_generated.cfg")
|
|
||||||
needUpdateCoarse = needUpdateDirNoSubdirExtMultiFileExt(log, shapeWithCoarseMesh, ".tga", shapeWithCoarseMeshBuilded, CoarseMeshTextureNames, ".dds")
|
|
||||||
if needUpdateCoarse:
|
|
||||||
printLog(log, "DETECT UPDATE Coarse->DDS")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Coarse->DDS")
|
|
||||||
# Convert the coarse texture to dds
|
|
||||||
if needUpdateCoarse:
|
|
||||||
for tn in CoarseMeshTextureNames:
|
|
||||||
subprocess.call([ TgaToDds, shapeWithCoarseMesh + "/" + tn + ".tga", "-o", shapeWithCoarseMeshBuilded + "/" + tn + ".dds", "-a", "5" ])
|
|
||||||
else:
|
|
||||||
printLog(log, ">>> No coarse meshes <<<")
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
|
@ -1,175 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 2_build.py
|
|
||||||
# \brief Build zone
|
|
||||||
# \date 2009-03-10-22-23-GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Build zone
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../../configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from process import *
|
|
||||||
from tools import *
|
|
||||||
from directories import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Build zone")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Find tools
|
|
||||||
ZoneDependencies = findTool(log, ToolDirectories, ZoneDependenciesTool, ToolSuffix)
|
|
||||||
ZoneWelder = findTool(log, ToolDirectories, ZoneWelderTool, ToolSuffix)
|
|
||||||
ZoneElevation = findTool(log, ToolDirectories, ZoneElevationTool, ToolSuffix)
|
|
||||||
ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# We are in BEST mode
|
|
||||||
if BuildQuality == 1:
|
|
||||||
printLog(log, ">>> Build zone dependencies <<<")
|
|
||||||
if ZoneDependencies == "":
|
|
||||||
toolLogFail(log, ZoneDependenciesTool, ToolSuffix)
|
|
||||||
elif ExecTimeout == "":
|
|
||||||
toolLogFail(log, ExecTimeoutTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneExportDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneDependBuildDirectory)
|
|
||||||
needUpdateZoneDepend = needUpdateDirByLowercaseTagLog(log, ExportBuildDirectory + "/" + ZoneExportDirectory, ".zone", ExportBuildDirectory + "/" + ZoneDependBuildDirectory, ".depend")
|
|
||||||
if needUpdateZoneDepend:
|
|
||||||
printLog(log, "DETECT UPDATE Zone->Depend")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Zone->Depend")
|
|
||||||
needUpdateContinentDepend = needUpdateFileDirNoSubdir(log, LeveldesignWorldDirectory + "/" + ContinentFile, ExportBuildDirectory + "/" + ZoneDependBuildDirectory)
|
|
||||||
if needUpdateContinentDepend:
|
|
||||||
printLog(log, "DETECT UPDATE Continent->Depend")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP Continent->Depend")
|
|
||||||
needUpdateSearchPaths = needUpdateMultiDirNoSubdir(log, ExportBuildDirectory, PropertiesExportBuildSearchPaths, ExportBuildDirectory + "/" + ZoneDependBuildDirectory)
|
|
||||||
if needUpdateSearchPaths:
|
|
||||||
printLog(log, "DETECT UPDATE SearchPaths->Depend")
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT SKIP SearchPaths->Depend")
|
|
||||||
if needUpdateZoneDepend or needUpdateContinentDepend or needUpdateSearchPaths:
|
|
||||||
printLog(log, "DETECT DECIDE UPDATE")
|
|
||||||
mkPath(log, ActiveProjectDirectory + "/generated")
|
|
||||||
configFile = ActiveProjectDirectory + "/generated/zone_dependencies.cfg"
|
|
||||||
templateCf = open(ActiveProjectDirectory + "/generated/properties.cfg", "r")
|
|
||||||
cf = open(configFile, "w")
|
|
||||||
for line in templateCf:
|
|
||||||
cf.write(line)
|
|
||||||
cf.write("\n");
|
|
||||||
cf.write("level_design_directory = \"" + LeveldesignDirectory + "\";\n");
|
|
||||||
cf.write("level_design_world_directory = \"" + LeveldesignWorldDirectory + "\";\n");
|
|
||||||
cf.write("level_design_dfn_directory = \"" + LeveldesignDfnDirectory + "\";\n");
|
|
||||||
cf.write("continent_name = \"" + ContinentName + "\";\n");
|
|
||||||
cf.write("\n");
|
|
||||||
cf.close()
|
|
||||||
|
|
||||||
for zoneRegion in ZoneRegions:
|
|
||||||
# zone_dependencies [properties.cfg] [firstZone.zone] [lastzone.zone] [output_dependencies.cfg]
|
|
||||||
subprocess.call([ ExecTimeout, str(ZoneBuildDependTimeout), ZoneDependencies, configFile, ExportBuildDirectory + "/" + ZoneExportDirectory + "/" + zoneRegion[0] + ".zone", ExportBuildDirectory + "/" + ZoneExportDirectory + "/" + zoneRegion[1] + ".zone", ExportBuildDirectory + "/" + ZoneDependBuildDirectory + "/doomy.depend" ])
|
|
||||||
else:
|
|
||||||
printLog(log, "DETECT DECIDE SKIP")
|
|
||||||
printLog(log, "SKIP *")
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# For each zone directory
|
|
||||||
#printLog(log, ">>> Build zone weld <<<")
|
|
||||||
#if ZoneWelder == "":
|
|
||||||
# toolLogFail(log, ZoneWelderTool, ToolSuffix)
|
|
||||||
#elif ExecTimeout == "":
|
|
||||||
# toolLogFail(log, ExecTimeoutTool, ToolSuffix)
|
|
||||||
#else:
|
|
||||||
# mkPath(log, ExportBuildDirectory + "/" + ZoneExportDirectory)
|
|
||||||
# mkPath(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory)
|
|
||||||
# files = findFiles(log, ExportBuildDirectory + "/" + ZoneExportDirectory, "", ".zone")
|
|
||||||
# for file in files:
|
|
||||||
# sourceFile = ExportBuildDirectory + "/" + ZoneExportDirectory + "/" + file
|
|
||||||
# destFile = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory + "/" + os.path.basename(file)[0:-len(".zone")] + ".zonew"
|
|
||||||
# if needUpdateLogRemoveDest(log, sourceFile, destFile):
|
|
||||||
# subprocess.call([ ExecTimeout, str(ZoneBuildWeldTimeout), ZoneWelder, sourceFile, destFile ])
|
|
||||||
#printLog(log, "")
|
|
||||||
|
|
||||||
# For each zone directory
|
|
||||||
printLog(log, ">>> Weld zone without heightmap <<<")
|
|
||||||
if ZoneWelder == "":
|
|
||||||
toolLogFail(log, ZoneWelderTool, ToolSuffix)
|
|
||||||
elif ExecTimeout == "":
|
|
||||||
toolLogFail(log, ExecTimeoutTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneExportDirectory)
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory)
|
|
||||||
files = findFiles(log, ExportBuildDirectory + "/" + ZoneExportDirectory, "", ".zonenh")
|
|
||||||
for file in files:
|
|
||||||
sourceFile = ExportBuildDirectory + "/" + ZoneExportDirectory + "/" + file
|
|
||||||
destFile = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory + "/" + os.path.basename(file)[0:-len(".zonenh")] + ".zonenhw"
|
|
||||||
if needUpdateLogRemoveDest(log, sourceFile, destFile):
|
|
||||||
subprocess.call([ ExecTimeout, str(ZoneBuildWeldTimeout), ZoneWelder, sourceFile, destFile ])
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
printLog(log, ">>> Apply zone heightmap to welded zone <<<")
|
|
||||||
if ZoneElevation == "":
|
|
||||||
toolLogFail(log, ZoneElevationTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory)
|
|
||||||
mkPath(log, DatabaseDirectory + "/" + LigoBaseSourceDirectory);
|
|
||||||
land = DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportLand
|
|
||||||
heightMap1 = DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportHeightmap1
|
|
||||||
heightMap2 = DatabaseDirectory + "/" + LigoBaseSourceDirectory + "/" + LigoExportHeightmap2
|
|
||||||
files = findFiles(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory, "", ".zonenhw")
|
|
||||||
for file in files:
|
|
||||||
sourceFile = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory + "/" + file
|
|
||||||
destFile = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory + "/" + os.path.basename(file)[0:-len(".zonenhw")] + ".zone"
|
|
||||||
if needUpdateLogRemoveDest(log, sourceFile, destFile):
|
|
||||||
command = [ ZoneElevation, sourceFile, destFile, "--land", land, "--heightmap", heightMap1, "--zfactor", LigoExportZFactor1, "--heightmap2", heightMap2, "--zfactor2", LigoExportZFactor2 ]
|
|
||||||
if LigoExportExtendCoords != 0:
|
|
||||||
command.append("--extendcoords")
|
|
||||||
callParallelProcess(command)
|
|
||||||
flushParallelProcesses()
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
printLog(log, ">>> Re-weld zone with heightmap <<<")
|
|
||||||
if ZoneWelder == "":
|
|
||||||
toolLogFail(log, ZoneWelderTool, ToolSuffix)
|
|
||||||
elif ExecTimeout == "":
|
|
||||||
toolLogFail(log, ExecTimeoutTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
mkPath(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory)
|
|
||||||
files = findFiles(log, ExportBuildDirectory + "/" + ZoneWeldBuildDirectory, "", ".zone")
|
|
||||||
for file in files:
|
|
||||||
sourceFile = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory + "/" + file
|
|
||||||
destFile = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory + "/" + os.path.basename(file)[0:-len(".zone")] + ".zonew"
|
|
||||||
if needUpdateLogRemoveDest(log, sourceFile, destFile):
|
|
||||||
subprocess.call([ ExecTimeout, str(ZoneBuildWeldTimeout), ZoneWelder, sourceFile, destFile ])
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
|
@ -1,105 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \file 2_build.py
|
|
||||||
# \brief Build zone_light
|
|
||||||
# \date 2009-03-11-13-45-GMT
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
# Python port of game data build pipeline.
|
|
||||||
# Build zone_light
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2009-2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../../configuration")
|
|
||||||
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from process import *
|
|
||||||
from tools import *
|
|
||||||
from directories import *
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Build zone_light")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# Find tools
|
|
||||||
ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
|
|
||||||
ZoneLighter = findTool(log, ToolDirectories, ZoneLighterTool, ToolSuffix)
|
|
||||||
ZoneIgLighter = findTool(log, ToolDirectories, ZoneIgLighterTool, ToolSuffix)
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# For each zone_light directory
|
|
||||||
printLog(log, ">>> Build zone_light <<<")
|
|
||||||
if ZoneLighter == "":
|
|
||||||
toolLogFail(log, ZoneLighterTool, ToolSuffix)
|
|
||||||
elif ExecTimeout == "":
|
|
||||||
toolLogfail(log, ExecTimeoutTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
srcDir = ExportBuildDirectory + "/" + ZoneWeldBuildDirectory
|
|
||||||
mkPath(log, srcDir)
|
|
||||||
destDir = ExportBuildDirectory + "/" + ZoneLightBuildDirectory
|
|
||||||
mkPath(log, destDir)
|
|
||||||
dependDir = ExportBuildDirectory + "/" + ZoneDependBuildDirectory
|
|
||||||
mkPath(log, dependDir)
|
|
||||||
files = findFiles(log, srcDir, "", ".zonew")
|
|
||||||
for file in files:
|
|
||||||
srcFile = srcDir + "/" + file
|
|
||||||
destFile = destDir + "/" + file[0:-len(".zonew")] + ".zonel"
|
|
||||||
if (needUpdateLogRemoveDest(log, srcFile, destFile)):
|
|
||||||
dependFile = dependDir + "/" + file[0:-len(".zonew")] + ".depend"
|
|
||||||
callParallelProcess([ ExecTimeout, str(ZoneLightBuildTimeout), ZoneLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/properties.cfg", dependFile ])
|
|
||||||
flushParallelProcesses()
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
# For each zone_light ig
|
|
||||||
printLog(log, ">>> Build zone_light ig <<<")
|
|
||||||
if ZoneIgLighter == "":
|
|
||||||
toolLogFail(log, ZoneIgLighterTool, ToolSuffix)
|
|
||||||
elif ExecTimeout == "":
|
|
||||||
toolLogfail(log, ExecTimeoutTool, ToolSuffix)
|
|
||||||
else:
|
|
||||||
srcDir = ExportBuildDirectory + "/" + ZoneLightBuildDirectory
|
|
||||||
mkPath(log, srcDir)
|
|
||||||
igsrcDir = ExportBuildDirectory + "/" + IgLandBuildDirectory
|
|
||||||
mkPath(log, igsrcDir)
|
|
||||||
destDir = ExportBuildDirectory + "/" + ZoneLightIgLandBuildDirectory
|
|
||||||
mkPath(log, destDir)
|
|
||||||
dependDir = ExportBuildDirectory + "/" + ZoneDependBuildDirectory
|
|
||||||
mkPath(log, dependDir)
|
|
||||||
files = findFiles(log, srcDir, "", ".zonel")
|
|
||||||
for file in files:
|
|
||||||
igsrcFile = igsrcDir + "/" + os.path.basename(file)[0:-len(".zonel")] + ".ig"
|
|
||||||
destFile = destDir + "/" + os.path.basename(file)[0:-len(".zonel")] + ".ig"
|
|
||||||
if (os.path.isfile(igsrcFile)):
|
|
||||||
if (needUpdateLogRemoveDest(log, igsrcFile, destFile)):
|
|
||||||
srcFile = srcDir + "/" + file
|
|
||||||
dependFile = dependDir + "/" + file[0:-len(".zonel")] + ".depend"
|
|
||||||
callParallelProcess([ ExecTimeout, str(ZoneIgLightBuildTimeout), ZoneIgLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/properties.cfg", dependFile ])
|
|
||||||
flushParallelProcesses()
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
|
|
||||||
|
|
||||||
# end of file
|
|
@ -1,70 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../configuration")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from tools import *
|
|
||||||
os.chdir(TranslationDirectory)
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Make and merge all translations")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
|
|
||||||
TranslationTools = findTool(log, ToolDirectories, TranslationToolsTool, ToolSuffix)
|
|
||||||
try:
|
|
||||||
subprocess.call([ TranslationTools, "make_phrase_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_phrase_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "make_clause_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_clause_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "make_words_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_words_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "make_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "clean_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "make_r2_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_r2_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "clean_r2_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "clean_words_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "clean_clause_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "clean_phrase_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "make_worksheet_diff", "bot_names.txt" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_worksheet_diff", "bot_names.txt" ])
|
|
||||||
except Exception, e:
|
|
||||||
printLog(log, "<" + processName + "> " + str(e))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
if os.path.isfile("make_merge_all.log"):
|
|
||||||
os.remove("make_merge_all.log")
|
|
||||||
shutil.copy("log.log", "make_merge_all_" + time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + ".log")
|
|
||||||
shutil.move("log.log", "make_merge_all.log")
|
|
||||||
|
|
||||||
raw_input("PRESS ANY KEY TO EXIT")
|
|
@ -1,115 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# \author Jan Boon (Kaetemi)
|
|
||||||
#
|
|
||||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
||||||
# Copyright (C) 2014 by authors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
|
||||||
sys.path.append("../configuration")
|
|
||||||
from scripts import *
|
|
||||||
from buildsite import *
|
|
||||||
from tools import *
|
|
||||||
os.chdir(TranslationDirectory)
|
|
||||||
if os.path.isfile("log.log"):
|
|
||||||
os.remove("log.log")
|
|
||||||
log = open("log.log", "w")
|
|
||||||
|
|
||||||
printLog(log, "")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, "--- Make, merge and clean work")
|
|
||||||
printLog(log, "-------")
|
|
||||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
|
|
||||||
TranslationTools = findTool(log, ToolDirectories, TranslationToolsTool, ToolSuffix)
|
|
||||||
printLog(log, ">>> Override languages.txt <<<")
|
|
||||||
if not os.path.isfile("make_merge_wk_languages.txt"):
|
|
||||||
shutil.move("languages.txt", "make_merge_wk_languages.txt")
|
|
||||||
languagesTxt = open("languages.txt", "w")
|
|
||||||
languagesTxt.write("wk\n")
|
|
||||||
languagesTxt.close()
|
|
||||||
|
|
||||||
|
|
||||||
printLog(log, ">>> Merge diff <<<") # This is necessary, because when we crop lines, we should only do this from untranslated files
|
|
||||||
try:
|
|
||||||
subprocess.call([ TranslationTools, "merge_phrase_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_clause_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_words_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_r2_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_worksheet_diff", "bot_names.txt" ])
|
|
||||||
except Exception, e:
|
|
||||||
printLog(log, "<" + processName + "> " + str(e))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
|
|
||||||
printLog(log, ">>> Make diff <<<")
|
|
||||||
try:
|
|
||||||
subprocess.call([ TranslationTools, "make_phrase_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "make_clause_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "make_words_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "make_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "make_r2_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "make_worksheet_diff", "bot_names.txt" ])
|
|
||||||
except Exception, e:
|
|
||||||
printLog(log, "<" + processName + "> " + str(e))
|
|
||||||
|
|
||||||
|
|
||||||
printLog(log, ">>> Mark diffs as translated <<<")
|
|
||||||
diffFiles = os.listdir("diff")
|
|
||||||
for diffFile in diffFiles:
|
|
||||||
if "wk_diff_" in diffFile:
|
|
||||||
printLog(log, "DIFF " + "diff/" + diffFile)
|
|
||||||
subprocess.call([ TranslationTools, "crop_lines", "diff/" + diffFile, "3" ])
|
|
||||||
|
|
||||||
#printLog(log, ">>> Clean diff <<<")
|
|
||||||
#try:
|
|
||||||
# subprocess.call([ TranslationTools, "clean_string_diff" ])
|
|
||||||
# subprocess.call([ TranslationTools, "clean_phrase_diff" ])
|
|
||||||
# subprocess.call([ TranslationTools, "clean_clause_diff" ])
|
|
||||||
# subprocess.call([ TranslationTools, "clean_words_diff" ])
|
|
||||||
#except Exception, e:
|
|
||||||
# printLog(log, "<" + processName + "> " + str(e))
|
|
||||||
#printLog(log, "")
|
|
||||||
|
|
||||||
printLog(log, ">>> Merge diff <<<")
|
|
||||||
try:
|
|
||||||
subprocess.call([ TranslationTools, "merge_phrase_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_clause_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_words_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_r2_string_diff" ])
|
|
||||||
subprocess.call([ TranslationTools, "merge_worksheet_diff", "bot_names.txt" ])
|
|
||||||
except Exception, e:
|
|
||||||
printLog(log, "<" + processName + "> " + str(e))
|
|
||||||
printLog(log, "")
|
|
||||||
|
|
||||||
|
|
||||||
printLog(log, ">>> Restore languages.txt <<<")
|
|
||||||
os.remove("languages.txt")
|
|
||||||
shutil.move("make_merge_wk_languages.txt", "languages.txt")
|
|
||||||
|
|
||||||
|
|
||||||
log.close()
|
|
||||||
if os.path.isfile("make_merge_wk.log"):
|
|
||||||
os.remove("make_merge_wk.log")
|
|
||||||
shutil.copy("log.log", "make_merge_wk_" + time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + ".log")
|
|
||||||
shutil.move("log.log", "make_merge_wk.log")
|
|
||||||
|
|
||||||
raw_input("PRESS ANY KEY TO EXIT")
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue