Menu

#26 Yoshimi 1.3.9 lv2 misplaced files

Next Commit
closed
None
5
2016-03-26
2016-03-07
No

Building yoshimi for Rosa Linux Fresh R7 (2014.1) on x86_64.

The install phase of the build process misplaces the "/lv2/yoshimi.lv2" dir (and consequently the files in it): it ends up in "/usr/usr/lib64/", while it should go in "/usr/lib[64]".
The workaround is very simple: manually move the affected dir in the right place, but it would be better to fix the build...

See attached log file.

1 Attachments

Discussion

  • Will Godfrey

    Will Godfrey - 2016-03-07
    • status: open --> accepted
    • assigned_to: Will Godfrey
    • Group: Unknown --> Considered
     
  • Will Godfrey

    Will Godfrey - 2016-03-07

    I thought we'd solved this multi-arch issue :(
    What is strange is that fedora and magia both seem to build OK, and we made an exception for debian based ones.

     
    • Giovanni Mariani

      Rosa is another Mandriva-derivative, so it is similar to both Fedora (old ancestor, as RedHat, of the whole Mandrake-Mandriva line) and Mageia (a sort of cousin, since as Rosa originated from the Mandriva disbanding, gathering a goodbunch of the older developers).
      They have diverged a bit in the past times... but re: multi-arch they should be in the same basket (Mageia for sure...). ie 32bit -> /usr/lib or /lib, 64bit -> /usr/lib64 or /lib64.

      The problem I see is that the build process seems to add a straigh $prefix in front of an otherwise correct library path... I did not look to find where this could be happening, though...

       
  • Will Godfrey

    Will Godfrey - 2016-03-09

    My understanding is that most LV2 hosts only check /usr/lib and /usr/local/lib for plugins so that could still be a problem. Certainly the last time I checked that was the case for Ardour4 and Muse3.

     
    • Giovanni Mariani

      No, it is not so (at least for Ardour, for Muse I don't know).
      See: http://www.manual.ardour.org/working-with-plugins/getting-plugins/ , under the header "How do I install plugins".


      LV2 plugins are folders/directories. They need to installed in either /usr/lib/lv2, /usr/local/lib/lv2 or a directory mentioned in your LV2_PATH environment variable.


      On my system the above env variable points to "/usr/lib64", among other things:
      giovanni@Rivendell ~ $ env |grep LV2
      LV2_PATH=~/.lv2:/usr/lib64/lv2:/usr/lib/lv2
      so a placement in /usr/lib64 should not be a problem at all; and indeed I never found a lv2 plugin not working with this setup (and I have 135 of them in my lv2 dirs).

      So the issue boils down to the "/usr/usr" wrong prefix one...

       
  • Will Godfrey

    Will Godfrey - 2016-03-09

    Of course that wrong directory is the problem but you've just given me a clue as to what may underlie the difficulties we've had. On my system there is no LV2_PATH environment variable! We have called for just lv2-dev to be installed expecting it to pull in anything else that was needed. Do you know if there other packages we should specifically demand? I'm working on debian testing.

     
    • Giovanni Mariani

      Since a couple of years we have a little script for profile.d, as part of the main lv2 package (attached): it simply set the LV2_PATH variable to the desired values...

      To be honest, I found a little weird that the script seems to happily set the variable to "/usr/lib64/lv2" even on i586...
      Perhaps no-one is using (or testing) this arch...

       
  • Will Godfrey

    Will Godfrey - 2016-03-09

    Ok, I think I may have got somewhere with this. Would you be so kind as to try using the attached CMakeLists.txt files, renamed and appropriately placed. I don't want to risk breaking otherwise working systems until that has been tested on various distros.

     
    • Giovanni Mariani

      Nope.
      Build fails at configure time:
      CMake Error at LV2_Plugin/CMakeLists.txt:136 (install):
      install TARGETS given target "lib/lv2/yoshimi.lv2" which does not exist in
      this directory.
      (attached build log and CMakeOutput.log)

      See the wrong path (lib/lv2/...)?
      Supposing the above means really "/usr/lib/lv2/...",
      I guess it should be "/usr/lib64/lv2...", since I'm on x86_64.
      But the path above, as is, it would at least work on x86...

       
  • Giovanni Mariani

    Log of failed build.

     
  • Will Godfrey

    Will Godfrey - 2016-03-09

    Hmmm. Looking at that, and at your lv2 attached file it seems that the main CMakeLists.txt file didn't pick up the LV2_PATH variable (line 551). I tested that here by creating it and actually just sending to /tmp

     
  • Will Godfrey

    Will Godfrey - 2016-03-09

    Another attempt! I don't know why it failed to pick up the LV2_PATH, but this is slightly different, and might still put it in the right place as I've altered the way the lib path is built

     
    • Giovanni Mariani

      Yes, this one works as a charm and no workaround is needed on my Rosa system.
      Thanks.

       
  • Will Godfrey

    Will Godfrey - 2016-03-10
    • status: accepted --> pending
    • Group: Considered --> Next Commit
     
  • Will Godfrey

    Will Godfrey - 2016-03-10

    Glad that's sorted.
    The folks at Exherbo are offering a patch to improve multi-arch recognition. After I've checked it out myself on debian systems I might ask you to take a look - if you don't mind.

     
    • Giovanni Mariani

      Sure.
      In the next few days I will be mostly away from PC, though:
      so if you can wait, I will manage to look at it...

       
  • Will Godfrey

    Will Godfrey - 2016-03-11

    Fine. Whenever yuo have the time, here is a patch for the main CMakeLists.txt file that you are currently using.

     

    Last edit: Will Godfrey 2016-03-11
    • Giovanni Mariani

      Tried it... and basically works: ie the library files correctly go in /usr/lib64.
      Only a couple of minor things:
      1) the patch above alone re-introduces the /usr/usr/... thing for lv2 files: I guess you need also the modified CMakeLists.txt file in src/LV2_PLUGIN to have them in the right place.

      2) It changes (without cause IMO) the destination dir for docs from "/usr/share/doc/yoshimi" to "/usr/share/doc/yoshimi-1.3.9": not a big deal, really (I needed to change only a couple of lines in the packaging config file to fix the packaging issue), but I cannot see how this change relates to the multi-arch handling and anyway a such change need to be more prominently advertised to packagers, to aid them to avoid to vaste time and fix their packaging files in advance...

      I'm hoping this helps...

       
  • Will Godfrey

    Will Godfrey - 2016-03-13

    Sorry, yes it does need the patched version of the LV2 CMakeLists.txt file. I'll have a look at that issue with doc. It's wrong of course and I hadn't noticed it before.
    Thanks for staying with this :)

     
    • Giovanni Mariani

      The culprit is this one:

      < install (DIRECTORY ../doc/ DESTINATION share/doc/yoshimi
      ---
      > install (DIRECTORY ../doc/ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/yoshimi-${YOSHIMI_VERSION}
      

      there is a rogue ${YOSHIMI_VERSION} at the end, here...

       
  • Will Godfrey

    Will Godfrey - 2016-03-14

    Good catch. That was snuck in by the exherbo guys. If they do it again I'll send them to bed without any supper :)

    I've asked people on the yoshimi users list to try this whole change on different distros - it may take a while for them to get back to me. Hopefully there will be no further problems.

     
  • Will Godfrey

    Will Godfrey - 2016-03-18

    The latest master (with these patches) has now been tested on debian and fedora, so unless you still have a problem I'll close this soon.

     
  • Will Godfrey

    Will Godfrey - 2016-03-26
    • status: pending --> closed
     

Log in to post a comment.

MongoDB Logo MongoDB