Como posso obter vinho para dar suporte à saída para pulseaudio (através da camada de compatibilidade ALSA) com programas do Windows de 32 bits no Slackware64?

2

Portanto, tenho uma configuração de multilib funcionando de acordo com as instruções slackbook . Eu tenho vinho trabalhando com sucesso com programas de 32 bits do Windows (ou seja, Skyrim e Deus Ex: Revolução Humana). E eu tenho pulseaudio instalado e configurado com sucesso para programas nativos de 64 bits. Normalmente, eu mato pulseaudio com pulseaudio --kill antes de usar vinho, como quando eu corro alguma coisa sem fazê-lo, isso aparece no terminal eu começo de:

fixme:win:EnumDisplayDevicesW ((null),0,0x33f7d8,0x00000000), stub!
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

Esta parte seguinte, desde então, resolvi adicionando export ARCH=i486 depois que o . /etc/profile.d/32dev.sh , como eu notei, era necessário na página multilib no Slackbook. A correção me permitiu pelo menos obter json-c e speex (dependências especificadas para pulseaudio em slackbuilds.org) compiladas como pacotes i486 que eu então converti para pacotes compat32 com convertpkg-compat32 e instalei.

I've tried the recommended

# . /etc/profile.d/32dev.sh

prior to running sbopkg -b pulseaudio, but the resulting package ends up still being an x86-64, rather than i486, package. And since Slackware doesn't natively have pulseaudio included in the distribution, and nor does Alienbob have a compiled version up for it on his slackbuilds repository, I haven't been able to come across a 32 bit binary package to run converpkg-compat32 on.

O problema restante, no entanto, é que quando eu vou compilar o pulseaudio usando o mesmo método usado para compilar essas dependências, eu entendo isso:

daemon/pulseaudio-caps.o: In function 'pa_drop_caps':
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:85: undefined reference to 'cap_init'
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:86: undefined reference to 'cap_clear'
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:87: undefined reference to 'cap_set_proc'
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:88: undefined reference to 'cap_free'
collect2: error: ld returned 1 exit status
make[3]: *** [pulseaudio] Error 1

Este problema a seguir foi corrigido ao instalar o libcap e o GConf como pacotes compat32, seguido pela repetição do script pulseaudio.Slackbuild (novamente, no ambiente 32dev como nos pacotes acima).

Is this a matter of a missing library I still need to install as a dependency, not mentioned on Slackbuilds.org? It certainly wouldn't be the first time I've encountered that situation, but usually my errors are a little more helpful when it comes to hunting down the library I need.

Tendo obtido pulseaudio assim instalado, fui executar winecfg para testar o som (Nota: tentei fazer isso com /usr/bin/pulseaudio --start , e quando isso não funcionou, matei o servidor e tentei com /usr/bin/32/pulseaudio --start . Ambos produziram o mesmo resultado). A mensagem de erro resultante foi exibida:

ALSA lib dlmisc.c:252:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib64/alsa-lib/libasound_module_pcm_pulse.so
ALSA lib dlmisc.c:252:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib64/alsa-lib/libasound_module_pcm_pulse.so
libgcc_s.so.1 must be installed for pthread_cancel to work

Eu tentei fazer o backup do /usr/lib64/alsa-lib/libasound_module_pcm_pulse.so e fazer um link simbólico naquele local para /usr/lib/alsa-lib/libasound_module_pcm_pulse.so, assim como copiar o arquivo, nenhum dos que teve algum efeito na mensagem de erro que saiu. Além disso, tentei definir a variável de ambiente ALSA_MIXER_SIMPLE_MODULES to /usr/lib/alsa-lib , ainda sem sucesso. Começando a ficar sem ideias.

Eu sei que esse é um território bastante desconhecido no Slackware, já que a maioria dos usuários parece não ter interesse em usá-lo, mas não há razão para que ele não funcione, estou curioso para saber se alguém tem algum sábio conselhos sobre como obter este pacote compilado para que eu possa instalá-lo. Se alguém tiver experiência direta com essa situação, tanto melhor.

    
por 0xDAFACADE 16.08.2014 / 09:13

1 resposta

0

Então, parece que uma fonte de muita dor nisso foi testada após cada etapa com winecfg (que ainda produz o mesmo erro que com a minha última pergunta da edição). O importante é que, ao longo do caminho, o uso de uma aplicação win32 no wine DID comece a funcionar.

A informação relevante que eu suponho para qualquer um que esteja vindo abaixo é:

  1. Você DEVE garantir export ARCH=i486 além de usar o . /etc/profile.d/32dev.sh antes de usar sbopkg -b ou executar um script .Slackbuild. Isto é realmente indicado nas instruções encontradas no Slackbook, mas parece fácil perder (ou pelo menos, eu pessoalmente senti falta dele), então estou incluindo aqui apenas no caso.
  2. Além de precisar de json-c e speex no formato compat32, você também precisa de libcap e GConf no formato compat32, embora isso possa ser feito capturando os dois pacotes de um Slackware (em vez do Slackware64) mirror no conjunto de pacotes "L". Você também precisará de alsa-plugins entre alguns outros pacotes, mas estes devem ser incluídos no processo de seguir o multilib instruções no Slackbook.
  3. Naturalmente, você precisará de um arquivo de configuração ALSA adequado para lidar com o envio de itens para os lugares certos. Este não foi um problema, mas vou incluir meu arquivo ~ / .asoundrc abaixo.
  4. E, por último, verifique se as coisas estão funcionando com um programa win32 real, em vez de algo como winecfg. O Winecfg ainda produz os mesmos erros que eu relatei pela última vez na questão, e pode ser deixado com segurança com as configurações de áudio definidas como "Padrão do Sistema" sem causar problemas. Como o vinho não suporta o pulseaudio diretamente, mas apenas faz uso dele através da camada de compatibilidade com ALSA, não vejo razão para que esse comportamento seja algo que valha a pena.

~ / .asoundrc

pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

pcm.phononpulse
{
   type plug

   slave.pcm
   {
      type pulse
   }

   hint
   {
      show on
      description "PulseAudio"
   }
}

pcm.pulse {
    type pulse
    hint {
        show on
        description "PulseAudio"
    }
}

De qualquer forma, espero que isso sirva como uma boa referência para qualquer um que venha atrás de mim e corra para este problema. Se não, tenho certeza que precisarei fazer referência a ele sempre que eu configurar um novo sistema.

    
por 17.08.2014 / 00:35