minetest-world / mtlauncher

GNU Lesser General Public License v2.1
5 stars 3 forks source link

Can't build with npm from debian unstable apt #13

Open Montandalar opened 1 year ago

Montandalar commented 1 year ago
$ npm run build 

...
error: failed to select a version for the requirement `serde = "=1.0.144"`
candidate versions found which didn't match: 1.0.140, 1.0.139, 1.0.138, ...
location searched: crates.io index
required by package `app v0.1.0 (/home/[redacted]/build/mtlauncher/src-tauri)`
       Error failed to build app: failed to build app

$ npm --version
8.19.2

Now of course I'm a node/npm noob so it could be something obvious, but why would it be the case that I don't have access to the latest version? I thought node fetched the version info automatically. Also what's the deal with that package not being exactly listed on npm search?

recluse4615 commented 1 year ago

@Montandalar good catch!

i believe this is actually a rust/system issue, rather than an npm issue. please try making sure you have followed the prerequisites here: https://tauri.app/v1/guides/getting-started/prerequisites/ and provide the output of:

rustc --version
node --version

i believe i also ran in to a similar problem on my wsl system running ubuntu 20.04, you may also want to try installing some of these packages (i can't remember explicitly if i needed them to build the project or if it was due to some X11 stuff, so beware):

sudo apt install xfce4 xfce4-goodies
sudo apt install libglib2.0-dev

sudo aptitude install libglib2.0-dev
sudo aptitude install libgtk-3-dev
sudo aptitude install libsoup2.4-dev
sudo aptitude install libwebkit2gtk-4.0-dev     build-essential     curl     wget     libssl-dev     libgtk-3-dev     libayatana-appindicator3-dev     librsvg2-dev

sorry, i know this is probably the least helpful comment i could write but my experience w/ linux on this project was short and sweet, hopefully some of this helps!

recluse4615 commented 1 year ago

ps. for linux to work, you may need to hardcode the ternaries here: https://github.com/minetest-world/mtlauncher/blob/main/src/lib/shell.js#L22 to have AppImage as the extension, rather than ''

unfortunately i was only able to properly test this on windows, so a lot of the support for actually opening MT is based on how the windows builds are. i suspect that some extra changes will need to be made for linux & mac systems, but you'll hopefully be able to advise on this a bit better than me

double unfortunately, the whole installation process won't work either, since basically only official windows builds exist on the MT github. there are AppImages on the gitlab, but i never got around to adding them as a source to download from.

according to tauri documentation, you should find the mtlauncher config at:

$XDG_CONFIG_HOME/world.minetest.mtlauncher
OR
$HOME/.config/world.minetest.mtlauncher

so you can install versions in the versions folder there, so long as the folder name coincides with a valid MT version (eg: 5.6.1) check the project README for some of the requirements for how it's all laid out

also, depending on how much patience you have to try and get this working on your machine, feel free to reach out to me on matrix - i will be semi-afk this weekend but am keen to get some changes in and have a "guinea pig" for linux so that i can figure out how the requirements for it all differs from windows and implement some changes

recluse4615 commented 1 year ago

@Montandalar i've added in a suuuper basic auto build system w/ github workers, if you're still struggling to build from source you can try one of the files here?

https://github.com/minetest-world/mtlauncher/releases

afaik the .AppImage file is a portable release, and the .deb file is an installer, feel free to pick your poison for that

the workflow for linux does indeed need some extra deps as confirmed by the tauri example which i shamelessly yoinked from, so i suspect you will need to download some deps, check here: https://github.com/minetest-world/mtlauncher/blob/main/.github/workflows/build.yml#L61

Montandalar commented 1 year ago

I installed all of the prerequisites, but no change to the error. Perhaps my rust version (that is installed through apt rather than rustup) is too old? I have no idea how to figure out what rust version is needed for a crate version though.

Otherwise the .deb provided through GitHub releases worked, and even opens the file browser correctly to show you where your installation is. However, it also tried to get 5.4.2-android on a desktop device, which makes no sense and it hung at "Installing... please be patient" probably because there are only android builds for that version.

Meanwhile inside ~/.config/world.minetest.mtlauncher/versions/5.6.1/bin:

$ ls
IrrlichtMt.dll  libfreetype-6.dll   libiconv-2.dll  libjpeg-62.dll  libogg-0.dll  libsqlite3-0.dll  libvorbis-0.dll      libwinpthread-1.dll  minetest.exe  zlib1.dll
libcurl-4.dll   libgcc_s_seh-1.dll  libintl-8.dll   libleveldb.dll  libpng16.dll  libstdc++-6.dll   libvorbisfile-3.dll  libzstd.dll          OpenAL32.dll

Yeah that's the Windows version.

Also it's not possible from my installation to apply the change from '' to AppImage since it's all one big binary, and I think that the JavaScript is compressed, so not even with a hex editor. You'll need to refactor it in the source yourself anyway I think to depend properly on the installed operating system and packaging format (Windows -> exe, macOS -> app, Linux -> no extension).

Here are the program versions as asked. Clearly rust is not the latest version.

$ npm --version
8.19.2
$ node --version
v18.7.0
$ rustc --version
rustc 1.60.0
recluse4615 commented 1 year ago

@Montandalar so..

re: 5.4.2-android - yeah, this is because that is technically the "best" build for a specific protocol version, haha. this will be removed come next update

re: "yeah that's the windows version" - correct, see here: https://github.com/minetest-world/mtlauncher/wiki/version-management

re: modifying binary - this shouldn't be needed, as long as you're running v0.0.2, i did add some changes to it: https://github.com/minetest-world/mtlauncher/blob/main/src/lib/shell.js#L6

so, for linux, it should look for ~/.config/world.minetest.mtlauncher/versions/5.6.1/minetest.AppImage

tl;dr - for linux, manual installation of versions is necessary for now. this will be changed in the near-ish future, hopefully, but even the gitlab builds don't have public AppImage files for the 5.6.x branch :'(

if you want to try, you should:

it should then detect that it's installed, and run it if needed.

if you want to run that version on a server that doesn't state it supports your version, you can select the server, and then change the version in the bottom left dropdown.

let me know if there's any confusion - thank you again for guinea-pigging for me! :D

recluse4615 commented 1 year ago

i'll need to investigate the rust issue separately, my thoughts are that you might be running an old rust version (but i'm only on 1.63.0...) or that perhaps your OS repo has an out of date version of one of the dependencies. the auto-build system seems to work out of the box, so i suspect it could be an OS repo/rust version issue... not too sure though

recluse4615 commented 1 year ago

fyi: i've just released v0.0.3 which should resolve some further issues with cross-OS compatibility.

it should also now download from a (seemingly legit) source, An0n3m0us's AppImages repository if you're on linux!

hopefully this resolves any outstanding issues wrt running & playing on linux https://github.com/minetest-world/mtlauncher/releases/tag/v0.0.3