Merge branch 'atys' into fixes

fixes
Nuno 3 years ago
commit 1a49c4cd0b

2
.gitignore vendored

@ -90,6 +90,7 @@ ylwrap
*.mk *.mk
# Visual Studio garbage # Visual Studio garbage
.vscode/
*.opensdf *.opensdf
UpgradeLog*.XML UpgradeLog*.XML
_UpgradeReport_Files _UpgradeReport_Files
@ -162,6 +163,7 @@ build/*
build-2010/* build-2010/*
build/* build/*
install/* install/*
win-build/
build_* build_*
nel/tools/build_gamedata/configuration/buildsite.py nel/tools/build_gamedata/configuration/buildsite.py

@ -0,0 +1,594 @@
#!/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")

@ -0,0 +1,108 @@
#!/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")

@ -0,0 +1,123 @@
#!/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")

@ -0,0 +1,610 @@
#!/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

@ -0,0 +1,102 @@
#!/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"

@ -0,0 +1,181 @@
#!/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")

@ -0,0 +1,97 @@
#!/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

@ -0,0 +1,120 @@
#!/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

@ -0,0 +1,63 @@
#!/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

@ -0,0 +1,62 @@
#!/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

@ -0,0 +1,275 @@
#!/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

@ -0,0 +1,121 @@
#!/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

@ -0,0 +1,339 @@
#!/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

@ -0,0 +1,198 @@
#!/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

@ -0,0 +1,175 @@
#!/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

@ -0,0 +1,105 @@
#!/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

@ -0,0 +1,70 @@
#!/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")

@ -0,0 +1,115 @@
#!/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

@ -1,94 +1,94 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 1_export.py # \file 1_export.py
# \brief Run all export processes # \brief Run all export processes
# \date 2009-02-18 09:22GMT # \date 2009-02-18 09:22GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all export processes # Run all export processes
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
sys.path.append("configuration") sys.path.append("configuration")
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Export') parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Export')
# parser.add_argument('--haltonerror', '-eh', action='store_true') # parser.add_argument('--haltonerror', '-eh', action='store_true')
parser.add_argument('--includeproject', '-ipj', nargs='+') parser.add_argument('--includeproject', '-ipj', nargs='+')
parser.add_argument('--excludeproject', '-epj', nargs='+') parser.add_argument('--excludeproject', '-epj', nargs='+')
parser.add_argument('--includeprocess', '-ipc', nargs='+') parser.add_argument('--includeprocess', '-ipc', nargs='+')
parser.add_argument('--excludeprocess', '-epc', nargs='+') parser.add_argument('--excludeprocess', '-epc', nargs='+')
args = parser.parse_args() args = parser.parse_args()
if not args.includeproject == None and not args.excludeproject == None: if not args.includeproject == None and not args.excludeproject == None:
print "ERROR --includeproject cannot be combined with --excludeproject, exit." print "ERROR --includeproject cannot be combined with --excludeproject, exit."
exit() exit()
if not args.includeprocess == None and not args.excludeprocess == None: if not args.includeprocess == None and not args.excludeprocess == None:
print "ERROR --includeprocess cannot be combined with --excludeprocess, exit." print "ERROR --includeprocess cannot be combined with --excludeprocess, exit."
exit() exit()
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from tools import * from tools import *
sys.path.append(WorkspaceDirectory) sys.path.append(WorkspaceDirectory)
from projects import * from projects import *
# Log error # Log error
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Run the export processes") printLog(log, "--- Run the export processes")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# For each project # For each project
for projectName in ProjectsToProcess: for projectName in ProjectsToProcess:
if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)): if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)):
printLog(log, "PROJECT " + projectName) printLog(log, "PROJECT " + projectName)
os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName)) os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName))
os.chdir("processes") os.chdir("processes")
try: try:
if not args.includeprocess == None: if not args.includeprocess == None:
subprocess.call([ "python", "1_export.py", "--includeprocess" ] + args.includeprocess) subprocess.call([ "python", "1_export.py", "--includeprocess" ] + args.includeprocess)
elif not args.excludeprocess == None: elif not args.excludeprocess == None:
subprocess.call([ "python", "1_export.py", "--excludeprocess" ] + args.excludeprocess) subprocess.call([ "python", "1_export.py", "--excludeprocess" ] + args.excludeprocess)
else: else:
subprocess.call([ "python", "1_export.py" ]) subprocess.call([ "python", "1_export.py" ])
except Exception, e: except Exception, e:
printLog(log, "<" + projectName + "> " + str(e)) printLog(log, "<" + projectName + "> " + str(e))
os.chdir("..") os.chdir("..")
try: try:
projectLog = open("processes/log.log", "r") projectLog = open("processes/log.log", "r")
projectLogData = projectLog.read() projectLogData = projectLog.read()
projectLog.close() projectLog.close()
log.write(projectLogData) log.write(projectLogData)
except Exception, e: except Exception, e:
printLog(log, "<" + projectName + "> " + str(e)) printLog(log, "<" + projectName + "> " + str(e))
else: else:
printLog(log, "IGNORE PROJECT " + projectName) printLog(log, "IGNORE PROJECT " + projectName)
printLog(log, "") printLog(log, "")
log.close() log.close()
if os.path.isfile("1_export.log"): if os.path.isfile("1_export.log"):
os.remove("1_export.log") os.remove("1_export.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_export.log") shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_export.log")
shutil.move("log.log", "1_export.log") shutil.move("log.log", "1_export.log")

@ -1,94 +1,94 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 2_build.py # \file 2_build.py
# \brief Run all build processes # \brief Run all build processes
# \date 2009-02-18 09:22GMT # \date 2009-02-18 09:22GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all build processes # Run all build processes
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
sys.path.append("configuration") sys.path.append("configuration")
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Build') parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Build')
# parser.add_argument('--haltonerror', '-eh', action='store_true') # parser.add_argument('--haltonerror', '-eh', action='store_true')
parser.add_argument('--includeproject', '-ipj', nargs='+') parser.add_argument('--includeproject', '-ipj', nargs='+')
parser.add_argument('--excludeproject', '-epj', nargs='+') parser.add_argument('--excludeproject', '-epj', nargs='+')
parser.add_argument('--includeprocess', '-ipc', nargs='+') parser.add_argument('--includeprocess', '-ipc', nargs='+')
parser.add_argument('--excludeprocess', '-epc', nargs='+') parser.add_argument('--excludeprocess', '-epc', nargs='+')
args = parser.parse_args() args = parser.parse_args()
if not args.includeproject == None and not args.excludeproject == None: if not args.includeproject == None and not args.excludeproject == None:
print "ERROR --includeproject cannot be combined with --excludeproject, exit." print "ERROR --includeproject cannot be combined with --excludeproject, exit."
exit() exit()
if not args.includeprocess == None and not args.excludeprocess == None: if not args.includeprocess == None and not args.excludeprocess == None:
print "ERROR --includeprocess cannot be combined with --excludeprocess, exit." print "ERROR --includeprocess cannot be combined with --excludeprocess, exit."
exit() exit()
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from tools import * from tools import *
sys.path.append(WorkspaceDirectory) sys.path.append(WorkspaceDirectory)
from projects import * from projects import *
# Log error # Log error
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Run the build processes") printLog(log, "--- Run the build processes")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# For each project # For each project
for projectName in ProjectsToProcess: for projectName in ProjectsToProcess:
if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)): if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)):
printLog(log, "PROJECT " + projectName) printLog(log, "PROJECT " + projectName)
os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName)) os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName))
os.chdir("processes") os.chdir("processes")
try: try:
if not args.includeprocess == None: if not args.includeprocess == None:
subprocess.call([ "python", "2_build.py", "--includeprocess" ] + args.includeprocess) subprocess.call([ "python", "2_build.py", "--includeprocess" ] + args.includeprocess)
elif not args.excludeprocess == None: elif not args.excludeprocess == None:
subprocess.call([ "python", "2_build.py", "--excludeprocess" ] + args.excludeprocess) subprocess.call([ "python", "2_build.py", "--excludeprocess" ] + args.excludeprocess)
else: else:
subprocess.call([ "python", "2_build.py" ]) subprocess.call([ "python", "2_build.py" ])
except Exception, e: except Exception, e:
printLog(log, "<" + projectName + "> " + str(e)) printLog(log, "<" + projectName + "> " + str(e))
os.chdir("..") os.chdir("..")
try: try:
projectLog = open("processes/log.log", "r") projectLog = open("processes/log.log", "r")
projectLogData = projectLog.read() projectLogData = projectLog.read()
projectLog.close() projectLog.close()
log.write(projectLogData) log.write(projectLogData)
except Exception, e: except Exception, e:
printLog(log, "<" + projectName + "> " + str(e)) printLog(log, "<" + projectName + "> " + str(e))
else: else:
printLog(log, "IGNORE PROJECT " + projectName) printLog(log, "IGNORE PROJECT " + projectName)
printLog(log, "") printLog(log, "")
log.close() log.close()
if os.path.isfile("2_build.log"): if os.path.isfile("2_build.log"):
os.remove("2_build.log") os.remove("2_build.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_build.log") shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_build.log")
shutil.move("log.log", "2_build.log") shutil.move("log.log", "2_build.log")

@ -1,94 +1,94 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Run all install processes # \brief Run all install processes
# \date 2009-02-18 16:19GMT # \date 2009-02-18 16:19GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all install processes # Run all install processes
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
sys.path.append("configuration") sys.path.append("configuration")
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Install') parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Install')
# parser.add_argument('--haltonerror', '-eh', action='store_true') # parser.add_argument('--haltonerror', '-eh', action='store_true')
parser.add_argument('--includeproject', '-ipj', nargs='+') parser.add_argument('--includeproject', '-ipj', nargs='+')
parser.add_argument('--excludeproject', '-epj', nargs='+') parser.add_argument('--excludeproject', '-epj', nargs='+')
parser.add_argument('--includeprocess', '-ipc', nargs='+') parser.add_argument('--includeprocess', '-ipc', nargs='+')
parser.add_argument('--excludeprocess', '-epc', nargs='+') parser.add_argument('--excludeprocess', '-epc', nargs='+')
args = parser.parse_args() args = parser.parse_args()
if not args.includeproject == None and not args.excludeproject == None: if not args.includeproject == None and not args.excludeproject == None:
print "ERROR --includeproject cannot be combined with --excludeproject, exit." print "ERROR --includeproject cannot be combined with --excludeproject, exit."
exit() exit()
if not args.includeprocess == None and not args.excludeprocess == None: if not args.includeprocess == None and not args.excludeprocess == None:
print "ERROR --includeprocess cannot be combined with --excludeprocess, exit." print "ERROR --includeprocess cannot be combined with --excludeprocess, exit."
exit() exit()
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from tools import * from tools import *
sys.path.append(WorkspaceDirectory) sys.path.append(WorkspaceDirectory)
from projects import * from projects import *
# Log error # Log error
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Run the install processes") printLog(log, "--- Run the install processes")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# For each project # For each project
for projectName in ProjectsToProcess: for projectName in ProjectsToProcess:
if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)): if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)):
printLog(log, "PROJECT " + projectName) printLog(log, "PROJECT " + projectName)
os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName)) os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName))
os.chdir("processes") os.chdir("processes")
try: try:
if not args.includeprocess == None: if not args.includeprocess == None:
subprocess.call([ "python", "3_install.py", "--includeprocess" ] + args.includeprocess) subprocess.call([ "python", "3_install.py", "--includeprocess" ] + args.includeprocess)
elif not args.excludeprocess == None: elif not args.excludeprocess == None:
subprocess.call([ "python", "3_install.py", "--excludeprocess" ] + args.excludeprocess) subprocess.call([ "python", "3_install.py", "--excludeprocess" ] + args.excludeprocess)
else: else:
subprocess.call([ "python", "3_install.py" ]) subprocess.call([ "python", "3_install.py" ])
except Exception, e: except Exception, e:
printLog(log, "<" + projectName + "> " + str(e)) printLog(log, "<" + projectName + "> " + str(e))
os.chdir("..") os.chdir("..")
try: try:
projectLog = open("processes/log.log", "r") projectLog = open("processes/log.log", "r")
projectLogData = projectLog.read() projectLogData = projectLog.read()
projectLog.close() projectLog.close()
log.write(projectLogData) log.write(projectLogData)
except Exception, e: except Exception, e:
printLog(log, "<" + projectName + "> " + str(e)) printLog(log, "<" + projectName + "> " + str(e))
else: else:
printLog(log, "IGNORE PROJECT " + projectName) printLog(log, "IGNORE PROJECT " + projectName)
printLog(log, "") printLog(log, "")
log.close() log.close()
if os.path.isfile("3_install.log"): if os.path.isfile("3_install.log"):
os.remove("3_install.log") os.remove("3_install.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_install.log") shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_install.log")
shutil.move("log.log", "3_install.log") shutil.move("log.log", "3_install.log")

@ -1,181 +1,181 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 9_upload.py # \file 9_upload.py
# \brief Upload data to servers # \brief Upload data to servers
# \date 2009-02-18 16:19GMT # \date 2009-02-18 16:19GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Game data build pipeline. # Game data build pipeline.
# Upload data to servers # Upload data to servers
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2011 Kaetemi # Copyright (C) 2011 Kaetemi
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("configuration") sys.path.append("configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from tools import * from tools import *
try: try:
from upload import * from upload import *
except ImportError: except ImportError:
# Not documenting this. Because we can. # Not documenting this. Because we can.
printLog(log, "ERROR Upload not configured, bye.") printLog(log, "ERROR Upload not configured, bye.")
exit() exit()
sys.path.append(WorkspaceDirectory) sys.path.append(WorkspaceDirectory)
from projects import * from projects import *
# Log error # Log error
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Upload data to servers") printLog(log, "--- Upload data to servers")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Find tools # Find tools
# Not documenting this. Because we can. # Not documenting this. Because we can.
Psftp = findFileMultiDir(log, ToolDirectories + WindowsExeDllCfgDirectories, UploadPsftpTool) Psftp = findFileMultiDir(log, ToolDirectories + WindowsExeDllCfgDirectories, UploadPsftpTool)
printLog(log, "PSFTP " + Psftp) printLog(log, "PSFTP " + Psftp)
def downloadVersionTag(server, user, sshkey, dir): def downloadVersionTag(server, user, sshkey, dir):
if os.path.isfile("upload.tag"): if os.path.isfile("upload.tag"):
os.remove("upload.tag") os.remove("upload.tag")
if os.path.isfile("upload.batch"): if os.path.isfile("upload.batch"):
os.remove("upload.batch") os.remove("upload.batch")
ub = open("upload.batch", "w") ub = open("upload.batch", "w")
ub.write("cd " + dir + "\n") ub.write("cd " + dir + "\n")
ub.write("get upload.tag upload.tag\n") ub.write("get upload.tag upload.tag\n")
ub.write("quit\n") ub.write("quit\n")
ub.close() ub.close()
subprocess.call([ Psftp, "-b", "upload.batch", "-i", sshkey, user + "@" + server ]) subprocess.call([ Psftp, "-b", "upload.batch", "-i", sshkey, user + "@" + server ])
os.remove("upload.batch") os.remove("upload.batch")
if os.path.isfile("upload.tag"): if os.path.isfile("upload.tag"):
ft = open("upload.tag") ft = open("upload.tag")
result = float(ft.read()) # float, really result = float(ft.read()) # float, really
ft.close() ft.close()
os.remove("upload.tag") os.remove("upload.tag")
printLog(log, "INFO Upload tag is " + str(result)) printLog(log, "INFO Upload tag is " + str(result))
return result return result
else: else:
printLog(log, "WARNING Upload tag not found, uploading everything") printLog(log, "WARNING Upload tag not found, uploading everything")
return 0 return 0
def isDirectoryNeeded(ft, dir): def isDirectoryNeeded(ft, dir):
files = os.listdir(dir) files = os.listdir(dir)
for fileName in files: for fileName in files:
if isLegalFileName(fileName): if isLegalFileName(fileName):
fileFull = dir + "/" + fileName fileFull = dir + "/" + fileName
if os.path.isfile(fileFull): if os.path.isfile(fileFull):
nftf = os.stat(fileFull).st_mtime nftf = os.stat(fileFull).st_mtime
if nftf > ft: if nftf > ft:
return True return True
elif os.path.isdir(fileFull): elif os.path.isdir(fileFull):
if isDirectoryNeeded(ft, fileFull): if isDirectoryNeeded(ft, fileFull):
return True return True
elif not os.path.isdir(fileFull): elif not os.path.isdir(fileFull):
printLog(log, "isDirectoryNeeded: file not dir or file?!" + fileFull) printLog(log, "isDirectoryNeeded: file not dir or file?!" + fileFull)
return False return False
def listDirectoryUpload(ft, ub, udb, dir): def listDirectoryUpload(ft, ub, udb, dir):
nft = 0 nft = 0
files = os.listdir(dir) files = os.listdir(dir)
for fileName in files: for fileName in files:
if isLegalFileName(fileName): if isLegalFileName(fileName):
fileFull = dir + "/" + fileName fileFull = dir + "/" + fileName
if os.path.isfile(fileFull): if os.path.isfile(fileFull):
nftf = os.stat(fileFull).st_mtime nftf = os.stat(fileFull).st_mtime
if nftf > ft: if nftf > ft:
ub.write("put " + fileFull + " " + fileName + "\n") ub.write("put " + fileFull + " " + fileName + "\n")
if nftf > nft: if nftf > nft:
nft = nftf nft = nftf
elif os.path.isdir(fileFull): elif os.path.isdir(fileFull):
if isDirectoryNeeded(ft, fileFull): if isDirectoryNeeded(ft, fileFull):
udb.write("mkdir " + fileName + "\n") udb.write("mkdir " + fileName + "\n")
ub.write("cd " + fileName + "\n") ub.write("cd " + fileName + "\n")
udb.write("cd " + fileName + "\n") udb.write("cd " + fileName + "\n")
nft2 = listDirectoryUpload(ft, ub, udb, fileFull) nft2 = listDirectoryUpload(ft, ub, udb, fileFull)
if (nft2 > nft): if (nft2 > nft):
nft = nft2 nft = nft2
ub.write("cd ..\n") ub.write("cd ..\n")
udb.write("cd ..\n") udb.write("cd ..\n")
elif not os.path.isdir(fileFull): elif not os.path.isdir(fileFull):
printLog(log, "listDirectoryUpload: file not dir or file?!" + fileFull) printLog(log, "listDirectoryUpload: file not dir or file?!" + fileFull)
return nft return nft
def uploadSftp(server, user, sshkey, dir_to, dir_from, addcmd): def uploadSftp(server, user, sshkey, dir_to, dir_from, addcmd):
ft = downloadVersionTag(server, user, sshkey, dir_to) ft = downloadVersionTag(server, user, sshkey, dir_to)
if isDirectoryNeeded(ft, dir_from): if isDirectoryNeeded(ft, dir_from):
if os.path.isfile("upload_dir.batch"): if os.path.isfile("upload_dir.batch"):
os.remove("upload_dir.batch") os.remove("upload_dir.batch")
if os.path.isfile("upload.batch"): if os.path.isfile("upload.batch"):
os.remove("upload.batch") os.remove("upload.batch")
udb = open("upload_dir.batch", "w") udb = open("upload_dir.batch", "w")
udb.write("cd " + dir_to + "\n") udb.write("cd " + dir_to + "\n")
ub = open("upload.batch", "w") ub = open("upload.batch", "w")
ub.write("cd " + dir_to + "\n") ub.write("cd " + dir_to + "\n")
for ac in addcmd: for ac in addcmd:
ub.write(ac + "\n") ub.write(ac + "\n")
ftn = listDirectoryUpload(ft, ub, udb, dir_from) ftn = listDirectoryUpload(ft, ub, udb, dir_from)
if (ft > ftn): if (ft > ftn):
ftn = ft ftn = ft
nft = open("upload.tag", "w") nft = open("upload.tag", "w")
nft.write(str(ftn)) nft.write(str(ftn))
nft.close() nft.close()
ub.write("put upload.tag upload.tag\n") ub.write("put upload.tag upload.tag\n")
ub.write("quit\n") ub.write("quit\n")
ub.close() ub.close()
udb.write("quit\n") udb.write("quit\n")
udb.close() udb.close()
subprocess.call([ Psftp, "-be", "-b", "upload_dir.batch", "-i", sshkey, user + "@" + server ]) subprocess.call([ Psftp, "-be", "-b", "upload_dir.batch", "-i", sshkey, user + "@" + server ])
subprocess.call([ Psftp, "-b", "upload.batch", "-i", sshkey, user + "@" + server ]) subprocess.call([ Psftp, "-b", "upload.batch", "-i", sshkey, user + "@" + server ])
os.remove("upload_dir.batch") os.remove("upload_dir.batch")
os.remove("upload.batch") os.remove("upload.batch")
os.remove("upload.tag") os.remove("upload.tag")
else: else:
printLog(log, "SKIP " + dir_to) printLog(log, "SKIP " + dir_to)
printLog(log, ">>> Upload patch <<<") printLog(log, ">>> Upload patch <<<")
for target in UploadPatch: for target in UploadPatch:
uploadSftp(target[0], target[1], target[2], target[3], ClientPatchDirectory + "/patch", [ ]) uploadSftp(target[0], target[1], target[2], target[3], ClientPatchDirectory + "/patch", [ ])
printLog(log, ">>> Upload data_shard <<<") printLog(log, ">>> Upload data_shard <<<")
for target in UploadShard: for target in UploadShard:
uploadSftp(target[0], target[1], target[2], target[3], DataShardDirectory, [ "rm *.packed_sheets", "rm primitive_cache/*.binprim" ]) uploadSftp(target[0], target[1], target[2], target[3], DataShardDirectory, [ "rm *.packed_sheets", "rm primitive_cache/*.binprim" ])
printLog(log, ">>> Upload data_common <<<") printLog(log, ">>> Upload data_common <<<")
for target in UploadCommon: for target in UploadCommon:
uploadSftp(target[0], target[1], target[2], target[3], DataCommonDirectory, [ ]) uploadSftp(target[0], target[1], target[2], target[3], DataCommonDirectory, [ ])
printLog(log, ">>> Upload data_leveldesign/leveldesign <<<") printLog(log, ">>> Upload data_leveldesign/leveldesign <<<")
for target in UploadLeveldesign: for target in UploadLeveldesign:
uploadSftp(target[0], target[1], target[2], target[3], LeveldesignDirectory, [ ]) uploadSftp(target[0], target[1], target[2], target[3], LeveldesignDirectory, [ ])
printLog(log, ">>> Upload data_leveldesign/primitives <<<") printLog(log, ">>> Upload data_leveldesign/primitives <<<")
for target in UploadPrimitives: for target in UploadPrimitives:
uploadSftp(target[0], target[1], target[2], target[3], PrimitivesDirectory, [ ]) uploadSftp(target[0], target[1], target[2], target[3], PrimitivesDirectory, [ ])
log.close() log.close()
if os.path.isfile("9_upload.log"): if os.path.isfile("9_upload.log"):
os.remove("9_upload.log") os.remove("9_upload.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_upload.log") shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_upload.log")
shutil.move("log.log", "9_upload.log") shutil.move("log.log", "9_upload.log")

@ -1,74 +1,74 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file a1_worldedit_data.py # \file a1_worldedit_data.py
# \brief Install worldedit data # \brief Install worldedit data
# \date 2014-09-10 14:01GMT # \date 2014-09-10 14:01GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install worldedit data # Install worldedit data
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2014 by authors # Copyright (C) 2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("configuration") sys.path.append("configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from tools import * from tools import *
sys.path.append(WorkspaceDirectory) sys.path.append(WorkspaceDirectory)
from projects import * from projects import *
# Log error # Log error
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install worldedit data") printLog(log, "--- Install worldedit data")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
for ecosystem in WorldEditEcosystems: for ecosystem in WorldEditEcosystems:
ecosystemName = ecosystem[0] ecosystemName = ecosystem[0]
srcZoneLigos = ExportBuildDirectory + "/ecosystems/" + ecosystemName + "/ligo_es/zoneligos/" srcZoneLigos = ExportBuildDirectory + "/ecosystems/" + ecosystemName + "/ligo_es/zoneligos/"
dstZoneLigos = WorldEditInstallDirectory + "/" + ecosystemName + "/zoneligos/" dstZoneLigos = WorldEditInstallDirectory + "/" + ecosystemName + "/zoneligos/"
mkPath(log, srcZoneLigos) mkPath(log, srcZoneLigos)
mkPath(log, dstZoneLigos) mkPath(log, dstZoneLigos)
copyFilesNoTreeIfNeeded(log, srcZoneLigos, dstZoneLigos) copyFilesNoTreeIfNeeded(log, srcZoneLigos, dstZoneLigos)
srcZoneBitmaps = DatabaseDirectory + "/landscape/ligo/" + ecosystemName + "/zonebitmaps/" srcZoneBitmaps = DatabaseDirectory + "/landscape/ligo/" + ecosystemName + "/zonebitmaps/"
dstZoneBitmaps = WorldEditInstallDirectory + "/" + ecosystemName + "/zonebitmaps/" dstZoneBitmaps = WorldEditInstallDirectory + "/" + ecosystemName + "/zonebitmaps/"
mkPath(log, srcZoneBitmaps) mkPath(log, srcZoneBitmaps)
mkPath(log, dstZoneBitmaps) mkPath(log, dstZoneBitmaps)
copyFilesExtNoTreeIfNeeded(log, srcZoneBitmaps, dstZoneBitmaps, ".tga") copyFilesExtNoTreeIfNeeded(log, srcZoneBitmaps, dstZoneBitmaps, ".tga")
copyFilesExtNoTreeIfNeeded(log, srcZoneBitmaps, dstZoneBitmaps, ".png") copyFilesExtNoTreeIfNeeded(log, srcZoneBitmaps, dstZoneBitmaps, ".png")
dstCollisionMap = WorldEditInstallDirectory + "/" + ecosystemName + "/collisionmap/" dstCollisionMap = WorldEditInstallDirectory + "/" + ecosystemName + "/collisionmap/"
mkPath(log, dstCollisionMap) mkPath(log, dstCollisionMap)
for continentName in ecosystem[1]: for continentName in ecosystem[1]:
srcCollisionMap = ExportBuildDirectory + "/continents/" + continentName + "/ai_wmap/" srcCollisionMap = ExportBuildDirectory + "/continents/" + continentName + "/ai_wmap/"
mkPath(log, srcCollisionMap) mkPath(log, srcCollisionMap)
copyFilesExtNoTreeIfNeeded(log, srcCollisionMap, dstCollisionMap, ".tga") copyFilesExtNoTreeIfNeeded(log, srcCollisionMap, dstCollisionMap, ".tga")
copyFilesExtNoTreeIfNeeded(log, srcCollisionMap, dstCollisionMap, ".png") copyFilesExtNoTreeIfNeeded(log, srcCollisionMap, dstCollisionMap, ".png")
printLog(log, "") printLog(log, "")
log.close() log.close()
if os.path.isfile("a1_worldedit_data.log"): if os.path.isfile("a1_worldedit_data.log"):
os.remove("a1_worldedit_data.log") os.remove("a1_worldedit_data.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_worldedit_data.log") shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_worldedit_data.log")
shutil.move("log.log", "a1_worldedit_data.log") shutil.move("log.log", "a1_worldedit_data.log")

@ -1,93 +1,93 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file b2_shard_data.py # \file b2_shard_data.py
# \brief Install shard data # \brief Install shard data
# \date 2009-02-18 16:19GMT # \date 2009-02-18 16:19GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install shard data # Install shard data
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("configuration") sys.path.append("configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from tools import * from tools import *
sys.path.append(WorkspaceDirectory) sys.path.append(WorkspaceDirectory)
from projects import * from projects import *
# Log error # Log error
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install shard data") printLog(log, "--- Install shard data")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
for dir in InstallShardDataDirectories: for dir in InstallShardDataDirectories:
printLog(log, "SHARD PACKAGE " + dir) printLog(log, "SHARD PACKAGE " + dir)
mkPath(log, ShardInstallDirectory + "/" + dir) mkPath(log, ShardInstallDirectory + "/" + dir)
printLog(log, "FROM " + dir) printLog(log, "FROM " + dir)
mkPath(log, InstallDirectory + "/" + dir) mkPath(log, InstallDirectory + "/" + dir)
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + dir, ShardInstallDirectory + "/" + dir) copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + dir, ShardInstallDirectory + "/" + dir)
for package in InstallShardDataFiles: for package in InstallShardDataFiles:
dstDir = package[0] dstDir = package[0]
mkPath(log, ShardInstallDirectory + "/" + dstDir) mkPath(log, ShardInstallDirectory + "/" + dstDir)
printLog(log, "SHARD PACKAGE " + dstDir) printLog(log, "SHARD PACKAGE " + dstDir)
copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardInstallDirectory + "/" + dstDir, package[1]) copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardInstallDirectory + "/" + dstDir, package[1])
for multiDir in InstallShardDataMultiDirectories: for multiDir in InstallShardDataMultiDirectories:
dstDir = multiDir[0] dstDir = multiDir[0]
mkPath(log, ShardInstallDirectory + "/" + dstDir) mkPath(log, ShardInstallDirectory + "/" + dstDir)
printLog(log, "SHARD PACKAGE " + dstDir) printLog(log, "SHARD PACKAGE " + dstDir)
for srcDir in multiDir[1]: for srcDir in multiDir[1]:
printLog(log, "FROM " + srcDir) printLog(log, "FROM " + srcDir)
mkPath(log, InstallDirectory + "/" + srcDir) mkPath(log, InstallDirectory + "/" + srcDir)
mkPath(log, ShardInstallDirectory + "/" + dstDir + "/" + srcDir) mkPath(log, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + srcDir, ShardInstallDirectory + "/" + dstDir + "/" + srcDir) copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + srcDir, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
for multiDir in InstallShardDataPrimitivesDirectories: for multiDir in InstallShardDataPrimitivesDirectories:
dstDir = multiDir[0] dstDir = multiDir[0]
mkPath(log, ShardInstallDirectory + "/" + dstDir) mkPath(log, ShardInstallDirectory + "/" + dstDir)
printLog(log, "SHARD PACKAGE " + dstDir) printLog(log, "SHARD PACKAGE " + dstDir)
for srcDir in multiDir[1]: for srcDir in multiDir[1]:
printLog(log, "FROM PRIMITIVES " + srcDir) printLog(log, "FROM PRIMITIVES " + srcDir)
mkPath(log, PrimitivesDirectory + "/" + srcDir) mkPath(log, PrimitivesDirectory + "/" + srcDir)
mkPath(log, ShardInstallDirectory + "/" + dstDir + "/" + srcDir) mkPath(log, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
copyFilesNoTreeIfNeeded(log, PrimitivesDirectory + "/" + srcDir, ShardInstallDirectory + "/" + dstDir + "/" + srcDir) copyFilesNoTreeIfNeeded(log, PrimitivesDirectory + "/" + srcDir, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
for execDir in InstallShardDataExecutables: for execDir in InstallShardDataExecutables:
dstDir = execDir[0] dstDir = execDir[0]
mkPath(log, LinuxServiceExecutableDirectory) mkPath(log, LinuxServiceExecutableDirectory)
mkPath(log, PatchmanCfgDefaultDirectory) mkPath(log, PatchmanCfgDefaultDirectory)
mkPath(log, InstallDirectory) mkPath(log, InstallDirectory)
mkPath(log, ShardInstallDirectory + "/" + dstDir) mkPath(log, ShardInstallDirectory + "/" + dstDir)
printLog(log, "SHARD PACKAGE " + dstDir) printLog(log, "SHARD PACKAGE " + dstDir)
copyFileIfNeeded(log, LinuxServiceExecutableDirectory + "/" + execDir[1][1], ShardInstallDirectory + "/" + dstDir + "/" + execDir[1][0]) copyFileIfNeeded(log, LinuxServiceExecutableDirectory + "/" + execDir[1][1], ShardInstallDirectory + "/" + dstDir + "/" + execDir[1][0])
copyFileListNoTreeIfNeeded(log, PatchmanCfgDefaultDirectory, ShardInstallDirectory + "/" + dstDir, execDir[2]) copyFileListNoTreeIfNeeded(log, PatchmanCfgDefaultDirectory, ShardInstallDirectory + "/" + dstDir, execDir[2])
copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardInstallDirectory + "/" + dstDir, execDir[3]) copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardInstallDirectory + "/" + dstDir, execDir[3])
printLog(log, "") printLog(log, "")
log.close() log.close()
if os.path.isfile("b2_shard_data.log"): if os.path.isfile("b2_shard_data.log"):
os.remove("b2_shard_data.log") os.remove("b2_shard_data.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_shard_data.log") shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_shard_data.log")
shutil.move("log.log", "b2_shard_data.log") shutil.move("log.log", "b2_shard_data.log")

@ -1,86 +1,86 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file d2_client_install.py # \file d2_client_install.py
# \brief Install to client install # \brief Install to client install
# \date 2009-02-18 16:19GMT # \date 2009-02-18 16:19GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install to client install # Install to client install
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("configuration") sys.path.append("configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from tools import * from tools import *
sys.path.append(WorkspaceDirectory) sys.path.append(WorkspaceDirectory)
from projects import * from projects import *
# Log error # Log error
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install to client install") printLog(log, "--- Install to client install")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
for category in InstallClientData: for category in InstallClientData:
printLog(log, "CATEGORY " + category["Name"]) printLog(log, "CATEGORY " + category["Name"])
packExt = ".bnp" packExt = ".bnp"
if (category["StreamedPackages"]): if (category["StreamedPackages"]):
packExt = ".snp" packExt = ".snp"
if (category["UnpackTo"] != None): if (category["UnpackTo"] != None):
targetPath = ClientInstallDirectory targetPath = ClientInstallDirectory
if (category["UnpackTo"] != ""): if (category["UnpackTo"] != ""):
targetPath += "/" + category["UnpackTo"] targetPath += "/" + category["UnpackTo"]
mkPath(log, targetPath) mkPath(log, targetPath)
for package in category["Packages"]: for package in category["Packages"]:
printLog(log, "PACKAGE " + package[0]) printLog(log, "PACKAGE " + package[0])
mkPath(log, InstallDirectory + "/" + package[0]) mkPath(log, InstallDirectory + "/" + package[0])
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + package[0], targetPath) copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + package[0], targetPath)
else: else:
sourcePath = ClientPatchDirectory + "/bnp" sourcePath = ClientPatchDirectory + "/bnp"
targetPath = ClientInstallDirectory + "/data" targetPath = ClientInstallDirectory + "/data"
mkPath(log, targetPath) mkPath(log, targetPath)
for package in category["Packages"]: for package in category["Packages"]:
printLog(log, "PACKAGE " + package[0]) printLog(log, "PACKAGE " + package[0])
sourceBnp = sourcePath + "/" + package[0] + packExt sourceBnp = sourcePath + "/" + package[0] + packExt
targetBnp = targetPath + "/" + package[0] + packExt targetBnp = targetPath + "/" + package[0] + packExt
if (len(package[1]) > 0): if (len(package[1]) > 0):
sourceBnp = sourcePath + "/" + package[1][0] sourceBnp = sourcePath + "/" + package[1][0]
targetBnp = targetPath + "/" + package[1][0] targetBnp = targetPath + "/" + package[1][0]
printLog(log, "TARGET " + package[1][0]) printLog(log, "TARGET " + package[1][0])
copyFileIfNeeded(log, sourceBnp, targetBnp) copyFileIfNeeded(log, sourceBnp, targetBnp)
for ref in category["Refs"]: for ref in category["Refs"]:
printLog(log, "REFERENCE " + ref) printLog(log, "REFERENCE " + ref)
sourceRef = sourcePath + "/" + ref + "_.ref" sourceRef = sourcePath + "/" + ref + "_.ref"
targetRef = targetPath + "/" + ref + "_.ref" targetRef = targetPath + "/" + ref + "_.ref"
copyFileIfNeeded(log, sourceRef, targetRef) copyFileIfNeeded(log, sourceRef, targetRef)
printLog(log, "") printLog(log, "")
log.close() log.close()
if os.path.isfile("d2_client_install.log"): if os.path.isfile("d2_client_install.log"):
os.remove("d2_client_install.log") os.remove("d2_client_install.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_client_install.log") shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_client_install.log")
shutil.move("log.log", "d2_client_install.log") shutil.move("log.log", "d2_client_install.log")

@ -1,32 +1,32 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file export_build_install.py # \file export_build_install.py
# \brief Run all processes # \brief Run all processes
# \date 2009-02-18 15:28GMT # \date 2009-02-18 15:28GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all processes # Run all processes
# #
# NeL - MMORPG Framework <http:#dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http:#dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http:#www.gnu.org/licenses/>.
# #
import shutil, subprocess import shutil, subprocess
subprocess.call([ "python", "1_export.py" ]) subprocess.call([ "python", "1_export.py" ])
subprocess.call([ "python", "2_build.py" ]) subprocess.call([ "python", "2_build.py" ])
subprocess.call([ "python", "3_install.py" ]) subprocess.call([ "python", "3_install.py" ])

@ -1,220 +1,220 @@
#!/usr/bin/python #!/usr/bin/python
# #
# ################################################################# # #################################################################
# ## %PreGenWarning% # ## %PreGenWarning%
# ################################################################# # #################################################################
# #
# \file directories.py # \file directories.py
# \brief Directories configuration # \brief Directories configuration
# \date %PreGenDateTimeStamp% # \date %PreGenDateTimeStamp%
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# \date 2001-2005 # \date 2001-2005
# \author Nevrax # \author Nevrax
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Directories configuration for '%PreGenEcosystemName%' ecosystem. # Directories configuration for '%PreGenEcosystemName%' ecosystem.
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
# *** ECOSYSTEM AND CONTINENT NAMES *** # *** ECOSYSTEM AND CONTINENT NAMES ***
EcosystemName = "%PreGenEcosystemName%" EcosystemName = "%PreGenEcosystemName%"
EcosystemPath = "ecosystems/" + EcosystemName EcosystemPath = "ecosystems/" + EcosystemName
CommonName = EcosystemName CommonName = EcosystemName
CommonPath = EcosystemPath CommonPath = EcosystemPath
DatabaseRootName = "%PreGenDatabaseRootName%" DatabaseRootName = "%PreGenDatabaseRootName%"
DatabaseRootPath = "stuff/" + DatabaseRootName DatabaseRootPath = "stuff/" + DatabaseRootName
# *** SOURCE DIRECTORIES IN THE DATABASE *** # *** SOURCE DIRECTORIES IN THE DATABASE ***
# Shape directories # Shape directories
ShapeSourceDirectories = [ ] ShapeSourceDirectories = [ ]
ShapeSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ] ShapeSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
ShapeSourceDirectories += [ "landscape/ligo/" + EcosystemName + "/max" ] ShapeSourceDirectories += [ "landscape/ligo/" + EcosystemName + "/max" ]
# Maps directories # Maps directories
MapSourceDirectories = [ ] MapSourceDirectories = [ ]
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures" ] MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures" ]
%PreGenMapSubdirectories%MapSourceDirectories += [ "landscape/microveget/" + EcosystemName + "" ] %PreGenMapSubdirectories%MapSourceDirectories += [ "landscape/microveget/" + EcosystemName + "" ]
MapSourceDirectories += [ "landscape/water/meshes/" + EcosystemName + "" ] MapSourceDirectories += [ "landscape/water/meshes/" + EcosystemName + "" ]
MapUncompressedSourceDirectories = [ ] MapUncompressedSourceDirectories = [ ]
# Tiles directories # Tiles directories
TilesSourceDirectories = [ ] TilesSourceDirectories = [ ]
%PreGenTileSourceDirectories% %PreGenTileSourceDirectories%
# Tiles root directory # Tiles root directory
TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
# Displace directory # Displace directory
DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace" DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace"
# Do not use, needs to be removed and fixed in processes # Do not use, needs to be removed and fixed in processes
DisplaceSourceDirectories = [ ] DisplaceSourceDirectories = [ ]
DisplaceSourceDirectories += [ DisplaceSourceDirectory ] DisplaceSourceDirectories += [ DisplaceSourceDirectory ]
# Bank directory # Bank directory
BankSourceDirectory = "landscape/_texture_tiles/" + EcosystemName BankSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
# Vegetable set directories # Vegetable set directories
VegetSetSourceDirectories = [ ] VegetSetSourceDirectories = [ ]
VegetSetSourceDirectories += [ "landscape/microveget/" + EcosystemName ] VegetSetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
# Veget directories # Veget directories
VegetSourceDirectories = [ ] VegetSourceDirectories = [ ]
VegetSourceDirectories += [ "landscape/microveget/" + EcosystemName ] VegetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
# Ligo directories # Ligo directories
LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max" LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
# Zone directories # Zone directories
ZoneSourceDirectory = [ "landscape/zones/" + EcosystemName ] # For old snowballs style landscape when not using ligo ZoneSourceDirectory = [ "landscape/zones/" + EcosystemName ] # For old snowballs style landscape when not using ligo
# Ig landscape directories # Ig landscape directories
IgLandSourceDirectory = "_invalid" IgLandSourceDirectory = "_invalid"
# Ig other directories # Ig other directories
IgOtherSourceDirectory = "_invalid" IgOtherSourceDirectory = "_invalid"
# PACS primitives directories # PACS primitives directories
PacsPrimSourceDirectories = [ ] PacsPrimSourceDirectories = [ ]
PacsPrimSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ] PacsPrimSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
# *** LOOKUP DIRECTORIES WITHIN THE BUILD PIPELINE *** (TODO: use these instead of search_pathes in properties(_base).cfg) # *** LOOKUP DIRECTORIES WITHIN THE BUILD PIPELINE *** (TODO: use these instead of search_pathes in properties(_base).cfg)
# Ig lookup directories used by rbank # Ig lookup directories used by rbank
IgLookupDirectories = [ ] IgLookupDirectories = [ ]
# Shape lookup directories used by rbank # Shape lookup directories used by rbank
ShapeLookupDirectories = [ ] ShapeLookupDirectories = [ ]
ShapeLookupDirectories += [ EcosystemPath + "/shape_clodtex_build" ] ShapeLookupDirectories += [ EcosystemPath + "/shape_clodtex_build" ]
ShapeLookupDirectories += [ EcosystemPath + "/shape_with_coarse_mesh" ] ShapeLookupDirectories += [ EcosystemPath + "/shape_with_coarse_mesh" ]
# Map lookup directories not yet used # Map lookup directories not yet used
MapLookupDirectories = [ ] MapLookupDirectories = [ ]
MapLookupDirectories += [ EcosystemPath + "/map_export" ] MapLookupDirectories += [ EcosystemPath + "/map_export" ]
MapLookupDirectories += [ EcosystemPath + "/map_uncompressed" ] MapLookupDirectories += [ EcosystemPath + "/map_uncompressed" ]
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE *** # *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
# Map directories # Map directories
MapExportDirectory = CommonPath + "/map_export" MapExportDirectory = CommonPath + "/map_export"
MapUncompressedExportDirectory = CommonPath + "/map_uncompressed" MapUncompressedExportDirectory = CommonPath + "/map_uncompressed"
# Shape directories # Shape directories
ShapeTagExportDirectory = CommonPath + "/shape_tag" ShapeTagExportDirectory = CommonPath + "/shape_tag"
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized" ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh" ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized" ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
ShapeAnimExportDirectory = CommonPath + "/shape_anim" ShapeAnimExportDirectory = CommonPath + "/shape_anim"
# Smallbank directories # Smallbank directories
SmallbankExportDirectory = CommonPath + "/smallbank" SmallbankExportDirectory = CommonPath + "/smallbank"
# Tiles directories # Tiles directories
TilesExportDirectory = CommonPath + "/tiles" TilesExportDirectory = CommonPath + "/tiles"
# Tiles directories # Tiles directories
DisplaceExportDirectory = CommonPath + "/diplace" DisplaceExportDirectory = CommonPath + "/diplace"
# Veget directories # Veget directories
VegetExportDirectory = CommonPath + "/veget" VegetExportDirectory = CommonPath + "/veget"
VegetTagExportDirectory = CommonPath + "/veget_tag" VegetTagExportDirectory = CommonPath + "/veget_tag"
# Veget Set directories # Veget Set directories
VegetSetExportDirectory = CommonPath + "/veget_set" VegetSetExportDirectory = CommonPath + "/veget_set"
# Ligo directories # Ligo directories
LigoEcosystemExportDirectory = CommonPath + "/ligo_es" LigoEcosystemExportDirectory = CommonPath + "/ligo_es"
LigoEcosystemIgExportDirectory = LigoEcosystemExportDirectory + "/igs" LigoEcosystemIgExportDirectory = LigoEcosystemExportDirectory + "/igs"
LigoEcosystemZoneExportDirectory = LigoEcosystemExportDirectory + "/zones" LigoEcosystemZoneExportDirectory = LigoEcosystemExportDirectory + "/zones"
LigoEcosystemZoneLigoExportDirectory = LigoEcosystemExportDirectory + "/zoneligos" LigoEcosystemZoneLigoExportDirectory = LigoEcosystemExportDirectory + "/zoneligos"
LigoEcosystemCmbExportDirectory = LigoEcosystemExportDirectory + "/cmb" LigoEcosystemCmbExportDirectory = LigoEcosystemExportDirectory + "/cmb"
LigoEcosystemTagExportDirectory = CommonPath + "/ligo_es_tag" LigoEcosystemTagExportDirectory = CommonPath + "/ligo_es_tag"
# Zone directories # Zone directories
ZoneExportDirectory = CommonPath + "/zone" ZoneExportDirectory = CommonPath + "/zone"
# PACS primitives directories # PACS primitives directories
PacsPrimExportDirectory = CommonPath + "/pacs_prim" PacsPrimExportDirectory = CommonPath + "/pacs_prim"
PacsPrimTagExportDirectory = CommonPath + "/pacs_prim_tag" PacsPrimTagExportDirectory = CommonPath + "/pacs_prim_tag"
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE *** # *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
# Map directories # Map directories
MapBuildDirectory = CommonPath + "/map" MapBuildDirectory = CommonPath + "/map"
MapPanoplyBuildDirectory = CommonPath + "/map_panoply" MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
MapPanoplyHlsInfoBuildDirectory = CommonPath + "/map_panoply_hls_info" MapPanoplyHlsInfoBuildDirectory = CommonPath + "/map_panoply_hls_info"
MapPanoplyHlsBankBuildDirectory = CommonPath + "/map_panoply_hls_bank" MapPanoplyHlsBankBuildDirectory = CommonPath + "/map_panoply_hls_bank"
MapPanoplyCacheBuildDirectory = CommonPath + "/map_panoply_cache" MapPanoplyCacheBuildDirectory = CommonPath + "/map_panoply_cache"
MapTagBuildDirectory = CommonPath + "/map_tag" MapTagBuildDirectory = CommonPath + "/map_tag"
# Shape directories # Shape directories
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build" ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded" ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap" ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits" ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
# Farbank directories # Farbank directories
FarbankBuildDirectory = CommonPath + "/farbank" FarbankBuildDirectory = CommonPath + "/farbank"
# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED *********** # Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
IgLandBuildDirectory = "_invalid" IgLandBuildDirectory = "_invalid"
IgOtherBuildDirectory = "_invalid" IgOtherBuildDirectory = "_invalid"
# Rbank directories # Rbank directories
RbankOutputBuildDirectory = "_invalid" RbankOutputBuildDirectory = "_invalid"
# Ligo directories # Ligo directories
# *** INSTALL DIRECTORIES IN THE CLIENT DATA *** # *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
# Map directory # Map directory
MapInstallDirectory = CommonName + "_maps" MapInstallDirectory = CommonName + "_maps"
BitmapInstallDirectory = MapInstallDirectory BitmapInstallDirectory = MapInstallDirectory
# Shape directory # Shape directory
ShapeInstallDirectory = CommonName + "_shapes" ShapeInstallDirectory = CommonName + "_shapes"
# Lightmap directory # Lightmap directory
LightmapInstallDirectory = CommonName + "_lightmaps" LightmapInstallDirectory = CommonName + "_lightmaps"
# Tile directory # Tile directory
TilesInstallDirectory = CommonName + "_tiles" TilesInstallDirectory = CommonName + "_tiles"
# Displace directory # Displace directory
DisplaceInstallDirectory = CommonName + "_displaces" DisplaceInstallDirectory = CommonName + "_displaces"
# Bank directory # Bank directory
BankInstallDirectory = CommonName + "_bank" BankInstallDirectory = CommonName + "_bank"
# Vegetable set directory # Vegetable set directory
VegetSetInstallDirectory = CommonName + "_vegetable_sets" VegetSetInstallDirectory = CommonName + "_vegetable_sets"
# Vegetable shape directory # Vegetable shape directory
VegetInstallDirectory = CommonName + "_vegetables" VegetInstallDirectory = CommonName + "_vegetables"
# PACS primitives directories # PACS primitives directories
PacsPrimInstallDirectory = CommonName + "_pacs_prim" PacsPrimInstallDirectory = CommonName + "_pacs_prim"

@ -1,122 +1,122 @@
#!/usr/bin/python #!/usr/bin/python
# #
# ################################################################# # #################################################################
# ## %PreGenWarning% # ## %PreGenWarning%
# ################################################################# # #################################################################
# #
# \file config.py # \file config.py
# \brief Process configuration # \brief Process configuration
# \date %PreGenDateTimeStamp% # \date %PreGenDateTimeStamp%
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Process configuration for '%PreGenEcosystemName%' ecosystem. # Process configuration for '%PreGenEcosystemName%' ecosystem.
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
# *** PROCESS CONFIGURATION *** # *** PROCESS CONFIGURATION ***
# *** PROCESS CONFIG *** # *** PROCESS CONFIG ***
ProcessToComplete = [ ] ProcessToComplete = [ ]
ProcessToComplete += [ "shape" ] ProcessToComplete += [ "shape" ]
ProcessToComplete += [ "map" ] ProcessToComplete += [ "map" ]
ProcessToComplete += [ "smallbank" ] ProcessToComplete += [ "smallbank" ]
ProcessToComplete += [ "farbank" ] ProcessToComplete += [ "farbank" ]
ProcessToComplete += [ "tiles" ] ProcessToComplete += [ "tiles" ]
ProcessToComplete += [ "displace" ] ProcessToComplete += [ "displace" ]
ProcessToComplete += [ "veget" ] ProcessToComplete += [ "veget" ]
ProcessToComplete += [ "vegetset" ] ProcessToComplete += [ "vegetset" ]
ProcessToComplete += [ "ligo" ] ProcessToComplete += [ "ligo" ]
ProcessToComplete += [ "pacs_prim" ] ProcessToComplete += [ "pacs_prim" ]
# *** ECOSYSTEM AND CONTINENT NAMES *** # *** ECOSYSTEM AND CONTINENT NAMES ***
EcosystemName = "%PreGenEcosystemName%" EcosystemName = "%PreGenEcosystemName%"
EcosystemPath = "ecosystems/" + EcosystemName EcosystemPath = "ecosystems/" + EcosystemName
CommonName = EcosystemName CommonName = EcosystemName
CommonPath = EcosystemPath CommonPath = EcosystemPath
# *** MAP EXPORT OPTIONS *** # *** MAP EXPORT OPTIONS ***
PanoplyFileList = [ ] PanoplyFileList = [ ]
HlsBankFileName = "" HlsBankFileName = ""
# *** SHAPE EXPORT OPTIONS *** # *** SHAPE EXPORT OPTIONS ***
# Compute lightmaps ? # Compute lightmaps ?
ShapeExportOptExportLighting = "%PreGenShapeExportOptExportLighting%" ShapeExportOptExportLighting = "%PreGenShapeExportOptExportLighting%"
# Cast shadow in lightmap ? # Cast shadow in lightmap ?
ShapeExportOptShadow = "%PreGenShapeExportOptShadow%" ShapeExportOptShadow = "%PreGenShapeExportOptShadow%"
# Lighting limits. 0 : normal, 1 : soft shadows # Lighting limits. 0 : normal, 1 : soft shadows
ShapeExportOptLightingLimit = %PreGenShapeExportOptLightingLimit% ShapeExportOptLightingLimit = %PreGenShapeExportOptLightingLimit%
# Lightmap lumel size # Lightmap lumel size
ShapeExportOptLumelSize = "%PreGenShapeExportOptLumelSize%" ShapeExportOptLumelSize = "%PreGenShapeExportOptLumelSize%"
# Oversampling value. Can be 1, 2, 4 or 8 # Oversampling value. Can be 1, 2, 4 or 8
ShapeExportOptOversampling = %PreGenShapeExportOptOversampling% ShapeExportOptOversampling = %PreGenShapeExportOptOversampling%
# Does the lightmap must be generated in 8 bits format ? # Does the lightmap must be generated in 8 bits format ?
ShapeExportOpt8BitsLightmap = "%PreGenShapeExportOpt8BitsLightmap%" ShapeExportOpt8BitsLightmap = "%PreGenShapeExportOpt8BitsLightmap%"
# Does the lightmaps export must generate logs ? # Does the lightmaps export must generate logs ?
ShapeExportOptLightmapLog = "%PreGenShapeExportOptLightmapLog%" ShapeExportOptLightmapLog = "%PreGenShapeExportOptLightmapLog%"
# Coarse mesh texture mul size # Coarse mesh texture mul size
TextureMulSizeValue = "%PreGenTextureMulSizeValue%" TextureMulSizeValue = "%PreGenTextureMulSizeValue%"
ClodConfigFile = "" ClodConfigFile = ""
# *** COARSE MESH TEXTURE NAME *** # *** COARSE MESH TEXTURE NAME ***
CoarseMeshTextureNames = [ ] CoarseMeshTextureNames = [ ]
%PreGenCoarseMeshTextureNames% %PreGenCoarseMeshTextureNames%
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM *** # *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
MultipleTilesPostfix = [ ] MultipleTilesPostfix = [ ]
%PreGenMultipleTilesPostfix% %PreGenMultipleTilesPostfix%
# *** BANK EXPORT OPTIONS *** # *** BANK EXPORT OPTIONS ***
# Name of the tilebank to use # Name of the tilebank to use
BankTileBankName = EcosystemName BankTileBankName = EcosystemName
# *** RBANK EXPORT OPTIONS *** # *** RBANK EXPORT OPTIONS ***
# Output names # Output names
RbankRbankName = "_invalid" RbankRbankName = "_invalid"
# *** LIGO OPTIONS *** # *** LIGO OPTIONS ***
LigoExportLand = "" LigoExportLand = ""
LigoExportOnePass = 0 LigoExportOnePass = 0
# *** MAPS OPTIONS *** # *** MAPS OPTIONS ***
ReduceBitmapFactor = 0 ReduceBitmapFactor = 0
# list all panoply files # list all panoply files
MapPanoplyFileList = None MapPanoplyFileList = None
# name of the .hlsbank to build. # name of the .hlsbank to build.
MapHlsBankFileName = None MapHlsBankFileName = None
# *** SHAPE BUILD OPTIONS * # *** SHAPE BUILD OPTIONS *
BuildShadowSkinEnabled = False BuildShadowSkinEnabled = False
ClodConfigFile = "" ClodConfigFile = ""
# *** PACS_PRIM OPTIONS *** # *** PACS_PRIM OPTIONS ***
WantLandscapeColPrimPacsList = True WantLandscapeColPrimPacsList = True

@ -1,65 +1,65 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief Run all setup processes # \brief Run all setup processes
# \date 2009-02-18 15:28GMT # \date 2009-02-18 15:28GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all setup processes # Run all setup processes
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../configuration") sys.path.append("../configuration")
if os.path.isfile("generate_all.log"): if os.path.isfile("generate_all.log"):
os.remove("generate_all.log") os.remove("generate_all.log")
log = open("generate_all.log", "w") log = open("generate_all.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from tools import * from tools import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Generate all") printLog(log, "--- Generate all")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
try: try:
subprocess.call([ "python", "generate_simple_max_exporters.py" ]) subprocess.call([ "python", "generate_simple_max_exporters.py" ])
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
printLog(log, "") printLog(log, "")
try: try:
subprocess.call([ "python", "generate_tagged_max_exporters.py" ]) subprocess.call([ "python", "generate_tagged_max_exporters.py" ])
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
printLog(log, "") printLog(log, "")
try: try:
subprocess.call([ "python", "generate_ecosystem_projects.py" ]) subprocess.call([ "python", "generate_ecosystem_projects.py" ])
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
printLog(log, "") printLog(log, "")
log.close() log.close()

@ -1,278 +1,278 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file generate_ecosystem_projects.py # \file generate_ecosystem_projects.py
# \brief Run all setup processes # \brief Run all setup processes
# \date 2010-09-02 10:36GMT # \date 2010-09-02 10:36GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Generate ecosystem projects # Generate ecosystem projects
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../configuration") sys.path.append("../configuration")
if os.path.isfile("generate_ecosystem_projects.log"): if os.path.isfile("generate_ecosystem_projects.log"):
os.remove("generate_ecosystem_projects.log") os.remove("generate_ecosystem_projects.log")
log = open("generate_ecosystem_projects.log", "w") log = open("generate_ecosystem_projects.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from tools import * from tools import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Generate ecosystem projects") printLog(log, "--- Generate ecosystem projects")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
templateDir = os.getcwd().replace("\\", "/") + "/ecosystem_project_template" templateDir = os.getcwd().replace("\\", "/") + "/ecosystem_project_template"
mkPath(log, templateDir) mkPath(log, templateDir)
os.chdir("..") os.chdir("..")
# Scroll down to add an ecosystem. # Scroll down to add an ecosystem.
DefaultShapeExportOptExportLighting = "true" DefaultShapeExportOptExportLighting = "true"
DefaultShapeExportOptShadow = "true" DefaultShapeExportOptShadow = "true"
DefaultShapeExportOptLightingLimit = "1" DefaultShapeExportOptLightingLimit = "1"
DefaultShapeExportOptLumelSize = "0.25" DefaultShapeExportOptLumelSize = "0.25"
DefaultShapeExportOptOversampling = "1" DefaultShapeExportOptOversampling = "1"
DefaultShapeExportOpt8BitsLightmap = "true" DefaultShapeExportOpt8BitsLightmap = "true"
DefaultShapeExportOptLightmapLog = "true" DefaultShapeExportOptLightmapLog = "true"
DefaultTextureMulSizeValue = "1.5" DefaultTextureMulSizeValue = "1.5"
DefaultSeasonSuffixes = [ "sp" ] + [ "su" ] + [ "au" ] + [ "wi" ] DefaultSeasonSuffixes = [ "sp" ] + [ "su" ] + [ "au" ] + [ "wi" ]
DefaultMapSubdirectories = [ ] DefaultMapSubdirectories = [ ]
DefaultTileDirectories = [ ] DefaultTileDirectories = [ ]
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
ShapeExportOptShadow = DefaultShapeExportOptShadow ShapeExportOptShadow = DefaultShapeExportOptShadow
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
ShapeExportOptOversampling = DefaultShapeExportOptOversampling ShapeExportOptOversampling = DefaultShapeExportOptOversampling
ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
TextureMulSizeValue = DefaultTextureMulSizeValue TextureMulSizeValue = DefaultTextureMulSizeValue
SeasonSuffixes = DefaultSeasonSuffixes SeasonSuffixes = DefaultSeasonSuffixes
MapSubdirectories = DefaultMapSubdirectories MapSubdirectories = DefaultMapSubdirectories
TileDirectories = DefaultTileDirectories TileDirectories = DefaultTileDirectories
PreGenDateTimeStamp = None PreGenDateTimeStamp = None
PreGenEcosystemName = None PreGenEcosystemName = None
PreGenDatabaseRootName = None PreGenDatabaseRootName = None
PreGenCoarseMeshTextureNames = None PreGenCoarseMeshTextureNames = None
PreGenMultipleTilesPostfix = None PreGenMultipleTilesPostfix = None
PreGenMapSubdirectories = None PreGenMapSubdirectories = None
PreGenTileSourceDirectories = None PreGenTileSourceDirectories = None
def transformLine(line): def transformLine(line):
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !") newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
newline = newline.replace("%PreGenDateTimeStamp%", PreGenDateTimeStamp) newline = newline.replace("%PreGenDateTimeStamp%", PreGenDateTimeStamp)
newline = newline.replace("%PreGenEcosystemName%", PreGenEcosystemName) newline = newline.replace("%PreGenEcosystemName%", PreGenEcosystemName)
newline = newline.replace("%PreGenDatabaseRootName%", PreGenDatabaseRootName) newline = newline.replace("%PreGenDatabaseRootName%", PreGenDatabaseRootName)
newline = newline.replace("%PreGenCoarseMeshTextureNames%", PreGenCoarseMeshTextureNames) newline = newline.replace("%PreGenCoarseMeshTextureNames%", PreGenCoarseMeshTextureNames)
newline = newline.replace("%PreGenMultipleTilesPostfix%", PreGenMultipleTilesPostfix) newline = newline.replace("%PreGenMultipleTilesPostfix%", PreGenMultipleTilesPostfix)
newline = newline.replace("%PreGenMapSubdirectories%", PreGenMapSubdirectories) newline = newline.replace("%PreGenMapSubdirectories%", PreGenMapSubdirectories)
newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories) newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories)
newline = newline.replace("%PreGenShapeExportOptExportLighting%", ShapeExportOptExportLighting) newline = newline.replace("%PreGenShapeExportOptExportLighting%", ShapeExportOptExportLighting)
newline = newline.replace("%PreGenShapeExportOptShadow%", ShapeExportOptShadow) newline = newline.replace("%PreGenShapeExportOptShadow%", ShapeExportOptShadow)
newline = newline.replace("%PreGenShapeExportOptLightingLimit%", ShapeExportOptLightingLimit) newline = newline.replace("%PreGenShapeExportOptLightingLimit%", ShapeExportOptLightingLimit)
newline = newline.replace("%PreGenShapeExportOptLumelSize%", ShapeExportOptLumelSize) newline = newline.replace("%PreGenShapeExportOptLumelSize%", ShapeExportOptLumelSize)
newline = newline.replace("%PreGenShapeExportOptOversampling%", ShapeExportOptOversampling) newline = newline.replace("%PreGenShapeExportOptOversampling%", ShapeExportOptOversampling)
newline = newline.replace("%PreGenShapeExportOpt8BitsLightmap%", ShapeExportOpt8BitsLightmap) newline = newline.replace("%PreGenShapeExportOpt8BitsLightmap%", ShapeExportOpt8BitsLightmap)
newline = newline.replace("%PreGenShapeExportOptLightmapLog%", ShapeExportOptLightmapLog) newline = newline.replace("%PreGenShapeExportOptLightmapLog%", ShapeExportOptLightmapLog)
newline = newline.replace("%PreGenTextureMulSizeValue%", TextureMulSizeValue) newline = newline.replace("%PreGenTextureMulSizeValue%", TextureMulSizeValue)
newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories) newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories)
return newline return newline
def generateFile(sourceFile, destFile): def generateFile(sourceFile, destFile):
srcf = open(sourceFile, "r") srcf = open(sourceFile, "r")
dstf = open(destFile, "w") dstf = open(destFile, "w")
printLog(log, "WRITE " + destFile) printLog(log, "WRITE " + destFile)
for line in srcf: for line in srcf:
dstf.write(transformLine(line)) dstf.write(transformLine(line))
dstf.close() dstf.close()
srcf.close() srcf.close()
def generateEcosystem(ecosystemName, databaseRootName): def generateEcosystem(ecosystemName, databaseRootName):
global PreGenEcosystemName global PreGenEcosystemName
PreGenEcosystemName = ecosystemName PreGenEcosystemName = ecosystemName
global PreGenDatabaseRootName global PreGenDatabaseRootName
PreGenDatabaseRootName = databaseRootName PreGenDatabaseRootName = databaseRootName
global PreGenDateTimeStamp global PreGenDateTimeStamp
PreGenDateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) PreGenDateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
global PreGenMultipleTilesPostfix global PreGenMultipleTilesPostfix
PreGenMultipleTilesPostfix = "" PreGenMultipleTilesPostfix = ""
global PreGenCoarseMeshTextureNames global PreGenCoarseMeshTextureNames
PreGenCoarseMeshTextureNames = "" PreGenCoarseMeshTextureNames = ""
global PreGenTileSourceDirectories global PreGenTileSourceDirectories
PreGenTileSourceDirectories = "" PreGenTileSourceDirectories = ""
for suffix in SeasonSuffixes: for suffix in SeasonSuffixes:
PreGenMultipleTilesPostfix += "MultipleTilesPostfix += [ \"_" + suffix + "\" ]\n" PreGenMultipleTilesPostfix += "MultipleTilesPostfix += [ \"_" + suffix + "\" ]\n"
PreGenCoarseMeshTextureNames += "CoarseMeshTextureNames += [ \"nel_coarse_mesh_\" + EcosystemName + \"_" + suffix + "\" ]\n" PreGenCoarseMeshTextureNames += "CoarseMeshTextureNames += [ \"nel_coarse_mesh_\" + EcosystemName + \"_" + suffix + "\" ]\n"
for tiledir in TileDirectories: for tiledir in TileDirectories:
PreGenTileSourceDirectories += "TilesSourceDirectories += [ \"landscape/_texture_tiles/\" + EcosystemName + \"_" + suffix + "/" + tiledir + "\" ]\n" PreGenTileSourceDirectories += "TilesSourceDirectories += [ \"landscape/_texture_tiles/\" + EcosystemName + \"_" + suffix + "/" + tiledir + "\" ]\n"
global PreGenMapSubdirectories global PreGenMapSubdirectories
PreGenMapSubdirectories = "" PreGenMapSubdirectories = ""
for subdir in MapSubdirectories: for subdir in MapSubdirectories:
PreGenMapSubdirectories += "MapSourceDirectories += [ DatabaseRootPath + \"/decors/_textures/" + subdir + "\" ]\n" PreGenMapSubdirectories += "MapSourceDirectories += [ DatabaseRootPath + \"/decors/_textures/" + subdir + "\" ]\n"
destDir = WorkspaceDirectory + "/ecosystems/" + ecosystemName destDir = WorkspaceDirectory + "/ecosystems/" + ecosystemName
mkPath(log, destDir) mkPath(log, destDir)
generateFile(templateDir + "/process.py", destDir + "/process.py") generateFile(templateDir + "/process.py", destDir + "/process.py")
generateFile(templateDir + "/directories.py", destDir + "/directories.py") generateFile(templateDir + "/directories.py", destDir + "/directories.py")
return return
# Add new ecosystems below this line. # Add new ecosystems below this line.
# DESERT # DESERT
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
ShapeExportOptShadow = DefaultShapeExportOptShadow ShapeExportOptShadow = DefaultShapeExportOptShadow
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
ShapeExportOptOversampling = DefaultShapeExportOptOversampling ShapeExportOptOversampling = DefaultShapeExportOptOversampling
ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
TextureMulSizeValue = DefaultTextureMulSizeValue TextureMulSizeValue = DefaultTextureMulSizeValue
SeasonSuffixes = DefaultSeasonSuffixes SeasonSuffixes = DefaultSeasonSuffixes
MapSubdirectories = [ ] MapSubdirectories = [ ]
MapSubdirectories += [ "vegetations" ] MapSubdirectories += [ "vegetations" ]
TileDirectories = [ ] TileDirectories = [ ]
TileDirectories += [ "1.5-marecage_profond" ] TileDirectories += [ "1.5-marecage_profond" ]
TileDirectories += [ "1-marecages" ] TileDirectories += [ "1-marecages" ]
TileDirectories += [ "2-citees" ] TileDirectories += [ "2-citees" ]
TileDirectories += [ "3-fond_canyon" ] TileDirectories += [ "3-fond_canyon" ]
TileDirectories += [ "4.2-boisbandeclair" ] TileDirectories += [ "4.2-boisbandeclair" ]
TileDirectories += [ "4.5-desert2boisbande" ] TileDirectories += [ "4.5-desert2boisbande" ]
TileDirectories += [ "4-falaise_bois_bande" ] TileDirectories += [ "4-falaise_bois_bande" ]
TileDirectories += [ "5-falaise_normales" ] TileDirectories += [ "5-falaise_normales" ]
TileDirectories += [ "6.5-desertalternatif" ] TileDirectories += [ "6.5-desertalternatif" ]
TileDirectories += [ "6-desert" ] TileDirectories += [ "6-desert" ]
TileDirectories += [ "7-routes" ] TileDirectories += [ "7-routes" ]
TileDirectories += [ "8-foretbrule" ] TileDirectories += [ "8-foretbrule" ]
generateEcosystem("desert", "fyros") generateEcosystem("desert", "fyros")
# JUNGLE # JUNGLE
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
ShapeExportOptShadow = DefaultShapeExportOptShadow ShapeExportOptShadow = DefaultShapeExportOptShadow
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
ShapeExportOptOversampling = DefaultShapeExportOptOversampling ShapeExportOptOversampling = DefaultShapeExportOptOversampling
ShapeExportOpt8BitsLightmap = "false" ShapeExportOpt8BitsLightmap = "false"
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
TextureMulSizeValue = DefaultTextureMulSizeValue TextureMulSizeValue = DefaultTextureMulSizeValue
SeasonSuffixes = DefaultSeasonSuffixes SeasonSuffixes = DefaultSeasonSuffixes
MapSubdirectories = [ ] MapSubdirectories = [ ]
MapSubdirectories += [ "vegetations" ] MapSubdirectories += [ "vegetations" ]
TileDirectories = [ ] TileDirectories = [ ]
TileDirectories += [ "10-crevassejungle" ] TileDirectories += [ "10-crevassejungle" ]
TileDirectories += [ "11-paroisjungle" ] TileDirectories += [ "11-paroisjungle" ]
TileDirectories += [ "12-vasejungle" ] TileDirectories += [ "12-vasejungle" ]
TileDirectories += [ "1-junglemousse" ] TileDirectories += [ "1-junglemousse" ]
TileDirectories += [ "2-junglefeuilles" ] TileDirectories += [ "2-junglefeuilles" ]
TileDirectories += [ "3-jungleherbesseche" ] TileDirectories += [ "3-jungleherbesseche" ]
TileDirectories += [ "4-jungleherbevieille" ] TileDirectories += [ "4-jungleherbevieille" ]
TileDirectories += [ "5-jungleterreaux" ] TileDirectories += [ "5-jungleterreaux" ]
TileDirectories += [ "6-junglegoo" ] TileDirectories += [ "6-junglegoo" ]
TileDirectories += [ "7-sciurejungle" ] TileDirectories += [ "7-sciurejungle" ]
TileDirectories += [ "8-terrejungle" ] TileDirectories += [ "8-terrejungle" ]
TileDirectories += [ "9-falaisejungle" ] TileDirectories += [ "9-falaisejungle" ]
TileDirectories += [ "Transitions" ] TileDirectories += [ "Transitions" ]
generateEcosystem("jungle", "jungle") generateEcosystem("jungle", "jungle")
# PRIMES RACINES # PRIMES RACINES
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
ShapeExportOptShadow = DefaultShapeExportOptShadow ShapeExportOptShadow = DefaultShapeExportOptShadow
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
ShapeExportOptOversampling = DefaultShapeExportOptOversampling ShapeExportOptOversampling = DefaultShapeExportOptOversampling
ShapeExportOpt8BitsLightmap = "false" ShapeExportOpt8BitsLightmap = "false"
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
TextureMulSizeValue = DefaultTextureMulSizeValue TextureMulSizeValue = DefaultTextureMulSizeValue
SeasonSuffixes = DefaultSeasonSuffixes SeasonSuffixes = DefaultSeasonSuffixes
MapSubdirectories = [ ] MapSubdirectories = [ ]
MapSubdirectories += [ "vegetations" ] MapSubdirectories += [ "vegetations" ]
MapSubdirectories += [ "batiments" ] MapSubdirectories += [ "batiments" ]
TileDirectories = [ ] TileDirectories = [ ]
TileDirectories += [ "PR-creux" ] TileDirectories += [ "PR-creux" ]
TileDirectories += [ "PR-dome-moussu" ] TileDirectories += [ "PR-dome-moussu" ]
TileDirectories += [ "PR-kitiniere" ] TileDirectories += [ "PR-kitiniere" ]
TileDirectories += [ "PR-mousse-licken" ] TileDirectories += [ "PR-mousse-licken" ]
TileDirectories += [ "PR-mousse-spongieus" ] TileDirectories += [ "PR-mousse-spongieus" ]
TileDirectories += [ "PR-parois" ] TileDirectories += [ "PR-parois" ]
TileDirectories += [ "PR-sol-mousse" ] TileDirectories += [ "PR-sol-mousse" ]
TileDirectories += [ "PR-souche" ] TileDirectories += [ "PR-souche" ]
TileDirectories += [ "PR-stalagmite" ] TileDirectories += [ "PR-stalagmite" ]
TileDirectories += [ "PR-terre" ] TileDirectories += [ "PR-terre" ]
TileDirectories += [ "aditif" ] TileDirectories += [ "aditif" ]
generateEcosystem("primes_racines", "primes_racines") generateEcosystem("primes_racines", "primes_racines")
# LACUSTRE # LACUSTRE
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
ShapeExportOptShadow = DefaultShapeExportOptShadow ShapeExportOptShadow = DefaultShapeExportOptShadow
ShapeExportOptLightingLimit = "0" ShapeExportOptLightingLimit = "0"
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
ShapeExportOptOversampling = "8" ShapeExportOptOversampling = "8"
ShapeExportOpt8BitsLightmap = "false" ShapeExportOpt8BitsLightmap = "false"
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
TextureMulSizeValue = DefaultTextureMulSizeValue TextureMulSizeValue = DefaultTextureMulSizeValue
SeasonSuffixes = DefaultSeasonSuffixes SeasonSuffixes = DefaultSeasonSuffixes
MapSubdirectories = [ ] MapSubdirectories = [ ]
MapSubdirectories += [ "vegetations" ] MapSubdirectories += [ "vegetations" ]
TileDirectories = [ ] TileDirectories = [ ]
TileDirectories += [ "1a-sable-marin" ] TileDirectories += [ "1a-sable-marin" ]
TileDirectories += [ "1-plages" ] TileDirectories += [ "1-plages" ]
TileDirectories += [ "2-iles" ] TileDirectories += [ "2-iles" ]
TileDirectories += [ "2-ilesa" ] TileDirectories += [ "2-ilesa" ]
TileDirectories += [ "2-iles-marines" ] TileDirectories += [ "2-iles-marines" ]
TileDirectories += [ "3-fondmarin2plage" ] TileDirectories += [ "3-fondmarin2plage" ]
TileDirectories += [ "4-marecages" ] TileDirectories += [ "4-marecages" ]
TileDirectories += [ "5-marecages" ] TileDirectories += [ "5-marecages" ]
TileDirectories += [ "5-parois-marine" ] TileDirectories += [ "5-parois-marine" ]
TileDirectories += [ "6-fond_marin" ] TileDirectories += [ "6-fond_marin" ]
TileDirectories += [ "7-bassesiles" ] TileDirectories += [ "7-bassesiles" ]
TileDirectories += [ "7-mousseter" ] TileDirectories += [ "7-mousseter" ]
TileDirectories += [ "7-racines" ] TileDirectories += [ "7-racines" ]
TileDirectories += [ "8-mousse_marine" ] TileDirectories += [ "8-mousse_marine" ]
TileDirectories += [ "constructible" ] TileDirectories += [ "constructible" ]
generateEcosystem("lacustre", "tryker") generateEcosystem("lacustre", "tryker")
printLog(log, "") printLog(log, "")
log.close() log.close()

@ -1,100 +1,100 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief Run all setup processes # \brief Run all setup processes
# \date 2009-02-18 15:28GMT # \date 2009-02-18 15:28GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all setup processes # Run all setup processes
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../configuration") sys.path.append("../configuration")
if os.path.isfile("generate_simple_max_exporters.log"): if os.path.isfile("generate_simple_max_exporters.log"):
os.remove("generate_simple_max_exporters.log") os.remove("generate_simple_max_exporters.log")
log = open("generate_simple_max_exporters.log", "w") log = open("generate_simple_max_exporters.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from tools import * from tools import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Generate simple max exporters") printLog(log, "--- Generate simple max exporters")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
def processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp): def processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !") newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
newline = newline.replace("%PreGenDateTimeStamp%", dateTimeStamp) newline = newline.replace("%PreGenDateTimeStamp%", dateTimeStamp)
newline = newline.replace("%PreGenProcessName%", processName) newline = newline.replace("%PreGenProcessName%", processName)
newline = newline.replace("%PreGenFileExtension%", fileExtension) newline = newline.replace("%PreGenFileExtension%", fileExtension)
newline = newline.replace("%PreGenSourceDirectoriesVariable%", sourceDirectoriesVariable) newline = newline.replace("%PreGenSourceDirectoriesVariable%", sourceDirectoriesVariable)
newline = newline.replace("%PreGenExportDirectoryVariable%", exportDirectoryVariable) newline = newline.replace("%PreGenExportDirectoryVariable%", exportDirectoryVariable)
newline = newline.replace("%PreGenInstallDirectoryVariable%", clientDirectoryVariable) newline = newline.replace("%PreGenInstallDirectoryVariable%", clientDirectoryVariable)
return newline return newline
def generateSimpleMaxExporterFile(sourceFile, destFile, writeMode, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp): def generateSimpleMaxExporterFile(sourceFile, destFile, writeMode, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
srcf = open(sourceFile, "r") srcf = open(sourceFile, "r")
dstf = open(destFile, writeMode) dstf = open(destFile, writeMode)
printLog(log, "WRITE " + destFile + " " + writeMode) printLog(log, "WRITE " + destFile + " " + writeMode)
for line in srcf: for line in srcf:
dstf.write(processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)) dstf.write(processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp))
dstf.close() dstf.close()
srcf.close() srcf.close()
def generateSimpleMaxExporter(processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable): def generateSimpleMaxExporter(processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable):
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
processDir = ScriptDirectory + "/processes/" + processName processDir = ScriptDirectory + "/processes/" + processName
mkPath(log, processDir) mkPath(log, processDir)
maxscriptDir = processDir + "/maxscript" maxscriptDir = processDir + "/maxscript"
mkPath(log, maxscriptDir) mkPath(log, maxscriptDir)
templateDir = os.getcwd().replace("\\", "/") + "/simple_max_exporter_template" templateDir = os.getcwd().replace("\\", "/") + "/simple_max_exporter_template"
mkPath(log, templateDir) mkPath(log, templateDir)
scriptDir = os.getcwd().replace("\\", "/") + "/max_exporter_scripts" scriptDir = os.getcwd().replace("\\", "/") + "/max_exporter_scripts"
mkPath(log, scriptDir) mkPath(log, scriptDir)
if not os.path.isfile(processDir + "/0_setup.py"): if not os.path.isfile(processDir + "/0_setup.py"):
generateSimpleMaxExporterFile(templateDir + "/0_setup.py", processDir + "/0_setup.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateSimpleMaxExporterFile(templateDir + "/0_setup.py", processDir + "/0_setup.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateSimpleMaxExporterFile(templateDir + "/1_export_header.py", processDir + "/1_export.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateSimpleMaxExporterFile(templateDir + "/1_export_header.py", processDir + "/1_export.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateSimpleMaxExporterFile(scriptDir + "/" + fileExtension + ".py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateSimpleMaxExporterFile(scriptDir + "/" + fileExtension + ".py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateSimpleMaxExporterFile(templateDir + "/1_export_footer.py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateSimpleMaxExporterFile(templateDir + "/1_export_footer.py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
if not os.path.isfile(processDir + "/2_build.py"): if not os.path.isfile(processDir + "/2_build.py"):
generateSimpleMaxExporterFile(templateDir + "/2_build.py", processDir + "/2_build.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateSimpleMaxExporterFile(templateDir + "/2_build.py", processDir + "/2_build.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
if not os.path.isfile(processDir + "/3_install.py"): if not os.path.isfile(processDir + "/3_install.py"):
generateSimpleMaxExporterFile(templateDir + "/3_install.py", processDir + "/3_install.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateSimpleMaxExporterFile(templateDir + "/3_install.py", processDir + "/3_install.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateSimpleMaxExporterFile(templateDir + "/export_header.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateSimpleMaxExporterFile(templateDir + "/export_header.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateSimpleMaxExporterFile(scriptDir + "/" + fileExtension + ".ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateSimpleMaxExporterFile(scriptDir + "/" + fileExtension + ".ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateSimpleMaxExporterFile(templateDir + "/export_footer.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateSimpleMaxExporterFile(templateDir + "/export_footer.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateSimpleMaxExporter("skel", "skel", "SkelSourceDirectories", "SkelExportDirectory", "SkelInstallDirectory") generateSimpleMaxExporter("skel", "skel", "SkelSourceDirectories", "SkelExportDirectory", "SkelInstallDirectory")
generateSimpleMaxExporter("swt", "swt", "SwtSourceDirectories", "SwtExportDirectory", "SwtInstallDirectory") generateSimpleMaxExporter("swt", "swt", "SwtSourceDirectories", "SwtExportDirectory", "SwtInstallDirectory")
generateSimpleMaxExporter("zone", "zone", "ZoneSourceDirectory", "ZoneExportDirectory", "ZoneInstallDirectory") generateSimpleMaxExporter("zone", "zone", "ZoneSourceDirectory", "ZoneExportDirectory", "ZoneInstallDirectory")
printLog(log, "") printLog(log, "")
log.close() log.close()

@ -1,120 +1,120 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief Run all setup processes # \brief Run all setup processes
# \date 2009-02-18 15:28GMT # \date 2009-02-18 15:28GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all setup processes # Run all setup processes
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../configuration") sys.path.append("../configuration")
if os.path.isfile("generate_tagged_max_exporters.log"): if os.path.isfile("generate_tagged_max_exporters.log"):
os.remove("generate_tagged_max_exporters.log") os.remove("generate_tagged_max_exporters.log")
log = open("generate_tagged_max_exporters.log", "w") log = open("generate_tagged_max_exporters.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from tools import * from tools import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Generate tagged max exporters") printLog(log, "--- Generate tagged max exporters")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
templateDir = os.getcwd().replace("\\", "/") + "/tagged_max_exporter_template" templateDir = os.getcwd().replace("\\", "/") + "/tagged_max_exporter_template"
mkPath(log, templateDir) mkPath(log, templateDir)
scriptDir = os.getcwd().replace("\\", "/") + "/max_exporter_scripts" scriptDir = os.getcwd().replace("\\", "/") + "/max_exporter_scripts"
mkPath(log, scriptDir) mkPath(log, scriptDir)
def processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp): def processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !") newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
newline = newline.replace("%PreGenDateTimeStamp%", dateTimeStamp) newline = newline.replace("%PreGenDateTimeStamp%", dateTimeStamp)
newline = newline.replace("%PreGenProcessName%", processName) newline = newline.replace("%PreGenProcessName%", processName)
newline = newline.replace("%PreGenFileExtension%", fileExtension) newline = newline.replace("%PreGenFileExtension%", fileExtension)
newline = newline.replace("%PreGenSourceDirectoriesVariable%", sourceDirectoriesVariable) newline = newline.replace("%PreGenSourceDirectoriesVariable%", sourceDirectoriesVariable)
newline = newline.replace("%PreGenExportDirectoryVariable%", exportDirectoryVariable) newline = newline.replace("%PreGenExportDirectoryVariable%", exportDirectoryVariable)
newline = newline.replace("%PreGenTagExportDirectoryVariable%", tagExportDirectoryVariable) newline = newline.replace("%PreGenTagExportDirectoryVariable%", tagExportDirectoryVariable)
newline = newline.replace("%PreGenInstallDirectoryVariable%", clientDirectoryVariable) newline = newline.replace("%PreGenInstallDirectoryVariable%", clientDirectoryVariable)
return newline return newline
def generateTaggedMaxExporterFile(sourceFile, destFile, writeMode, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp): def generateTaggedMaxExporterFile(sourceFile, destFile, writeMode, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
srcf = open(sourceFile, "r") srcf = open(sourceFile, "r")
dstf = open(destFile, writeMode) dstf = open(destFile, writeMode)
printLog(log, "WRITE " + destFile + " " + writeMode) printLog(log, "WRITE " + destFile + " " + writeMode)
for line in srcf: for line in srcf:
dstf.write(processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)) dstf.write(processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp))
dstf.close() dstf.close()
srcf.close() srcf.close()
def generateTaggedMaxScriptFile(processDir, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp): def generateTaggedMaxScriptFile(processDir, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
maxscriptDir = processDir + "/maxscript" maxscriptDir = processDir + "/maxscript"
mkPath(log, maxscriptDir) mkPath(log, maxscriptDir)
generateTaggedMaxExporterFile(templateDir + "/export_header.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateTaggedMaxExporterFile(templateDir + "/export_header.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateTaggedMaxExporterFile(scriptDir + "/" + fileExtension + ".ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateTaggedMaxExporterFile(scriptDir + "/" + fileExtension + ".ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateTaggedMaxExporterFile(templateDir + "/export_footer.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateTaggedMaxExporterFile(templateDir + "/export_footer.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
def generateTaggedMaxScript(processName, fileExtension): def generateTaggedMaxScript(processName, fileExtension):
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
processDir = ScriptDirectory + "/processes/" + processName processDir = ScriptDirectory + "/processes/" + processName
mkPath(log, processDir) mkPath(log, processDir)
generateTaggedMaxScriptFile(processDir, processName, fileExtension, "_invalid", "_invalid", "_invalid", "_invalid", dateTimeStamp) generateTaggedMaxScriptFile(processDir, processName, fileExtension, "_invalid", "_invalid", "_invalid", "_invalid", dateTimeStamp)
def generateTaggedMaxExporter(processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable): def generateTaggedMaxExporter(processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable):
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
processDir = ScriptDirectory + "/processes/" + processName processDir = ScriptDirectory + "/processes/" + processName
mkPath(log, processDir) mkPath(log, processDir)
if not os.path.isfile(processDir + "/0_setup.py"): if not os.path.isfile(processDir + "/0_setup.py"):
generateTaggedMaxExporterFile(templateDir + "/0_setup.py", processDir + "/0_setup.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateTaggedMaxExporterFile(templateDir + "/0_setup.py", processDir + "/0_setup.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateTaggedMaxExporterFile(templateDir + "/1_export_header.py", processDir + "/1_export.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateTaggedMaxExporterFile(templateDir + "/1_export_header.py", processDir + "/1_export.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateTaggedMaxExporterFile(scriptDir + "/" + fileExtension + ".py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateTaggedMaxExporterFile(scriptDir + "/" + fileExtension + ".py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateTaggedMaxExporterFile(templateDir + "/1_export_footer.py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateTaggedMaxExporterFile(templateDir + "/1_export_footer.py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
if not os.path.isfile(processDir + "/2_build.py"): if not os.path.isfile(processDir + "/2_build.py"):
generateTaggedMaxExporterFile(templateDir + "/2_build.py", processDir + "/2_build.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateTaggedMaxExporterFile(templateDir + "/2_build.py", processDir + "/2_build.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
if not os.path.isfile(processDir + "/3_install.py"): if not os.path.isfile(processDir + "/3_install.py"):
generateTaggedMaxExporterFile(templateDir + "/3_install.py", processDir + "/3_install.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateTaggedMaxExporterFile(templateDir + "/3_install.py", processDir + "/3_install.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateTaggedMaxScriptFile(processDir, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp) generateTaggedMaxScriptFile(processDir, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
generateTaggedMaxExporter("pacs_prim", "pacs_prim", "PacsPrimSourceDirectories", "PacsPrimExportDirectory", "PacsPrimTagExportDirectory", "PacsPrimInstallDirectory") generateTaggedMaxExporter("pacs_prim", "pacs_prim", "PacsPrimSourceDirectories", "PacsPrimExportDirectory", "PacsPrimTagExportDirectory", "PacsPrimInstallDirectory")
generateTaggedMaxExporter("clodbank", "clod", "ClodSourceDirectories", "ClodExportDirectory", "ClodTagExportDirectory", "ClodInstallDirectory") generateTaggedMaxExporter("clodbank", "clod", "ClodSourceDirectories", "ClodExportDirectory", "ClodTagExportDirectory", "ClodInstallDirectory")
generateTaggedMaxScript("ig", "ig") generateTaggedMaxScript("ig", "ig")
generateTaggedMaxExporter("rbank", "cmb", "RBankCmbSourceDirectories", "RBankCmbExportDirectory", "RBankCmbTagExportDirectory", "PacsInstallDirectory") generateTaggedMaxExporter("rbank", "cmb", "RBankCmbSourceDirectories", "RBankCmbExportDirectory", "RBankCmbTagExportDirectory", "PacsInstallDirectory")
generateTaggedMaxExporter("veget", "veget", "VegetSourceDirectories", "VegetExportDirectory", "VegetTagExportDirectory", "VegetInstallDirectory") generateTaggedMaxExporter("veget", "veget", "VegetSourceDirectories", "VegetExportDirectory", "VegetTagExportDirectory", "VegetInstallDirectory")
generateTaggedMaxScript("shape", "shape") generateTaggedMaxScript("shape", "shape")
generateTaggedMaxExporter("anim", "anim", "AnimSourceDirectories", "AnimExportDirectory", "AnimTagExportDirectory", "AnimInstallDirectory") generateTaggedMaxExporter("anim", "anim", "AnimSourceDirectories", "AnimExportDirectory", "AnimTagExportDirectory", "AnimInstallDirectory")
printLog(log, "") printLog(log, "")
log.close() log.close()

@ -1,7 +1,7 @@
# Remove bad file from previous script version # Remove bad file from previous script version
listPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable% + "/landscape_col_prim_pacs_list.txt" listPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable% + "/landscape_col_prim_pacs_list.txt"
if os.path.isfile(listPath): if os.path.isfile(listPath):
os.remove(listPath) os.remove(listPath)

@ -1,8 +1,8 @@
printLog(log, ">>> Export skel directly <<<") printLog(log, ">>> Export skel directly <<<")
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory) mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
for dir in SkelSourceDirectories: for dir in SkelSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + SkelExportDirectory, ".skel") copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + SkelExportDirectory, ".skel")

@ -1,8 +1,8 @@
printLog(log, ">>> Try to copy ligo zone if any <<<") printLog(log, ">>> Try to copy ligo zone if any <<<")
printLog(log, "********************************") printLog(log, "********************************")
printLog(log, "******** TODO ********") printLog(log, "******** TODO ********")
printLog(log, "********************************") printLog(log, "********************************")
printLog(log, "") printLog(log, "")

@ -1,65 +1,65 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief setup %PreGenProcessName% # \brief setup %PreGenProcessName%
# \date %PreGenDateTimeStamp% # \date %PreGenDateTimeStamp%
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Setup %PreGenProcessName% # Setup %PreGenProcessName%
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Setup %PreGenProcessName%") printLog(log, "--- Setup %PreGenProcessName%")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Setup source directories # Setup source directories
printLog(log, ">>> Setup source directories <<<") printLog(log, ">>> Setup source directories <<<")
for dir in %PreGenSourceDirectoriesVariable%: for dir in %PreGenSourceDirectoriesVariable%:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories # Setup export directories
printLog(log, ">>> Setup export directories <<<") printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%) mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
# Setup build directories # Setup build directories
printLog(log, ">>> Setup build directories <<<") printLog(log, ">>> Setup build directories <<<")
# Setup client directories # Setup client directories
printLog(log, ">>> Setup client directories <<<") printLog(log, ">>> Setup client directories <<<")
mkPath(log, InstallDirectory + "/" + %PreGenInstallDirectoryVariable%) mkPath(log, InstallDirectory + "/" + %PreGenInstallDirectoryVariable%)
log.close() log.close()
# end of file # end of file

@ -1,7 +1,7 @@
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,92 +1,92 @@
#!/usr/bin/python #!/usr/bin/python
# #
# ################################################################# # #################################################################
# ## %PreGenWarning% # ## %PreGenWarning%
# ################################################################# # #################################################################
# #
# \file 1_export.py # \file 1_export.py
# \brief Export %PreGenProcessName% # \brief Export %PreGenProcessName%
# \date %PreGenDateTimeStamp% # \date %PreGenDateTimeStamp%
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Export %PreGenProcessName% # Export %PreGenProcessName%
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Export %PreGenProcessName%") printLog(log, "--- Export %PreGenProcessName%")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Find tools # Find tools
# ... # ...
# Export %PreGenProcessName% 3dsmax # Export %PreGenProcessName% 3dsmax
if MaxAvailable: if MaxAvailable:
# Find tools # Find tools
Max = findMax(log, MaxDirectory, MaxExecutable) Max = findMax(log, MaxDirectory, MaxExecutable)
printLog(log, "") printLog(log, "")
printLog(log, ">>> Export %PreGenProcessName% 3dsmax <<<") printLog(log, ">>> Export %PreGenProcessName% 3dsmax <<<")
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%) mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
for dir in %PreGenSourceDirectoriesVariable%: for dir in %PreGenSourceDirectoriesVariable%:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%, ".%PreGenFileExtension%")): if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%, ".%PreGenFileExtension%")):
scriptSrc = "maxscript/%PreGenFileExtension%_export.ms" scriptSrc = "maxscript/%PreGenFileExtension%_export.ms"
scriptDst = MaxUserDirectory + "/scripts/%PreGenFileExtension%_export.ms" scriptDst = MaxUserDirectory + "/scripts/%PreGenFileExtension%_export.ms"
outputLogfile = ScriptDirectory + "/processes/%PreGenProcessName%/log.log" outputLogfile = ScriptDirectory + "/processes/%PreGenProcessName%/log.log"
outputDirectory = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable% outputDirectory = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
maxSourceDir = DatabaseDirectory + "/" + dir maxSourceDir = DatabaseDirectory + "/" + dir
tagList = findFiles(log, outputDirectory, "", ".%PreGenFileExtension%") tagList = findFiles(log, outputDirectory, "", ".%PreGenFileExtension%")
tagLen = len(tagList) tagLen = len(tagList)
if os.path.isfile(scriptDst): if os.path.isfile(scriptDst):
os.remove(scriptDst) os.remove(scriptDst)
tagDiff = 1 tagDiff = 1
sSrc = open(scriptSrc, "r") sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w") sDst = open(scriptDst, "w")
for line in sSrc: for line in sSrc:
newline = line.replace("%OutputLogfile%", outputLogfile) newline = line.replace("%OutputLogfile%", outputLogfile)
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir) newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
newline = newline.replace("%OutputDirectory%", outputDirectory) newline = newline.replace("%OutputDirectory%", outputDirectory)
sDst.write(newline) sDst.write(newline)
sSrc.close() sSrc.close()
sDst.close() sDst.close()
while tagDiff > 0: while tagDiff > 0:
printLog(log, "MAXSCRIPT " + scriptDst) printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "%PreGenFileExtension%_export.ms", "-q", "-mi", "-mip" ]) subprocess.call([ Max, "-U", "MAXScript", "%PreGenFileExtension%_export.ms", "-q", "-mi", "-mip" ])
tagList = findFiles(log, outputDirectory, "", ".%PreGenFileExtension%") tagList = findFiles(log, outputDirectory, "", ".%PreGenFileExtension%")
newTagLen = len(tagList) newTagLen = len(tagList)
tagDiff = newTagLen - tagLen tagDiff = newTagLen - tagLen
tagLen = newTagLen tagLen = newTagLen
printLog(log, "Exported " + str(tagDiff) + " .%PreGenFileExtension% files!") printLog(log, "Exported " + str(tagDiff) + " .%PreGenFileExtension% files!")
os.remove(scriptDst) os.remove(scriptDst)

@ -1,49 +1,49 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 2_build.py # \file 2_build.py
# \brief Build %PreGenProcessName% # \brief Build %PreGenProcessName%
# \date %PreGenDateTimeStamp% # \date %PreGenDateTimeStamp%
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Build %PreGenProcessName% # Build %PreGenProcessName%
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Build %PreGenProcessName%") printLog(log, "--- Build %PreGenProcessName%")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,57 +1,57 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Install %PreGenProcessName% # \brief Install %PreGenProcessName%
# \date %PreGenDateTimeStamp% # \date %PreGenDateTimeStamp%
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install %PreGenProcessName% # Install %PreGenProcessName%
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install %PreGenProcessName%") printLog(log, "--- Install %PreGenProcessName%")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
printLog(log, ">>> Install %PreGenProcessName% <<<") printLog(log, ">>> Install %PreGenProcessName% <<<")
exportPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable% exportPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
mkPath(log, exportPath) mkPath(log, exportPath)
installPath = InstallDirectory + "/" + %PreGenInstallDirectoryVariable% installPath = InstallDirectory + "/" + %PreGenInstallDirectoryVariable%
mkPath(log, installPath) mkPath(log, installPath)
copyFilesExtNoSubdirIfNeeded(log, exportPath, installPath, ".%PreGenFileExtension%") copyFilesExtNoSubdirIfNeeded(log, exportPath, installPath, ".%PreGenFileExtension%")
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,66 +1,66 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief setup %PreGenProcessName% # \brief setup %PreGenProcessName%
# \date %PreGenDateTimeStamp% # \date %PreGenDateTimeStamp%
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Setup %PreGenProcessName% # Setup %PreGenProcessName%
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Setup %PreGenProcessName%") printLog(log, "--- Setup %PreGenProcessName%")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Setup source directories # Setup source directories
printLog(log, ">>> Setup source directories <<<") printLog(log, ">>> Setup source directories <<<")
for dir in %PreGenSourceDirectoriesVariable%: for dir in %PreGenSourceDirectoriesVariable%:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories # Setup export directories
printLog(log, ">>> Setup export directories <<<") printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%) mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
mkPath(log, ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%) mkPath(log, ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%)
# Setup build directories # Setup build directories
printLog(log, ">>> Setup build directories <<<") printLog(log, ">>> Setup build directories <<<")
# Setup client directories # Setup client directories
printLog(log, ">>> Setup client directories <<<") printLog(log, ">>> Setup client directories <<<")
mkPath(log, InstallDirectory + "/" + %PreGenInstallDirectoryVariable%) mkPath(log, InstallDirectory + "/" + %PreGenInstallDirectoryVariable%)
log.close() log.close()
# end of file # end of file

@ -1,9 +1,9 @@
log.close() log.close()
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
shutil.move("temp_log.log", "log.log") shutil.move("temp_log.log", "log.log")
# end of file # end of file

@ -1,130 +1,130 @@
#!/usr/bin/python #!/usr/bin/python
# #
# ################################################################# # #################################################################
# ## %PreGenWarning% # ## %PreGenWarning%
# ################################################################# # #################################################################
# #
# \file 1_export.py # \file 1_export.py
# \brief Export %PreGenProcessName% # \brief Export %PreGenProcessName%
# \date %PreGenDateTimeStamp% # \date %PreGenDateTimeStamp%
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Export %PreGenProcessName% # Export %PreGenProcessName%
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
if os.path.isfile("temp_log.log"): if os.path.isfile("temp_log.log"):
os.remove("temp_log.log") os.remove("temp_log.log")
log = open("temp_log.log", "w") log = open("temp_log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Export %PreGenProcessName%") printLog(log, "--- Export %PreGenProcessName%")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Find tools # Find tools
# ... # ...
# Export %PreGenProcessName% 3dsmax # Export %PreGenProcessName% 3dsmax
if MaxAvailable: if MaxAvailable:
# Find tools # Find tools
Max = findMax(log, MaxDirectory, MaxExecutable) Max = findMax(log, MaxDirectory, MaxExecutable)
printLog(log, "") printLog(log, "")
printLog(log, ">>> Export %PreGenProcessName% 3dsmax <<<") printLog(log, ">>> Export %PreGenProcessName% 3dsmax <<<")
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%) mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
mkPath(log, ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%) mkPath(log, ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%)
for dir in %PreGenSourceDirectoriesVariable%: for dir in %PreGenSourceDirectoriesVariable%:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%, ".max.tag")): if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%, ".max.tag")):
scriptSrc = "maxscript/%PreGenFileExtension%_export.ms" scriptSrc = "maxscript/%PreGenFileExtension%_export.ms"
scriptDst = MaxUserDirectory + "/scripts/%PreGenFileExtension%_export.ms" scriptDst = MaxUserDirectory + "/scripts/%PreGenFileExtension%_export.ms"
outputLogfile = ScriptDirectory + "/processes/%PreGenProcessName%/log.log" outputLogfile = ScriptDirectory + "/processes/%PreGenProcessName%/log.log"
outputDirectory = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable% outputDirectory = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
tagDirectory = ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable% tagDirectory = ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%
maxSourceDir = DatabaseDirectory + "/" + dir maxSourceDir = DatabaseDirectory + "/" + dir
maxRunningTagFile = tagDirectory + "/max_running.tag" maxRunningTagFile = tagDirectory + "/max_running.tag"
tagList = findFiles(log, tagDirectory, "", ".max.tag") tagList = findFiles(log, tagDirectory, "", ".max.tag")
tagLen = len(tagList) tagLen = len(tagList)
if os.path.isfile(scriptDst): if os.path.isfile(scriptDst):
os.remove(scriptDst) os.remove(scriptDst)
tagDiff = 1 tagDiff = 1
sSrc = open(scriptSrc, "r") sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w") sDst = open(scriptDst, "w")
for line in sSrc: for line in sSrc:
newline = line.replace("%OutputLogfile%", outputLogfile) newline = line.replace("%OutputLogfile%", outputLogfile)
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir) newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
newline = newline.replace("%OutputDirectory%", outputDirectory) newline = newline.replace("%OutputDirectory%", outputDirectory)
newline = newline.replace("%TagDirectory%", tagDirectory) newline = newline.replace("%TagDirectory%", tagDirectory)
sDst.write(newline) sDst.write(newline)
sSrc.close() sSrc.close()
sDst.close() sDst.close()
zeroRetryLimit = 3 zeroRetryLimit = 3
while tagDiff > 0: while tagDiff > 0:
mrt = open(maxRunningTagFile, "w") mrt = open(maxRunningTagFile, "w")
mrt.write("moe-moe-kyun") mrt.write("moe-moe-kyun")
mrt.close() mrt.close()
printLog(log, "MAXSCRIPT " + scriptDst) printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "%PreGenFileExtension%_export.ms", "-q", "-mi", "-mip" ]) subprocess.call([ Max, "-U", "MAXScript", "%PreGenFileExtension%_export.ms", "-q", "-mi", "-mip" ])
if os.path.exists(outputLogfile): if os.path.exists(outputLogfile):
try: try:
lSrc = open(outputLogfile, "r") lSrc = open(outputLogfile, "r")
for line in lSrc: for line in lSrc:
lineStrip = line.strip() lineStrip = line.strip()
if (len(lineStrip) > 0): if (len(lineStrip) > 0):
printLog(log, lineStrip) printLog(log, lineStrip)
lSrc.close() lSrc.close()
os.remove(outputLogfile) os.remove(outputLogfile)
except Exception: except Exception:
printLog(log, "ERROR Failed to read 3dsmax log") printLog(log, "ERROR Failed to read 3dsmax log")
else: else:
printLog(log, "WARNING No 3dsmax log") printLog(log, "WARNING No 3dsmax log")
tagList = findFiles(log, tagDirectory, "", ".max.tag") tagList = findFiles(log, tagDirectory, "", ".max.tag")
newTagLen = len(tagList) newTagLen = len(tagList)
tagDiff = newTagLen - tagLen tagDiff = newTagLen - tagLen
tagLen = newTagLen tagLen = newTagLen
addTagDiff = 0 addTagDiff = 0
if os.path.exists(maxRunningTagFile): if os.path.exists(maxRunningTagFile):
printLog(log, "FAIL 3ds Max crashed and/or file export failed!") printLog(log, "FAIL 3ds Max crashed and/or file export failed!")
if tagDiff == 0: if tagDiff == 0:
if zeroRetryLimit > 0: if zeroRetryLimit > 0:
zeroRetryLimit = zeroRetryLimit - 1 zeroRetryLimit = zeroRetryLimit - 1
addTagDiff = 1 addTagDiff = 1
else: else:
printLog(log, "FAIL Retry limit reached!") printLog(log, "FAIL Retry limit reached!")
else: else:
addTagDiff = 1 addTagDiff = 1
os.remove(maxRunningTagFile) os.remove(maxRunningTagFile)
printLog(log, "Exported " + str(tagDiff) + " .max files!") printLog(log, "Exported " + str(tagDiff) + " .max files!")
tagDiff += addTagDiff tagDiff += addTagDiff
os.remove(scriptDst) os.remove(scriptDst)
printLog(log, "") printLog(log, "")

@ -1,49 +1,49 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 2_build.py # \file 2_build.py
# \brief Build %PreGenProcessName% # \brief Build %PreGenProcessName%
# \date %PreGenDateTimeStamp% # \date %PreGenDateTimeStamp%
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Build %PreGenProcessName% # Build %PreGenProcessName%
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Build %PreGenProcessName%") printLog(log, "--- Build %PreGenProcessName%")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,57 +1,57 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Install %PreGenProcessName% # \brief Install %PreGenProcessName%
# \date %PreGenDateTimeStamp% # \date %PreGenDateTimeStamp%
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install %PreGenProcessName% # Install %PreGenProcessName%
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install %PreGenProcessName%") printLog(log, "--- Install %PreGenProcessName%")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
printLog(log, ">>> Install %PreGenProcessName% <<<") printLog(log, ">>> Install %PreGenProcessName% <<<")
exportPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable% exportPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
mkPath(log, exportPath) mkPath(log, exportPath)
installPath = InstallDirectory + "/" + %PreGenInstallDirectoryVariable% installPath = InstallDirectory + "/" + %PreGenInstallDirectoryVariable%
mkPath(log, installPath) mkPath(log, installPath)
copyFilesNoTreeIfNeeded(log, exportPath, installPath) copyFilesNoTreeIfNeeded(log, exportPath, installPath)
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,89 +1,89 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief Run all setup processes # \brief Run all setup processes
# \date 2009-02-18 15:28GMT # \date 2009-02-18 15:28GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all setup processes # Run all setup processes
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
sys.path.append("../configuration") sys.path.append("../configuration")
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--includeprocess', '-ipc', nargs='+') parser.add_argument('--includeprocess', '-ipc', nargs='+')
parser.add_argument('--excludeprocess', '-epc', nargs='+') parser.add_argument('--excludeprocess', '-epc', nargs='+')
args = parser.parse_args() args = parser.parse_args()
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
#printLog(log, "") #printLog(log, "")
#printLog(log, "-------") #printLog(log, "-------")
#printLog(log, "--- Setup project") #printLog(log, "--- Setup project")
#printLog(log, "-------") #printLog(log, "-------")
#printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) #printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
#printLog(log, "") #printLog(log, "")
#printLog(log, "") #printLog(log, "")
#printLog(log, "-------") #printLog(log, "-------")
#printLog(log, "--- Setup client directories") #printLog(log, "--- Setup client directories")
#printLog(log, "-------") #printLog(log, "-------")
#printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) #printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
#printLog(log, "") #printLog(log, "")
#for dir in ClientSetupDirectories: #for dir in ClientSetupDirectories:
# mkPath(log, InstallDirectory + "/" + dir) # mkPath(log, InstallDirectory + "/" + dir)
#printLog(log, "") #printLog(log, "")
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Run the setup processes") printLog(log, "--- Run the setup processes")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# For each process # For each process
for processName in ProcessToComplete: for processName in ProcessToComplete:
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)): if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
printLog(log, "PROCESS " + processName) printLog(log, "PROCESS " + processName)
os.chdir(processName) os.chdir(processName)
try: try:
subprocess.call([ "python", "0_setup.py" ]) subprocess.call([ "python", "0_setup.py" ])
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
os.chdir("..") os.chdir("..")
try: try:
processLog = open(processName + "/log.log", "r") processLog = open(processName + "/log.log", "r")
processLogData = processLog.read() processLogData = processLog.read()
processLog.close() processLog.close()
log.write(processLogData) log.write(processLogData)
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
# subprocess.call("idle.bat") # subprocess.call("idle.bat")
else: else:
printLog(log, "IGNORE PROCESS " + processName) printLog(log, "IGNORE PROCESS " + processName)
printLog(log, "") printLog(log, "")
log.close() log.close()

@ -1,73 +1,73 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 1_export.py # \file 1_export.py
# \brief Run all export processes # \brief Run all export processes
# \date 2009-02-18 09:22GMT # \date 2009-02-18 09:22GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all export processes # Run all export processes
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
sys.path.append("../configuration") sys.path.append("../configuration")
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--includeprocess', '-ipc', nargs='+') parser.add_argument('--includeprocess', '-ipc', nargs='+')
parser.add_argument('--excludeprocess', '-epc', nargs='+') parser.add_argument('--excludeprocess', '-epc', nargs='+')
args = parser.parse_args() args = parser.parse_args()
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
# Log error # Log error
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Run the export processes") printLog(log, "--- Run the export processes")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# For each process # For each process
for processName in ProcessToComplete: for processName in ProcessToComplete:
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)): if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
printLog(log, "PROCESS " + processName) printLog(log, "PROCESS " + processName)
os.chdir(processName) os.chdir(processName)
try: try:
subprocess.call([ "python", "1_export.py" ]) subprocess.call([ "python", "1_export.py" ])
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
os.chdir("..") os.chdir("..")
try: try:
processLog = open(processName + "/log.log", "r") processLog = open(processName + "/log.log", "r")
processLogData = processLog.read() processLogData = processLog.read()
processLog.close() processLog.close()
log.write(processLogData) log.write(processLogData)
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
# subprocess.call("idle.bat") # subprocess.call("idle.bat")
else: else:
printLog(log, "IGNORE PROCESS " + processName) printLog(log, "IGNORE PROCESS " + processName)
printLog(log, "") printLog(log, "")
log.close() log.close()

@ -1,73 +1,73 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 2_build.py # \file 2_build.py
# \brief Run all build processes # \brief Run all build processes
# \date 2009-02-18 09:22GMT # \date 2009-02-18 09:22GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all build processes # Run all build processes
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
sys.path.append("../configuration") sys.path.append("../configuration")
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--includeprocess', '-ipc', nargs='+') parser.add_argument('--includeprocess', '-ipc', nargs='+')
parser.add_argument('--excludeprocess', '-epc', nargs='+') parser.add_argument('--excludeprocess', '-epc', nargs='+')
args = parser.parse_args() args = parser.parse_args()
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
# Log error # Log error
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Run the build processes") printLog(log, "--- Run the build processes")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# For each process # For each process
for processName in ProcessToComplete: for processName in ProcessToComplete:
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)): if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
printLog(log, "PROCESS " + processName) printLog(log, "PROCESS " + processName)
os.chdir(processName) os.chdir(processName)
try: try:
subprocess.call([ "python", "2_build.py" ]) subprocess.call([ "python", "2_build.py" ])
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
os.chdir("..") os.chdir("..")
try: try:
processLog = open(processName + "/log.log", "r") processLog = open(processName + "/log.log", "r")
processLogData = processLog.read() processLogData = processLog.read()
processLog.close() processLog.close()
log.write(processLogData) log.write(processLogData)
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
# subprocess.call("idle.bat") # subprocess.call("idle.bat")
else: else:
printLog(log, "IGNORE PROCESS " + processName) printLog(log, "IGNORE PROCESS " + processName)
printLog(log, "") printLog(log, "")
log.close() log.close()

@ -1,72 +1,72 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Run all install processes # \brief Run all install processes
# \date 2009-02-18 16:19GMT # \date 2009-02-18 16:19GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Run all install processes # Run all install processes
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
sys.path.append("../configuration") sys.path.append("../configuration")
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--includeprocess', '-ipc', nargs='+') parser.add_argument('--includeprocess', '-ipc', nargs='+')
parser.add_argument('--excludeprocess', '-epc', nargs='+') parser.add_argument('--excludeprocess', '-epc', nargs='+')
args = parser.parse_args() args = parser.parse_args()
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Run the install processes") printLog(log, "--- Run the install processes")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# For each process # For each process
for processName in ProcessToComplete: for processName in ProcessToComplete:
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)): if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
printLog(log, "PROCESS " + processName) printLog(log, "PROCESS " + processName)
os.chdir(processName) os.chdir(processName)
try: try:
subprocess.call([ "python", "3_install.py" ]) subprocess.call([ "python", "3_install.py" ])
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
os.chdir("..") os.chdir("..")
try: try:
processLog = open(processName + "/log.log", "r") processLog = open(processName + "/log.log", "r")
processLogData = processLog.read() processLogData = processLog.read()
processLog.close() processLog.close()
log.write(processLogData) log.write(processLogData)
except Exception, e: except Exception, e:
printLog(log, "<" + processName + "> " + str(e)) printLog(log, "<" + processName + "> " + str(e))
# subprocess.call("idle.bat") # subprocess.call("idle.bat")
else: else:
printLog(log, "IGNORE PROCESS " + processName) printLog(log, "IGNORE PROCESS " + processName)
printLog(log, "") printLog(log, "")
log.close() log.close()

@ -1,66 +1,66 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief setup dummy # \brief setup dummy
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Setup dummy # Setup dummy
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Setup dummy") printLog(log, "--- Setup dummy")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Setup source directories # Setup source directories
printLog(log, ">>> Setup source directories <<<") printLog(log, ">>> Setup source directories <<<")
#for dir in MapSourceDirectories: #for dir in MapSourceDirectories:
# mkPath(log, DatabaseDirectory + "/" + dir) # mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories # Setup export directories
printLog(log, ">>> Setup export directories <<<") printLog(log, ">>> Setup export directories <<<")
#mkPath(log, ExportBuildDirectory + "/" + DummyTagExportDirectory) #mkPath(log, ExportBuildDirectory + "/" + DummyTagExportDirectory)
# Setup build directories # Setup build directories
printLog(log, ">>> Setup build directories <<<") printLog(log, ">>> Setup build directories <<<")
#mkPath(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory) #mkPath(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory)
# Setup client directories # Setup client directories
printLog(log, ">>> Setup client directories <<<") printLog(log, ">>> Setup client directories <<<")
#mkPath(log, InstallDirectory + "/" + DummyInstallDirectory) #mkPath(log, InstallDirectory + "/" + DummyInstallDirectory)
log.close() log.close()
# end of file # end of file

@ -1,117 +1,117 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 1_export.py # \file 1_export.py
# \brief Export dummy # \brief Export dummy
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Export dummy # Export dummy
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Export dummy") printLog(log, "--- Export dummy")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
if MaxAvailable: if MaxAvailable:
# Find tools # Find tools
Max = findMax(log, MaxDirectory, MaxExecutable) Max = findMax(log, MaxDirectory, MaxExecutable)
# ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix) # ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
printLog(log, "") printLog(log, "")
# Export dummy 3dsmax # Export dummy 3dsmax
printLog(log, ">>> Export dummy 3dsmax <<<") printLog(log, ">>> Export dummy 3dsmax <<<")
# Build paths # Build paths
#scriptSrc = "maxscript/dummy_export.ms" #scriptSrc = "maxscript/dummy_export.ms"
# scriptDst = MaxDirectory + "/scripts/dummy_export.ms" # scriptDst = MaxDirectory + "/scripts/dummy_export.ms"
#scriptDst = MaxUserDirectory + "/scripts/dummy_export.ms" #scriptDst = MaxUserDirectory + "/scripts/dummy_export.ms"
#logFile = ScriptDirectory + "/processes/dummy/log.log" #logFile = ScriptDirectory + "/processes/dummy/log.log"
#outDirTag = ExportBuildDirectory + "/" + DummyTagExportDirectory #outDirTag = ExportBuildDirectory + "/" + DummyTagExportDirectory
#mkPath(log, outDirTag) #mkPath(log, outDirTag)
#outDirWithoutCoarse = ExportBuildDirectory + "/" + DummyExportDirectory #outDirWithoutCoarse = ExportBuildDirectory + "/" + DummyExportDirectory
#mkPath(log, outDirWithoutCoarse) #mkPath(log, outDirWithoutCoarse)
#outDirWithCoarse = ExportBuildDirectory + "/" + DummyWithCoarseMeshExportDirectory #outDirWithCoarse = ExportBuildDirectory + "/" + DummyWithCoarseMeshExportDirectory
#mkPath(log, outDirWithCoarse) #mkPath(log, outDirWithCoarse)
#outDirLightmap = ExportBuildDirectory + "/" + DummyLightmapNotOptimizedExportDirectory #outDirLightmap = ExportBuildDirectory + "/" + DummyLightmapNotOptimizedExportDirectory
#mkPath(log, outDirLightmap) #mkPath(log, outDirLightmap)
#outDirAnim = ExportBuildDirectory + "/" + DummyAnimExportDirectory #outDirAnim = ExportBuildDirectory + "/" + DummyAnimExportDirectory
#mkPath(log, outDirAnim) #mkPath(log, outDirAnim)
#tagList = findFiles(log, outDirTag, "", ".tag") #tagList = findFiles(log, outDirTag, "", ".tag")
#tagLen = len(tagList) #tagLen = len(tagList)
# For each directoy # For each directoy
#if os.path.isfile(scriptDst): #if os.path.isfile(scriptDst):
# os.remove(scriptDst) # os.remove(scriptDst)
#for dir in DummySourceDirectories: #for dir in DummySourceDirectories:
# tagDiff = 1 # tagDiff = 1
# dummySourceDir = DatabaseDirectory + "/" + dir # dummySourceDir = DatabaseDirectory + "/" + dir
# mkPath(log, dummySourceDir) # mkPath(log, dummySourceDir)
# sSrc = open(scriptSrc, "r") # sSrc = open(scriptSrc, "r")
# sDst = open(scriptDst, "w") # sDst = open(scriptDst, "w")
# for line in sSrc: # for line in sSrc:
# newline = line.replace("output_logfile", logFile) # newline = line.replace("output_logfile", logFile)
# newline = newline.replace("dummy_source_directory", dummySourceDir) # newline = newline.replace("dummy_source_directory", dummySourceDir)
# newline = newline.replace("output_directory_tag", outDirTag) # newline = newline.replace("output_directory_tag", outDirTag)
# newline = newline.replace("output_directory_without_coarse_mesh", outDirWithoutCoarse) # newline = newline.replace("output_directory_without_coarse_mesh", outDirWithoutCoarse)
# newline = newline.replace("output_directory_with_coarse_mesh", outDirWithCoarse) # newline = newline.replace("output_directory_with_coarse_mesh", outDirWithCoarse)
# newline = newline.replace("dummy_export_opt_export_lighting", DummyExportOptExportLighting) # newline = newline.replace("dummy_export_opt_export_lighting", DummyExportOptExportLighting)
# newline = newline.replace("dummy_export_opt_shadow", DummyExportOptShadow) # newline = newline.replace("dummy_export_opt_shadow", DummyExportOptShadow)
# newline = newline.replace("dummy_export_opt_lighting_limit", str(DummyExportOptLightingLimit)) # newline = newline.replace("dummy_export_opt_lighting_limit", str(DummyExportOptLightingLimit))
# newline = newline.replace("dummy_export_opt_lumel_size", DummyExportOptLumelSize) # newline = newline.replace("dummy_export_opt_lumel_size", DummyExportOptLumelSize)
# newline = newline.replace("dummy_export_opt_oversampling", str(DummyExportOptOversampling)) # newline = newline.replace("dummy_export_opt_oversampling", str(DummyExportOptOversampling))
# newline = newline.replace("dummy_export_opt_lightmap_log", DummyExportOptLightmapLog) # newline = newline.replace("dummy_export_opt_lightmap_log", DummyExportOptLightmapLog)
# newline = newline.replace("dummy_lightmap_path", outDirLightmap) # newline = newline.replace("dummy_lightmap_path", outDirLightmap)
# newline = newline.replace("output_directory_anim", outDirAnim) # newline = newline.replace("output_directory_anim", outDirAnim)
# sDst.write(newline) # sDst.write(newline)
# sSrc.close() # sSrc.close()
# sDst.close() # sDst.close()
# while tagDiff > 0: # while tagDiff > 0:
# printLog(log, "MAXSCRIPT " + scriptDst) # printLog(log, "MAXSCRIPT " + scriptDst)
# subprocess.call([ Max, "-U", "MAXScript", "dummy_export.ms", "-q", "-mi", "-mip" ]) # subprocess.call([ Max, "-U", "MAXScript", "dummy_export.ms", "-q", "-mi", "-mip" ])
# tagList = findFiles(log, outDirTag, "", ".tag") # tagList = findFiles(log, outDirTag, "", ".tag")
# newTagLen = len(tagList) # newTagLen = len(tagList)
# tagDiff = newTagLen - tagLen # tagDiff = newTagLen - tagLen
# tagLen = newTagLen # tagLen = newTagLen
# printLog(log, "Exported " + str(tagDiff) + " .max files!") # printLog(log, "Exported " + str(tagDiff) + " .max files!")
# tagDiff += hackBdummyTree() # force rerun also when bdummy tree deleted # tagDiff += hackBdummyTree() # force rerun also when bdummy tree deleted
# os.remove(scriptDst) # os.remove(scriptDst)
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,96 +1,96 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 2_build.py # \file 2_build.py
# \brief Build dummy # \brief Build dummy
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Build dummy # Build dummy
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Build dummy") printLog(log, "--- Build dummy")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Find tools # Find tools
ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix) ExecTimeout = findTool(log, ToolDirectories, ExecTimeoutTool, ToolSuffix)
BuildShadowSkin = findTool(log, ToolDirectories, BuildShadowSkinTool, ToolSuffix) BuildShadowSkin = findTool(log, ToolDirectories, BuildShadowSkinTool, ToolSuffix)
BuildClodtex = findTool(log, ToolDirectories, BuildClodtexTool, ToolSuffix) BuildClodtex = findTool(log, ToolDirectories, BuildClodtexTool, ToolSuffix)
LightmapOptimizer = findTool(log, ToolDirectories, LightmapOptimizerTool, ToolSuffix) LightmapOptimizer = findTool(log, ToolDirectories, LightmapOptimizerTool, ToolSuffix)
TgaToDds = findTool(log, ToolDirectories, TgaToDdsTool, ToolSuffix) TgaToDds = findTool(log, ToolDirectories, TgaToDdsTool, ToolSuffix)
BuildCoarseMesh = findTool(log, ToolDirectories, BuildCoarseMeshTool, ToolSuffix) BuildCoarseMesh = findTool(log, ToolDirectories, BuildCoarseMeshTool, ToolSuffix)
#if 1: # todo: CoarseMeshTextureNames length > 0 ... #if 1: # todo: CoarseMeshTextureNames length > 0 ...
# printLog(log, ">>> Build coarse meshes <<<") # printLog(log, ">>> Build coarse meshes <<<")
# dummyWithCoarseMesh = ExportBuildDirectory + "/" + DummyWithCoarseMeshExportDirectory # dummyWithCoarseMesh = ExportBuildDirectory + "/" + DummyWithCoarseMeshExportDirectory
# mkPath(log, dummyWithCoarseMesh) # mkPath(log, dummyWithCoarseMesh)
# dummyWithCoarseMeshBuilded = ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory # dummyWithCoarseMeshBuilded = ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory
# mkPath(log, dummyWithCoarseMeshBuilded) # mkPath(log, dummyWithCoarseMeshBuilded)
# cf = open("confdummy_generated.cfg", "w") # cf = open("confdummy_generated.cfg", "w")
# cf.write("texture_mul_size = " + TextureMulSizeValue + ";\n") # cf.write("texture_mul_size = " + TextureMulSizeValue + ";\n")
# cf.write("\n") # cf.write("\n")
# cf.write("search_path = \n") # cf.write("search_path = \n")
# cf.write("{\n") # cf.write("{\n")
# cf.write("\t\"" + dummyWithCoarseMesh + "\", \n") # cf.write("\t\"" + dummyWithCoarseMesh + "\", \n")
# for dir in MapSourceDirectories: # for dir in MapSourceDirectories:
# cf.write("\t\"" + DatabaseDirectory + "/" + dir + "\", \n") # cf.write("\t\"" + DatabaseDirectory + "/" + dir + "\", \n")
# cf.write("};\n") # cf.write("};\n")
# cf.write("\n") # cf.write("\n")
# cf.write("list_mesh = \n") # cf.write("list_mesh = \n")
# cf.write("{\n") # cf.write("{\n")
# # For each dummy with coarse mesh # # For each dummy with coarse mesh
# files = findFiles(log, dummyWithCoarseMesh, "", ".dummy") # files = findFiles(log, dummyWithCoarseMesh, "", ".dummy")
# for file in files: # for file in files:
# sourceFile = dummyWithCoarseMesh + "/" + file # sourceFile = dummyWithCoarseMesh + "/" + file
# if os.path.isfile(sourceFile): # if os.path.isfile(sourceFile):
# destFile = dummyWithCoarseMeshBuilded + "/" + file # destFile = dummyWithCoarseMeshBuilded + "/" + file
# cf.write("\t\"" + file + "\", \"" + destFile + "\", \n") # cf.write("\t\"" + file + "\", \"" + destFile + "\", \n")
# cf.write("};\n") # cf.write("};\n")
# cf.write("\n") # cf.write("\n")
# cf.write("output_textures = \n") # cf.write("output_textures = \n")
# cf.write("{\n") # cf.write("{\n")
# # For each dummy with coarse mesh # # For each dummy with coarse mesh
# for tn in CoarseMeshTextureNames: # for tn in CoarseMeshTextureNames:
# cf.write("\t\"" + dummyWithCoarseMesh + "/" + tn + ".tga\", \n") # cf.write("\t\"" + dummyWithCoarseMesh + "/" + tn + ".tga\", \n")
# cf.write("};\n") # cf.write("};\n")
# cf.close() # cf.close()
# subprocess.call([ BuildCoarseMesh, "confdummy_generated.cfg" ]) # subprocess.call([ BuildCoarseMesh, "confdummy_generated.cfg" ])
# os.remove("confdummy_generated.cfg") # os.remove("confdummy_generated.cfg")
# for tn in CoarseMeshTextureNames: # for tn in CoarseMeshTextureNames:
# subprocess.call([ TgaToDds, dummyWithCoarseMesh + "/" + tn + ".tga", "-o", dummyWithCoarseMeshBuilded + "/" + tn + ".dds", "-a", "5" ]) # subprocess.call([ TgaToDds, dummyWithCoarseMesh + "/" + tn + ".tga", "-o", dummyWithCoarseMeshBuilded + "/" + tn + ".dds", "-a", "5" ])
log.close() log.close()
# end of file # end of file

@ -1,63 +1,63 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Install dummy # \brief Install dummy
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install dummy # Install dummy
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install dummy") printLog(log, "--- Install dummy")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
#installPath = InstallDirectory + "/" + DummyInstallDirectory #installPath = InstallDirectory + "/" + DummyInstallDirectory
#mkPath(log, installPath) #mkPath(log, installPath)
printLog(log, ">>> Install dummy <<<") printLog(log, ">>> Install dummy <<<")
#mkPath(log, ExportBuildDirectory + "/" + DummyExportDirectory) #mkPath(log, ExportBuildDirectory + "/" + DummyExportDirectory)
#copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyExportDirectory, installPath, ".dummy") #copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyExportDirectory, installPath, ".dummy")
#mkPath(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory) #mkPath(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory)
#copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory, installPath, ".dummy") #copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory, installPath, ".dummy")
#copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory, installPath, ".dds") #copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyWithCoarseMeshBuildDirectory, installPath, ".dds")
#mkPath(log, ExportBuildDirectory + "/" + DummyAnimExportDirectory) #mkPath(log, ExportBuildDirectory + "/" + DummyAnimExportDirectory)
#copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyAnimExportDirectory, installPath, ".anim") #copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + DummyAnimExportDirectory, installPath, ".anim")
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,98 +1,98 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief setup ai_wmap # \brief setup ai_wmap
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Setup ai_wmap # Setup ai_wmap
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Setup ai_wmap") printLog(log, "--- Setup ai_wmap")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Setup build directories # Setup build directories
printLog(log, ">>> Setup build directories <<<") printLog(log, ">>> Setup build directories <<<")
mkPath(log, ExportBuildDirectory + "/" + RbankOutputBuildDirectory) mkPath(log, ExportBuildDirectory + "/" + RbankOutputBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + AiWmapBuildDirectory) mkPath(log, ExportBuildDirectory + "/" + AiWmapBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + AiWmapBuildTagDirectory) mkPath(log, ExportBuildDirectory + "/" + AiWmapBuildTagDirectory)
# Setup lookup directories # Setup lookup directories
printLog(log, ">>> Setup lookup directories <<<") printLog(log, ">>> Setup lookup directories <<<")
for dir in IgLookupDirectories: for dir in IgLookupDirectories:
mkPath(log, ExportBuildDirectory + "/" + dir) mkPath(log, ExportBuildDirectory + "/" + dir)
for dir in PacsPrimLookupDirectories: for dir in PacsPrimLookupDirectories:
mkPath(log, ExportBuildDirectory + "/" + dir) mkPath(log, ExportBuildDirectory + "/" + dir)
# Setup client directories # Setup client directories
printLog(log, ">>> Setup install directories <<<") printLog(log, ">>> Setup install directories <<<")
mkPath(log, InstallDirectory + "/" + AiWmapInstallDirectory) mkPath(log, InstallDirectory + "/" + AiWmapInstallDirectory)
# Setup client directories # Setup client directories
printLog(log, ">>> Setup configuration <<<") printLog(log, ">>> Setup configuration <<<")
mkPath(log, InstallDirectory + "/" + AiWmapInstallDirectory) mkPath(log, InstallDirectory + "/" + AiWmapInstallDirectory)
mkPath(log, ActiveProjectDirectory + "/generated") mkPath(log, ActiveProjectDirectory + "/generated")
cfg = open(ActiveProjectDirectory + "/generated/ai_build_wmap.cfg", "w") cfg = open(ActiveProjectDirectory + "/generated/ai_build_wmap.cfg", "w")
cfg.write("\n") cfg.write("\n")
cfg.write("// AI BUILD WMAP CONFIGURATION\n") cfg.write("// AI BUILD WMAP CONFIGURATION\n")
cfg.write("\n") cfg.write("\n")
cfg.write("Paths = {\n") cfg.write("Paths = {\n")
for dir in IgLookupDirectories: for dir in IgLookupDirectories:
cfg.write("\t\"" + ExportBuildDirectory + "/" + dir + "\", \n") cfg.write("\t\"" + ExportBuildDirectory + "/" + dir + "\", \n")
cfg.write("\t\"" + ExportBuildDirectory + "/" + RbankOutputBuildDirectory + "\", \n") cfg.write("\t\"" + ExportBuildDirectory + "/" + RbankOutputBuildDirectory + "\", \n")
cfg.write("\t\"" + LeveldesignDirectory + "\", \n") cfg.write("\t\"" + LeveldesignDirectory + "\", \n")
cfg.write("};\n") cfg.write("};\n")
cfg.write("\n") cfg.write("\n")
cfg.write("NoRecursePaths = { };\n") cfg.write("NoRecursePaths = { };\n")
cfg.write("\n") cfg.write("\n")
cfg.write("PacsPrimPaths = {\n") cfg.write("PacsPrimPaths = {\n")
for dir in PacsPrimLookupDirectories: for dir in PacsPrimLookupDirectories:
cfg.write("\t\"" + ExportBuildDirectory + "/" + dir + "\", \n") cfg.write("\t\"" + ExportBuildDirectory + "/" + dir + "\", \n")
cfg.write("};\n") cfg.write("};\n")
cfg.write("\n") cfg.write("\n")
cfg.write("OutputPath = \"" + ExportBuildDirectory + "/" + AiWmapBuildDirectory + "\";\n") cfg.write("OutputPath = \"" + ExportBuildDirectory + "/" + AiWmapBuildDirectory + "\";\n")
cfg.write("\n") cfg.write("\n")
cfg.write("Commands = {\n") cfg.write("Commands = {\n")
cfg.write("\t\"Verbose " + str(AiWmapVerbose) + "\", \n") cfg.write("\t\"Verbose " + str(AiWmapVerbose) + "\", \n")
for startPoint in AiWmapStartPoints: for startPoint in AiWmapStartPoints:
cfg.write("\t\"setStartPoint " + startPoint + "\", \n") cfg.write("\t\"setStartPoint " + startPoint + "\", \n")
cfg.write("};\n") cfg.write("};\n")
cfg.write("\n") cfg.write("\n")
cfg.close() cfg.close()
log.close() log.close()
# end of file # end of file

@ -1,49 +1,49 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 1_export.py # \file 1_export.py
# \brief Export ai_wmap # \brief Export ai_wmap
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Export ai_wmap # Export ai_wmap
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Export ai_wmap") printLog(log, "--- Export ai_wmap")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,57 +1,57 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Install ai_wmap # \brief Install ai_wmap
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install ai_wmap # Install ai_wmap
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install ai_wmap") printLog(log, "--- Install ai_wmap")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
installPath = InstallDirectory + "/" + AiWmapInstallDirectory installPath = InstallDirectory + "/" + AiWmapInstallDirectory
mkPath(log, installPath) mkPath(log, installPath)
printLog(log, ">>> Install ai_wmap <<<") printLog(log, ">>> Install ai_wmap <<<")
mkPath(log, ExportBuildDirectory + "/" + AiWmapBuildDirectory) mkPath(log, ExportBuildDirectory + "/" + AiWmapBuildDirectory)
copyFilesNoTreeIfNeeded(log, ExportBuildDirectory + "/" + AiWmapBuildDirectory, installPath) copyFilesNoTreeIfNeeded(log, ExportBuildDirectory + "/" + AiWmapBuildDirectory, installPath)
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,66 +1,66 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief Setup anim # \brief Setup anim
# \date 2009-03-10 14:56GMT # \date 2009-03-10 14:56GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Setup anim # Setup anim
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Setup anim") printLog(log, "--- Setup anim")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Setup source directories # Setup source directories
printLog(log, ">>> Setup source directories <<<") printLog(log, ">>> Setup source directories <<<")
for dir in AnimSourceDirectories: for dir in AnimSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories # Setup export directories
printLog(log, ">>> Setup export directories <<<") printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + AnimExportDirectory) mkPath(log, ExportBuildDirectory + "/" + AnimExportDirectory)
# Setup build directories # Setup build directories
printLog(log, ">>> Setup build directories <<<") printLog(log, ">>> Setup build directories <<<")
mkPath(log, ExportBuildDirectory + "/" + AnimBuildDirectory) mkPath(log, ExportBuildDirectory + "/" + AnimBuildDirectory)
# Setup client directories # Setup client directories
printLog(log, ">>> Setup client directories <<<") printLog(log, ">>> Setup client directories <<<")
mkPath(log, InstallDirectory + "/" + AnimInstallDirectory) mkPath(log, InstallDirectory + "/" + AnimInstallDirectory)
log.close() log.close()
# end of file # end of file

@ -1,139 +1,139 @@
#!/usr/bin/python #!/usr/bin/python
# #
# ################################################################# # #################################################################
# ## WARNING : this is a generated file, don't change it ! # ## WARNING : this is a generated file, don't change it !
# ################################################################# # #################################################################
# #
# \file 1_export.py # \file 1_export.py
# \brief Export anim # \brief Export anim
# \date 2015-01-06-16-31-GMT # \date 2015-01-06-16-31-GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Export anim # Export anim
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
if os.path.isfile("temp_log.log"): if os.path.isfile("temp_log.log"):
os.remove("temp_log.log") os.remove("temp_log.log")
log = open("temp_log.log", "w") log = open("temp_log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Export anim") printLog(log, "--- Export anim")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Find tools # Find tools
# ... # ...
# Export anim 3dsmax # Export anim 3dsmax
if MaxAvailable: if MaxAvailable:
# Find tools # Find tools
Max = findMax(log, MaxDirectory, MaxExecutable) Max = findMax(log, MaxDirectory, MaxExecutable)
printLog(log, "") printLog(log, "")
printLog(log, ">>> Export anim 3dsmax <<<") printLog(log, ">>> Export anim 3dsmax <<<")
mkPath(log, ExportBuildDirectory + "/" + AnimExportDirectory) mkPath(log, ExportBuildDirectory + "/" + AnimExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + AnimTagExportDirectory) mkPath(log, ExportBuildDirectory + "/" + AnimTagExportDirectory)
for dir in AnimSourceDirectories: for dir in AnimSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + AnimTagExportDirectory, ".max.tag")): if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + AnimTagExportDirectory, ".max.tag")):
scriptSrc = "maxscript/anim_export.ms" scriptSrc = "maxscript/anim_export.ms"
scriptDst = MaxUserDirectory + "/scripts/anim_export.ms" scriptDst = MaxUserDirectory + "/scripts/anim_export.ms"
outputLogfile = ScriptDirectory + "/processes/anim/log.log" outputLogfile = ScriptDirectory + "/processes/anim/log.log"
outputDirectory = ExportBuildDirectory + "/" + AnimExportDirectory outputDirectory = ExportBuildDirectory + "/" + AnimExportDirectory
tagDirectory = ExportBuildDirectory + "/" + AnimTagExportDirectory tagDirectory = ExportBuildDirectory + "/" + AnimTagExportDirectory
maxSourceDir = DatabaseDirectory + "/" + dir maxSourceDir = DatabaseDirectory + "/" + dir
maxRunningTagFile = tagDirectory + "/max_running.tag" maxRunningTagFile = tagDirectory + "/max_running.tag"
tagList = findFiles(log, tagDirectory, "", ".max.tag") tagList = findFiles(log, tagDirectory, "", ".max.tag")
tagLen = len(tagList) tagLen = len(tagList)
if os.path.isfile(scriptDst): if os.path.isfile(scriptDst):
os.remove(scriptDst) os.remove(scriptDst)
tagDiff = 1 tagDiff = 1
sSrc = open(scriptSrc, "r") sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w") sDst = open(scriptDst, "w")
for line in sSrc: for line in sSrc:
newline = line.replace("%OutputLogfile%", outputLogfile) newline = line.replace("%OutputLogfile%", outputLogfile)
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir) newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
newline = newline.replace("%OutputDirectory%", outputDirectory) newline = newline.replace("%OutputDirectory%", outputDirectory)
newline = newline.replace("%TagDirectory%", tagDirectory) newline = newline.replace("%TagDirectory%", tagDirectory)
sDst.write(newline) sDst.write(newline)
sSrc.close() sSrc.close()
sDst.close() sDst.close()
zeroRetryLimit = 3 zeroRetryLimit = 3
while tagDiff > 0: while tagDiff > 0:
mrt = open(maxRunningTagFile, "w") mrt = open(maxRunningTagFile, "w")
mrt.write("moe-moe-kyun") mrt.write("moe-moe-kyun")
mrt.close() mrt.close()
printLog(log, "MAXSCRIPT " + scriptDst) printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "anim_export.ms", "-q", "-mi", "-mip" ]) subprocess.call([ Max, "-U", "MAXScript", "anim_export.ms", "-q", "-mi", "-mip" ])
if os.path.exists(outputLogfile): if os.path.exists(outputLogfile):
try: try:
lSrc = open(outputLogfile, "r") lSrc = open(outputLogfile, "r")
for line in lSrc: for line in lSrc:
lineStrip = line.strip() lineStrip = line.strip()
if (len(lineStrip) > 0): if (len(lineStrip) > 0):
printLog(log, lineStrip) printLog(log, lineStrip)
lSrc.close() lSrc.close()
os.remove(outputLogfile) os.remove(outputLogfile)
except Exception: except Exception:
printLog(log, "ERROR Failed to read 3dsmax log") printLog(log, "ERROR Failed to read 3dsmax log")
else: else:
printLog(log, "WARNING No 3dsmax log") printLog(log, "WARNING No 3dsmax log")
tagList = findFiles(log, tagDirectory, "", ".max.tag") tagList = findFiles(log, tagDirectory, "", ".max.tag")
newTagLen = len(tagList) newTagLen = len(tagList)
tagDiff = newTagLen - tagLen tagDiff = newTagLen - tagLen
tagLen = newTagLen tagLen = newTagLen
addTagDiff = 0 addTagDiff = 0
if os.path.exists(maxRunningTagFile): if os.path.exists(maxRunningTagFile):
printLog(log, "FAIL 3ds Max crashed and/or file export failed!") printLog(log, "FAIL 3ds Max crashed and/or file export failed!")
if tagDiff == 0: if tagDiff == 0:
if zeroRetryLimit > 0: if zeroRetryLimit > 0:
zeroRetryLimit = zeroRetryLimit - 1 zeroRetryLimit = zeroRetryLimit - 1
addTagDiff = 1 addTagDiff = 1
else: else:
printLog(log, "FAIL Retry limit reached!") printLog(log, "FAIL Retry limit reached!")
else: else:
addTagDiff = 1 addTagDiff = 1
os.remove(maxRunningTagFile) os.remove(maxRunningTagFile)
printLog(log, "Exported " + str(tagDiff) + " .max files!") printLog(log, "Exported " + str(tagDiff) + " .max files!")
tagDiff += addTagDiff tagDiff += addTagDiff
os.remove(scriptDst) os.remove(scriptDst)
printLog(log, "") printLog(log, "")
log.close() log.close()
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
shutil.move("temp_log.log", "log.log") shutil.move("temp_log.log", "log.log")
# end of file # end of file

@ -1,70 +1,70 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 2_build.py # \file 2_build.py
# \brief Build anim # \brief Build anim
# \date 2009-03-10 13:13GMT # \date 2009-03-10 13:13GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Build anim # Build anim
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Build anim") printLog(log, "--- Build anim")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Find tools # Find tools
AnimBuilder = findTool(log, ToolDirectories, AnimBuilderTool, ToolSuffix) AnimBuilder = findTool(log, ToolDirectories, AnimBuilderTool, ToolSuffix)
printLog(log, "") printLog(log, "")
# For each anim directory # For each anim directory
printLog(log, ">>> Build anim <<<") printLog(log, ">>> Build anim <<<")
if AnimBuilder == "": if AnimBuilder == "":
toolLogFail(log, AnimBuilderTool, ToolSuffix) toolLogFail(log, AnimBuilderTool, ToolSuffix)
else: else:
srcDir = ExportBuildDirectory + "/" + AnimExportDirectory srcDir = ExportBuildDirectory + "/" + AnimExportDirectory
mkPath(log, srcDir) mkPath(log, srcDir)
destDir = ExportBuildDirectory + "/" + AnimBuildDirectory destDir = ExportBuildDirectory + "/" + AnimBuildDirectory
mkPath(log, destDir) mkPath(log, destDir)
if DoOptimizeAnimations: if DoOptimizeAnimations:
printLog(log, ">>> Optimizing animations <<<") printLog(log, ">>> Optimizing animations <<<")
subprocess.call([ AnimBuilder, srcDir, destDir, ActiveProjectDirectory + "/anim_builder.cfg" ]) subprocess.call([ AnimBuilder, srcDir, destDir, ActiveProjectDirectory + "/anim_builder.cfg" ])
else: else:
printLog(log, ">>> Not optimizing animations <<<") printLog(log, ">>> Not optimizing animations <<<")
copyFilesNoTreeIfNeeded(log, srcDir, destDir) copyFilesNoTreeIfNeeded(log, srcDir, destDir)
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,57 +1,57 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Install anim # \brief Install anim
# \date 2009-03-10 13:13GMT # \date 2009-03-10 13:13GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install anim # Install anim
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install anim") printLog(log, "--- Install anim")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
printLog(log, ">>> Install anim <<<") printLog(log, ">>> Install anim <<<")
srcDir = ExportBuildDirectory + "/" + AnimBuildDirectory srcDir = ExportBuildDirectory + "/" + AnimBuildDirectory
mkPath(log, srcDir) mkPath(log, srcDir)
destDir = InstallDirectory + "/" + AnimInstallDirectory destDir = InstallDirectory + "/" + AnimInstallDirectory
mkPath(log, destDir) mkPath(log, destDir)
copyFilesNoTreeIfNeeded(log, srcDir, destDir) copyFilesNoTreeIfNeeded(log, srcDir, destDir)
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,49 +1,49 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 1_export.py # \file 1_export.py
# \brief Export cartographer # \brief Export cartographer
# \date 2014-09-13 13:32GMT # \date 2014-09-13 13:32GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Export cartographer # Export cartographer
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2014 Jan BOON # Copyright (C) 2014 Jan BOON
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Export cartographer") printLog(log, "--- Export cartographer")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,62 +1,87 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 2_build.py # \file 2_build.py
# \brief Build cartographer # \brief Build cartographer
# \date 2014-09-13 13:32GMT # \date 2014-09-13 13:32GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Build cartographer # Build cartographer
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2014 Jan BOON # Copyright (C) 2014 Jan BOON
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Build cartographer") printLog(log, "--- Build cartographer")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Find tools # Find tools
R2IslandsTextures = findTool(log, ToolDirectories, R2IslandsTexturesTool, ToolSuffix) R2IslandsTextures = findTool(log, ToolDirectories, R2IslandsTexturesTool, ToolSuffix)
TgaToDds = findTool(log, ToolDirectories, TgaToDdsTool, ToolSuffix)
if R2IslandsTextures == "":
toolLogFail(log, R2IslandsTexturesTool, ToolSuffix) if R2IslandsTextures == "":
else: toolLogFail(log, R2IslandsTexturesTool, ToolSuffix)
printLog(log, ">>> Copy island_screenshots.cfg <<<") else:
cfgPath = ActiveProjectDirectory + "/generated/island_screenshots.cfg" printLog(log, ">>> Copy island_screenshots.cfg <<<")
shutil.copy(cfgPath, "island_screenshots.cfg") cfgPath = ActiveProjectDirectory + "/generated/island_screenshots.cfg"
printLog(log, ">>> Build cartographer <<<") shutil.copy(cfgPath, "island_screenshots.cfg")
subprocess.call([ R2IslandsTextures ]) printLog(log, ">>> Build cartographer <<<")
printLog(log, "") mkPath(log, ExportBuildDirectory + "/" + CartographerBuildDirectory)
subprocess.call([ R2IslandsTextures ])
log.close() printLog(log, "")
printLog(log, ">>> Compress cartographer maps to DDS <<<")
# end of file if TgaToDds == "":
toolLogFail(log, TgaToDdsTool, ToolSuffix)
else:
destPath = ExportBuildDirectory + "/" + CartographerMapBuildDirectory
mkPath(log, destPath)
sourcePath = ExportBuildDirectory + "/" + CartographerBuildDirectory
mkPath(log, sourcePath)
files = os.listdir(sourcePath)
len_tga_png = len(".tga")
len_dds = len(".dds")
for fileName in files:
if isLegalFileName(fileName):
sourceFile = sourcePath + "/" + fileName
if os.path.isfile(sourceFile):
if (fileName[-len_tga_png:].lower() == ".tga") or (fileName[-len_tga_png:].lower() == ".png"):
destFile = destPath + "/" + os.path.basename(fileName)[0:-len_tga_png] + ".dds"
if needUpdateLogRemoveDest(log, sourceFile, destFile):
subprocess.call([ TgaToDds, sourceFile, "-o", destFile, "-m" ])
elif not os.path.isdir(sourceFile):
printLog(log, "FAIL ?! file not dir or file ?! " + sourceFile)
printLog(log, "")
log.close()
# end of file

@ -1,57 +1,66 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Install cartographer # \brief Install cartographer
# \date 2014-09-13 13:32GMT # \date 2014-09-13 13:32GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install cartographer # Install cartographer
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2014 Jan BOON # Copyright (C) 2014 Jan BOON
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install cartographer") printLog(log, "--- Install cartographer")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
installPath = InstallDirectory + "/" + CartographerInstallDirectory
mkPath(log, installPath) installPath = InstallDirectory + "/" + CartographerInstallDirectory
islandsInstallPath = InstallDirectory + "/" + IslandsInstallDirectory
printLog(log, ">>> Install cartographer <<<")
mkPath(log, ExportBuildDirectory + "/" + CartographerBuildDirectory)
copyFilesNoTreeIfNeeded(log, ExportBuildDirectory + "/" + CartographerBuildDirectory, installPath) printLog(log, ">>> Install cartographer <<<")
printLog(log, "") mkPath(log, ExportBuildDirectory + "/" + CartographerMapBuildDirectory)
log.close() mkPath(log, installPath)
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + CartographerMapBuildDirectory, installPath, ".dds")
# end of file mkPath(log, ExportBuildDirectory + "/" + CartographerBuildDirectory)
mkPath(log, islandsInstallPath)
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + CartographerBuildDirectory, islandsInstallPath, ".xml")
printLog(log, "")
log.close()
# end of file

@ -1,65 +1,65 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief Setup cegui # \brief Setup cegui
# \date 2009-03-14-17-46-GMT # \date 2009-03-14-17-46-GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Setup cegui # Setup cegui
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Setup cegui") printLog(log, "--- Setup cegui")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Setup source directories # Setup source directories
printLog(log, ">>> Setup source directories <<<") printLog(log, ">>> Setup source directories <<<")
for dir in CeguiImagesetSourceDirectories: for dir in CeguiImagesetSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories # Setup export directories
printLog(log, ">>> Setup export directories <<<") printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + CeguiImagesetExportDirectory) mkPath(log, ExportBuildDirectory + "/" + CeguiImagesetExportDirectory)
# Setup build directories # Setup build directories
printLog(log, ">>> Setup build directories <<<") printLog(log, ">>> Setup build directories <<<")
mkPath(log, ExportBuildDirectory + "/" + CeguiImagesetBuildDirectory) mkPath(log, ExportBuildDirectory + "/" + CeguiImagesetBuildDirectory)
# Setup client directories # Setup client directories
printLog(log, ">>> Setup client directories <<<") printLog(log, ">>> Setup client directories <<<")
mkPath(log, InstallDirectory + "/" + CeguiImagesetInstallDirectory) mkPath(log, InstallDirectory + "/" + CeguiImagesetInstallDirectory)
log.close() log.close()
# end of file # end of file

@ -1,67 +1,67 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 1_export.py # \file 1_export.py
# \brief Export cegui # \brief Export cegui
# \date 2009-03-14-17-46-GMT # \date 2009-03-14-17-46-GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Export cegui # Export cegui
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Export cegui") printLog(log, "--- Export cegui")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# For each cegui imageset directory # For each cegui imageset directory
printLog(log, ">>> Export cegui imagesets <<<") printLog(log, ">>> Export cegui imagesets <<<")
destDir = ExportBuildDirectory + "/" + CeguiImagesetExportDirectory destDir = ExportBuildDirectory + "/" + CeguiImagesetExportDirectory
mkPath(log, destDir) mkPath(log, destDir)
for dir in CeguiImagesetSourceDirectories: for dir in CeguiImagesetSourceDirectories:
srcDir = DatabaseDirectory + "/" + dir srcDir = DatabaseDirectory + "/" + dir
mkPath(log, srcDir) mkPath(log, srcDir)
imagesets = findFiles(log, srcDir, "", ".imageset") imagesets = findFiles(log, srcDir, "", ".imageset")
if (len(imagesets) != 1): if (len(imagesets) != 1):
printLog(log, "FAIL Cannot find *.imageset, folder must contain at least one and only one imageset xml file") printLog(log, "FAIL Cannot find *.imageset, folder must contain at least one and only one imageset xml file")
else: else:
niouname = dir.replace("/", "_") niouname = dir.replace("/", "_")
newpath = destDir + "/" + niouname newpath = destDir + "/" + niouname
mkPath(log, newpath) mkPath(log, newpath)
copyFileIfNeeded(log, srcDir + "/" + imagesets[0], newpath + ".imageset") copyFileIfNeeded(log, srcDir + "/" + imagesets[0], newpath + ".imageset")
copyFilesExtNoTreeIfNeeded(log, srcDir, newpath, ".tga") copyFilesExtNoTreeIfNeeded(log, srcDir, newpath, ".tga")
copyFilesExtNoTreeIfNeeded(log, srcDir, newpath, ".png") copyFilesExtNoTreeIfNeeded(log, srcDir, newpath, ".png")
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,67 +1,67 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 2_build.py # \file 2_build.py
# \brief Build cegui # \brief Build cegui
# \date 2009-03-14-17-46-GMT # \date 2009-03-14-17-46-GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Build cegui # Build cegui
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Build cegui") printLog(log, "--- Build cegui")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Find tools # Find tools
BuildImageset = findTool(log, ToolDirectories, BuildImagesetTool, ToolSuffix) BuildImageset = findTool(log, ToolDirectories, BuildImagesetTool, ToolSuffix)
printLog(log, "") printLog(log, "")
# For each cegui imageset directory # For each cegui imageset directory
printLog(log, ">>> Build cegui imagesets <<<") printLog(log, ">>> Build cegui imagesets <<<")
if BuildImageset == "": if BuildImageset == "":
toolLogFail(log, BuildImagesetTool, ToolSuffix) toolLogFail(log, BuildImagesetTool, ToolSuffix)
else: else:
srcDir = ExportBuildDirectory + "/" + CeguiImagesetExportDirectory srcDir = ExportBuildDirectory + "/" + CeguiImagesetExportDirectory
mkPath(log, srcDir) mkPath(log, srcDir)
destDir = ExportBuildDirectory + "/" + CeguiImagesetBuildDirectory destDir = ExportBuildDirectory + "/" + CeguiImagesetBuildDirectory
mkPath(log, destDir) mkPath(log, destDir)
for dir in os.listdir(srcDir): for dir in os.listdir(srcDir):
if (os.path.isdir(srcDir + "/" + dir)) and dir != ".svn" and dir != "*.*": if (os.path.isdir(srcDir + "/" + dir)) and dir != ".svn" and dir != "*.*":
mkPath(log, srcDir + "/" + dir) mkPath(log, srcDir + "/" + dir)
subprocess.call([ BuildImageset, destDir + "/" + dir + ".tga", srcDir + "/" + dir ]) subprocess.call([ BuildImageset, destDir + "/" + dir + ".tga", srcDir + "/" + dir ])
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,56 +1,56 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Install cegui # \brief Install cegui
# \date 2009-03-14-17-46-GMT # \date 2009-03-14-17-46-GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Install cegui # Install cegui
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install cegui") printLog(log, "--- Install cegui")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
printLog(log, ">>> Install cegui imagesets <<<") printLog(log, ">>> Install cegui imagesets <<<")
srcDir = ExportBuildDirectory + "/" + CeguiImagesetBuildDirectory srcDir = ExportBuildDirectory + "/" + CeguiImagesetBuildDirectory
mkPath(log, srcDir) mkPath(log, srcDir)
destDir = InstallDirectory + "/" + CeguiImagesetInstallDirectory destDir = InstallDirectory + "/" + CeguiImagesetInstallDirectory
mkPath(log, destDir) mkPath(log, destDir)
copyFilesNoTreeIfNeeded(log, srcDir, destDir) copyFilesNoTreeIfNeeded(log, srcDir, destDir)
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,87 +1,87 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief Setup clodbank # \brief Setup clodbank
# \date 2009-03-10 14:56GMT # \date 2009-03-10 14:56GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Setup clodbank # Setup clodbank
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Setup clodbank") printLog(log, "--- Setup clodbank")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Setup source directories # Setup source directories
printLog(log, ">>> Setup source directories <<<") printLog(log, ">>> Setup source directories <<<")
for dir in ClodSourceDirectories: for dir in ClodSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories # Setup export directories
printLog(log, ">>> Setup export directories <<<") printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + ClodTagExportDirectory) mkPath(log, ExportBuildDirectory + "/" + ClodTagExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory) mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory) mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
# Setup build directories # Setup build directories
printLog(log, ">>> Setup build directories <<<") printLog(log, ">>> Setup build directories <<<")
mkPath(log, ExportBuildDirectory + "/" + ClodBankBuildDirectory) mkPath(log, ExportBuildDirectory + "/" + ClodBankBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + AnimBuildDirectory) mkPath(log, ExportBuildDirectory + "/" + AnimBuildDirectory)
# Setup client directories # Setup client directories
printLog(log, ">>> Setup client directories <<<") printLog(log, ">>> Setup client directories <<<")
mkPath(log, InstallDirectory + "/" + ShapeInstallDirectory) mkPath(log, InstallDirectory + "/" + ShapeInstallDirectory)
# Setup configuration files # Setup configuration files
printLog(log, ">>> Setup configuration files <<<") printLog(log, ">>> Setup configuration files <<<")
mkPath(log, ActiveProjectDirectory + "/generated") mkPath(log, ActiveProjectDirectory + "/generated")
cfgOut = open(ActiveProjectDirectory + "/generated/clod_paths.cfg", "w") cfgOut = open(ActiveProjectDirectory + "/generated/clod_paths.cfg", "w")
cfgOut.write("\n") cfgOut.write("\n")
cfgOut.write("// The search pathes, look in the current process\n") cfgOut.write("// The search pathes, look in the current process\n")
cfgOut.write("search_pathes = \n") cfgOut.write("search_pathes = \n")
cfgOut.write("{\n") cfgOut.write("{\n")
cfgOut.write("\t\"" + ExportBuildDirectory + "/" + ClodExportDirectory + "\", \n") cfgOut.write("\t\"" + ExportBuildDirectory + "/" + ClodExportDirectory + "\", \n")
cfgOut.write("\t\"" + ExportBuildDirectory + "/" + SkelExportDirectory + "\", \n") cfgOut.write("\t\"" + ExportBuildDirectory + "/" + SkelExportDirectory + "\", \n")
cfgOut.write("\t\"" + ExportBuildDirectory + "/" + AnimBuildDirectory + "\", \n") cfgOut.write("\t\"" + ExportBuildDirectory + "/" + AnimBuildDirectory + "\", \n")
cfgOut.write("\t\"" + ExportBuildDirectory + "/" + ShapeOptimizedBuildDirectory + "\", \n") cfgOut.write("\t\"" + ExportBuildDirectory + "/" + ShapeOptimizedBuildDirectory + "\", \n")
cfgOut.write("\t\"" + ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory + "\", \n") cfgOut.write("\t\"" + ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory + "\", \n")
cfgOut.write("};\n") cfgOut.write("};\n")
cfgOut.write("\n") cfgOut.write("\n")
cfgOut.close() cfgOut.close()
log.close() log.close()
# end of file # end of file

@ -1,139 +1,139 @@
#!/usr/bin/python #!/usr/bin/python
# #
# ################################################################# # #################################################################
# ## WARNING : this is a generated file, don't change it ! # ## WARNING : this is a generated file, don't change it !
# ################################################################# # #################################################################
# #
# \file 1_export.py # \file 1_export.py
# \brief Export clodbank # \brief Export clodbank
# \date 2015-01-06-16-31-GMT # \date 2015-01-06-16-31-GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Export clodbank # Export clodbank
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
if os.path.isfile("temp_log.log"): if os.path.isfile("temp_log.log"):
os.remove("temp_log.log") os.remove("temp_log.log")
log = open("temp_log.log", "w") log = open("temp_log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Export clodbank") printLog(log, "--- Export clodbank")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Find tools # Find tools
# ... # ...
# Export clodbank 3dsmax # Export clodbank 3dsmax
if MaxAvailable: if MaxAvailable:
# Find tools # Find tools
Max = findMax(log, MaxDirectory, MaxExecutable) Max = findMax(log, MaxDirectory, MaxExecutable)
printLog(log, "") printLog(log, "")
printLog(log, ">>> Export clodbank 3dsmax <<<") printLog(log, ">>> Export clodbank 3dsmax <<<")
mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory) mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ClodTagExportDirectory) mkPath(log, ExportBuildDirectory + "/" + ClodTagExportDirectory)
for dir in ClodSourceDirectories: for dir in ClodSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + ClodTagExportDirectory, ".max.tag")): if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + ClodTagExportDirectory, ".max.tag")):
scriptSrc = "maxscript/clod_export.ms" scriptSrc = "maxscript/clod_export.ms"
scriptDst = MaxUserDirectory + "/scripts/clod_export.ms" scriptDst = MaxUserDirectory + "/scripts/clod_export.ms"
outputLogfile = ScriptDirectory + "/processes/clodbank/log.log" outputLogfile = ScriptDirectory + "/processes/clodbank/log.log"
outputDirectory = ExportBuildDirectory + "/" + ClodExportDirectory outputDirectory = ExportBuildDirectory + "/" + ClodExportDirectory
tagDirectory = ExportBuildDirectory + "/" + ClodTagExportDirectory tagDirectory = ExportBuildDirectory + "/" + ClodTagExportDirectory
maxSourceDir = DatabaseDirectory + "/" + dir maxSourceDir = DatabaseDirectory + "/" + dir
maxRunningTagFile = tagDirectory + "/max_running.tag" maxRunningTagFile = tagDirectory + "/max_running.tag"
tagList = findFiles(log, tagDirectory, "", ".max.tag") tagList = findFiles(log, tagDirectory, "", ".max.tag")
tagLen = len(tagList) tagLen = len(tagList)
if os.path.isfile(scriptDst): if os.path.isfile(scriptDst):
os.remove(scriptDst) os.remove(scriptDst)
tagDiff = 1 tagDiff = 1
sSrc = open(scriptSrc, "r") sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w") sDst = open(scriptDst, "w")
for line in sSrc: for line in sSrc:
newline = line.replace("%OutputLogfile%", outputLogfile) newline = line.replace("%OutputLogfile%", outputLogfile)
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir) newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
newline = newline.replace("%OutputDirectory%", outputDirectory) newline = newline.replace("%OutputDirectory%", outputDirectory)
newline = newline.replace("%TagDirectory%", tagDirectory) newline = newline.replace("%TagDirectory%", tagDirectory)
sDst.write(newline) sDst.write(newline)
sSrc.close() sSrc.close()
sDst.close() sDst.close()
zeroRetryLimit = 3 zeroRetryLimit = 3
while tagDiff > 0: while tagDiff > 0:
mrt = open(maxRunningTagFile, "w") mrt = open(maxRunningTagFile, "w")
mrt.write("moe-moe-kyun") mrt.write("moe-moe-kyun")
mrt.close() mrt.close()
printLog(log, "MAXSCRIPT " + scriptDst) printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "clod_export.ms", "-q", "-mi", "-mip" ]) subprocess.call([ Max, "-U", "MAXScript", "clod_export.ms", "-q", "-mi", "-mip" ])
if os.path.exists(outputLogfile): if os.path.exists(outputLogfile):
try: try:
lSrc = open(outputLogfile, "r") lSrc = open(outputLogfile, "r")
for line in lSrc: for line in lSrc:
lineStrip = line.strip() lineStrip = line.strip()
if (len(lineStrip) > 0): if (len(lineStrip) > 0):
printLog(log, lineStrip) printLog(log, lineStrip)
lSrc.close() lSrc.close()
os.remove(outputLogfile) os.remove(outputLogfile)
except Exception: except Exception:
printLog(log, "ERROR Failed to read 3dsmax log") printLog(log, "ERROR Failed to read 3dsmax log")
else: else:
printLog(log, "WARNING No 3dsmax log") printLog(log, "WARNING No 3dsmax log")
tagList = findFiles(log, tagDirectory, "", ".max.tag") tagList = findFiles(log, tagDirectory, "", ".max.tag")
newTagLen = len(tagList) newTagLen = len(tagList)
tagDiff = newTagLen - tagLen tagDiff = newTagLen - tagLen
tagLen = newTagLen tagLen = newTagLen
addTagDiff = 0 addTagDiff = 0
if os.path.exists(maxRunningTagFile): if os.path.exists(maxRunningTagFile):
printLog(log, "FAIL 3ds Max crashed and/or file export failed!") printLog(log, "FAIL 3ds Max crashed and/or file export failed!")
if tagDiff == 0: if tagDiff == 0:
if zeroRetryLimit > 0: if zeroRetryLimit > 0:
zeroRetryLimit = zeroRetryLimit - 1 zeroRetryLimit = zeroRetryLimit - 1
addTagDiff = 1 addTagDiff = 1
else: else:
printLog(log, "FAIL Retry limit reached!") printLog(log, "FAIL Retry limit reached!")
else: else:
addTagDiff = 1 addTagDiff = 1
os.remove(maxRunningTagFile) os.remove(maxRunningTagFile)
printLog(log, "Exported " + str(tagDiff) + " .max files!") printLog(log, "Exported " + str(tagDiff) + " .max files!")
tagDiff += addTagDiff tagDiff += addTagDiff
os.remove(scriptDst) os.remove(scriptDst)
printLog(log, "") printLog(log, "")
log.close() log.close()
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
shutil.move("temp_log.log", "log.log") shutil.move("temp_log.log", "log.log")
# end of file # end of file

@ -1,68 +1,68 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 2_build.py # \file 2_build.py
# \brief Build clodbank # \brief Build clodbank
# \date 2009-03-10 13:13GMT # \date 2009-03-10 13:13GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Build clodbank # Build clodbank
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Build clodbank") printLog(log, "--- Build clodbank")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Find tools # Find tools
BuildClodBank = findTool(log, ToolDirectories, BuildClodBankTool, ToolSuffix) BuildClodBank = findTool(log, ToolDirectories, BuildClodBankTool, ToolSuffix)
printLog(log, "") printLog(log, "")
# Build clodbank # Build clodbank
printLog(log, ">>> Build clodbank <<<") printLog(log, ">>> Build clodbank <<<")
if BuildClodBank == "": if BuildClodBank == "":
toolLogFail(log, BuildClodBankTool, ToolSuffix) toolLogFail(log, BuildClodBankTool, ToolSuffix)
else: else:
srcDir = ExportBuildDirectory + "/" + ClodExportDirectory srcDir = ExportBuildDirectory + "/" + ClodExportDirectory
mkPath(log, srcDir) mkPath(log, srcDir)
destDir = ExportBuildDirectory + "/" + ClodBankBuildDirectory destDir = ExportBuildDirectory + "/" + ClodBankBuildDirectory
mkPath(log, destDir) mkPath(log, destDir)
mkPath(log, ActiveProjectDirectory + "/generated") mkPath(log, ActiveProjectDirectory + "/generated")
destFile = destDir + "/" + ClodBankFileName destFile = destDir + "/" + ClodBankFileName
configFile = DatabaseDirectory + "/" + ClodConfigFile configFile = DatabaseDirectory + "/" + ClodConfigFile
subprocess.call([ BuildClodBank, ActiveProjectDirectory + "/generated/clod_paths.cfg", configFile, destFile ]) subprocess.call([ BuildClodBank, ActiveProjectDirectory + "/generated/clod_paths.cfg", configFile, destFile ])
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,57 +1,57 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Install clodbank # \brief Install clodbank
# \date 2009-03-10 13:13GMT # \date 2009-03-10 13:13GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install clodbank # Install clodbank
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install clodbank") printLog(log, "--- Install clodbank")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
printLog(log, ">>> Install clodbank <<<") printLog(log, ">>> Install clodbank <<<")
srcDir = ExportBuildDirectory + "/" + ClodBankBuildDirectory srcDir = ExportBuildDirectory + "/" + ClodBankBuildDirectory
mkPath(log, srcDir) mkPath(log, srcDir)
destDir = InstallDirectory + "/" + ShapeInstallDirectory destDir = InstallDirectory + "/" + ShapeInstallDirectory
mkPath(log, destDir) mkPath(log, destDir)
copyFilesNoTreeIfNeeded(log, srcDir, destDir) copyFilesNoTreeIfNeeded(log, srcDir, destDir)
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,76 +1,76 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief setup copy # \brief setup copy
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Setup copy # Setup copy
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Setup copy") printLog(log, "--- Setup copy")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Setup source directories # Setup source directories
printLog(log, ">>> Setup source directories <<<") printLog(log, ">>> Setup source directories <<<")
for dir in CopyDirectSourceDirectories: for dir in CopyDirectSourceDirectories:
mkPath(log, dir) mkPath(log, dir)
for file in CopyDirectSourceFiles: for file in CopyDirectSourceFiles:
mkPath(log, os.path.dirname(file)) mkPath(log, os.path.dirname(file))
for dir in CopyLeveldesignSourceDirectories: for dir in CopyLeveldesignSourceDirectories:
mkPath(log, LeveldesignDirectory + "/" + dir) mkPath(log, LeveldesignDirectory + "/" + dir)
for file in CopyLeveldesignSourceFiles: for file in CopyLeveldesignSourceFiles:
mkPath(log, os.path.dirname(LeveldesignDirectory + "/" + file)) mkPath(log, os.path.dirname(LeveldesignDirectory + "/" + file))
for dir in CopyLeveldesignWorldSourceDirectories: for dir in CopyLeveldesignWorldSourceDirectories:
mkPath(log, LeveldesignWorldDirectory + "/" + dir) mkPath(log, LeveldesignWorldDirectory + "/" + dir)
for file in CopyLeveldesignWorldSourceFiles: for file in CopyLeveldesignWorldSourceFiles:
mkPath(log, os.path.dirname(LeveldesignWorldDirectory + "/" + file)) mkPath(log, os.path.dirname(LeveldesignWorldDirectory + "/" + file))
for dir in CopyLeveldesignDfnSourceDirectories: for dir in CopyLeveldesignDfnSourceDirectories:
mkPath(log, LeveldesignDfnDirectory + "/" + dir) mkPath(log, LeveldesignDfnDirectory + "/" + dir)
for file in CopyLeveldesignDfnSourceFiles: for file in CopyLeveldesignDfnSourceFiles:
mkPath(log, os.path.dirname(LeveldesignDfnDirectory + "/" + file)) mkPath(log, os.path.dirname(LeveldesignDfnDirectory + "/" + file))
for dir in CopyDatabaseSourceDirectories: for dir in CopyDatabaseSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
for file in CopyDatabaseSourceFiles: for file in CopyDatabaseSourceFiles:
mkPath(log, os.path.dirname(DatabaseDirectory + "/" + file)) mkPath(log, os.path.dirname(DatabaseDirectory + "/" + file))
# Setup client directories # Setup client directories
printLog(log, ">>> Setup client directories <<<") printLog(log, ">>> Setup client directories <<<")
mkPath(log, InstallDirectory + "/" + CopyInstallDirectory) mkPath(log, InstallDirectory + "/" + CopyInstallDirectory)
log.close() log.close()
# end of file # end of file

@ -1,49 +1,49 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 1_export.py # \file 1_export.py
# \brief Export copy # \brief Export copy
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Export copy # Export copy
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Export copy") printLog(log, "--- Export copy")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,49 +1,49 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 2_build.py # \file 2_build.py
# \brief Build copy # \brief Build copy
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Build copy # Build copy
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Build copy") printLog(log, "--- Build copy")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,85 +1,85 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 3_install.py # \file 3_install.py
# \brief Install copy # \brief Install copy
# \date 2010-05-24 13:42GMT # \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Install copy # Install copy
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Install copy") printLog(log, "--- Install copy")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
installPath = InstallDirectory + "/" + CopyInstallDirectory installPath = InstallDirectory + "/" + CopyInstallDirectory
mkPath(log, installPath) mkPath(log, installPath)
printLog(log, ">>> Install copy <<<") printLog(log, ">>> Install copy <<<")
for dir in CopyDirectSourceDirectories: for dir in CopyDirectSourceDirectories:
copyFilesRecursiveNoTreeIfNeeded(log, dir, installPath) copyFilesRecursiveNoTreeIfNeeded(log, dir, installPath)
for file in CopyDirectSourceFiles: for file in CopyDirectSourceFiles:
copyFileIfNeeded(log, file, installPath + "/" + os.path.basename(file)) copyFileIfNeeded(log, file, installPath + "/" + os.path.basename(file))
for dir in CopyLeveldesignSourceDirectories: for dir in CopyLeveldesignSourceDirectories:
copyFilesRecursiveNoTreeIfNeeded(log, LeveldesignDirectory + "/" + dir, installPath) copyFilesRecursiveNoTreeIfNeeded(log, LeveldesignDirectory + "/" + dir, installPath)
for file in CopyLeveldesignSourceFiles: for file in CopyLeveldesignSourceFiles:
copyFileIfNeeded(log, LeveldesignDirectory + "/" + file, installPath + "/" + os.path.basename(file)) copyFileIfNeeded(log, LeveldesignDirectory + "/" + file, installPath + "/" + os.path.basename(file))
for dir in CopyLeveldesignWorldSourceDirectories: for dir in CopyLeveldesignWorldSourceDirectories:
copyFilesRecursiveNoTreeIfNeeded(log, LeveldesignWorldDirectory + "/" + dir, installPath) copyFilesRecursiveNoTreeIfNeeded(log, LeveldesignWorldDirectory + "/" + dir, installPath)
for file in CopyLeveldesignWorldSourceFiles: for file in CopyLeveldesignWorldSourceFiles:
copyFileIfNeeded(log, LeveldesignWorldDirectory + "/" + file, installPath + "/" + os.path.basename(file)) copyFileIfNeeded(log, LeveldesignWorldDirectory + "/" + file, installPath + "/" + os.path.basename(file))
for dir in CopyLeveldesignDfnSourceDirectories: for dir in CopyLeveldesignDfnSourceDirectories:
copyFilesRecursiveNoTreeIfNeeded(log, LeveldesignDfnDirectory + "/" + dir, installPath) copyFilesRecursiveNoTreeIfNeeded(log, LeveldesignDfnDirectory + "/" + dir, installPath)
for file in CopyLeveldesignDfnSourceFiles: for file in CopyLeveldesignDfnSourceFiles:
copyFileIfNeeded(log, LeveldesignDfnDirectory + "/" + file, installPath + "/" + os.path.basename(file)) copyFileIfNeeded(log, LeveldesignDfnDirectory + "/" + file, installPath + "/" + os.path.basename(file))
for dir in CopyDatabaseSourceDirectories: for dir in CopyDatabaseSourceDirectories:
copyFilesRecursiveNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, installPath) copyFilesRecursiveNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, installPath)
for file in CopyDatabaseSourceFiles: for file in CopyDatabaseSourceFiles:
copyFileIfNeeded(log, DatabaseDirectory + "/" + file, installPath + "/" + os.path.basename(file)) copyFileIfNeeded(log, DatabaseDirectory + "/" + file, installPath + "/" + os.path.basename(file))
try: try:
CopyWindowsExeDllCfgSourceFiles CopyWindowsExeDllCfgSourceFiles
except NameError: except NameError:
CopyWindowsExeDllCfgSourceFiles = [ ] CopyWindowsExeDllCfgSourceFiles = [ ]
for file in CopyWindowsExeDllCfgSourceFiles: for file in CopyWindowsExeDllCfgSourceFiles:
filePath = findFileMultiDir(log, WindowsExeDllCfgDirectories, file) filePath = findFileMultiDir(log, WindowsExeDllCfgDirectories, file)
if (filePath != ""): if (filePath != ""):
copyFileIfNeeded(log, filePath, installPath + "/" + os.path.basename(file)) copyFileIfNeeded(log, filePath, installPath + "/" + os.path.basename(file))
printLog(log, "") printLog(log, "")
log.close() log.close()
# end of file # end of file

@ -1,65 +1,65 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 0_setup.py # \file 0_setup.py
# \brief Setup displace # \brief Setup displace
# \date 2009-03-10-21-45-GMT # \date 2009-03-10-21-45-GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Setup displace # Setup displace
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Setup displace") printLog(log, "--- Setup displace")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
# Setup source directories # Setup source directories
printLog(log, ">>> Setup source directories <<<") printLog(log, ">>> Setup source directories <<<")
for dir in DisplaceSourceDirectories: for dir in DisplaceSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories # Setup export directories
printLog(log, ">>> Setup export directories <<<") printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + DisplaceExportDirectory) mkPath(log, ExportBuildDirectory + "/" + DisplaceExportDirectory)
# Setup build directories # Setup build directories
printLog(log, ">>> Setup build directories <<<") printLog(log, ">>> Setup build directories <<<")
# Setup client directories # Setup client directories
printLog(log, ">>> Setup client directories <<<") printLog(log, ">>> Setup client directories <<<")
mkPath(log, InstallDirectory + "/" + DisplaceInstallDirectory) mkPath(log, InstallDirectory + "/" + DisplaceInstallDirectory)
log.close() log.close()
# end of file # end of file

@ -1,55 +1,55 @@
#!/usr/bin/python #!/usr/bin/python
# #
# \file 1_export.py # \file 1_export.py
# \brief Export displace # \brief Export displace
# \date 2009-03-10-21-45-GMT # \date 2009-03-10-21-45-GMT
# \author Jan Boon (Kaetemi) # \author Jan Boon (Kaetemi)
# Python port of game data build pipeline. # Python port of game data build pipeline.
# Export displace # Export displace
# #
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> # NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors # Copyright (C) 2009-2014 by authors
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the # published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version. # License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import time, sys, os, shutil, subprocess, distutils.dir_util import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration") sys.path.append("../../configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite import *
from process import * from process import *
from tools import * from tools import *
from directories import * from directories import *
printLog(log, "") printLog(log, "")
printLog(log, "-------") printLog(log, "-------")
printLog(log, "--- Export displace") printLog(log, "--- Export displace")
printLog(log, "-------") printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
mkPath(log, ExportBuildDirectory + "/" + DisplaceExportDirectory) mkPath(log, ExportBuildDirectory + "/" + DisplaceExportDirectory)
for dir in DisplaceSourceDirectories: for dir in DisplaceSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir) mkPath(log, DatabaseDirectory + "/" + dir)
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + DisplaceExportDirectory, ".tga") copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + DisplaceExportDirectory, ".tga")
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + DisplaceExportDirectory, ".png") copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + DisplaceExportDirectory, ".png")
log.close() log.close()
# end of file # end of file

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save