Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Magick rock not found #77

Closed
bananaboy139 opened this issue Nov 13, 2023 · 15 comments
Closed

Magick rock not found #77

bananaboy139 opened this issue Nov 13, 2023 · 15 comments

Comments

@bananaboy139
Copy link

I am using POP OS, kitty, latest neovim nightly appimage

I installed magick with luarocks --local --lua-version=5.1 install magick, but when I try to run nvim --clean -c ":luafile minimal-setup.lua", I get

Error detected while processing User Autocommands for "VeryLazy":
image.nvim: magick rock not found, please install it and restart your editor

I'm not sure why, I checked and magick is indeed in ~/.luarocks/share/lua/5.1, maybe it's because the default installed lua is 5.3?

@SigmaRichards
Copy link
Contributor

I vaguely remember getting this error myself, but can't recreate it now. I do remember having issues with the latest nvim (but is just working for me now so don't know).

The error in my case was related to nvim 9.2 moving to LuaJIT 2.1.1692716794, which was having issues with hererocks. You can try nvim 9.1, but I can't explain why 9.4 is suddenly working now for me (or exactly why it didn't work).

@benlubas
Copy link
Contributor

benlubas commented Nov 16, 2023

@bananaboy139
This error will occur if the magick rock can't find ImageMagick. Can you confirm that you have that installed with which magick

If that's installed, then it's probably a path issue in some way or another, how did you install ImageMagick?

If you haven't already seen it, #18 is a similar issue but on MacOS, the steps that I took to figure out what was wrong are outlined in the comments though, and could be helpful

@HawkinsT
Copy link

I have the same issue under arch and neovim 0.10.0-dev-9afbfb4 (nightly). ImageMagick is installed via paru from the aur and is accesible (which magick reveals /usr/bin/magick). I saw #18 and figured it's probably a related issue, but being a MacOS the solution didn't help me too much. I will say that I didn't spent too much time looking into this though as I was just interested in trying image.nvim and when it didn't run and I couldn't figure out how to solve in ~20 minutes I figured I'd wait until a patch emerges to try again, but I am happy to test any suggestions or provide any feedback.

@benlubas
Copy link
Contributor

Could you test on stable just so we can rule that out? I don't have the issue on nightly on macos though so I'm not hopeful

@benlubas
Copy link
Contributor

benlubas commented Nov 16, 2023

You could edit this file https://github.com/benlubas/image.nvim/blob/1355ea1dbc059136c6d6bd3fbefb0838ebe4ec85/lua/image/magick.lua#L1 so that it prints the full error (I should submit a PR to make this the default tbh). The variable magick will contain the error, so just print that with vim.inspect() b/c it might be a table.

If that doesn't give you anything useful you can go into the luarock itself and poke around (this is what I did) and go add some print statements. I can provide more detail if needed. but try the other things first.

There's also one thing that you can do to verify that it's a neovim path issue that's mentioned in the other issue. This comment.

@3rd
Copy link
Owner

3rd commented Nov 16, 2023

Ah, if the pcall fails here magick has the error?

local has_magick, magick = pcall(require, "magick") 

@benlubas
Copy link
Contributor

Yup

@HawkinsT
Copy link

Okay, so the error (for me) occurs on line 55 of init.lua, not in magick.lua. When this error is tripped, here's the contents of magick.

{                                                                                                                                                                                                                                       
  has_magick = false,                                                                                                                                                                                                                   
  load_image = <function 1>,                                                                                                                                                                                                            
  magick = "module 'magick' not found:\n\tno field package.preload['magick']\ncache_loader: module magick not found\ncache_loader_lib: module magick not found\n\tno file './magick.lua'\n\tno file '/home/runner/work/neovim/neovim/.de
ps/usr/share/luajit-2.1/magick.lua'\n\tno file '/usr/local/share/lua/5.1/magick.lua'\n\tno file '/usr/local/share/lua/5.1/magick/init.lua'\n\tno file '/home/runner/work/neovim/neovim/.deps/usr/share/lua/5.1/magick.lua'\n\tno file '/
home/runner/work/neovim/neovim/.deps/usr/share/lua/5.1/magick/init.lua'\n\tno file './magick.so'\n\tno file '/usr/local/lib/lua/5.1/magick.so'\n\tno file '/home/runner/work/neovim/neovim/.deps/usr/lib/lua/5.1/magick.so'\n\tno file '
/usr/local/lib/lua/5.1/loadall.so'"                                                                                                                                                                                                     
} 

Interestingly if I'm inside of the ~/.local/share/nvim/lazy/image.nvim/lua/image directory at the time then the error doesn't trigger due to the presence of magick.lua there (I can also touch magick.lua in any directory to stop this error occurring on nvim load).

From what I understand, this is looking in the listed locations for magick.lua, but a quick fd magick.lua --hidden from my home directory reveals that .local/share/nvim/lazy/image.nvim/lua/image/magick.lua is the only place this exists.

For me, running luarocks --local --lua-version 5.1 install magick installs magick to ~/.luarocks/share/lua/5.1/magick, but I have no magick.lua in this directory or sub directories after install anyway. The files in this directory are base_image.lua gmwand.lua version.lua enum.lua init.lua wand gmwand thumb.lua wand.lua, where gmwand and wand are subdirectories, each containing the files data.lua image.lua lib.lua.

@HawkinsT
Copy link

Ah, just tested this with neovim v0.9.4 and the error doesn't occur, so it seems to be some problem with image.nvim and neovim 0.10.

@bananaboy139
Copy link
Author

I followed the steps from https://github.com/leafo/magick, and ran

sudo apt-get install luajit
sudo apt-get install libmagickwand-dev
sudo apt-get install libgraphicsmagick1-dev

Now, when I run the nvim --clean -c ":luafile minimal-setup.lua", I don't get any errors, but the image does not load, There's just an empty space in between the lines, but no image loads.

I'm running kitty without tmux, if that's the issue maybe.

@3rd
Copy link
Owner

3rd commented Nov 17, 2023

@HawkinsT it's ok that there's no magick.lua, it should load magick/init.lua.

Do you have this in your Neovim config?

package.path = package.path .. ";" .. vim.fn.expand("$HOME") .. "/.luarocks/share/lua/5.1/?/init.lua;"
package.path = package.path .. ";" .. vim.fn.expand("$HOME") .. "/.luarocks/share/lua/5.1/?.lua;"

@HawkinsT
Copy link

HawkinsT commented Nov 17, 2023

@3rd I do, yes.

Edit - from my config:

	{
		"3rd/image.nvim",
		config = function()
			require("image").setup()
			-- note: I removed redundant ';' from the ends of each path
			package.path = package.path .. ";" .. vim.fn.expand("$HOME") .. "/.luarocks/share/lua/5.1/?/init.lua"
			package.path = package.path .. ";" .. vim.fn.expand("$HOME") .. "/.luarocks/share/lua/5.1/?.lua"
		end,
	},

Edit2:
Aha, I was being stupid and amending package.path after calling the image setup function, so this is now fixed for me. FYI the ending semicolons in the example are redundant as you also concatenate a semicolon at the beginning so currently you end up with doubled semicolons.

@benlubas
Copy link
Contributor

@bananaboy139 what version of kitty are you using? Apt has an old version of Kitty that has caused issues in the past. So installing the latest kitty version could fix it

@bananaboy139
Copy link
Author

Thanks! I installed kitty through the curl command and it works now.

@benlubas
Copy link
Contributor

@bananaboy139 awesome!

could you close this issue now that everyone is resolved?

@3rd 3rd closed this as completed Nov 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants