tools/buildbot/PackageScript
author Nicholas Hastings <skamonkey@gmail.com>
Fri Mar 21 12:04:41 2014 -0400 (2014-03-21)
changeset 4288 365162dbb87f
parent 4241 46fdb8cd9883
child 4291 cc318e60622c
permissions -rw-r--r--
Record inline function debug info in PDB files (r=asherkin).
     1 # vim: set ts=8 sts=2 sw=2 tw=99 et ft=python: 
     2 import os
     3 
     4 builder.SetBuildFolder('package')
     5 
     6 folder_list = [
     7   'addons/sourcemod',
     8   'addons/sourcemod/bin',
     9   'addons/sourcemod/plugins',
    10   'addons/sourcemod/plugins/disabled',
    11   'addons/sourcemod/gamedata',
    12   'addons/sourcemod/gamedata/core.games',
    13   'addons/sourcemod/gamedata/sdkhooks.games',
    14   'addons/sourcemod/gamedata/sdktools.games',
    15   'addons/sourcemod/gamedata/sm-cstrike.games',
    16   'addons/sourcemod/configs',
    17   'addons/sourcemod/configs/geoip',
    18   'addons/sourcemod/translations',
    19   'addons/sourcemod/logs',
    20   'addons/sourcemod/extensions',
    21   'addons/sourcemod/data',
    22   'addons/sourcemod/configs/sql-init-scripts',
    23   'addons/sourcemod/configs/sql-init-scripts/mysql',
    24   'addons/sourcemod/configs/sql-init-scripts/sqlite',
    25   'addons/sourcemod/scripting',
    26   'addons/sourcemod/scripting/include',
    27   'addons/sourcemod/scripting/admin-flatfile',
    28   'addons/sourcemod/scripting/adminmenu',
    29   'addons/sourcemod/scripting/testsuite',
    30   'addons/sourcemod/scripting/basecommands',
    31   'addons/sourcemod/scripting/basecomm',
    32   'addons/sourcemod/scripting/funvotes',
    33   'addons/sourcemod/scripting/basevotes',
    34   'addons/sourcemod/scripting/basebans',
    35   'addons/sourcemod/scripting/funcommands',
    36   'addons/sourcemod/scripting/playercommands',
    37   'addons/metamod',
    38   'cfg/sourcemod',
    39 ]
    40 
    41 # Create the distribution folder hierarchy.
    42 folder_map = {}
    43 for folder in folder_list:
    44   norm_folder = os.path.normpath(folder)
    45   folder_map[folder] = builder.AddFolder(norm_folder)
    46 
    47 # Copy binaries.
    48 for cxx_task in SM.binaries:
    49   builder.AddCopy(cxx_task.binary, folder_map['addons/sourcemod/bin'])
    50 for cxx_task in SM.extensions:
    51   builder.AddCopy(cxx_task.binary, folder_map['addons/sourcemod/extensions'])
    52 builder.AddCopy(SM.spcomp.binary, folder_map['addons/sourcemod/scripting'])
    53 
    54 # Copy debugging files.
    55 if builder.options.packdebug and builder.target_platform != 'mac':
    56   for cxx_task in SM.binaries:
    57     builder.AddCopy(cxx_task.debug, folder_map['addons/sourcemod/bin'])
    58   for cxx_task in SM.extensions:
    59     builder.AddCopy(cxx_task.debug, folder_map['addons/sourcemod/extensions'])
    60 
    61 # Copy version_auto.inc.
    62 for header in SM.generated_headers:
    63   if 'version_auto.inc' in header.path:
    64     builder.AddCopy(header, folder_map['addons/sourcemod/scripting/include'])
    65 
    66 # Export PDB files. We write to a file in the build folder which is pretty
    67 # verboten, but it's okay if it's in the root since AMBuild will never try
    68 # to rmdir the root.
    69 full_binary_list = SM.binaries + SM.extensions + [SM.spcomp]
    70 with open(os.path.join(builder.buildPath, 'pdblog.txt'), 'w') as fp:
    71   for task in full_binary_list:
    72     fp.write(task.debug.path + '\n')
    73 
    74 # Copy plugins.
    75 disabled_plugins = set([
    76   'admin-sql-prefetch.smx',
    77   'admin-sql-threaded.smx',
    78   'sql-admin-manager.smx',
    79   'mapchooser.smx',
    80   'randomcycle.smx',
    81   'rockthevote.smx',
    82   'nominations.smx',
    83 ])
    84 
    85 for smx_file in SM.smx_files:
    86   smx_entry = SM.smx_files[smx_file]
    87   if smx_file in disabled_plugins:
    88     builder.AddCopy(smx_entry, folder_map['addons/sourcemod/plugins/disabled'])
    89   else:
    90     builder.AddCopy(smx_entry, folder_map['addons/sourcemod/plugins'])
    91 
    92 # Do all straight-up file copies from the source tree.
    93 def CopyFiles(src, dest, files):
    94   if not dest:
    95     dest = src
    96   dest_entry = folder_map[dest]
    97   for source_file in files:
    98     source_path = os.path.join(builder.sourcePath, src, source_file)
    99     builder.AddCopy(source_path, dest_entry)
   100 
   101 CopyFiles('configs', 'addons/sourcemod/configs',
   102   [ 'admin_groups.cfg',
   103     'admin_levels.cfg',
   104     'admin_overrides.cfg',
   105     'adminmenu_cfgs.txt',
   106     'adminmenu_custom.txt',
   107     'adminmenu_grouping.txt',
   108     'adminmenu_sorting.txt',
   109     'admins.cfg',
   110     'admins_simple.ini',
   111     'banreasons.txt',
   112     'core.cfg',
   113     'databases.cfg',
   114     'languages.cfg',
   115     'maplists.cfg',
   116   ]
   117 )
   118 CopyFiles('configs/geoip', 'addons/sourcemod/configs/geoip', ['GeoIP.dat'])
   119 CopyFiles('configs/cfg', 'cfg/sourcemod',
   120   [ 'sm_warmode_off.cfg',
   121     'sm_warmode_on.cfg',
   122     'sourcemod.cfg',
   123   ]
   124 )
   125 CopyFiles('configs/metamod', 'addons/metamod', ['sourcemod.vdf'])
   126 CopyFiles('configs/sql-init-scripts/mysql', 'addons/sourcemod/configs/sql-init-scripts/mysql',
   127   [ 'clientprefs-mysql.sql',
   128     'create_admins.sql',
   129     'update_admins_r1409.sql',
   130   ]
   131 )
   132 CopyFiles('configs/sql-init-scripts/sqlite', 'addons/sourcemod/configs/sql-init-scripts/sqlite',
   133   [ 'admins-sqlite.sq3',
   134     'clientprefs-sqlite.sq3',
   135     'clientprefs-sqlite.sql',
   136     'create_admins.sql',
   137     'update_admins-r1409.sql',
   138   ]
   139 )
   140 CopyFiles('gamedata', 'addons/sourcemod/gamedata', ['sm-tf2.games.txt'])
   141 CopyFiles('gamedata/sdkhooks.games', 'addons/sourcemod/gamedata/sdkhooks.games',
   142   [ 'common.games.txt',
   143     'engine.blade.txt',
   144     'engine.csgo.txt',
   145     'engine.darkm.txt',
   146     'engine.dota.txt',
   147     'engine.ep2v.txt',
   148     'engine.insurgency.txt',
   149     'engine.l4d.txt',
   150     'game.ag2.txt',
   151     'game.alienswarm.txt',
   152     'game.aoc.txt',
   153     'game.cspromod.txt',
   154     'game.cstrike.txt',
   155     'game.dinodday.txt',
   156     'game.empires.txt',
   157     'game.ff.txt',
   158     'game.fof.txt',
   159     'game.garrysmod.txt',
   160     'game.gesource.txt',
   161     'game.hidden.txt',
   162     'game.hl2ctf.txt',
   163     'game.insurgency.txt',
   164     'game.l4d2.txt',
   165     'game.neotokyo.txt',
   166     'game.nmrih.txt',
   167     'game.nucleardawn.txt',
   168     'game.pvkii.txt',
   169     'game.sgtls.txt',
   170     'game.sourceforts.txt',
   171     'game.synergy.txt',
   172     'game.zm.txt',
   173     'game.zpanic.txt',
   174     'master.games.txt',
   175   ]
   176 )
   177 CopyFiles('gamedata/sdktools.games', 'addons/sourcemod/gamedata/sdktools.games',
   178   [ 'common.games.txt',
   179     'engine.bgt.txt',
   180     'engine.blade.txt',
   181     'engine.csgo.txt',
   182     'engine.css.txt',
   183     'engine.darkm.txt',
   184     'engine.dota.txt',
   185     'engine.ep1.txt',
   186     'engine.ep2.txt',
   187     'engine.ep2valve.txt',
   188     'engine.eye.txt',
   189     'engine.insurgency.txt',
   190     'engine.l4d.txt',
   191     'engine.l4d2.txt',
   192     'engine.sdk2013.txt',
   193     'engine.swarm.txt',
   194     'game.ag2.txt',
   195     'game.alienswarm.txt',
   196     'game.aoc.txt',
   197     'game.bg2.txt',
   198     'game.cspromod.txt',
   199     'game.cstrike.txt',
   200     'game.dinodday.txt',
   201     'game.dod.txt',
   202     'game.dystopia.txt',
   203     'game.empires.txt',
   204     'game.esmod.txt',
   205     'game.fas.txt',
   206     'game.ff.txt',
   207     'game.fof.txt',
   208     'game.garrysmod.txt',
   209     'game.gesource.txt',
   210     'game.hidden.txt',
   211     'game.hl2ctf.txt',
   212     'game.hl2mp.txt',
   213     'game.insurgency.txt',
   214     'game.ios.txt',
   215     'game.left4dead2.txt',
   216     'game.neotokyo.txt',
   217     'game.nmrih.txt',
   218     'game.nucleardawn.txt',
   219     'game.obsidian.txt',
   220     'game.pvkii.txt',
   221     'game.rnlbeta.txt',
   222     'game.ship.txt',
   223     'game.sourceforts.txt',
   224     'game.synergy.txt',
   225     'game.tf.txt',
   226     'game.zm.txt',
   227     'game.zpanic.txt',
   228     'master.games.txt',
   229   ]
   230 )
   231 CopyFiles('gamedata/core.games', 'addons/sourcemod/gamedata/core.games',
   232   [ 'blacklist.plugins.txt',
   233     'common.games.txt',
   234     'engine.bgt.txt',
   235     'engine.blade.txt',
   236     'engine.csgo.txt',
   237     'engine.css.txt',
   238     'engine.darkm.txt',
   239     'engine.dota.txt',
   240     'engine.ep1.txt',
   241     'engine.ep2.txt',
   242     'engine.ep2valve.txt',
   243     'engine.eye.txt',
   244     'engine.insurgency.txt',
   245     'engine.l4d.txt',
   246     'engine.l4d2.txt',
   247     'engine.sdk2013.txt',
   248     'engine.swarm.txt',
   249     'master.games.txt',
   250   ]
   251 )
   252 CopyFiles('gamedata/sm-cstrike.games', 'addons/sourcemod/gamedata/sm-cstrike.games',
   253   [ 'game.csgo.txt',
   254     'game.css.txt',
   255     'master.games.txt',
   256   ]
   257 )
   258 CopyFiles('plugins', 'addons/sourcemod/scripting',
   259   [ 'admin-sql-prefetch.sp',
   260     'admin-sql-threaded.sp',
   261     'adminhelp.sp',
   262     'adminmenu.sp',
   263     'antiflood.sp',
   264     'basebans.sp',
   265     'basechat.sp',
   266     'basecomm.sp',
   267     'basecommands.sp',
   268     'basetriggers.sp',
   269     'basevotes.sp',
   270     'clientprefs.sp',
   271     'compile.sh',
   272     'funcommands.sp',
   273     'funvotes.sp',
   274     'mapchooser.sp',
   275     'nextmap.sp',
   276     'nominations.sp',
   277     'playercommands.sp',
   278     'randomcycle.sp',
   279     'reservedslots.sp',
   280     'rockthevote.sp',
   281     'sounds.sp',
   282     'sql-admin-manager.sp',
   283   ]
   284 )
   285 CopyFiles('plugins/include', 'addons/sourcemod/scripting/include',
   286   [ 'admin.inc',
   287     'adminmenu.inc',
   288     'adt.inc',
   289     'adt_array.inc',
   290     'adt_stack.inc',
   291     'adt_trie.inc',
   292     'banning.inc',
   293     'basecomm.inc',
   294     'bitbuffer.inc',
   295     'clientprefs.inc',
   296     'clients.inc',
   297     'commandfilters.inc',
   298     'console.inc',
   299     'core.inc',
   300     'cstrike.inc',
   301     'datapack.inc',
   302     'dbi.inc',
   303     'entity.inc',
   304     'entity_prop_stocks.inc',
   305     'events.inc',
   306     'files.inc',
   307     'float.inc',
   308     'functions.inc',
   309     'geoip.inc',
   310     'halflife.inc',
   311     'handles.inc',
   312     'helpers.inc',
   313     'keyvalues.inc',
   314     'lang.inc',
   315     'logging.inc',
   316     'mapchooser.inc',
   317     'menus.inc',
   318     'nextmap.inc',
   319     'profiler.inc',
   320     'protobuf.inc',
   321     'regex.inc',
   322     'sdkhooks.inc',
   323     'sdktools.inc',
   324     'sdktools_client.inc',
   325     'sdktools_engine.inc',
   326     'sdktools_entinput.inc',
   327     'sdktools_entoutput.inc',
   328     'sdktools_functions.inc',
   329     'sdktools_gamerules.inc',
   330     'sdktools_hooks.inc',
   331     'sdktools_sound.inc',
   332     'sdktools_stocks.inc',
   333     'sdktools_stringtables.inc',
   334     'sdktools_tempents.inc',
   335     'sdktools_tempents_stocks.inc',
   336     'sdktools_trace.inc',
   337     'sdktools_voice.inc',
   338     'sorting.inc',
   339     'sourcemod.inc',
   340     'string.inc',
   341     'textparse.inc',
   342     'tf2.inc',
   343     'tf2_stocks.inc',
   344     'timers.inc',
   345     'topmenus.inc',
   346     'usermessages.inc',
   347     'vector.inc',
   348     'version.inc',
   349   ]
   350 )
   351 CopyFiles('translations', 'addons/sourcemod/translations',
   352   [ 'adminhelp.phrases.txt',
   353     'adminmenu.phrases.txt',
   354     'antiflood.phrases.txt',
   355     'basebans.phrases.txt',
   356     'basecomm.phrases.txt',
   357     'basetriggers.phrases.txt',
   358     'basevotes.phrases.txt',
   359     'clientprefs.phrases.txt',
   360     'common.phrases.txt',
   361     'core.phrases.txt',
   362     'funcommands.phrases.txt',
   363     'funvotes.phrases.txt',
   364     'mapchooser.phrases.txt',
   365     'nextmap.phrases.txt',
   366     'nominations.phrases.txt',
   367     'playercommands.phrases.txt',
   368     'plugin.basecommands.txt',
   369     'reservedslots.phrases.txt',
   370     'rockthevote.phrases.txt',
   371     'sounds.phrases.txt',
   372     'sqladmins.phrases.txt',
   373   ]
   374 )
   375 CopyFiles('public/licenses', 'addons/sourcemod',
   376   [ 'GPLv2.txt',
   377     'GPLv3.txt',
   378     'LICENSE.txt'
   379   ]
   380 )
   381 CopyFiles('plugins/admin-flatfile', 'addons/sourcemod/scripting/admin-flatfile',
   382   [ 'admin-flatfile.sp',
   383     'admin-groups.sp',
   384     'admin-overrides.sp',
   385     'admin-simple.sp',
   386     'admin-users.sp',
   387   ]
   388 )
   389 CopyFiles('plugins/adminmenu', 'addons/sourcemod/scripting/adminmenu', ['dynamicmenu.sp'])
   390 CopyFiles('plugins/testsuite', 'addons/sourcemod/scripting/testsuite',
   391   [ 'benchmark.sp',
   392     'bug4059.sp',
   393     'callfunctest.sp',
   394     'capstest.sp',
   395     'clientprefstest.sp',
   396     'cstrike-test.sp',
   397     'entpropelements.sp',
   398     'fakenative1.sp',
   399     'fakenative2.sp',
   400     'filetest.sp',
   401     'fwdtest1.sp',
   402     'fwdtest2.sp',
   403     'gamerules-props.sp',
   404     'goto_test.sp',
   405     'outputtest.sp',
   406     'ptstest.sp',
   407     'sorttest.sp',
   408     'sqltest.sp',
   409     'sqltest.sql',
   410     'stacktest.sp',
   411     'structtest.sp',
   412     'tf2-test.sp',
   413     'tries.sp',
   414   ]
   415 )
   416 CopyFiles('plugins/basecommands', 'addons/sourcemod/scripting/basecommands',
   417   [ 'cancelvote.sp',
   418     'execcfg.sp',
   419     'kick.sp',
   420     'map.sp',
   421     'reloadadmins.sp',
   422     'who.sp',
   423   ]
   424 )
   425 CopyFiles('plugins/basecomm', 'addons/sourcemod/scripting/basecomm',
   426   [ 'forwards.sp',
   427     'gag.sp',
   428     'natives.sp',
   429   ]
   430 )
   431 CopyFiles('plugins/funvotes', 'addons/sourcemod/scripting/funvotes',
   432   [ 'votealltalk.sp',
   433     'voteburn.sp',
   434     'voteff.sp',
   435     'votegravity.sp',
   436     'voteslay.sp',
   437   ]
   438 )
   439 CopyFiles('plugins/basevotes', 'addons/sourcemod/scripting/basevotes',
   440   [ 'voteban.sp',
   441     'votekick.sp',
   442     'votemap.sp',
   443   ]
   444 )
   445 CopyFiles('plugins/basebans', 'addons/sourcemod/scripting/basebans', ['ban.sp'])
   446 CopyFiles('plugins/funcommands', 'addons/sourcemod/scripting/funcommands',
   447   [ 'beacon.sp',
   448     'blind.sp',
   449     'drug.sp',
   450     'fire.sp',
   451     'gravity.sp',
   452     'ice.sp',
   453     'noclip.sp',
   454     'timebomb.sp',
   455   ]
   456 )
   457 CopyFiles('plugins/playercommands', 'addons/sourcemod/scripting/playercommands',
   458   [ 'rename.sp',
   459     'slap.sp',
   460     'slay.sp',
   461   ]
   462 )