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

Então, eu tenho uma configuração de multilib de trabalho de acordo com o slackbook instruções. Eu tenho vinho trabalhando com sucesso com programas de 32 bits do Windows (ou seja, Skyrim e Deus Ex: Human Revolution). 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 o vinho, como quando eu corro alguma coisa sem fazê-lo, isso aparece no terminal eu inicio 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 eu desde então resolvi adicionando export ARCH=i486 depois de . /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.

Eu tentei o recomendado

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

antes de correr sbopkg -b pulseaudio, mas o pacote resultante acaba sendo um pacote x86-64, em vez de i486. E como o Slackware não inclui o pulseaudio na distribuição, e nem o Alienbob tem uma versão compilada para ele em seu repositório slackbuilds, eu não consegui encontrar um pacote binário de 32 bits para rodar converpkg-compat32 em.

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 isto:

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 eu consertei instalando o libcap e o GConf como pacotes compat32, seguido por re-execução do script pulseaudio.Slackbuild (novamente, no ambiente 32dev como nos pacotes acima).

Esta é uma questão de falta de uma biblioteca que ainda preciso instalar como dependência, não mencionada no Slackbuilds.org? Certamente não seria a primeira vez que eu encontrei essa situação, mas geralmente meus erros são um pouco mais úteis quando se trata de caçar a biblioteca que eu preciso.

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

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 quais tinha qualquer efeito sobre a mensagem de erro que saiu. Além disso, tentei definir a variável de ambiente ALSA_MIXER_SIMPLE_MODULES para /usr/lib/alsa-lib, ainda sem sucesso. Começando a ficar sem ideias.

Eu sei que este é 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 conselho este pacote compilado para que eu possa instalá-lo. Se alguém tiver experiência direta com essa situação, tanto melhor.


Devo salientar por completo que estou usando o Slackware 14.1 e Pulseaudio 5.0 e vinho versão 1.7.14
0xDAFACADE

Respostas:


0

Então, parece que uma fonte de muita dor nisso foi testar depois de cada passo com winecfg (que ainda produz o mesmo erro que com a minha última pergunta da edição). O importante é, ao longo do caminho, realmente usando um aplicativo win32 no vinho DID começar a trabalhar.

A informação relevante que eu suponho para qualquer um que vem a seguir abaixo é:

  1. Você DEVE ter certeza de export ARCH=i486 além de usar o . /etc/profile.d/32dev.sh antes de usar sbopkg -b ou executando um script .Slackbuild. Isto é realmente indicado nas instruções encontradas no Slackbook, mas parecia fácil perder (ou pelo menos, eu pessoalmente senti falta dele), então estou incluindo aqui apenas no caso.
  2. Além de precisar json-c e speex na forma compat32, você também precisa libcap e GConf na forma compat32, apesar de conseguir isso pode ser feito pegando ambos os pacotes de um Slackware (ao invés do Slackware64) espelho no conjunto de pacotes "L". Você também vai precisar 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 este comportamento ser algo que valha a pena ser considerado.

~ / .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 esse problema. Se não, tenho certeza que precisarei fazer referência a ele sempre que eu configurar um novo sistema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.