Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Problems With Getting a Branch of Forge Ready for Pull Request


zanotam
 Share

Recommended Posts

So, I'm writing some code to implement something like http://forums.bukkit.org/threads/permissions-faq.25080/ for forge. This should make life much easier than the current creation of fake players and total reliance of mod authors to work well together with mods like Forge Essentials or the PEX port to Forge, instead of the current situation in which mods will oftentimes implement their own pseudo perm system which will be very difficult to modify or deal with from a mod maker and a server owner perspective. Anyways.....

 

I've got the code written that doesn't require modification of base classes, but I can't figure out a way to finish the code off without doing so. I know to do so I should get a clean github copy of forge, get the mcp running and the eclipse directory and all that jazz ready, make my code modifications to the base classes, and then update the patches with the changes I made to base classes, but whenever I try to get a clean version of forge set-up for this purpose (I've already got a 1.6 version of forge for writing mods running fine), I run in to issues. Here are the steps I'm following:

 

1. Fork MinecraftForge.

2. Download fork using the official OS X GitHub app.

3. Go to terminal and move to the directory the downloaded fork is in and run setup.py

 

The issue seems to be the following error, but below that I've included the full text of the terminal output.

 

Just the error: http://pastebin.com/vUssWvva

 

BUILD FAILED

/Users/RobertSBaker/Dropbox/Programming/Minecraft/MinecraftForge/fml/build.xml:263: Execute failed: java.io.IOException: Cannot run program "xz": error=2, No such file or directory

at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)

at java.lang.Runtime.exec(Runtime.java:593)

at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:862)

at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:481)

at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:495)

at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:631)

at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:672)

at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:498)

at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)

at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)

at org.apache.tools.ant.Task.perform(Task.java:348)

at org.apache.tools.ant.Target.execute(Target.java:390)

at org.apache.tools.ant.Target.performTasks(Target.java:411)

at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)

at org.apache.tools.ant.Project.executeTarget(Project.java:1368)

at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)

at org.apache.tools.ant.Project.executeTargets(Project.java:1251)

at org.apache.tools.ant.Main.runBuild(Main.java:809)

at org.apache.tools.ant.Main.startAnt(Main.java:217)

at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)

at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Caused by: java.io.IOException: error=2, No such file or directory

at java.lang.UNIXProcess.forkAndExec(Native Method)

at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)

at java.lang.ProcessImpl.start(ProcessImpl.java:91)

at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)

... 23 more

 

 

 

Full Report: http://pastebin.com/8i7XEjMD

Link to comment
Share on other sites

Easiest way to modify forge files I'd say would be to download the forge src package from files.minecraftforge.net and run the install file. Open the generated eclipse environment and edit away!

 

Once you're ready to make the pull request, push all of your changes to your forked repository.

Link to comment
Share on other sites

That would work for any forge added files, but it wont generate the needed patch files for altered Minecraft classes.

 

Unfortunately I don't seem to be able to setup an environment also.

Not sure if things are not yet set up, things have changed, I'm just having bad luck, or just out right forgot how :)

 

I was sure it was as simple as

- download forge from github (MinecraftForge-master.zip)

- extract to a folder

- download fml from github (FML-master.zip)

- put files in /forge/fml/

- run /forge/setup.py

 

but that isn't providing the usual results

/forge/mcp/src_base doesn't exist, nor does /forge/mcp/src_work

and /forge/eclipse-workspace-dev.zip is never extracted to /forge/eclipse

 

I thought about manually setting it up but ran into a snag

while src_work is easy, its the same we use to create mods

src_base is another thing, its a decompile with merged client and server, fml patches, but no forge patches.

 

update_patches.py compares src_work and src_base, if you set up the folders wrong the patch files will be an unusable mess.

Link to comment
Share on other sites

The key to your question probably is the --recursive parameter on git clone. That will initialize all sub-repos (FML in this case) properly.

Here is a complete list of what you need to do for a pull-request:

1. Fork the MinecraftForge repo

2. Install Ant

3. clone the repo: git clone YOUR_REPO_URL --recursive

4. In a command line:

    cd inside the forge repo (there should be a setup.py there)

    run fml/python/python_fml.exe setup.py (if you're on windows of course. Otherwise use some other python :D)

5. Eclipse workspace should be FORGE_REPO/eclipse

6. You'll see a clean (=vanilla) and a forge version of the code in eclipse. Make your changes in the forge part

7. When you're done, run update_patches and push/setup the pull request.

 

Hope that helps anybody :)

Link to comment
Share on other sites

Switching to windows was a bit weird, but this seems to have ALMOST worked.

 

This is the output I'm getting: http://pastebin.com/N0nhwvny

 

It seems to be MCP throwing an error and while I'm no expert in this regards, I think it's related to a python script building mcp and possibly the fact that the file system attempts.... well lemme show you the final error:

 

 

recompile:

    [exec] == MCP 8.03 (data: 8.03, client: 1.6.1, server: 1.6.1) ==

    [exec] FATAL ERROR

    [exec] Traceback (most recent call last):

    [exec]  File "C:\Minecraft\forge/mcp/runtime/recompile.py", line 29, in re

compile

    [exec]    commands = Commands(conffile, verify=True)

    [exec]  File "C:\Minecraft\forge\mcp\runtime\commands.py", line 206, in __

init__

    [exec]    self.checkjava()

    [exec]  File "C:\Minecraft\forge\mcp\runtime\commands.py", line 853, in ch

eckjava

    [exec]    results.extend(whereis('javac.exe', os.getenv("JAVA_HOME")))

    [exec]  File "C:\Minecraft\forge\mcp\runtime\pylibs\whereis.py", line 14,

in whereis

    [exec]    if not os.path.exists(rootdir):

    [exec]  File "genericpath.pyc", line 18, in exists

    [exec] TypeError: coercing to Unicode: need string or buffer, NoneType foun

d

 

BUILD FAILED

C:\Minecraft\forge\fml\build.xml:116: exec returned: 1

 

Total time: 10 minutes 4 seconds

failed: 1

 

 

Specifically at one point it shows:

 

 

    [exec] Traceback (most recent call last):

    [exec]  File "C:\Minecraft\forge/mcp/runtime/recompile.py", line 29, in re

compile

    [exec]    commands = Commands(conffile, verify=True)

    [exec]  File "C:\Minecraft\forge\mcp\runtime\commands.py", line 206, in __

init__

 

 

and I noticed that "C:\Minecraft\forge/mcp/runtime/recompile.py" is.... well I'm pretty sure that's not a valid windows file? I'm honestly a bit out of my depth here right now, but if nobody else has any ideas I can try to go in and get it fixed for myself.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.