endless-ships icon indicating copy to clipboard operation
endless-ships copied to clipboard

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

Open Zitchas opened this issue 1 year ago • 33 comments

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 [email protected]: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 avatar Jul 18 '24 18:07 Zitchas

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.

Zitchas avatar Jul 18 '24 18:07 Zitchas

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?

7even avatar Jul 18 '24 19:07 7even

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 avatar Jul 18 '24 19:07 Zitchas

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.

Zitchas avatar Jul 18 '24 19:07 Zitchas

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?

7even avatar Jul 18 '24 19:07 7even

Yes, although I can relaunch powershell and try again.

Zitchas avatar Jul 18 '24 19:07 Zitchas

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 <nil> as a Reader.
        clojure.lang.ExceptionInfo: Cannot open <nil> as a Reader.
    line: 47

Zitchas avatar Jul 18 '24 19:07 Zitchas

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

7even avatar Jul 18 '24 19:07 7even

Thank you!

Zitchas avatar Jul 18 '24 19:07 Zitchas

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

7even avatar Aug 04 '24 17:08 7even

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

Zitchas avatar Aug 05 '24 00:08 Zitchas

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

7even avatar Aug 05 '24 10:08 7even

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 <nil> as a Reader.
        clojure.lang.ExceptionInfo: Cannot open <nil> as a Reader.
    line: 47

Zitchas avatar Aug 05 '24 11:08 Zitchas

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?

Zitchas avatar Aug 05 '24 15:08 Zitchas

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.

7even avatar Aug 05 '24 18:08 7even

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.

Zitchas avatar Aug 05 '24 18:08 Zitchas

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.

7even avatar Aug 05 '24 19:08 7even

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.

Zitchas avatar Aug 05 '24 20:08 Zitchas

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.

7even avatar Aug 05 '24 23:08 7even

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.

Zitchas avatar Aug 06 '24 00:08 Zitchas

@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.

7even avatar Aug 10 '24 22:08 7even

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 avatar Aug 11 '24 01:08 Zitchas

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
 "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 <init> "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.

Zitchas avatar Aug 11 '24 10:08 Zitchas

Could it be possible that it is reading the Endless Sky repository data, the game sub folder data, noticing that they it don't match, and throwing errors because of that?

TheGiraffe3 avatar Aug 11 '24 10:08 TheGiraffe3

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).

7even avatar Aug 11 '24 11:08 7even

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"}}

Zitchas avatar Aug 11 '24 11:08 Zitchas

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

7even avatar Aug 11 '24 12:08 7even

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 <init> "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 avatar Aug 11 '24 12:08 Zitchas

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 <init> "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 avatar Aug 11 '24 12:08 Zitchas

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

7even avatar Aug 11 '24 13:08 7even