Subject: [bug#43628] Further Info

From: Julien Lepiller <[email-masked]>
Date: Mon, 28 Sep 2020 11:20:03 -0400

Ok, I tgink that means alsa-lib looks for plugins in its rpach, fails to do so, tgen fallls back to its hard-coded path, and fails again. So if we set the rpath correctly (which we cannot do in a package because it would introduce a cyclic dependency), it can load its plugin.

Could you try to set LD_LIBRARY_PATH like so:

LD_LIBRARY_PATH=<alsa-plugin's pulseaudio output>/lib aegisub

Le 28 septembre 2020 10:43:02 GMT-04:00, Prafulla Giri <[email-masked]> a écrit :
>I see...
>
>Hmm.... I didn't know they were just 11 people.
>
>Anyways, here is something that an ALSA developer told me... I couldn't
>make much of it. But Perhaps you could?
>
>The current alsa-lib code uses the RTLD_DI_ORIGIN glibc extension to
>> determine the libasound.so path at runtime. The hardcoded path is
>used only
>> if this mechanism does not work
>>
>
>Perhaps you'd like to see our conversation over at GitHub:
>https://github.com/alsa-project/alsa-lib/issues/82
>
>You're far more qualified to do this than I am.
>
>On Sun, Sep 27, 2020 at 4:55 PM Julien Lepiller <[email-masked]>
>wrote:
>
>>
>>
>> Le 27 septembre 2020 01:56:31 GMT-04:00, Prafulla Giri <
>> [email-masked]> a écrit :
>> >First and foremost: wow. A post-doc at just three years older than
>me.
>> >*cries in high-school drop-out* Super awesome!
>> >
>> >I have cleaned up my package definition as per your review:
>> >
>>
>https://github.com/peanutbutterandcrackers/guix-packages/blob/master/aegisub.scm
>> >
>> >I will look into the matter then. Might take me a while, but I'll
>try.
>> >
>> >It's sad that framagit is closing. I think they were doing a great
>job
>> >with
>> >peertube and all...
>>
>> Well, it's framasoft, they started so many services that they can't
>handle
>> the load anymore. So they've started closing them little by little
>last
>> year. Some of them will stay, and others will disappear. They never
>wanted
>> to centralize the web around them, so it's understandable. Instead,
>they
>> propose other alternatives, they've started the chaton initiative
>(where
>> other structures propose the same kind of services, at a smaller
>scale),
>> etc.
>>
>> They're still developping peertube, don't worry about that. But
>they're
>> not going to host a public instance. Remember they're about 10
>volunteers
>> and one employee :)
>>
>> >
>> >On Sun, Sep 27, 2020 at 3:00 AM Julien Lepiller <[email-masked]>
>> >wrote:
>> >
>> >> Thanks! On the guix system, aegisub already works properly (at
>least
>> >it
>> >> did when I last used it), because the alsa config allows it to
>find
>> >> pulseaudio.
>> >>
>> >> There are three issues with your proposed change:
>> >>
>> >> First using derivation-outputs is a bad idea, and it probably only
>> >works
>> >> because alsa-plugin doesn't depend on your modified alsa-lib
>(you'd
>> >get an
>> >> infinite loop I think). Since alsa-plugin doesn't depend on this
>> >modified
>> >> alsa-lib, you don't need such a convoluted work around. When
>defining
>> >the
>> >> conhigure flags, you can simply use (assoc-ref %build-inputs
>> >"alsa-plugin")
>> >> when "alsa-plugin" is defined as an input to the package.
>> >>
>> >> Second, setting plugindir at build-time is just asking for the
>same
>> >kind
>> >> of issues you are trying to fix, only for finding another plugin
>that
>> >might
>> >> be needed.
>> >>
>> >> Third, the way you modify the arguments is… unconventional :) try
>> >using
>> >> substitute-keyword-arguments instead. There are plenty of examples
>in
>> >the
>> >> repo.
>> >>
>> >> I remember having dealt with this issue before, and pushed a patch
>> >some 3
>> >> years ago: http://issues.guix.gnu.org/31239
>> >>
>> >> Could you look at what happened in the meantime? I think it was
>> >reverted
>> >> in favor of the asound.conf file we have in the guix system now.
>You
>> >might
>> >> learn something if you find the reason why it was changed.
>> >>
>> >> Re my other projects, framagit is going to close next year, so
>I'll
>> >be
>> >> migrating to my own hosting, currently at git.lepiller.eu.
>> >>
>> >> Ok for the cultural difference. It's probably too soon to call me
>a
>> >> "senior" though, I'm still pretty young: only 3 years older than
>you
>> >:p
>> >>
>> >> Le 26 septembre 2020 16:46:50 GMT-04:00, Prafulla Giri <
>> >> [email-masked]> a écrit :
>> >>>
>> >>> Oh, I come from a culture that does not call seniors by their
>first
>> >>> names. (:
>> >>> Yes! guix-android looks super awesome! I'm glad that you are
>working
>> >on
>> >>> that. You're awesome.
>> >>> (Also, I just realized that you've also got guix-home-manager and
>so
>> >many
>> >>> more cool repositories! I need to check those out, and soon!)
>> >>>
>> >>> I did manage to resolve this issue. Kinda'. Here:
>> >>>
>> >
>>
>https://github.com/peanutbutterandcrackers/guix-packages/blob/master/aegisub.scm
>> >>>
>> >>> All I had to do was re-define 'alsa-lib' to point to the
>/gnu/store
>> >path
>> >>> of alsa-plugins. The /gnu/store path had to be figured out during
>> >runtime.
>> >>>
>> >>> Could you please check how this fares in a GuixSD system? If it
>goes
>> >>> well, perhaps I should send a patch in for aegisub. But then
>again,
>> >I
>> >>> wonder if I should make the changes in alsa-lib itself, but I am
>not
>> >very
>> >>> sure about that.
>> >>>
>> >>> On Sat, Sep 26, 2020 at 8:20 PM Julien Lepiller
><[email-masked]>
>> >>> wrote:
>> >>>
>> >>>> Hehe, thanks for your interest in guix-android. It's not really
>> >done
>> >>>> yet, but I'm very motivated :). It always feels weird when
>someone
>> >on the
>> >>>> internet calls you Mr ^^. No need to be so stiff, you can call
>me
>> >"Julien"
>> >>>> (and I suppose it's the norm to call people by their first name
>in
>> >this
>> >>>> kind of internet community).
>> >>>>
>> >>>> Maybe try to run aegisub with strace -f, you might find out
>> >something.
>> >>>> You may have to take a look at alsa's sources to find out how it
>> >looks for
>> >>>> its plugins exactly (maybe try to grep for PLUGIN or PLUGINDIR)?
>> >>>>
>> >>>> Le 26 septembre 2020 08:07:34 GMT-04:00, Prafulla Giri <
>> >>>> [email-masked]> a écrit :
>> >>>>>
>> >>>>> Okay, I think I'm stuck now. lol
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> On Sat, Sep 26, 2020 at 3:42 PM Prafulla Giri <
>> >>>>> [email-masked]> wrote:
>> >>>>>
>> >>>>>> Hello Mr. Lepiller,
>> >>>>>>
>> >>>>>> Thank you for the tip. For the moment, I want to poke around
>this
>> >>>>>> issue. Perhaps I get absolutely tired of it (or find a good
>hack
>> >- and an
>> >>>>>> ugly patch). I did manage to learn a bit more about
>union-builds
>> >in
>> >>>>>> general. So, that's a silver lining.
>> >>>>>>
>> >>>>>> Also, your work on guix-android seems so very cool! Please
>keep
>> >up the
>> >>>>>> great work!
>> >>>>>>
>> >>>>>> On Sat, Sep 26, 2020 at 3:28 PM Julien Lepiller
>> ><[email-masked]>
>> >>>>>> wrote:
>> >>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Hi Prafulla,
>> >>>>>>>
>> >>>>>>> Le 26 septembre 2020 03:31:38 GMT-04:00, Prafulla Giri <
>> >>>>>>> [email-masked]> a écrit :
>> >>>>>>> >Another information:
>> >>>>>>> >
>> >>>>>>> >I have other programs on my foreign system (installed via
>guix)
>> >that
>> >>>>>>> >produce sound well, without any issues. They include:
>> >>>>>>> >espeak and kdenlive.
>> >>>>>>> >
>> >>>>>>> >Also, I did try making the union-build use copies instead of
>> >symlinks
>> >>>>>>> >using
>> >>>>>>> >(union-build ... #:symlink copy-recursively) but that didn't
>> >work out
>> >>>>>>> >either.
>> >>>>>>> >
>> >>>>>>> >Now, I'm going to take a look at fixing the pkg-config
>rules,
>> >and
>> >>>>>>> will
>> >>>>>>> >be
>> >>>>>>> >updating this thread should that resolve this issue.
>> >>>>>>> >
>> >>>>>>> >On Sat, Sep 26, 2020 at 12:21 PM Prafulla Giri
>> >>>>>>> ><[email-masked]>
>> >>>>>>> >wrote:
>> >>>>>>> >
>> >>>>>>> >> I forgot to mention, but the union-build works. If one
>`guix
>> >>>>>>> build`s
>> >>>>>>> >the
>> >>>>>>> >> union package, and cd into the /gnu/store/...-union-build,
>> >one will
>> >>>>>>> >see
>> >>>>>>> >> that things are there as it should be
>(lib/normal-alsa-*.so
>> >and
>> >>>>>>> >> lib/alsa-lib/*pulse*.so).
>> >>>>>>> >>
>> >>>>>>> >> It's just that aegisub seems to be looking from the
>> >>>>>>> >> /gnu/store/normal-alsa-lib-dir instead of
>> >>>>>>> >/gnu/store/union-alsa-package.
>> >>>>>>> >>
>> >>>>>>>
>> >>>>>>> I think the issue with the union-build is that it is
>completely
>> >>>>>>> ignored: alsa doesn't look in it's current directory for
>> >plugins, but in
>> >>>>>>> the directory where it's been configured (at build time) to
>look
>> >for.
>> >>>>>>>
>> >>>>>>> On the Guix System, there is a service that creates a
>> >>>>>>> /etc/asound.conf, which references alsa-plugins:pulseaudio.
>> >Maybe you
>> >>>>>>> actually want to configure that? Maybe try to copy this to a
>new
>> >file
>> >>>>>>> .asoundrc:
>> >>>>>>>
>> >>>>>>> pcm_type.pule {
>> >>>>>>>   lib
>> >>>>>>>
>> >"/home/foo/.guix-profile/lib/alsa-lib/libasound_module_pcm_pulse.so"
>> >>>>>>> }
>> >>>>>>>
>> >>>>>>> ctl_type.pulse {
>> >>>>>>>
>> >>>>>>>
>>
>>lib"/home/foo/.guix-profile/lib/alsa-lib/libasound_module_ctl_pulse.so"
>> >>>>>>> }
>> >>>>>>>
>> >>>>>>> pcm.!default {
>> >>>>>>>   type pulse
>> >>>>>>> }
>> >>>>>>>
>> >>>>>>> ctl.!default {
>> >>>>>>>   type pulse
>> >>>>>>> }
>> >>>>>>>
>> >>>>>>
>>