7even / endless-ships

Online reference to the Endless Sky game
http://endless-sky.7vn.io/
GNU General Public License v3.0
19 stars 10 forks source link

Request for info: Building on Windows (or on Github) #20

Open Zitchas opened 1 month ago

Zitchas commented 1 month ago

Thanks for your work developing this!

I am interested in learning how to run the program in order to generate a site for Endless Sky Delta; either running it locally or on Github via actions.

I am currently trying to run it locally on a Windows machine. I have boot and yarn installed (as well as node.js), but when I get to the last step of this section:

$ git clone git@github.com:7even/endless-ships.git
$ cd endless-ships
$ git submodule update --init

I get an error


Please make sure you have the correct access rights
and the repository exists.```

I tried swapping that out for zitchas/endless-ships.git to pull from my fork instead, but that didn't change anything.
Zitchas commented 1 month ago

That being said, given that I have a copy of endless-ships downloaded (via github desktop), is it possible to manually place the data files from endless-sky instead of doing it via the program?

edit1 : Just discovered the game data is located inside the .../endless-ships/resources/game/ folder

So that is in place, albeit old as I note it is 0.10.4, but that's alright. For the moment, this is just trying to get it to run properly locally.

7even commented 1 month ago

Can you please try doing git submodule set-url resources/game https://github.com/endless-sky/endless-sky.git when you're in the endless-ships directory, then try git submodule update --init once again?

Zitchas commented 1 month ago

At this point, while in the endless-ships folder, I tried running the boot build command

java.lang.IllegalArgumentException: Cannot open <nil> as a Reader.
        clojure.lang.ExceptionInfo: Cannot open <nil> as a Reader.
    line: 47

Yes, I can.

Zitchas commented 1 month ago

Can you please try doing git submodule set-url resources/game https://github.com/endless-sky/endless-sky.git when you're in the endless-ships directory

It gave this result: Synchronizing submodule url for 'resources/game'

then try git submodule update --init

And it didn't display anything after the second command, and at a glance there isn't any changes in the resource/game folder.

7even commented 1 month ago

Well, since the game files are already in resources/game, then the git submodule should be fine. Now you can switch to it with cd resources/game and do anything git allows you to do, like checking out a given game version with git checkout v0.10.8 (though I would avoid changing anything in there).

As for the Cannot open <nil> as a Reader error, I need to check it when I have the time.

By the way, are you sure you ran boot build when the game files were already in place at resources/game?

Zitchas commented 1 month ago

Yes, although I can relaunch powershell and try again.

Zitchas commented 1 month ago

It gave the same error message.

Full output: ``` Boot.main Boot.java: 258 ... boot.App.main App.java: 500 boot.App.runBoot App.java: 407 org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke ClojureRuntimeShimImpl.java: 145 org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke ClojureRuntimeShimImpl.java: 154 ... boot.main/-main main.clj: 216 boot.main/-main/fn main.clj: 216 clojure.core/load-string core.clj: 3959 clojure.core/load-reader core.clj: 3957 ... boot.user$eval3009.invoke : 11 boot.user$eval3009.invokeStatic : 11 ... clojure.core/require core.clj: 5796 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.core/load-libs core.clj: 5758 clojure.core/load-libs core.clj: 5774 clojure.core/apply core.clj: 648 ... clojure.core/load-lib core.clj: 5717 clojure.core/load-lib core.clj: 5736 clojure.core/load-lib/fn core.clj: 5737 clojure.core/load-one core.clj: 5697 ... clojure.core/load core.clj: 5876 clojure.core/load core.clj: 5892 clojure.core/load/fn core.clj: 5893 ... endless-ships.core/eval3269 core.clj: 1 endless-ships.core/eval3269/loading--auto-- core.clj: 1 ... clojure.core/require core.clj: 5796 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.core/load-libs core.clj: 5758 clojure.core/load-libs core.clj: 5774 clojure.core/apply core.clj: 648 ... clojure.core/load-lib core.clj: 5717 clojure.core/load-lib core.clj: 5736 clojure.core/load-lib/fn core.clj: 5737 clojure.core/load-one core.clj: 5697 ... clojure.core/load core.clj: 5876 clojure.core/load core.clj: 5892 clojure.core/load/fn core.clj: 5893 ... endless-ships.outfits/eval3275 outfits.clj: 1 endless-ships.outfits/eval3275/loading--auto-- outfits.clj: 1 ... clojure.core/require core.clj: 5796 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.core/load-libs core.clj: 5758 clojure.core/load-libs core.clj: 5774 clojure.core/apply core.clj: 648 ... clojure.core/load-lib core.clj: 5717 clojure.core/load-lib core.clj: 5736 clojure.core/load-lib/fn core.clj: 5737 clojure.core/load-one core.clj: 5697 ... clojure.core/load core.clj: 5876 clojure.core/load core.clj: 5892 clojure.core/load/fn core.clj: 5893 ... endless-ships.parser/fn parser.clj: 49 ... clojure.core/mapcat core.clj: 2674 (repeats 2 times) clojure.core/apply core.clj: 641 clojure.core/seq core.clj: 137 ... clojure.core/map/fn core.clj: 2646 endless-ships.parser/fn/fn parser.clj: 51 endless-ships.parser/parse parser.clj: 40 ... instaparse.core/parser core.clj: 171 instaparse.core/parser core.clj: 255 ... clojure.core/slurp core.clj: 6657 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.java.io/reader io.clj: 86 clojure.java.io/reader io.clj: 102 clojure.java.io/fn/G io.clj: 69 clojure.java.io/fn io.clj: 288 java.lang.IllegalArgumentException: Cannot open as a Reader. clojure.lang.ExceptionInfo: Cannot open as a Reader. line: 47 ```
7even commented 1 month ago

I'll look into it, thanks for the bug report.

Zitchas commented 1 month ago

Thank you!

7even commented 1 month ago

@Zitchas can you please try replacing / with \ in this line and launch boot build again?

Zitchas commented 1 month ago

Just tried doing that, and it gave me an error. I think most of the feedback isn't relevant, but there was this:

java.lang.RuntimeException: Unsupported escape character: \d
clojure.lang.ExceptionInfo: Unsupported escape character: \d
    line: 10
Full Output ``` SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Boot.main Boot.java: 258 ... boot.App.main App.java: 500 boot.App.runBoot App.java: 407 org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke ClojureRuntimeShimImpl.java: 145 org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke ClojureRuntimeShimImpl.java: 154 ... boot.main/-main main.clj: 216 boot.main/-main/fn main.clj: 216 clojure.core/load-string core.clj: 3959 clojure.core/load-reader core.clj: 3957 ... boot.user$eval3009.invoke : 11 boot.user$eval3009.invokeStatic : 11 ... clojure.core/require core.clj: 5796 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.core/load-libs core.clj: 5758 clojure.core/load-libs core.clj: 5774 clojure.core/apply core.clj: 648 ... clojure.core/load-lib core.clj: 5717 clojure.core/load-lib core.clj: 5736 clojure.core/load-lib/fn core.clj: 5737 clojure.core/load-one core.clj: 5697 ... clojure.core/load core.clj: 5876 clojure.core/load core.clj: 5892 clojure.core/load/fn core.clj: 5893 ... endless-ships.core/eval3269 core.clj: 1 endless-ships.core/eval3269/loading--auto-- core.clj: 1 ... clojure.core/require core.clj: 5796 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.core/load-libs core.clj: 5758 clojure.core/load-libs core.clj: 5774 clojure.core/apply core.clj: 648 ... clojure.core/load-lib core.clj: 5717 clojure.core/load-lib core.clj: 5736 clojure.core/load-lib/fn core.clj: 5737 clojure.core/load-one core.clj: 5697 ... clojure.core/load core.clj: 5876 clojure.core/load core.clj: 5892 clojure.core/load/fn core.clj: 5893 ... endless-ships.outfits/eval3275 outfits.clj: 1 endless-ships.outfits/eval3275/loading--auto-- outfits.clj: 1 ... clojure.core/require core.clj: 5796 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.core/load-libs core.clj: 5758 clojure.core/load-libs core.clj: 5774 clojure.core/apply core.clj: 648 ... clojure.core/load-lib core.clj: 5717 clojure.core/load-lib core.clj: 5736 clojure.core/load-lib/fn core.clj: 5737 clojure.core/load-one core.clj: 5697 ... clojure.core/load core.clj: 5876 clojure.core/load core.clj: 5892 clojure.core/load/fn core.clj: 5893 ... java.lang.RuntimeException: Unsupported escape character: \d clojure.lang.ExceptionInfo: Unsupported escape character: \d line: 10 ```
7even commented 1 month ago

Sorry, I forgot that backslashes need to be escaped inside strings in Clojure. Please add a second backslash, so that it's "game\\data".

Zitchas commented 1 month ago

OK, I added the \ to escape it. Unfortunately, it still gives an error.

java.lang.IllegalArgumentException: Cannot open <nil> as a Reader.
        clojure.lang.ExceptionInfo: Cannot open <nil> as a Reader.
    line: 47
Full Output ``` Boot.main Boot.java: 258 ... boot.App.main App.java: 500 boot.App.runBoot App.java: 407 org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke ClojureRuntimeShimImpl.java: 145 org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke ClojureRuntimeShimImpl.java: 154 ... boot.main/-main main.clj: 216 boot.main/-main/fn main.clj: 216 clojure.core/load-string core.clj: 3959 clojure.core/load-reader core.clj: 3957 ... boot.user$eval3009.invoke : 11 boot.user$eval3009.invokeStatic : 11 ... clojure.core/require core.clj: 5796 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.core/load-libs core.clj: 5758 clojure.core/load-libs core.clj: 5774 clojure.core/apply core.clj: 648 ... clojure.core/load-lib core.clj: 5717 clojure.core/load-lib core.clj: 5736 clojure.core/load-lib/fn core.clj: 5737 clojure.core/load-one core.clj: 5697 ... clojure.core/load core.clj: 5876 clojure.core/load core.clj: 5892 clojure.core/load/fn core.clj: 5893 ... endless-ships.core/eval3269 core.clj: 1 endless-ships.core/eval3269/loading--auto-- core.clj: 1 ... clojure.core/require core.clj: 5796 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.core/load-libs core.clj: 5758 clojure.core/load-libs core.clj: 5774 clojure.core/apply core.clj: 648 ... clojure.core/load-lib core.clj: 5717 clojure.core/load-lib core.clj: 5736 clojure.core/load-lib/fn core.clj: 5737 clojure.core/load-one core.clj: 5697 ... clojure.core/load core.clj: 5876 clojure.core/load core.clj: 5892 clojure.core/load/fn core.clj: 5893 ... endless-ships.outfits/eval3275 outfits.clj: 1 endless-ships.outfits/eval3275/loading--auto-- outfits.clj: 1 ... clojure.core/require core.clj: 5796 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.core/load-libs core.clj: 5758 clojure.core/load-libs core.clj: 5774 clojure.core/apply core.clj: 648 ... clojure.core/load-lib core.clj: 5717 clojure.core/load-lib core.clj: 5736 clojure.core/load-lib/fn core.clj: 5737 clojure.core/load-one core.clj: 5697 ... clojure.core/load core.clj: 5876 clojure.core/load core.clj: 5892 clojure.core/load/fn core.clj: 5893 ... endless-ships.parser/fn parser.clj: 49 ... clojure.core/mapcat core.clj: 2674 (repeats 2 times) clojure.core/apply core.clj: 641 clojure.core/seq core.clj: 137 ... clojure.core/map/fn core.clj: 2646 endless-ships.parser/fn/fn parser.clj: 51 endless-ships.parser/parse parser.clj: 40 ... instaparse.core/parser core.clj: 171 instaparse.core/parser core.clj: 255 ... clojure.core/slurp core.clj: 6657 (repeats 2 times) clojure.core/apply core.clj: 648 ... clojure.java.io/reader io.clj: 86 clojure.java.io/reader io.clj: 102 clojure.java.io/fn/G io.clj: 69 clojure.java.io/fn io.clj: 288 java.lang.IllegalArgumentException: Cannot open as a Reader. clojure.lang.ExceptionInfo: Cannot open as a Reader. line: 47 ```
Zitchas commented 1 month ago

A question regarding this error: Do you know what document it is referring to? Just trying to look at things to see if I can get any insight on it, but I can't even tell what file that line: 47 is in.

edit: In the build.boot file at L 47 there is a [] Should this be a location or something?

7even commented 1 month ago

edit: In the build.boot file at L 47 there is a [] Should this be a location or something?

No, it's just an empty parameters list for a function.

From the stack trace it seems like it cannot find the resources/parser.bnf file, can you please check if it exists on your machine? Maybe it was accidentally deleted.

Zitchas commented 1 month ago

OK, yes, from the root of Endless-Ships there's a folder called resources, and within it there is a file called parser.bnf

Any chance that it's looking for a hardcoded location (for instance, located directly at the root of C: ?

edit: Just comparing the contents here on GitHub and my local copy, I note that in the resources folder the parser.bnf file has the same name, but other item is a folder referred to as game @ c7874d3 on GitHub, but only as game locally.

edit2: Just did a cursory visual check between the file on GitHub and locally, and the two appear to be identical.

7even commented 1 month ago

Any chance that it's looking for a hardcoded location (for instance, located directly at the root of C: ?

I don't think so but I have pretty much no experience working with Java/Clojure under Windows. Unfortunately I don't have a Windows machine to check it.

edit: Just comparing the contents here on GitHub and my local copy, I note that in the resources folder the parser.bnf file has the same name, but other item is a folder referred to as game @ c7874d3 on GitHub, but only as game locally.

game @ c7874d3 is how Github shows git submodules, and the game is plugged into endless-ships as a submodule; in the filesystem it's just game, it is the expected behavior.

I guess the problem can also be related to file permissions and the user who is launching boot build, but I can't really help here due to my lack of knowledge of Windows. It would be great if you could investigate something on your own.

Zitchas commented 1 month ago

I did try running it under admin as well as regular user, but it didn't change the error.

Unfortunately my java experience is limited to making a really basic game (use arrow keys to move from one side of the field to the other. You win!) and running a Minecraft server (which does not involve doing anything with the java code at all).

Given my lack of technical abilities to really troubleshoot much two alternative routes present themselves:

a) figuring out how to run a linux VM of some kind in order to do this in that environment.

b) figure out how to run Endless-Ships to generate the website package via GitHub.

I note that Endless Sky's current automatic checks and release process actually involves running the game within the build environment in order to run the engine through a specific sequence of commands and tests and get an output. If we can do that, I would think that it should be possible to run Endless-Ships long enough to generate the package, and then save that as part of the artifacts.

7even commented 1 month ago

Well, endless-ships can be run in a Docker container, so if you install Docker you can follow the instructions in readme. Furthermore, I think you could make changes to the source files and relaunch the docker run command described there to see them in action.

As for the automated build via Github Actions, it actually doesn't need to launch the game itself - basically there are 3 required operations:

  1. checkout the requested game version via git commands I mentioned earlier
  2. run boot build (or even build a Docker image)
  3. deploy it to some server

If you want to launch this process from the Endless Sky repository after each commit, then this repository needs to be cloned before doing these 3 steps.

I would gladly help but unfortunately I'm extremely busy with other projects right now, so I'd suggest you try the local Docker container approach for now.

Zitchas commented 1 month ago

I will try the docker method. I did look into it a few days ago, but that was in the middle of the Crowdstrike problems affecting the internet, and I couldn't even create an account/login. I'll try again in the near future.

I don't think this needs to run after every commit. I just mentioned that if we can run the game in a GitHub runner, we should be able to run this too. I'm not particularly knowledgeable in doing so, though.

7even commented 4 weeks ago

@Zitchas it finally reproduced on my machine, and I decided it's time to move the project from boot-clj to tools.deps (the problem seemed to be related to the way boot-clj handles temporary files). Can you please try the latest version from the master branch?

Unfortunately the Docker installation method does not work (as described in #19), I still did not find the reason, so for now manual build is the only way that works (on my machine). See README for updated instructions.

Zitchas commented 4 weeks ago

Thanks for the update. I was running into problems with geting docker to do it. Glad it wasn't just me not being able to follow directions. :) Anyway, yes, I can attempt to follow the updated instructions using the new method. Unfortunately I can't do it right now, but I can do it within the next 12. I will update once I have tried it.

Zitchas commented 3 weeks ago

OK, using clojure it looked promising. The first time I ran it, it downloaded a few things, then the feedback was a long list of "parsing __" where is a long listing of all the data files.

Unfortunately, it finally terminates with the following error:

Execution error (IOException) at java.lang.ProcessImpl/create (ProcessImpl.java:-2).
CreateProcess error=2, The system cannot find the file specified
Full output here ``` parsing bunrodea missions.txt... parsing bunrodea outfits.txt... parsing bunrodea ships.txt... parsing bunrodea weapons.txt... parsing bunrodea.txt... parsing categories.txt... parsing coalition culture conversations.txt... parsing coalition jobs.txt... parsing coalition missions.txt... parsing coalition news.txt... parsing coalition outfits.txt... parsing coalition ships.txt... parsing coalition weapons.txt... parsing coalition.txt... parsing heliarch intro.txt... parsing lunarium intro.txt... parsing commodities.txt... parsing dialog phrases.txt... parsing drak missions.txt... parsing drak outfits.txt... parsing drak ships.txt... parsing indigenous.txt... parsing effects.txt... parsing gamerules.txt... parsing gegno events.txt... parsing gegno fleets.txt... parsing gegno intro missions.txt... parsing gegno outfits.txt... parsing gegno sales.txt... parsing gegno ships.txt... parsing gegno.txt... parsing governments.txt... parsing hai culture conversations.txt... parsing hai fleets.txt... parsing hai jobs.txt... parsing hai missions.txt... parsing hai news.txt... parsing hai outfits.txt... parsing hai reveal 0 prologue.txt... parsing hai reveal 1 intro.txt... parsing hai reveal 2 start.txt... parsing hai reveal 3 early.txt... parsing hai reveal 4 middle.txt... parsing hai reveal 5 philosophers.txt... parsing hai reveal 6 end.txt... parsing hai reveal 7 epilogue.txt... parsing hai reveal news.txt... parsing hai ships.txt... parsing hai.txt... parsing unfettered 0 prologue.txt... parsing unfettered jobs.txt... parsing harvesting.txt... parsing hazards.txt... parsing boarding missions.txt... parsing campaign events.txt... parsing culture conversations.txt... parsing deep jobs.txt... parsing deep missions.txt... parsing dirt belt jobs.txt... parsing engines.txt... parsing fleets.txt... parsing free worlds 0 prologue.txt... parsing free worlds 1 start.txt... parsing free worlds 2 middle.txt... parsing free worlds 3 checkmate.txt... parsing free worlds 3 reconciliation.txt... parsing free worlds 4 epilogue.txt... parsing free worlds side plots.txt... parsing free worlds war jobs.txt... parsing frontier jobs.txt... parsing hails.txt... parsing human missions.txt... parsing intro missions.txt... parsing jobs.txt... parsing kestrel.txt... parsing marauders.txt... parsing names.txt... parsing near earth jobs.txt... parsing news.txt... parsing outfits.txt... parsing paradise world jobs.txt... parsing pirate jobs.txt... parsing post-war reactions.txt... parsing power.txt... parsing rim jobs.txt... parsing sales.txt... parsing ships.txt... parsing south jobs.txt... parsing syndicate jobs.txt... parsing variants.txt... parsing weapons.txt... parsing iije.txt... parsing kahet missions.txt... parsing kahet outfits.txt... parsing kahet ships.txt... parsing kahet.txt... parsing korath hails.txt... parsing korath jobs.txt... parsing korath missions.txt... parsing korath news.txt... parsing korath outfits.txt... parsing korath ships.txt... parsing korath variants.txt... parsing korath weapons.txt... parsing korath.txt... parsing nanobots.txt... parsing map planets.txt... parsing map systems.txt... parsing persons.txt... parsing pug missions.txt... parsing pug news.txt... parsing pug outfits.txt... parsing pug ships.txt... parsing pug.txt... parsing quarg missions.txt... parsing quarg news.txt... parsing quarg outfits.txt... parsing quarg ships.txt... parsing quarg.txt... parsing remnant 1 introduction.txt... parsing remnant 2 cognizance.txt... parsing remnant 2 side missions.txt... parsing remnant commodities.txt... parsing remnant events.txt... parsing remnant jobs.txt... parsing remnant news.txt... parsing remnant outfits.txt... parsing remnant ships.txt... parsing remnant.txt... parsing rulei outfits.txt... parsing rulei ships.txt... parsing rulei.txt... parsing series.txt... parsing archaeology missions.txt... parsing sheragi outfits.txt... parsing sheragi ships.txt... parsing stars.txt... parsing start.txt... parsing vyrmeid.txt... parsing wanderer jobs.txt... parsing wanderer news.txt... parsing wanderer outfits.txt... parsing wanderer ships.txt... parsing wanderers middle.txt... parsing wanderers start.txt... parsing wanderers.txt... parsing critters.txt... parsing elenchus.txt... parsing deprecated outfits.txt... parsing deprecated ships.txt... parsing flight checks.txt... parsing help.txt... parsing interfaces.txt... parsing landing messages.txt... parsing ratings.txt... parsing tooltips.txt... "Elapsed time: 50249.1998 msecs" Execution error (IOException) at java.lang.ProcessImpl/create (ProcessImpl.java:-2). CreateProcess error=2, The system cannot find the file specified Full report at: my user filepath \AppData\Local\Temp\clojure-13086490615955654607.edn ```
Contents of the Full Report mentioned in the output ```{:clojure.main/message "Execution error (IOException) at java.lang.ProcessImpl/create (ProcessImpl.java:-2).\r\nCreateProcess error=2, The system cannot find the file specified\r\n", :clojure.main/triage {:clojure.error/class java.io.IOException, :clojure.error/line -2, :clojure.error/cause "CreateProcess error=2, The system cannot find the file specified", :clojure.error/symbol java.lang.ProcessImpl/create, :clojure.error/source "ProcessImpl.java", :clojure.error/phase :execution}, :clojure.main/trace {:via [{:type java.io.IOException, :message "Cannot run program \"rm\": CreateProcess error=2, The system cannot find the file specified", :at [java.lang.ProcessBuilder start "ProcessBuilder.java" 1170]} {:type java.io.IOException, :message "CreateProcess error=2, The system cannot find the file specified", :at [java.lang.ProcessImpl create "ProcessImpl.java" -2]}], :trace [[java.lang.ProcessImpl create "ProcessImpl.java" -2] [java.lang.ProcessImpl "ProcessImpl.java" 500] [java.lang.ProcessImpl start "ProcessImpl.java" 159] [java.lang.ProcessBuilder start "ProcessBuilder.java" 1126] [java.lang.ProcessBuilder start "ProcessBuilder.java" 1089] [java.lang.Runtime exec "Runtime.java" 681] [clojure.java.shell$sh invokeStatic "shell.clj" 113] [clojure.java.shell$sh doInvoke "shell.clj" 79] [clojure.lang.RestFn invoke "RestFn.java" 436] [endless_ships.core$build invokeStatic "core.clj" 112] [endless_ships.core$build invoke "core.clj" 109] [clojure.lang.Var invoke "Var.java" 384] [clojure.run.exec$exec invokeStatic "exec.clj" 88] [clojure.run.exec$exec invoke "exec.clj" 78] [clojure.run.exec$_main$fn__220 invoke "exec.clj" 227] [clojure.run.exec$_main invokeStatic "exec.clj" 223] [clojure.run.exec$_main doInvoke "exec.clj" 191] [clojure.lang.RestFn invoke "RestFn.java" 397] [clojure.lang.AFn applyToHelper "AFn.java" 152] [clojure.lang.RestFn applyTo "RestFn.java" 132] [clojure.lang.Var applyTo "Var.java" 705] [clojure.core$apply invokeStatic "core.clj" 667] [clojure.main$main_opt invokeStatic "main.clj" 514] [clojure.main$main_opt invoke "main.clj" 510] [clojure.main$main invokeStatic "main.clj" 664] [clojure.main$main doInvoke "main.clj" 616] [clojure.lang.RestFn applyTo "RestFn.java" 137] [clojure.lang.Var applyTo "Var.java" 705] [clojure.main main "main.java" 40]], :cause "CreateProcess error=2, The system cannot find the file specified"}} ```

Second time I ran it, it didn't download anything, and generated an output that looked basically identical to the first time, just without the download info at the start.

7even commented 3 weeks ago

Oh, the reason is that the build script uses the rm Unix command which doesn't exist in Windows. I replaced it and some other file management commands with Clojure/Java functions, I think now it should work.

Second time I ran it, it didn't download anything, and generated an output that looked basically identical to the first time, just without the download info at the start.

This is expected, it always downloads the dependencies on the first launch (or right after they get changed).

Zitchas commented 3 weeks ago

This is expected, it always downloads the dependencies on the first launch (or right after they get changed).

Yes, I suspected (or hoped, for the sake of efficiency) that it was probably a first-time-only sort of thing. That's why I ran it a second time to see if having everything already downloaded would prevent the error.

OK, updated to include the recent push and ran it again. Still generates an error, but it is a different one. I'm including the last handful of lines showing where it was in the parsing process:

parsing flight checks.txt...
parsing help.txt...
parsing interfaces.txt...
parsing landing messages.txt...
parsing ratings.txt...
parsing tooltips.txt...
"Elapsed time: 59039.3171 msecs"
Execution error (IOException) at endless-ships.core/build (core.clj:116).
Couldn't delete .\build

Full report at: ...
Contents of the Full Report ``` {:clojure.main/message "Execution error (IOException) at endless-ships.core/build (core.clj:116).\r\nCouldn't delete .\\build\r\n", :clojure.main/triage {:clojure.error/class java.io.IOException, :clojure.error/line 116, :clojure.error/cause "Couldn't delete .\\build", :clojure.error/symbol endless-ships.core/build, :clojure.error/source "core.clj", :clojure.error/phase :execution}, :clojure.main/trace {:via [{:type java.io.IOException, :message "Couldn't delete .\\build", :at [clojure.java.io$delete_file invokeStatic "io.clj" 434]}], :trace [[clojure.java.io$delete_file invokeStatic "io.clj" 434] [clojure.java.io$delete_file doInvoke "io.clj" 430] [clojure.lang.RestFn invoke "RestFn.java" 410] [clojure.core$run_BANG_$fn__8880 invoke "core.clj" 7784] [clojure.lang.PersistentList reduce "PersistentList.java" 141] [clojure.core$reduce invokeStatic "core.clj" 6886] [clojure.core$run_BANG_ invokeStatic "core.clj" 7779] [clojure.core$run_BANG_ invoke "core.clj" 7779] [endless_ships.core$build invokeStatic "core.clj" 116] [endless_ships.core$build invoke "core.clj" 110] [clojure.lang.Var invoke "Var.java" 384] [clojure.run.exec$exec invokeStatic "exec.clj" 88] [clojure.run.exec$exec invoke "exec.clj" 78] [clojure.run.exec$_main$fn__220 invoke "exec.clj" 227] [clojure.run.exec$_main invokeStatic "exec.clj" 223] [clojure.run.exec$_main doInvoke "exec.clj" 191] [clojure.lang.RestFn invoke "RestFn.java" 397] [clojure.lang.AFn applyToHelper "AFn.java" 152] [clojure.lang.RestFn applyTo "RestFn.java" 132] [clojure.lang.Var applyTo "Var.java" 705] [clojure.core$apply invokeStatic "core.clj" 667] [clojure.main$main_opt invokeStatic "main.clj" 514] [clojure.main$main_opt invoke "main.clj" 510] [clojure.main$main invokeStatic "main.clj" 664] [clojure.main$main doInvoke "main.clj" 616] [clojure.lang.RestFn applyTo "RestFn.java" 137] [clojure.lang.Var applyTo "Var.java" 705] [clojure.main main "main.java" 40]], :cause "Couldn't delete .\\build"}} ```
7even commented 3 weeks ago

Yep, sorry, forgot to check if directory exists before trying to delete it. Now it's fixed.

Zitchas commented 3 weeks ago

Thanks! Trying it now.

The full out put mentions that it can't find yarn. That one sounds like it might be on me to fix.

parsing ratings.txt...
parsing tooltips.txt...
"Elapsed time: 61724.3037 msecs"
Execution error (IOException) at java.lang.ProcessImpl/create (ProcessImpl.java:-2).
CreateProcess error=2, The system cannot find the file specified

Full report at:
Full output file ``` {:clojure.main/message "Execution error (IOException) at java.lang.ProcessImpl/create (ProcessImpl.java:-2).\r\nCreateProcess error=2, The system cannot find the file specified\r\n", :clojure.main/triage {:clojure.error/class java.io.IOException, :clojure.error/line -2, :clojure.error/cause "CreateProcess error=2, The system cannot find the file specified", :clojure.error/symbol java.lang.ProcessImpl/create, :clojure.error/source "ProcessImpl.java", :clojure.error/phase :execution}, :clojure.main/trace {:via [{:type java.io.IOException, :message "Cannot run program \"yarn\": CreateProcess error=2, The system cannot find the file specified", :at [java.lang.ProcessBuilder start "ProcessBuilder.java" 1170]} {:type java.io.IOException, :message "CreateProcess error=2, The system cannot find the file specified", :at [java.lang.ProcessImpl create "ProcessImpl.java" -2]}], :trace [[java.lang.ProcessImpl create "ProcessImpl.java" -2] [java.lang.ProcessImpl "ProcessImpl.java" 500] [java.lang.ProcessImpl start "ProcessImpl.java" 159] [java.lang.ProcessBuilder start "ProcessBuilder.java" 1126] [java.lang.ProcessBuilder start "ProcessBuilder.java" 1089] [java.lang.Runtime exec "Runtime.java" 681] [clojure.java.shell$sh invokeStatic "shell.clj" 113] [clojure.java.shell$sh doInvoke "shell.clj" 79] [clojure.lang.RestFn invoke "RestFn.java" 421] [endless_ships.core$build invokeStatic "core.clj" 118] [endless_ships.core$build invoke "core.clj" 110] [clojure.lang.Var invoke "Var.java" 384] [clojure.run.exec$exec invokeStatic "exec.clj" 88] [clojure.run.exec$exec invoke "exec.clj" 78] [clojure.run.exec$_main$fn__220 invoke "exec.clj" 227] [clojure.run.exec$_main invokeStatic "exec.clj" 223] [clojure.run.exec$_main doInvoke "exec.clj" 191] [clojure.lang.RestFn invoke "RestFn.java" 397] [clojure.lang.AFn applyToHelper "AFn.java" 152] [clojure.lang.RestFn applyTo "RestFn.java" 132] [clojure.lang.Var applyTo "Var.java" 705] [clojure.core$apply invokeStatic "core.clj" 667] [clojure.main$main_opt invokeStatic "main.clj" 514] [clojure.main$main_opt invoke "main.clj" 510] [clojure.main$main invokeStatic "main.clj" 664] [clojure.main$main doInvoke "main.clj" 616] [clojure.lang.RestFn applyTo "RestFn.java" 137] [clojure.lang.Var applyTo "Var.java" 705] [clojure.main main "main.java" 40]], :cause "CreateProcess error=2, The system cannot find the file specified"}} ```
Zitchas commented 3 weeks ago

hmmm... yarn says it's installed, but still generates the same error.

Full Output log ``` {:clojure.main/message "Execution error (IOException) at java.lang.ProcessImpl/create (ProcessImpl.java:-2).\r\nCreateProcess error=2, The system cannot find the file specified\r\n", :clojure.main/triage {:clojure.error/class java.io.IOException, :clojure.error/line -2, :clojure.error/cause "CreateProcess error=2, The system cannot find the file specified", :clojure.error/symbol java.lang.ProcessImpl/create, :clojure.error/source "ProcessImpl.java", :clojure.error/phase :execution}, :clojure.main/trace {:via [{:type java.io.IOException, :message "Cannot run program \"yarn\": CreateProcess error=2, The system cannot find the file specified", :at [java.lang.ProcessBuilder start "ProcessBuilder.java" 1170]} {:type java.io.IOException, :message "CreateProcess error=2, The system cannot find the file specified", :at [java.lang.ProcessImpl create "ProcessImpl.java" -2]}], :trace [[java.lang.ProcessImpl create "ProcessImpl.java" -2] [java.lang.ProcessImpl "ProcessImpl.java" 500] [java.lang.ProcessImpl start "ProcessImpl.java" 159] [java.lang.ProcessBuilder start "ProcessBuilder.java" 1126] [java.lang.ProcessBuilder start "ProcessBuilder.java" 1089] [java.lang.Runtime exec "Runtime.java" 681] [clojure.java.shell$sh invokeStatic "shell.clj" 113] [clojure.java.shell$sh doInvoke "shell.clj" 79] [clojure.lang.RestFn invoke "RestFn.java" 421] [endless_ships.core$build invokeStatic "core.clj" 118] [endless_ships.core$build invoke "core.clj" 110] [clojure.lang.Var invoke "Var.java" 384] [clojure.run.exec$exec invokeStatic "exec.clj" 88] [clojure.run.exec$exec invoke "exec.clj" 78] [clojure.run.exec$_main$fn__220 invoke "exec.clj" 227] [clojure.run.exec$_main invokeStatic "exec.clj" 223] [clojure.run.exec$_main doInvoke "exec.clj" 191] [clojure.lang.RestFn invoke "RestFn.java" 397] [clojure.lang.AFn applyToHelper "AFn.java" 152] [clojure.lang.RestFn applyTo "RestFn.java" 132] [clojure.lang.Var applyTo "Var.java" 705] [clojure.core$apply invokeStatic "core.clj" 667] [clojure.main$main_opt invokeStatic "main.clj" 514] [clojure.main$main_opt invoke "main.clj" 510] [clojure.main$main invokeStatic "main.clj" 664] [clojure.main$main doInvoke "main.clj" 616] [clojure.lang.RestFn applyTo "RestFn.java" 137] [clojure.lang.Var applyTo "Var.java" 705] [clojure.main main "main.java" 40]], :cause "CreateProcess error=2, The system cannot find the file specified"}} ```
7even commented 3 weeks ago

@Zitchas can you please run yarn install manually from the project's root directory and paste the result here?

Zitchas commented 3 weeks ago

Sure!

! The local project doesn't define a 'packageManager' field. Corepack will now add one referencing yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e.
! For more details about this field, consult the documentation at https://nodejs.org/api/packages.html#packagemanager

yarn install v1.22.22
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.07s.

GitHub Desktop reports the following change to the repository after I did the yarn install: Yarn Install repository changes 1

7even commented 3 weeks ago

I think I'll just replace yarn with npm later when I have the time (I was going to do that anyway), then we can check again.

Zitchas commented 3 weeks ago

Ok. Just let me know when you would like me to try something.