Selur's Little Message Board

Full Version: manjaro installation - missing libLLVMBinaryFormat.a and about 100 other .a's
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I'm in the middle of my fight to install on Manjaro (and, yes, I am following other related threads). I'm working on compiling from the GitHub clone rather than using the repo install (which didn't work at all).  I've got vapoursynth up OK (I think), and about 80% of the plugins compile ok, but everything with meson build hits this:
Code:
llvm-config found: YES (/usr/bin/llvm-config-15) 15.0.7
Run-time dependency LLVM found: NO

meson.build:90:10: ERROR: Dependency lookup for llvm with method 'config-tool' failed: Could not generate  for LLVM.
llvm-config: error: missing: /usr/lib/llvm15/lib/libLLVMBinaryFormat.a
llvm-config: error: missing: /usr/lib/llvm15/lib/libLLVMBitstreamReader.a
llvm-config: error: missing: /usr/lib/llvm15/lib/libLLVMRemarks.a
...
I truncated after the first 3, but there are a hundred or so .a's missing.  And they really are missing, no such files in /usr/lib (nor in $HOME/opt/vapoursynth/lib)

Where should all those .a's come from?  Did I miss something out, or miss an error message in build-vapoursynth maybe?
I have no clue about Manjaro.

Wild guessing:
  • might be some incompatibility with llvm/clang 15
  • installing llvm/clang 14
might help.
Might be related to: https://github.com/mesonbuild/meson/issues/12323

Cu Selur
(18.01.2024, 17:31)Selur Wrote: [ -> ]I have no clue about Manjaro.

Neither do I  Smile

Am I right in thinking, then, that this is basically an underlying issue with the llvm installation and actually nothing to do with the vapoursynth installation per se?

"Interestingly"
Code:
llvm-config-15 --components
shows that all the components of these .a's are present - but nevertheless .a's are not getting created. And I think I read somewhere this is possibly related to meson.build's call to"... static: get_option('static-llvm')".  And the package llvm-static exists in an Ubuntu ppm, but not, as far as I can tell, in Manjaro or Arch package libraries.

Maybe I should compile my own llvm ...

Or I might be able to get away with just not using static.  I adjusted meson.build to read
Code:
  deps += dependency('llvm', version: ['>= 10.0', '< 17'], method: 'config-tool',
    modules: [
      'asmprinter', 'executionengine', 'target', 'orcjit', 'native',
    ])

And I have at least got this far with the error apparently gone (no further as yet, because first I have to reconstruct the full build environment again after several pointless reboots, and I've had to uninstall half my system so I could get llvm-15 to replace the installed high-dependency llvm-16)
Code:
llvm-config found: YES (/usr/bin/llvm-config-15) 15.0.7
Run-time dependency LLVM (modules: asmprinter, executionengine, native, orcjit, target) found: YES 15.0.7
Found pkg-config: YES (/usr/bin/pkg-config) 2.1.0
Run-time dependency vapoursynth found: YES 65
Build targets in project: 2
I'll report back.
At least to me, it looks like more of an llvm issue than something caused by Vapoursynth.
Not compiling statically might help,..
Hey drfear, 
Please check you have the necessary LLVM development packages installed otherwise install.

Code:
sudo pacman -S llvm
Hi Hana,

Actually the problem is that I am having to work with code demanding v15, whereas I have 16 already installed through pacman as you suggest. I have tried downgrade through manjaro-downgrade, but then I have BOTH installed (all the v15 have -15 added to the libnames) because v16 is locked in due to multiple dependencies.  And then, what I am working with is not my own code, so I can't change all the calls to add -15...

So I uninstalled everything that used llvm, and did a pamac install llvm15.

After eventually re-installing everything and v16, I've also tried changing the external code to allow v16, but I still got the same inability to link statically.

Not linking statically has worked - at least, inasmuch as it compiles without error - but what the performance difference will be, or whether the plugin will work fully as intended in practice - I have still to check.

And then again, the problem might be meson rather than llvm, anyway...

(And finally, just to say it did eventually occur to me, too late, that leaving my system alone and installing a local 15 from source and setting the right paths to it would have been MUCH less work ... although it would not have helped with static)
Ok drfear,

As Selur suggested you for trying LLVM/Clang 14, considering a possible compatibility issue. You might want to install it and see if it resolves the missing .a files problem and Also, consider Selur advice on avoiding static compilation for a potential workaround.

At least try.

Thank you.

Otherwise you can find your solution on manjaro documentation.
Hi Hana,

Many thanks for your advice and taking time on this.  Actually though, I'm only using llvm as a means to a specific end, and what I did not realize at first is that only one plugin (Akarin) requires llvm15 to compile.

But in this particular case
Code:
sudo pamac install vapoursynth-plugin-vsakarin-git
runs without any issues with no llvm15 needed.  So I'm going to use that libakarin.so.

All in all, I'm going to abandon my local install idea and go back to installing everything from AUR via pamac and then do the one thing those packages don't seem to do or document - tell Vapoursynth via Hybrid's misc.ini where to find scripts and plugins.  Knowledge which I only gained after trying to do it all myself ... so it hasn't all been a waste of time :-)

PS: I had already reported, I did try and using non-static linkage DOES work, in the sense that it does compile. I'm just not sure I trust it will behave properly in use.

PPS: on re-reading, I may have misread what you meant, you meant at least try LLVM15/Clang 14 static? I'm sorry but I'm still fixing things I broke rolling back last time, I just don't have the know-how or the heart to start it all over again now. Sorry :-(
Hi drfear,

Great to hear you found a workaround with the Akarin plugin, and it runs smoothly without needing LLVM15. Wink