1.1 --- a/tools/buildbot/PackageScript Mon Dec 30 17:50:58 2013 -0500
1.2 +++ b/tools/buildbot/PackageScript Mon Dec 30 17:50:59 2013 -0500
1.3 @@ -1,277 +1,442 @@
1.4 -# vim: set ts=2 sw=2 tw=99 noet ft=python:
1.5 +# vim: set ts=8 sts=2 sw=2 tw=99 et ft=python:
1.6 import os
1.7 -import shutil
1.8 -import ambuild.osutil as osutil
1.9 -from ambuild.command import Command
1.10 -
1.11 -job = AMBuild.AddJob('package')
1.12 -
1.13 -class DestroyPath(Command):
1.14 - def __init__(self, folder):
1.15 - Command.__init__(self)
1.16 - self.folder = folder
1.17 -
1.18 - def destroy(self, path):
1.19 - entries = os.listdir(path)
1.20 - for entry in entries:
1.21 - newpath = os.path.join(path, entry)
1.22 - if os.path.isdir(newpath):
1.23 - self.destroy(newpath)
1.24 - os.rmdir(newpath)
1.25 - elif os.path.isfile(newpath):
1.26 - os.remove(newpath)
1.27 -
1.28 - def run(self, runner, job):
1.29 - runner.PrintOut('rm -rf {0}/*'.format(self.folder))
1.30 - self.destroy(self.folder)
1.31
1.32 -class CreateFolders(Command):
1.33 - def __init__(self, folders):
1.34 - Command.__init__(self)
1.35 - self.folders = folders
1.36 -
1.37 - def run(self, runner, job):
1.38 - for folder in self.folders:
1.39 - path = os.path.join(*folder)
1.40 - runner.PrintOut('mkdir {0}'.format(path))
1.41 - os.makedirs(path)
1.42 -
1.43 -#Shallow folder copy
1.44 -class CopyFolder(Command):
1.45 - def __init__(self, fromList, toList, excludes = []):
1.46 - Command.__init__(self)
1.47 - self.fromPath = os.path.join(AMBuild.sourceFolder, *fromList)
1.48 - self.toPath = os.path.join(*toList)
1.49 - self.excludes = excludes
1.50 -
1.51 - def run(self, runner, job):
1.52 - entries = os.listdir(self.fromPath)
1.53 - for entry in entries:
1.54 - if entry in self.excludes:
1.55 - continue
1.56 - path = os.path.join(self.fromPath, entry)
1.57 - if not os.path.isfile(path):
1.58 - continue
1.59 - runner.PrintOut('copy {0} to {1}'.format(path, self.toPath))
1.60 - shutil.copy(path, self.toPath)
1.61 -
1.62 -#Single file copy
1.63 -class CopyFile(Command):
1.64 - def __init__(self, fromFile, toPath):
1.65 - Command.__init__(self)
1.66 - self.fromFile = fromFile
1.67 - self.toPath = toPath
1.68 -
1.69 - def run(self, runner, job):
1.70 - runner.PrintOut('copy {0} to {1}'.format(self.fromFile, self.toPath))
1.71 - shutil.copy(self.fromFile, self.toPath)
1.72 -
1.73 +builder.SetBuildFolder('package')
1.74
1.75 -folders = [['addons', 'sourcemod', 'bin'],
1.76 - ['addons', 'sourcemod', 'plugins', 'disabled'],
1.77 - ['addons', 'sourcemod', 'gamedata'],
1.78 - ['addons', 'sourcemod', 'gamedata', 'core.games'],
1.79 - ['addons', 'sourcemod', 'gamedata', 'sdkhooks.games'],
1.80 - ['addons', 'sourcemod', 'gamedata', 'sdktools.games'],
1.81 - ['addons', 'sourcemod', 'gamedata', 'sm-cstrike.games'],
1.82 - ['addons', 'sourcemod', 'configs', 'geoip'],
1.83 - ['addons', 'sourcemod', 'translations'],
1.84 - ['addons', 'sourcemod', 'logs'],
1.85 - ['addons', 'sourcemod', 'extensions'],
1.86 - ['addons', 'sourcemod', 'data'],
1.87 - ['addons', 'sourcemod', 'scripting', 'include'],
1.88 - ['addons', 'sourcemod', 'scripting', 'admin-flatfile'],
1.89 - ['addons', 'sourcemod', 'scripting', 'adminmenu'],
1.90 - ['addons', 'sourcemod', 'scripting', 'testsuite'],
1.91 - ['cfg', 'sourcemod'],
1.92 - ['addons', 'sourcemod', 'configs', 'sql-init-scripts'],
1.93 - ['addons', 'sourcemod', 'configs', 'sql-init-scripts', 'mysql'],
1.94 - ['addons', 'sourcemod', 'configs', 'sql-init-scripts', 'sqlite'],
1.95 - ['addons', 'sourcemod', 'scripting', 'basecommands'],
1.96 - ['addons', 'sourcemod', 'scripting', 'basecomm'],
1.97 - ['addons', 'sourcemod', 'scripting', 'funvotes'],
1.98 - ['addons', 'sourcemod', 'scripting', 'basevotes'],
1.99 - ['addons', 'sourcemod', 'scripting', 'basebans'],
1.100 - ['addons', 'sourcemod', 'scripting', 'funcommands'],
1.101 - ['addons', 'sourcemod', 'scripting', 'playercommands'],
1.102 - ['addons', 'metamod'],
1.103 - ]
1.104 -
1.105 -#Setup
1.106 -job.AddCommand(DestroyPath(os.path.join(AMBuild.outputFolder, 'package')))
1.107 -job.AddCommand(CreateFolders(folders))
1.108 -
1.109 -#Copy Folders
1.110 -job.AddCommand(CopyFolder(['configs'], ['addons', 'sourcemod', 'configs']))
1.111 -job.AddCommand(CopyFolder(['configs', 'geoip'], ['addons', 'sourcemod', 'configs', 'geoip']))
1.112 -job.AddCommand(CopyFolder(['configs', 'cfg'], ['cfg', 'sourcemod']))
1.113 -job.AddCommand(CopyFolder(['configs', 'metamod'], ['addons', 'metamod']))
1.114 -job.AddCommand(CopyFolder(['configs', 'sql-init-scripts'],
1.115 - ['addons', 'sourcemod', 'configs', 'sql-init-scripts']))
1.116 -job.AddCommand(CopyFolder(['configs', 'sql-init-scripts', 'mysql'],
1.117 - ['addons', 'sourcemod', 'configs', 'sql-init-scripts', 'mysql']))
1.118 -job.AddCommand(CopyFolder(['configs', 'sql-init-scripts', 'sqlite'],
1.119 - ['addons', 'sourcemod', 'configs', 'sql-init-scripts', 'sqlite']))
1.120 -job.AddCommand(CopyFolder(['gamedata'], ['addons', 'sourcemod', 'gamedata']))
1.121 -job.AddCommand(CopyFolder(['gamedata', 'sdkhooks.games'],
1.122 - ['addons', 'sourcemod', 'gamedata', 'sdkhooks.games']))
1.123 -job.AddCommand(CopyFolder(['gamedata', 'sdktools.games'],
1.124 - ['addons', 'sourcemod', 'gamedata', 'sdktools.games']))
1.125 -job.AddCommand(CopyFolder(['gamedata', 'core.games'],
1.126 - ['addons', 'sourcemod', 'gamedata', 'core.games']))
1.127 -job.AddCommand(CopyFolder(['gamedata', 'sm-cstrike.games'],
1.128 - ['addons', 'sourcemod', 'gamedata', 'sm-cstrike.games']))
1.129 -job.AddCommand(CopyFolder(['plugins'], ['addons', 'sourcemod', 'scripting'], ['AMBuilder']))
1.130 -job.AddCommand(CopyFolder(['plugins', 'include'],
1.131 - ['addons', 'sourcemod', 'scripting', 'include']))
1.132 -job.AddCommand(CopyFolder(['translations'], ['addons', 'sourcemod', 'translations']))
1.133 -job.AddCommand(CopyFolder(['public', 'licenses'], ['addons', 'sourcemod']))
1.134 -job.AddCommand(CopyFolder(['plugins', 'admin-flatfile'],
1.135 - ['addons', 'sourcemod', 'scripting', 'admin-flatfile']))
1.136 -job.AddCommand(CopyFolder(['plugins', 'adminmenu'],
1.137 - ['addons', 'sourcemod', 'scripting', 'adminmenu']))
1.138 -job.AddCommand(CopyFolder(['plugins', 'testsuite'],
1.139 - ['addons', 'sourcemod', 'scripting', 'testsuite']))
1.140 -job.AddCommand(CopyFolder(['plugins', 'basecommands'],
1.141 - ['addons', 'sourcemod', 'scripting', 'basecommands']))
1.142 -job.AddCommand(CopyFolder(['plugins', 'basecomm'],
1.143 - ['addons', 'sourcemod', 'scripting', 'basecomm']))
1.144 -job.AddCommand(CopyFolder(['plugins', 'funvotes'],
1.145 - ['addons', 'sourcemod', 'scripting', 'funvotes']))
1.146 -job.AddCommand(CopyFolder(['plugins', 'basevotes'],
1.147 - ['addons', 'sourcemod', 'scripting', 'basevotes']))
1.148 -job.AddCommand(CopyFolder(['plugins', 'basebans'],
1.149 - ['addons', 'sourcemod', 'scripting', 'basebans']))
1.150 -job.AddCommand(CopyFolder(['plugins', 'funcommands'],
1.151 - ['addons', 'sourcemod', 'scripting', 'funcommands']))
1.152 -job.AddCommand(CopyFolder(['plugins', 'playercommands'],
1.153 - ['addons', 'sourcemod', 'scripting', 'playercommands']))
1.154 -
1.155 -defPlugins = [
1.156 - 'admin-flatfile',
1.157 - 'adminhelp',
1.158 - 'antiflood',
1.159 - 'basecommands',
1.160 - 'reservedslots',
1.161 - 'basetriggers',
1.162 - 'nextmap',
1.163 - 'basechat',
1.164 - 'funcommands',
1.165 - 'basevotes',
1.166 - 'funvotes',
1.167 - 'basebans',
1.168 - 'basecomm',
1.169 - 'adminmenu',
1.170 - 'playercommands',
1.171 - 'clientprefs',
1.172 - 'sounds'
1.173 +folder_list = [
1.174 + 'addons/sourcemod',
1.175 + 'addons/sourcemod/bin',
1.176 + 'addons/sourcemod/plugins',
1.177 + 'addons/sourcemod/plugins/disabled',
1.178 + 'addons/sourcemod/gamedata',
1.179 + 'addons/sourcemod/gamedata/core.games',
1.180 + 'addons/sourcemod/gamedata/sdkhooks.games',
1.181 + 'addons/sourcemod/gamedata/sdktools.games',
1.182 + 'addons/sourcemod/gamedata/sm-cstrike.games',
1.183 + 'addons/sourcemod/configs',
1.184 + 'addons/sourcemod/configs/geoip',
1.185 + 'addons/sourcemod/translations',
1.186 + 'addons/sourcemod/logs',
1.187 + 'addons/sourcemod/extensions',
1.188 + 'addons/sourcemod/data',
1.189 + 'addons/sourcemod/configs/sql-init-scripts',
1.190 + 'addons/sourcemod/configs/sql-init-scripts/mysql',
1.191 + 'addons/sourcemod/configs/sql-init-scripts/sqlite',
1.192 + 'addons/sourcemod/scripting',
1.193 + 'addons/sourcemod/scripting/include',
1.194 + 'addons/sourcemod/scripting/admin-flatfile',
1.195 + 'addons/sourcemod/scripting/adminmenu',
1.196 + 'addons/sourcemod/scripting/testsuite',
1.197 + 'addons/sourcemod/scripting/basecommands',
1.198 + 'addons/sourcemod/scripting/basecomm',
1.199 + 'addons/sourcemod/scripting/funvotes',
1.200 + 'addons/sourcemod/scripting/basevotes',
1.201 + 'addons/sourcemod/scripting/basebans',
1.202 + 'addons/sourcemod/scripting/funcommands',
1.203 + 'addons/sourcemod/scripting/playercommands',
1.204 + 'addons/metamod',
1.205 + 'cfg/sourcemod',
1.206 ]
1.207
1.208 -disPlugins = [
1.209 - 'admin-sql-prefetch',
1.210 - 'admin-sql-threaded',
1.211 - 'sql-admin-manager',
1.212 - 'mapchooser',
1.213 - 'randomcycle',
1.214 - 'rockthevote',
1.215 - 'nominations'
1.216 -]
1.217 +# Create the distribution folder hierarchy.
1.218 +folder_map = {}
1.219 +for folder in folder_list:
1.220 + norm_folder = os.path.normpath(folder)
1.221 + folder_map[folder] = builder.AddFolder(norm_folder)
1.222
1.223 -commands = []
1.224 -for plugin in defPlugins:
1.225 - commands.append(CopyFile(os.path.join('..', 'plugins', plugin + '.smx'),
1.226 - os.path.join('addons', 'sourcemod', 'plugins')))
1.227 -
1.228 -for plugin in disPlugins:
1.229 - commands.append(CopyFile(os.path.join('..', 'plugins', plugin + '.smx'),
1.230 - os.path.join('addons', 'sourcemod', 'plugins', 'disabled')))
1.231 -job.AddCommandGroup(commands)
1.232 -
1.233 -job.AddCommand(CopyFile(os.path.join('..', 'includes', 'version_auto.inc'),
1.234 - os.path.join('addons', 'sourcemod', 'scripting', 'include')))
1.235 +# Copy binaries.
1.236 +for cxx_task in SM.binaries:
1.237 + builder.AddCopy(cxx_task.binary, folder_map['addons/sourcemod/bin'])
1.238 +for cxx_task in SM.extensions:
1.239 + builder.AddCopy(cxx_task.binary, folder_map['addons/sourcemod/extensions'])
1.240 +builder.AddCopy(SM.spcomp.binary, folder_map['addons/sourcemod/scripting'])
1.241
1.242 -bincopies = []
1.243 +# Copy plugins.
1.244 +disabled_plugins = set([
1.245 + 'admin-sql-prefetch.smx',
1.246 + 'admin-sql-threaded.smx',
1.247 + 'sql-admin-manager.smx',
1.248 + 'mapchooser.smx',
1.249 + 'randomcycle.smx',
1.250 + 'rockthevote.smx',
1.251 + 'nominations.smx',
1.252 +])
1.253
1.254 -def AddNormalLibrary(name, dest):
1.255 - dest = os.path.join('addons', 'sourcemod', dest)
1.256 - bincopies.append(CopyFile(os.path.join('..', name, name + osutil.SharedLibSuffix()), dest))
1.257 -
1.258 - # Each platform's version of dump_syms needs the path in a different format.
1.259 - if AMBuild.target['platform'] == 'linux':
1.260 - debug_info.append(name + '/' + name + '.so')
1.261 - elif AMBuild.target['platform'] == 'darwin':
1.262 - debug_info.append(name + '/' + name + '.dylib.dSYM')
1.263 - elif AMBuild.target['platform'] == 'windows':
1.264 - debug_info.append(name + '\\' + name + '.pdb')
1.265 +for smx_file in SM.smx_files:
1.266 + smx_entry = SM.smx_files[smx_file]
1.267 + if smx_file in disabled_plugins:
1.268 + builder.AddCopy(smx_entry, folder_map['addons/sourcemod/plugins/disabled'])
1.269 + else:
1.270 + builder.AddCopy(smx_entry, folder_map['addons/sourcemod/plugins'])
1.271
1.272 -def AddHL2Library(name, dest):
1.273 - for i in SM.sdkInfo:
1.274 - sdk = SM.sdkInfo[i]
1.275 - if AMBuild.target['platform'] not in sdk['platform']:
1.276 - continue
1.277 - AddNormalLibrary(name + '.' + sdk['ext'], dest)
1.278 -
1.279 -debug_info = []
1.280 +# Do all straight-up file copies from the source tree.
1.281 +def CopyFiles(src, dest, files):
1.282 + if not dest:
1.283 + dest = src
1.284 + dest_entry = folder_map[dest]
1.285 + for source_file in files:
1.286 + source_path = os.path.join(builder.sourcePath, src, source_file)
1.287 + builder.AddCopy(source_path, dest_entry)
1.288
1.289 -if AMBuild.target['platform'] == 'linux':
1.290 - bincopies.append(CopyFile(os.path.join('..', 'loader', 'sourcemod_mm_i486.so'),
1.291 - os.path.join('addons', 'sourcemod', 'bin')))
1.292 - debug_info.append('loader/sourcemod_mm_i486.so')
1.293 -elif AMBuild.target['platform'] == 'darwin':
1.294 - bincopies.append(CopyFile(os.path.join('..', 'loader', 'sourcemod_mm.dylib'),
1.295 - os.path.join('addons', 'sourcemod', 'bin')))
1.296 - debug_info.append('loader/sourcemod_mm.dylib.dSYM')
1.297 -elif AMBuild.target['platform'] == 'windows':
1.298 - bincopies.append(CopyFile(os.path.join('..', 'loader', 'sourcemod_mm.dll'),
1.299 - os.path.join('addons', 'sourcemod', 'bin')))
1.300 - debug_info.append('loader\\sourcemod_mm.pdb')
1.301 -
1.302 -AddHL2Library('sourcemod', 'bin')
1.303 -AddNormalLibrary('sourcemod.logic', 'bin')
1.304 -AddNormalLibrary('sourcepawn.jit.x86', 'bin')
1.305 -AddNormalLibrary('geoip.ext', 'extensions')
1.306 -if SM.hasMySql:
1.307 - AddNormalLibrary('dbi.mysql.ext', 'extensions')
1.308 -AddNormalLibrary('dbi.sqlite.ext', 'extensions')
1.309 -
1.310 -if 'css' in SM.sdkInfo:
1.311 - AddNormalLibrary('game.cstrike.ext.2.css', 'extensions')
1.312 -
1.313 -if 'csgo' in SM.sdkInfo:
1.314 - AddNormalLibrary('game.cstrike.ext.2.csgo', 'extensions')
1.315 -
1.316 -if 'tf2' in SM.sdkInfo:
1.317 - AddNormalLibrary('game.tf2.ext.2.tf2', 'extensions')
1.318 -
1.319 -AddNormalLibrary('topmenus.ext', 'extensions')
1.320 -AddNormalLibrary('regex.ext', 'extensions')
1.321 -AddNormalLibrary('webternet.ext', 'extensions')
1.322 -AddNormalLibrary('clientprefs.ext', 'extensions')
1.323 -AddNormalLibrary('updater.ext', 'extensions')
1.324 -AddNormalLibrary('bintools.ext', 'extensions')
1.325 -AddHL2Library('sdkhooks.ext', 'extensions')
1.326 -AddHL2Library('sdktools.ext', 'extensions')
1.327 -
1.328 -bincopies.append(CopyFile(os.path.join('..', 'spcomp', 'spcomp' + osutil.ExecutableSuffix()),
1.329 - os.path.join('addons', 'sourcemod', 'scripting')))
1.330 -
1.331 -# Each platform's version of dump_syms needs the path in a different format.
1.332 -if AMBuild.target['platform'] == 'linux':
1.333 - debug_info.append('spcomp' + '/' + 'spcomp')
1.334 -elif AMBuild.target['platform'] == 'darwin':
1.335 - debug_info.append('spcomp' + '/' + 'spcomp' + '.dSYM')
1.336 -elif AMBuild.target['platform'] == 'windows':
1.337 - debug_info.append('spcomp' + '\\' + 'spcomp' + '.pdb')
1.338 -
1.339 -job.AddCommandGroup(bincopies)
1.340 -
1.341 -if AMBuild.target['platform'] == 'windows':
1.342 - job.AddCommand(CopyFile(
1.343 - os.path.join(AMBuild.sourceFolder, 'sourcepawn', 'batchtool', 'compile.exe'),
1.344 - os.path.join('addons', 'sourcemod', 'scripting')))
1.345 -
1.346 -pdblog = open(os.path.join(AMBuild.outputFolder, 'pdblog.txt'), 'wt')
1.347 -for pdb in debug_info:
1.348 - pdblog.write(pdb + '\n')
1.349 -pdblog.close()
1.350 -
1.351 +CopyFiles('configs', 'addons/sourcemod/configs',
1.352 + [ 'admin_groups.cfg',
1.353 + 'admin_levels.cfg',
1.354 + 'admin_overrides.cfg',
1.355 + 'adminmenu_cfgs.txt',
1.356 + 'adminmenu_custom.txt',
1.357 + 'adminmenu_grouping.txt',
1.358 + 'adminmenu_sorting.txt',
1.359 + 'admins.cfg',
1.360 + 'admins_simple.ini',
1.361 + 'banreasons.txt',
1.362 + 'core.cfg',
1.363 + 'databases.cfg',
1.364 + 'languages.cfg',
1.365 + 'maplists.cfg',
1.366 + ]
1.367 +)
1.368 +CopyFiles('configs/geoip', 'addons/sourcemod/configs/geoip', ['GeoIP.dat'])
1.369 +CopyFiles('configs/cfg', 'cfg/sourcemod',
1.370 + [ 'sm_warmode_off.cfg',
1.371 + 'sm_warmode_on.cfg',
1.372 + 'sourcemod.cfg',
1.373 + ]
1.374 +)
1.375 +CopyFiles('configs/metamod', 'addons/metamod', ['sourcemod.vdf'])
1.376 +CopyFiles('configs/sql-init-scripts/mysql', 'addons/sourcemod/configs/sql-init-scripts/mysql',
1.377 + [ 'clientprefs-mysql.sql',
1.378 + 'create_admins.sql',
1.379 + 'update_admins_r1409.sql',
1.380 + ]
1.381 +)
1.382 +CopyFiles('configs/sql-init-scripts/sqlite', 'addons/sourcemod/configs/sql-init-scripts/sqlite',
1.383 + [ 'admins-sqlite.sq3',
1.384 + 'clientprefs-sqlite.sq3',
1.385 + 'clientprefs-sqlite.sql',
1.386 + 'create_admins.sql',
1.387 + 'update_admins-r1409.sql',
1.388 + ]
1.389 +)
1.390 +CopyFiles('gamedata', 'addons/sourcemod/gamedata', ['sm-tf2.games.txt'])
1.391 +CopyFiles('gamedata/sdkhooks.games', 'addons/sourcemod/gamedata/sdkhooks.games',
1.392 + [ 'common.games.txt',
1.393 + 'engine.blade.txt',
1.394 + 'engine.csgo.txt',
1.395 + 'engine.darkm.txt',
1.396 + 'engine.dota.txt',
1.397 + 'engine.ep2v.txt',
1.398 + 'engine.insurgency.txt',
1.399 + 'engine.l4d.txt',
1.400 + 'game.ag2.txt',
1.401 + 'game.alienswarm.txt',
1.402 + 'game.aoc.txt',
1.403 + 'game.cspromod.txt',
1.404 + 'game.cstrike.txt',
1.405 + 'game.dinodday.txt',
1.406 + 'game.empires.txt',
1.407 + 'game.ff.txt',
1.408 + 'game.fof.txt',
1.409 + 'game.garrysmod.txt',
1.410 + 'game.gesource.txt',
1.411 + 'game.hidden.txt',
1.412 + 'game.hl2ctf.txt',
1.413 + 'game.insurgency.txt',
1.414 + 'game.l4d2.txt',
1.415 + 'game.neotokyo.txt',
1.416 + 'game.nmrih.txt',
1.417 + 'game.nucleardawn.txt',
1.418 + 'game.pvkii.txt',
1.419 + 'game.sgtls.txt',
1.420 + 'game.sourceforts.txt',
1.421 + 'game.synergy.txt',
1.422 + 'game.zm.txt',
1.423 + 'game.zpanic.txt',
1.424 + 'master.games.txt',
1.425 + ]
1.426 +)
1.427 +CopyFiles('gamedata/sdktools.games', 'addons/sourcemod/gamedata/sdktools.games',
1.428 + [ 'common.games.txt',
1.429 + 'engine.bgt.txt',
1.430 + 'engine.blade.txt',
1.431 + 'engine.csgo.txt',
1.432 + 'engine.css.txt',
1.433 + 'engine.darkm.txt',
1.434 + 'engine.dota.txt',
1.435 + 'engine.ep1.txt',
1.436 + 'engine.ep2.txt',
1.437 + 'engine.ep2valve.txt',
1.438 + 'engine.eye.txt',
1.439 + 'engine.insurgency.txt',
1.440 + 'engine.l4d.txt',
1.441 + 'engine.l4d2.txt',
1.442 + 'engine.sdk2013.txt',
1.443 + 'engine.swarm.txt',
1.444 + 'game.ag2.txt',
1.445 + 'game.alienswarm.txt',
1.446 + 'game.aoc.txt',
1.447 + 'game.bg2.txt',
1.448 + 'game.cspromod.txt',
1.449 + 'game.cstrike.txt',
1.450 + 'game.dinodday.txt',
1.451 + 'game.dod.txt',
1.452 + 'game.dystopia.txt',
1.453 + 'game.empires.txt',
1.454 + 'game.esmod.txt',
1.455 + 'game.fas.txt',
1.456 + 'game.ff.txt',
1.457 + 'game.fof.txt',
1.458 + 'game.garrysmod.txt',
1.459 + 'game.gesource.txt',
1.460 + 'game.hidden.txt',
1.461 + 'game.hl2ctf.txt',
1.462 + 'game.hl2mp.txt',
1.463 + 'game.insurgency.txt',
1.464 + 'game.ios.txt',
1.465 + 'game.left4dead2.txt',
1.466 + 'game.neotokyo.txt',
1.467 + 'game.nmrih.txt',
1.468 + 'game.nucleardawn.txt',
1.469 + 'game.obsidian.txt',
1.470 + 'game.pvkii.txt',
1.471 + 'game.rnlbeta.txt',
1.472 + 'game.ship.txt',
1.473 + 'game.sourceforts.txt',
1.474 + 'game.synergy.txt',
1.475 + 'game.tf.txt',
1.476 + 'game.zm.txt',
1.477 + 'game.zpanic.txt',
1.478 + 'master.games.txt',
1.479 + ]
1.480 +)
1.481 +CopyFiles('gamedata/core.games', 'addons/sourcemod/gamedata/core.games',
1.482 + [ 'blacklist.plugins.txt',
1.483 + 'common.games.txt',
1.484 + 'engine.bgt.txt',
1.485 + 'engine.blade.txt',
1.486 + 'engine.csgo.txt',
1.487 + 'engine.css.txt',
1.488 + 'engine.darkm.txt',
1.489 + 'engine.dota.txt',
1.490 + 'engine.ep1.txt',
1.491 + 'engine.ep2.txt',
1.492 + 'engine.ep2valve.txt',
1.493 + 'engine.eye.txt',
1.494 + 'engine.insurgency.txt',
1.495 + 'engine.l4d.txt',
1.496 + 'engine.l4d2.txt',
1.497 + 'engine.sdk2013.txt',
1.498 + 'engine.swarm.txt',
1.499 + 'master.games.txt',
1.500 + ]
1.501 +)
1.502 +CopyFiles('gamedata/sm-cstrike.games', 'addons/sourcemod/gamedata/sm-cstrike.games',
1.503 + [ 'game.csgo.txt',
1.504 + 'game.css.txt',
1.505 + 'master.games.txt',
1.506 + ]
1.507 +)
1.508 +CopyFiles('plugins', 'addons/sourcemod/scripting',
1.509 + [ 'admin-sql-prefetch.sp',
1.510 + 'admin-sql-threaded.sp',
1.511 + 'adminhelp.sp',
1.512 + 'adminmenu.sp',
1.513 + 'antiflood.sp',
1.514 + 'basebans.sp',
1.515 + 'basechat.sp',
1.516 + 'basecomm.sp',
1.517 + 'basecommands.sp',
1.518 + 'basetriggers.sp',
1.519 + 'basevotes.sp',
1.520 + 'clientprefs.sp',
1.521 + 'compile.sh',
1.522 + 'funcommands.sp',
1.523 + 'funvotes.sp',
1.524 + 'mapchooser.sp',
1.525 + 'nextmap.sp',
1.526 + 'nominations.sp',
1.527 + 'playercommands.sp',
1.528 + 'randomcycle.sp',
1.529 + 'reservedslots.sp',
1.530 + 'rockthevote.sp',
1.531 + 'sounds.sp',
1.532 + 'sql-admin-manager.sp',
1.533 + ]
1.534 +)
1.535 +CopyFiles('plugins/include', 'addons/sourcemod/scripting/include',
1.536 + [ 'admin.inc',
1.537 + 'adminmenu.inc',
1.538 + 'adt.inc',
1.539 + 'adt_array.inc',
1.540 + 'adt_stack.inc',
1.541 + 'adt_trie.inc',
1.542 + 'banning.inc',
1.543 + 'basecomm.inc',
1.544 + 'bitbuffer.inc',
1.545 + 'clientprefs.inc',
1.546 + 'clients.inc',
1.547 + 'commandfilters.inc',
1.548 + 'console.inc',
1.549 + 'core.inc',
1.550 + 'cstrike.inc',
1.551 + 'datapack.inc',
1.552 + 'dbi.inc',
1.553 + 'entity.inc',
1.554 + 'entity_prop_stocks.inc',
1.555 + 'events.inc',
1.556 + 'files.inc',
1.557 + 'float.inc',
1.558 + 'functions.inc',
1.559 + 'geoip.inc',
1.560 + 'halflife.inc',
1.561 + 'handles.inc',
1.562 + 'helpers.inc',
1.563 + 'keyvalues.inc',
1.564 + 'lang.inc',
1.565 + 'logging.inc',
1.566 + 'mapchooser.inc',
1.567 + 'menus.inc',
1.568 + 'nextmap.inc',
1.569 + 'profiler.inc',
1.570 + 'protobuf.inc',
1.571 + 'regex.inc',
1.572 + 'sdkhooks.inc',
1.573 + 'sdktools.inc',
1.574 + 'sdktools_client.inc',
1.575 + 'sdktools_engine.inc',
1.576 + 'sdktools_entinput.inc',
1.577 + 'sdktools_entoutput.inc',
1.578 + 'sdktools_functions.inc',
1.579 + 'sdktools_gamerules.inc',
1.580 + 'sdktools_hooks.inc',
1.581 + 'sdktools_sound.inc',
1.582 + 'sdktools_stocks.inc',
1.583 + 'sdktools_stringtables.inc',
1.584 + 'sdktools_tempents.inc',
1.585 + 'sdktools_tempents_stocks.inc',
1.586 + 'sdktools_trace.inc',
1.587 + 'sdktools_voice.inc',
1.588 + 'sorting.inc',
1.589 + 'sourcemod.inc',
1.590 + 'string.inc',
1.591 + 'textparse.inc',
1.592 + 'tf2.inc',
1.593 + 'tf2_stocks.inc',
1.594 + 'timers.inc',
1.595 + 'topmenus.inc',
1.596 + 'usermessages.inc',
1.597 + 'vector.inc',
1.598 + 'version.inc',
1.599 + ]
1.600 +)
1.601 +CopyFiles('translations', 'addons/sourcemod/translations',
1.602 + [ 'adminhelp.phrases.txt',
1.603 + 'adminmenu.phrases.txt',
1.604 + 'antiflood.phrases.txt',
1.605 + 'basebans.phrases.txt',
1.606 + 'basecomm.phrases.txt',
1.607 + 'basetriggers.phrases.txt',
1.608 + 'basevotes.phrases.txt',
1.609 + 'clientprefs.phrases.txt',
1.610 + 'common.phrases.txt',
1.611 + 'core.phrases.txt',
1.612 + 'funcommands.phrases.txt',
1.613 + 'funvotes.phrases.txt',
1.614 + 'mapchooser.phrases.txt',
1.615 + 'nextmap.phrases.txt',
1.616 + 'nominations.phrases.txt',
1.617 + 'playercommands.phrases.txt',
1.618 + 'plugin.basecommands.txt',
1.619 + 'reservedslots.phrases.txt',
1.620 + 'rockthevote.phrases.txt',
1.621 + 'sounds.phrases.txt',
1.622 + 'sqladmins.phrases.txt',
1.623 + ]
1.624 +)
1.625 +CopyFiles('public/licenses', 'addons/sourcemod',
1.626 + [ 'GPLv2.txt',
1.627 + 'GPLv3.txt',
1.628 + 'LICENSE.txt'
1.629 + ]
1.630 +)
1.631 +CopyFiles('plugins/admin-flatfile', 'addons/sourcemod/scripting/admin-flatfile',
1.632 + [ 'admin-flatfile.sp',
1.633 + 'admin-groups.sp',
1.634 + 'admin-overrides.sp',
1.635 + 'admin-simple.sp',
1.636 + 'admin-users.sp',
1.637 + ]
1.638 +)
1.639 +CopyFiles('plugins/adminmenu', 'addons/sourcemod/scripting/adminmenu', ['dynamicmenu.sp'])
1.640 +CopyFiles('plugins/testsuite', 'addons/sourcemod/scripting/testsuite',
1.641 + [ 'benchmark.sp',
1.642 + 'bug4059.sp',
1.643 + 'callfunctest.sp',
1.644 + 'capstest.sp',
1.645 + 'clientprefstest.sp',
1.646 + 'cstrike-test.sp',
1.647 + 'entpropelements.sp',
1.648 + 'fakenative1.sp',
1.649 + 'fakenative2.sp',
1.650 + 'filetest.sp',
1.651 + 'fwdtest1.sp',
1.652 + 'fwdtest2.sp',
1.653 + 'gamerules-props.sp',
1.654 + 'goto_test.sp',
1.655 + 'outputtest.sp',
1.656 + 'ptstest.sp',
1.657 + 'sorttest.sp',
1.658 + 'sqltest.sp',
1.659 + 'sqltest.sql',
1.660 + 'stacktest.sp',
1.661 + 'structtest.sp',
1.662 + 'tf2-test.sp',
1.663 + 'tries.sp',
1.664 + ]
1.665 +)
1.666 +CopyFiles('plugins/basecommands', 'addons/sourcemod/scripting/basecommands',
1.667 + [ 'cancelvote.sp',
1.668 + 'execcfg.sp',
1.669 + 'kick.sp',
1.670 + 'map.sp',
1.671 + 'reloadadmins.sp',
1.672 + 'who.sp',
1.673 + ]
1.674 +)
1.675 +CopyFiles('plugins/basecomm', 'addons/sourcemod/scripting/basecomm',
1.676 + [ 'forwards.sp',
1.677 + 'gag.sp',
1.678 + 'natives.sp',
1.679 + ]
1.680 +)
1.681 +CopyFiles('plugins/funvotes', 'addons/sourcemod/scripting/funvotes',
1.682 + [ 'votealltalk.sp',
1.683 + 'voteburn.sp',
1.684 + 'voteff.sp',
1.685 + 'votegravity.sp',
1.686 + 'voteslay.sp',
1.687 + ]
1.688 +)
1.689 +CopyFiles('plugins/basevotes', 'addons/sourcemod/scripting/basevotes',
1.690 + [ 'voteban.sp',
1.691 + 'votekick.sp',
1.692 + 'votemap.sp',
1.693 + ]
1.694 +)
1.695 +CopyFiles('plugins/basebans', 'addons/sourcemod/scripting/basebans', ['ban.sp'])
1.696 +CopyFiles('plugins/funcommands', 'addons/sourcemod/scripting/funcommands',
1.697 + [ 'beacon.sp',
1.698 + 'blind.sp',
1.699 + 'drug.sp',
1.700 + 'fire.sp',
1.701 + 'gravity.sp',
1.702 + 'ice.sp',
1.703 + 'noclip.sp',
1.704 + 'timebomb.sp',
1.705 + ]
1.706 +)
1.707 +CopyFiles('plugins/playercommands', 'addons/sourcemod/scripting/playercommands',
1.708 + [ 'rename.sp',
1.709 + 'slap.sp',
1.710 + 'slay.sp',
1.711 + ]
1.712 +)