Update python scripts to reflect that FML is now a submodule. Delete updateasmdata as it's in /fml/ now. Build should work once again.
This commit is contained in:
parent
f7d6c2384c
commit
00c596f5a3
4 changed files with 93 additions and 145 deletions
4
forge.py
4
forge.py
|
@ -64,7 +64,7 @@ def zip_folder(path, key, zip):
|
|||
zip_folder(file_path, file_key, zip)
|
||||
else:
|
||||
if not file_key.replace(os.sep, '/') in zip.NameToInfo:
|
||||
print file_key
|
||||
print ' ' + file_key
|
||||
zip.write(file_path, file_key)
|
||||
|
||||
def zip_create(path, key, zip_name):
|
||||
|
@ -77,6 +77,7 @@ def zip_create(path, key, zip_name):
|
|||
|
||||
def apply_forge_patches(fml_dir, mcp_dir, forge_dir, src_dir, copy_files=True):
|
||||
sys.path.append(fml_dir)
|
||||
sys.path.append(os.path.join(fml_dir, 'install'))
|
||||
from fml import copytree, apply_patches
|
||||
|
||||
#patch files
|
||||
|
@ -100,6 +101,7 @@ def build_forge_dev(mcp_dir, forge_dir, fml_dir, build_num=0):
|
|||
shutil.rmtree(src_dir)
|
||||
|
||||
sys.path.append(fml_dir)
|
||||
sys.path.append(os.path.join(fml_dir, 'install'))
|
||||
from fml import copytree
|
||||
|
||||
print 'src_work -> src'
|
||||
|
|
74
release.py
74
release.py
|
@ -34,8 +34,6 @@ def main():
|
|||
mcp_dir = os.path.join(forge_dir, 'mcp')
|
||||
if not options.mcp_dir is None:
|
||||
mcp_dir = os.path.abspath(options.mcp_dir)
|
||||
elif os.path.isfile(os.path.join('..', 'runtime', 'commands.py')):
|
||||
mcp_dir = os.path.abspath('..')
|
||||
|
||||
ret = 0
|
||||
fml_dir = os.path.join(forge_dir, 'fml')
|
||||
|
@ -43,8 +41,31 @@ def main():
|
|||
if ret != 0:
|
||||
sys.exit(ret)
|
||||
|
||||
|
||||
temp_dir = os.path.join(forge_dir, 'temp')
|
||||
src_dir = os.path.join(mcp_dir, 'src')
|
||||
reobf_dir = os.path.join(mcp_dir, 'reobf')
|
||||
client_dir = os.path.join(reobf_dir, 'minecraft')
|
||||
fml_dir = os.path.join(temp_dir, 'fml')
|
||||
|
||||
print '=================================== Release Start ================================='
|
||||
|
||||
fml = glob.glob(os.path.join(forge_dir, 'fml', 'target', 'fml-src-*.%d-*.zip' % build_num))
|
||||
if not len(fml) == 1:
|
||||
if len(fml) == 0:
|
||||
print 'Missing FML source zip, should be named fml-src-*.zip inside ./fml/target/ created when running setup'
|
||||
else:
|
||||
print 'To many FML source zips found, we should only have one. Check the Forge Git for the latest FML version supported'
|
||||
sys.exit(1)
|
||||
|
||||
if os.path.isdir(fml_dir):
|
||||
shutil.rmtree(fml_dir)
|
||||
|
||||
print 'Extracting: %s' % os.path.basename(fml[0])
|
||||
zf = zipfile.ZipFile(fml[0])
|
||||
zf.extractall(temp_dir)
|
||||
zf.close()
|
||||
|
||||
error_level = 0
|
||||
try:
|
||||
sys.path.append(mcp_dir)
|
||||
|
@ -58,15 +79,11 @@ def main():
|
|||
print 'Reobfusicate Exception: %d ' % e.code
|
||||
error_level = e.code
|
||||
|
||||
src_dir = os.path.join(mcp_dir, 'src')
|
||||
reobf_dir = os.path.join(mcp_dir, 'reobf')
|
||||
client_dir = os.path.join(reobf_dir, 'minecraft')
|
||||
|
||||
extract_fml_obfed(mcp_dir, reobf_dir, client_dir)
|
||||
extract_fml_obfed(fml_dir, mcp_dir, reobf_dir, client_dir)
|
||||
extract_paulscode(mcp_dir, client_dir)
|
||||
version = load_version(build_num)
|
||||
version_forge = '%d.%d.%d.%d' % (version['major'], version['minor'], version['revision'], version['build'])
|
||||
version_mc = load_mc_version(forge_dir)
|
||||
version_mc = load_mc_version(fml_dir)
|
||||
branch = get_branch_name()
|
||||
|
||||
version_str = '%s-%s' % (version_mc, version_forge)
|
||||
|
@ -103,33 +120,35 @@ def main():
|
|||
zip_add('client/forge_logo.png')
|
||||
zip_add('install/MinecraftForge-Credits.txt')
|
||||
zip_add('install/MinecraftForge-License.txt')
|
||||
zip_add('fml/CREDITS-fml.txt')
|
||||
zip_add('fml/LICENSE-fml.txt')
|
||||
zip_add('fml/README-fml.txt')
|
||||
zip_add('fml/common/fml_at.cfg')
|
||||
zip_add('fml/common/fml_marker.cfg')
|
||||
zip_add('fml/common/fmlversion.properties')
|
||||
zip_add('fml/common/mcpmod.info')
|
||||
zip_add('fml/client/mcp.png')
|
||||
zip_add('install/Paulscode IBXM Library License.txt')
|
||||
zip_add('install/Paulscode SoundSystem CodecIBXM License.txt')
|
||||
zip_add('common/forge_at.cfg')
|
||||
zip_add(version_file)
|
||||
if not options.skip_changelog:
|
||||
zip_add(changelog_file, 'MinecraftForge-Changelog.txt')
|
||||
zip_end()
|
||||
|
||||
zips = glob.glob('fml/mcp*.zip')
|
||||
for i in zips:
|
||||
print 'Removing MCP Zip: %s' % os.path.basename(i)
|
||||
os.remove(i)
|
||||
#Add dependancy and licenses from FML
|
||||
FML_FILES = [
|
||||
'CREDITS-fml.txt',
|
||||
'LICENSE-fml.txt',
|
||||
'README-fml.txt',
|
||||
'common/fml_at.cfg',
|
||||
'common/fml_marker.cfg',
|
||||
'common/fmlversion.properties',
|
||||
'common/mcpmod.info',
|
||||
'client/mcp.png'
|
||||
]
|
||||
for file in FML_FILES:
|
||||
zip_add(os.path.join(fml_dir, file))
|
||||
|
||||
zip_end()
|
||||
|
||||
inject_version(os.path.join(forge_dir, 'common/net/minecraftforge/common/ForgeVersion.java'.replace('/', os.sep)), build_num)
|
||||
zip_start('minecraftforge-src-%s.zip' % version_str, 'forge')
|
||||
zip_add('client', 'client')
|
||||
zip_add('common', 'common')
|
||||
zip_add('patches', 'patches')
|
||||
zip_add('fml', 'fml')
|
||||
zip_add(fml_dir, 'fml')
|
||||
zip_add('install', '')
|
||||
zip_add('forge.py')
|
||||
zip_add(version_file)
|
||||
|
@ -140,6 +159,7 @@ def main():
|
|||
|
||||
if os.path.exists(version_file):
|
||||
os.remove(version_file)
|
||||
shutil.rmtree(temp_dir)
|
||||
|
||||
print '=================================== Release Finished %d =================================' % error_level
|
||||
sys.exit(error_level)
|
||||
|
@ -156,7 +176,7 @@ def zip_add(file, key=None):
|
|||
zip_folder(file, key, zip)
|
||||
else:
|
||||
if os.path.isfile(file):
|
||||
print key
|
||||
print ' ' + key
|
||||
zip.write(file, key)
|
||||
|
||||
def zip_start(name, base=None):
|
||||
|
@ -175,8 +195,8 @@ def zip_end():
|
|||
zip_name = None
|
||||
zip_base = None
|
||||
|
||||
def load_mc_version(forge_dir):
|
||||
props = os.path.join(forge_dir, 'fml', 'common', 'fmlversion.properties')
|
||||
def load_mc_version(fml_dir):
|
||||
props = os.path.join(fml_dir, 'common', 'fmlversion.properties')
|
||||
|
||||
if not os.path.isfile(props):
|
||||
print 'Could not load fmlversion.properties, build failed'
|
||||
|
@ -191,8 +211,8 @@ def load_mc_version(forge_dir):
|
|||
print 'Could not load fmlversion.properties, build failed'
|
||||
sys.exit(1)
|
||||
|
||||
def extract_fml_obfed(mcp_dir, reobf_dir, client_dir):
|
||||
fml_file = os.path.join(forge_dir, 'fml', 'difflist.txt')
|
||||
def extract_fml_obfed(fml_dir, mcp_dir, reobf_dir, client_dir):
|
||||
fml_file = os.path.join(fml_dir, 'difflist.txt')
|
||||
if not os.path.isfile(fml_file):
|
||||
print 'Could not find Forge ModLoader\'s DiffList, looking for it at: %s' % fml_file
|
||||
sys.exit(1)
|
||||
|
|
53
setup.py
53
setup.py
|
@ -1,5 +1,6 @@
|
|||
import os, os.path, sys, zipfile
|
||||
import shutil, glob, fnmatch
|
||||
import shutil, glob, fnmatch, subprocess
|
||||
from pprint import pformat
|
||||
from optparse import OptionParser
|
||||
|
||||
forge_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
@ -11,20 +12,25 @@ def main():
|
|||
|
||||
parser = OptionParser()
|
||||
parser.add_option('-m', '--mcp-dir', action='store', dest='mcp_dir', help='Path to download/extract MCP to', default=None)
|
||||
parser.add_option('-n', '--no-extract', action='store_true', dest='no_extract', help='Do not attempt to extract FML zip files', default=False)
|
||||
parser.add_option('-b', '--build', action='store', dest='build', help='Build number', default=None)
|
||||
options, _ = parser.parse_args()
|
||||
|
||||
build_num = 0
|
||||
if not options.build is None:
|
||||
try:
|
||||
build_num = int(options.build)
|
||||
except:
|
||||
pass
|
||||
|
||||
fml_dir = os.path.join(forge_dir, 'fml')
|
||||
mcp_dir = os.path.join(forge_dir, 'mcp')
|
||||
|
||||
if not options.mcp_dir is None:
|
||||
mcp_dir = os.path.abspath(options.mcp_dir)
|
||||
elif os.path.isfile(os.path.join('..', 'runtime', 'commands.py')):
|
||||
mcp_dir = os.path.abspath('..')
|
||||
|
||||
src_dir = os.path.join(mcp_dir, 'src')
|
||||
|
||||
setup_fml(mcp_dir, fml_dir, options.no_extract)
|
||||
setup_fml(mcp_dir, fml_dir, build_num)
|
||||
|
||||
base_dir = os.path.join(mcp_dir, 'src_base')
|
||||
work_dir = os.path.join(mcp_dir, 'src_work')
|
||||
|
@ -39,17 +45,44 @@ def main():
|
|||
shutil.copytree(src_dir, work_dir)
|
||||
|
||||
print 'Applying forge patches'
|
||||
apply_forge_patches(os.path.join(forge_dir, 'fml'), mcp_dir, forge_dir, work_dir, False)
|
||||
apply_forge_patches(fml_dir, mcp_dir, forge_dir, work_dir, False)
|
||||
|
||||
setup_eclipse(forge_dir)
|
||||
|
||||
print '=================================== Setup Finished ================================='
|
||||
|
||||
def setup_fml(mcp_dir, fml_dir, dont_extract=False):
|
||||
def setup_fml(mcp_dir, fml_dir, build_num=0):
|
||||
print 'Setting up Forge ModLoader'
|
||||
sys.path.append(os.path.join(fml_dir,'install')os.path.join(forge_dir, 'fml'))
|
||||
from install import fml_main
|
||||
fml_main(fml_dir, mcp_dir, True)
|
||||
os.environ['WORKSPACE'] = os.path.join(mcp_dir, '..')
|
||||
os.environ['BUILD_NUMBER'] = str(build_num)
|
||||
|
||||
BUILD = ['ant', 'jenkinsbuild']
|
||||
if sys.platform.startswith('win'):
|
||||
BUILD = ['cmd', '/C'] + BUILD
|
||||
|
||||
if not run_command(BUILD, cwd=fml_dir):
|
||||
print('Could not setup FML')
|
||||
sys.exit(1)
|
||||
|
||||
sys.path.append(fml_dir)
|
||||
sys.path.append(os.path.join(fml_dir, 'install'))
|
||||
from fml import finish_setup_fml
|
||||
finish_setup_fml(fml_dir, mcp_dir)
|
||||
|
||||
def run_command(command, cwd='.', verbose=True):
|
||||
print('Running command: ')
|
||||
print(pformat(command))
|
||||
|
||||
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=1, cwd=cwd)
|
||||
while process.poll() is None:
|
||||
line = process.stdout.readline()
|
||||
if line:
|
||||
line = line.rstrip()
|
||||
print(line)
|
||||
if process.returncode:
|
||||
self.logger.error("failed: %d", process.returncode)
|
||||
return False
|
||||
return True
|
||||
|
||||
def setup_eclipse(forge_dir):
|
||||
eclipse_dir = os.path.join(forge_dir, 'eclipse')
|
||||
|
|
107
updateasmdata.py
107
updateasmdata.py
|
@ -1,107 +0,0 @@
|
|||
import os, os.path, sys
|
||||
import shutil, glob, fnmatch
|
||||
import csv, re
|
||||
|
||||
ctorsigre = re.compile('<init>\((.*)\)')
|
||||
ctorparamre = re.compile('(([ZBCSIJFD]|L([\w\/]+);))')
|
||||
|
||||
def get_merged_info():
|
||||
mcp_dir = os.path.join(os.getcwd(), 'mcp')
|
||||
joined = os.path.join(mcp_dir, 'conf', 'joined.srg')
|
||||
values = {'PK:': {}, 'CL:': {}, 'FD:': {}, 'MD:': {}}
|
||||
|
||||
if not os.path.isfile(joined):
|
||||
sys.path.append('install')
|
||||
from fml import gen_merged_srg
|
||||
values = gen_merged_srg(mcp_dir, None)
|
||||
else:
|
||||
with open(joined, 'r') as fh:
|
||||
for line in fh:
|
||||
pts = line.rstrip('\r\n').split(' ')
|
||||
if pts[0] == 'MD:':
|
||||
values[pts[0]][pts[1] + ' ' + pts[2]] = pts[3] + ' ' + pts[4]
|
||||
else:
|
||||
values[pts[0]][pts[1]] = pts[2]
|
||||
|
||||
return {t:{v.split(' ')[0]:k for k, v in m.items()} for t,m in values.items()}
|
||||
|
||||
def process_file(file, srg):
|
||||
name = os.path.basename(file)
|
||||
print 'Processing: ' + name
|
||||
|
||||
if name == 'mcp_merge.cfg':
|
||||
with open(file + '-new','w') as nf:
|
||||
with open(file) as f:
|
||||
for line in f:
|
||||
parts = line.split('#')
|
||||
target = parts[1].strip()
|
||||
newpart = '%s%s #%s\n' % (parts[0][0], srg['CL:'][target], target)
|
||||
nf.write(newpart)
|
||||
else:
|
||||
with open(file + '-new', 'wb') as nf:
|
||||
with open(file) as f:
|
||||
for line in f:
|
||||
parts = line.split('#')
|
||||
if len(parts) < 2:
|
||||
nf.write(line)
|
||||
continue
|
||||
if len(parts[1]) < 4:
|
||||
nf.write(line)
|
||||
continue
|
||||
|
||||
typ = parts[1][0:3]
|
||||
|
||||
if not srg.has_key(typ):
|
||||
nf.write(line)
|
||||
continue
|
||||
|
||||
name = parts[1][3:].strip()
|
||||
name = (name if name.startswith('net/minecraft/') else 'net/minecraft/src/' + name)
|
||||
action = parts[0].split(' ')
|
||||
|
||||
if name.endswith('/*'):
|
||||
targ = srg['CL:'][name[:-2]]
|
||||
wildcard = ('.*()' if typ == 'MD:' else '.*')
|
||||
|
||||
newline = '%s %s%s #%s' % (action[0], targ, wildcard, '#'.join(parts[1:]))
|
||||
nf.write(newline)
|
||||
|
||||
elif name.find('/<init>') >= 0:
|
||||
targ = srg['CL:'][name[:name.find('/<init>')]]
|
||||
args = '<init>('
|
||||
armatch = ctorsigre.search(name).group(1)
|
||||
for bit in ctorparamre.findall(armatch):
|
||||
if len(bit[2]) > 0 and srg['CL:'].has_key(bit[2]):
|
||||
cl = 'L' + srg['CL:'][bit[2]] + ';'
|
||||
else:
|
||||
cl = bit[1]
|
||||
args += cl
|
||||
args += ')V'
|
||||
newline = ('%s %s.%s #%s' % (action[0], targ, args, '#'.join(parts[1:])))
|
||||
nf.write(newline)
|
||||
|
||||
else:
|
||||
if name not in srg[typ]:
|
||||
nf.write("%s # -- MISSING MAPPING" %( line ))
|
||||
print("%s is missing a mapping"% name)
|
||||
else:
|
||||
targ = srg[typ][name]
|
||||
args = targ.replace('/', '.', 1).replace(' ', '', 1)
|
||||
newline = ('%s %s #%s' % (action[0], args, '#'.join(parts[1:])))
|
||||
nf.write(newline)
|
||||
|
||||
def main():
|
||||
srg = get_merged_info()
|
||||
for arg in sys.argv:
|
||||
path = os.path.join(os.getcwd(), arg)
|
||||
|
||||
if arg.endswith('_at.cfg') or arg == 'mcp_merge.cfg':
|
||||
process_file(path, srg)
|
||||
elif os.path.isdir(path):
|
||||
for file in os.listdir(path):
|
||||
if file.endswith('_at.cfg'):
|
||||
process_file(os.path.join(path, file), srg)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
Loading…
Reference in a new issue