Update python files to add support for specifying MCP directory and FML downloading MCP on the fly.
This commit is contained in:
parent
d124a56844
commit
51159de108
|
@ -3,3 +3,4 @@
|
|||
/*.pyc
|
||||
/forge-*/
|
||||
/patches-old/
|
||||
/mcp/
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
@echo off
|
||||
..\runtime\bin\python\python_mcp build.py %*
|
||||
fml\python\python_fml build.py %*
|
||||
|
|
20
build.py
20
build.py
|
@ -1,4 +1,5 @@
|
|||
import os, os.path, sys
|
||||
from optparse import OptionParser
|
||||
|
||||
forge_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
mcp_dir = os.path.abspath('..')
|
||||
|
@ -6,14 +7,27 @@ mcp_dir = os.path.abspath('..')
|
|||
from forge import build_forge_dev
|
||||
|
||||
def main():
|
||||
build_num = 0
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
parser = OptionParser()
|
||||
parser.add_option('-m', '--mcp-dir', action='store', dest='mcp_dir', help='MCP Path', default=None)
|
||||
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(sys.argv[1])
|
||||
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('..')
|
||||
|
||||
sys.exit(build_forge_dev(mcp_dir, forge_dir, fml_dir, build_num))
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
9
forge.py
9
forge.py
|
@ -6,9 +6,6 @@ import csv, shutil
|
|||
import pprint
|
||||
|
||||
forge_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
mcp_dir = os.path.abspath('..')
|
||||
src_dir = os.path.join(mcp_dir, 'src')
|
||||
sys.path.append(mcp_dir)
|
||||
|
||||
def reset_logger():
|
||||
log = logging.getLogger()
|
||||
|
@ -124,10 +121,10 @@ def build_forge_dev(mcp_dir, forge_dir, fml_dir, build_num=0):
|
|||
recompile(None, True, False)
|
||||
reset_logger()
|
||||
os.chdir(forge_dir)
|
||||
|
||||
except SystemExit, e:
|
||||
print 'Recompile Exception: %d ' % e.code
|
||||
error_level = e.code
|
||||
if not e.code == 0:
|
||||
print 'Recompile Exception: %d ' % e.code
|
||||
error_level = e.code
|
||||
|
||||
print '=================================== Build Finished %d =================================' % error_level
|
||||
return error_level
|
|
@ -1,2 +1,2 @@
|
|||
@echo off
|
||||
..\runtime\bin\python\python_mcp release.py %*
|
||||
fml\python\python_fml release.py %*
|
68
release.py
68
release.py
|
@ -1,19 +1,12 @@
|
|||
import os, os.path, sys
|
||||
import shutil, fnmatch
|
||||
import logging, zipfile, re
|
||||
from optparse import OptionParser
|
||||
|
||||
forge_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
mcp_dir = os.path.abspath('..')
|
||||
src_dir = os.path.join(mcp_dir, 'src')
|
||||
|
||||
sys.path.append(mcp_dir)
|
||||
from runtime.reobfuscate import reobfuscate
|
||||
|
||||
from forge import reset_logger, load_version, zip_folder, zip_create, inject_version, build_forge_dev
|
||||
from changelog import make_changelog
|
||||
|
||||
reobf_dir = os.path.join(mcp_dir, 'reobf')
|
||||
client_dir = os.path.join(reobf_dir, 'minecraft')
|
||||
zip = None
|
||||
zip_name = None
|
||||
zip_base = None
|
||||
|
@ -24,21 +17,36 @@ def main():
|
|||
global version_str
|
||||
global version_mc
|
||||
|
||||
parser = OptionParser()
|
||||
parser.add_option('-m', '--mcp-dir', action='store', dest='mcp_dir', help='MCP Path', default=None)
|
||||
parser.add_option('-b', '--build', action='store', dest='build', help='Build number', default=None)
|
||||
options, _ = parser.parse_args()
|
||||
|
||||
build_num = 0
|
||||
if len(sys.argv) > 1:
|
||||
if not options.build is None:
|
||||
try:
|
||||
build_num = int(sys.argv[1])
|
||||
build_num = int(options.build)
|
||||
except:
|
||||
pass
|
||||
|
||||
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')
|
||||
build_forge_dev(mcp_dir, forge_dir, fml_dir, build_num)
|
||||
if ret != 0:
|
||||
sys.exit(ret)
|
||||
|
||||
|
||||
print '=================================== Release Start ================================='
|
||||
error_level = 0
|
||||
try:
|
||||
sys.path.append(mcp_dir)
|
||||
from runtime.reobfuscate import reobfuscate
|
||||
os.chdir(mcp_dir)
|
||||
reset_logger()
|
||||
reobfuscate(None, False, True, True, True, False)
|
||||
|
@ -48,13 +56,20 @@ def main():
|
|||
print 'Reobfusicate Exception: %d ' % e.code
|
||||
error_level = e.code
|
||||
|
||||
extract_fml_obfed()
|
||||
extract_paulscode()
|
||||
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_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)
|
||||
branch = get_branch_name()
|
||||
|
||||
version_str = '%s-%s' % (version_mc, version_forge)
|
||||
if not branch == "":
|
||||
version_str = '%s-%s' % (version_str, branch)
|
||||
|
||||
out_folder = os.path.join(forge_dir, 'forge-%s' % version_str)
|
||||
if os.path.isdir(out_folder):
|
||||
|
@ -102,15 +117,8 @@ def main():
|
|||
zip_add('common', 'common')
|
||||
zip_add('patches', 'patches')
|
||||
zip_add('fml', 'fml')
|
||||
zip_add('install/install.cmd')
|
||||
zip_add('install/install.sh')
|
||||
zip_add('install/README-MinecraftForge.txt')
|
||||
zip_add('install/install.py')
|
||||
zip_add('install', '')
|
||||
zip_add('forge.py')
|
||||
zip_add('install/MinecraftForge-Credits.txt')
|
||||
zip_add('install/MinecraftForge-License.txt')
|
||||
zip_add('install/Paulscode IBXM Library License.txt')
|
||||
zip_add('install/Paulscode SoundSystem CodecIBXM License.txt')
|
||||
zip_add(version_file)
|
||||
zip_add(changelog_file, 'MinecraftForge-Changelog.txt')
|
||||
zip_end()
|
||||
|
@ -169,7 +177,7 @@ def load_mc_version(forge_dir):
|
|||
print 'Could not load fmlversion.properties, build failed'
|
||||
sys.exit(1)
|
||||
|
||||
def extract_fml_obfed():
|
||||
def extract_fml_obfed(mcp_dir, reobf_dir, client_dir):
|
||||
fml_file = os.path.join(forge_dir, 'fml', 'difflist.txt')
|
||||
if not os.path.isfile(fml_file):
|
||||
print 'Could not find Forge ModLoader\'s DiffList, looking for it at: %s' % fml_file
|
||||
|
@ -192,7 +200,7 @@ def extract_fml_obfed():
|
|||
|
||||
client.close()
|
||||
|
||||
def extract_paulscode():
|
||||
def extract_paulscode(mcp_dir, client_dir):
|
||||
client = zipfile.ZipFile(os.path.join(mcp_dir, 'temp', 'client_reobf.jar'))
|
||||
|
||||
print 'Extracting Reobfed Paulscode for mac users -.-'
|
||||
|
@ -204,6 +212,22 @@ def extract_paulscode():
|
|||
client.extract(i.filename, client_dir)
|
||||
|
||||
client.close()
|
||||
|
||||
def get_branch_name():
|
||||
from subprocess import Popen, PIPE, STDOUT
|
||||
branch = ''
|
||||
if os.getenv("GIT_BRANCH") is None:
|
||||
try:
|
||||
process = Popen(["git", "rev-parse", "--abbrev-ref", "HEAD"], stdout=PIPE, stderr=STDOUT, bufsize=-1)
|
||||
branch, _ = process.communicate()
|
||||
branch = branch.rstrip('\r\n')
|
||||
except OSError:
|
||||
print "Git not found"
|
||||
else:
|
||||
branch = os.getenv("GIT_BRANCH").rpartition('/')[2]
|
||||
branch = branch.replace('master', '')
|
||||
print 'Detected Branch as \'%s\'' % branch
|
||||
return branch
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
21
setup.bat
21
setup.bat
|
@ -1,2 +1,21 @@
|
|||
@echo off
|
||||
..\runtime\bin\python\python_mcp setup.py %*
|
||||
|
||||
@SET PATH=%PATH%;.\GnuWin32\
|
||||
|
||||
if exist "fml" rmdir /S /Q fml
|
||||
|
||||
for %%f in (fml-*.zip) do (
|
||||
if exist "fml" (
|
||||
echo Multiple FML zips detected, aborting: %%~nf
|
||||
exit /b 1
|
||||
)
|
||||
echo Extracting %%~nf
|
||||
unzip -q %%~nf.zip
|
||||
)
|
||||
|
||||
if not exist "fml" (
|
||||
echo Could not find a valid FML FML jar, aborting
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
fml\python\python_fml setup.py --no-extract %*
|
58
setup.py
58
setup.py
|
@ -1,17 +1,30 @@
|
|||
import os, os.path, sys
|
||||
import urllib, zipfile
|
||||
import os, os.path, sys, zipfile
|
||||
import shutil, glob, fnmatch
|
||||
import subprocess, logging
|
||||
from optparse import OptionParser
|
||||
|
||||
forge_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
mcp_dir = os.path.abspath('..')
|
||||
src_dir = os.path.join(mcp_dir, 'src')
|
||||
|
||||
from forge import apply_forge_patches
|
||||
|
||||
def main():
|
||||
print '=================================== Setup Start ================================='
|
||||
setup_fml()
|
||||
|
||||
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)
|
||||
options, _ = parser.parse_args()
|
||||
|
||||
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)
|
||||
|
||||
base_dir = os.path.join(mcp_dir, 'src_base')
|
||||
work_dir = os.path.join(mcp_dir, 'src_work')
|
||||
|
@ -30,26 +43,25 @@ def main():
|
|||
|
||||
print '=================================== Setup Finished ================================='
|
||||
|
||||
def setup_fml():
|
||||
def setup_fml(mcp_dir, fml_dir, dont_extract=False):
|
||||
print 'Setting up Forge ModLoader'
|
||||
fml = glob.glob(os.path.join(forge_dir, 'fml-src-*.zip'))
|
||||
if not len(fml) == 1:
|
||||
if len(fml) == 0:
|
||||
print 'Missing FML source zip, should be named fml-src-*.zip inside your forge folder, obtain it from the repo'
|
||||
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 not dont_extract:
|
||||
fml = glob.glob(os.path.join(forge_dir, 'fml-src-*.zip'))
|
||||
if not len(fml) == 1:
|
||||
if len(fml) == 0:
|
||||
print 'Missing FML source zip, should be named fml-src-*.zip inside your forge folder, obtain it from the repo'
|
||||
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)
|
||||
|
||||
fml_dir = os.path.join(forge_dir, 'fml')
|
||||
|
||||
if os.path.isdir(fml_dir):
|
||||
shutil.rmtree(fml_dir)
|
||||
if os.path.isdir(fml_dir):
|
||||
shutil.rmtree(fml_dir)
|
||||
|
||||
print 'Extracting: %s' % os.path.basename(fml[0])
|
||||
|
||||
print 'Extracting: %s' % os.path.basename(fml[0])
|
||||
|
||||
zf = zipfile.ZipFile(fml[0])
|
||||
zf.extractall(forge_dir)
|
||||
zf.close()
|
||||
zf = zipfile.ZipFile(fml[0])
|
||||
zf.extractall(forge_dir)
|
||||
zf.close()
|
||||
|
||||
sys.path.append(fml_dir)
|
||||
from install import fml_main
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
@echo off
|
||||
..\runtime\bin\python\python_mcp update_patches.py .. .
|
||||
fml\python\python_fml update_patches.py %*
|
|
@ -4,6 +4,7 @@ import fnmatch
|
|||
import shlex
|
||||
import difflib
|
||||
import time
|
||||
from optparse import OptionParser
|
||||
|
||||
def cmdsplit(args):
|
||||
if os.sep == '\\':
|
||||
|
@ -27,8 +28,19 @@ def cleanDirs(path):
|
|||
|
||||
def main():
|
||||
print("Creating patches")
|
||||
mcp = os.path.normpath(sys.argv[1])
|
||||
forge_dir = os.path.normpath(sys.argv[2])
|
||||
|
||||
parser = OptionParser()
|
||||
parser.add_option('-m', '--mcp-dir', action='store', dest='mcp_dir', help='Path to MCP', default=None)
|
||||
options, _ = parser.parse_args()
|
||||
|
||||
forge_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
mcp = os.path.join(forge_dir, 'mcp')
|
||||
if not options.mcp_dir is None:
|
||||
mcp = os.path.abspath(options.mcp_dir)
|
||||
elif os.path.isfile(os.path.join('..', 'runtime', 'commands.py')):
|
||||
mcp = os.path.abspath('..')
|
||||
|
||||
patchd = os.path.normpath(os.path.join(forge_dir, 'patches'))
|
||||
base = os.path.normpath(os.path.join(mcp, 'src_base'))
|
||||
work = os.path.normpath(os.path.join(mcp, 'src_work'))
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
python update_patches.py .. .
|
||||
#!/bin/bash
|
||||
python update_patches.py "$@"
|
Loading…
Reference in New Issue