Libelektra: Adicionar Fórmula Homebrew para Elektra

Criado em 18 fev. 2016  ·  28Comentários  ·  Fonte: ElektraInitiative/libelektra

Homebrew é um dos gerenciadores de pacotes mais populares para OS X. Seria bom se nós fornecemos uma fórmula oficial do Homebrew – também conhecido como pacote – para Elektra. Alguém já fez uma fórmula básica aqui . Talvez possamos basear nosso trabalho nisso.

enhancement usability

Comentários muito úteis

Você pode atualizar doc/INSTALL.md e esclarecer quando usar a fórmula oficial…

Eu já fiz isso na minha versão local do repositório. A solicitação pull nº 1777 contém essas alterações.

…e quando usar nossa torneira?

O Readme da nossa torneira já inclui esta informação.

Todos 28 comentários

@tryge , se você estiver bem com isso, eu assumiria isso

Por favor, vá em frente!

Conforme discutido em #1184, também seria bom construir binários do mac os x usando o travis.

Mas adicionar Homebrew Formula tem a maior prioridade, espero que alguém com um Mac possa entender isso!

Criei uma fórmula Homebrew e uma torneira para Elektra.

@markus2330 Eu transferi o repositório para você Markus, pois precisaria do status de administrador para mover o repositório para a organização ElektraInitiative. Você pode mover o repositório de sua conta pessoal para a organização ElektraInitiative?

Criei uma fórmula Homebrew e uma torneira para Elektra.

Obrigado, isso é realmente ótimo!

Também inclui pacotes binários para a versão mais recente?

Transferi o repositório para você Markus, pois precisaria do status de administrador para mover o repositório para a organização ElektraInitiative. Você pode mover o repositório de sua conta pessoal para a organização ElektraInitiative?

Desculpe, onde posso encontrar? Em https://github.com/sanssecours/homebrew-elektra não tenho o botão "configurações" (que seria necessário para a transferência).

Por que não simplesmente cloná-lo? (Ou recriar um enviando os mesmos commits para ele)

Por falar nisso. É possível trazer esta Fórmula também a montante para brew?

@omnidan Você pode testar se a torneira/garrafa também funciona para você?

Devemos criar problemas sobre a torneira/garrafa aqui ou em
https://github.com/ElektraInitiative/homebrew-elektra?

Também inclui pacotes binários para a versão mais recente?

Ainda não, criar um pacote binário não parece ser tão difícil . Eu vou dar uma olhada.

Desculpe, onde posso encontrar? Em https://github.com/sanssecours/homebrew-elektra não tenho o botão "configurações" (que seria necessário para a transferência).

Obrigado pelo acesso de administrador. Acabei de transferir o repositório .

Por falar nisso. É possível trazer esta Fórmula também a montante para brew?

sim. Eu queria fazer isso primeiro, mas até onde posso dizer, os desenvolvedores do Homebrew são meio exigentes sobre o que aceitam . Principalmente o texto

Nós desaprovamos os autores que enviam seu próprio trabalho, a menos que seja muito popular.

soa como um problema.

Acabei de transferir o repositório.
Ainda não, criar um pacote binário não parece ser tão difícil. Eu vou dar uma olhada.

Obrigado!

Obrigado pelo acesso de administrador.

A qualquer momento novamente se você precisar. Também podemos discutir o acesso de administrador permanente.

sim. Eu queria fazer isso primeiro, mas até onde posso dizer, os desenvolvedores do Homebrew são meio exigentes sobre o que aceitam. Principalmente o texto

É bom recebermos algum feedback, mesmo que eles não aceitem.

Nós desaprovamos os autores que enviam seu próprio trabalho, a menos que seja muito popular.

Eu entendo esta frase que você não deve enviar um formulário para seu próprio trabalho (=repo escrito por você sozinho). Este dificilmente é o caso aqui.

Um pacote binário Homebrew (garrafa) está agora disponível . Se alguém quiser experimentar a fórmula, siga os passos abaixo.

  1. Por favor, execute brew doctor e remova todos os fragmentos do Elektra que o comando relata.
  2. Toque no repositório: brew tap ElektraInitiative/homebrew-elektra .
  3. Se você deseja instalar

    • a garrafa use brew install elektra .

    • libere 0.8.19 da fonte e use brew install --build-from-source elektra .

    • a versão mais recente do Elektra, então use brew install --HEAD elektra .

  4. Para verificar se a instalação funciona você pode usar o comando brew test elektra .

É bom recebermos algum feedback, mesmo que eles não aceitem.

Hum, ok. Se eu tiver tempo, tentarei abrir um pull request amanhã.

Esta é uma ótima notícia novamente!

Você pode atualizar o README.md do homebrew-elektra para conter esta descrição mais longa?

Você tem alguns logs de compilação de quais plugins e ligações estão ativados? Em particular, eu estaria interessado se as ligações python2 fossem incluídas (e funcionassem: você pode tentar import kdb em um interpretador python)?

Você pode atualizar o README.md do homebrew-elektra para conter esta descrição mais longa?

Ok, você pode dar uma olhada no ReadMe atualizado aqui .

Você tem alguns logs de compilação de quais plugins e ligações estão ativados?

A lista de plugins deve ser bastante extensa, já que instalei muitas das dependências opcionais do Elektra na minha máquina. Aqui está o log produzido por brew install --build-from-source -debug -verbose elektra .

Em particular, eu estaria interessado se as ligações python2 fossem incluídas (e funcionassem: você pode tentar import kdb em um interpretador python)?

Eles devem ser incluídos (veja o log acima), mas mesmo assim import kdb relata o seguinte erro tanto na versão do sistema do Python ( /usr/bin/python ) quanto na instalada via Homebrew ( /usr/local/bin/python ):

import kdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named kdb

.

Ok, você pode dar uma olhada no ReadMe atualizado

Ótimo, obrigado!

A lista de plugins deve ser bastante extensa, já que instalei muitas das dependências opcionais do Elektra na minha máquina.

  • ronn parece estar faltando (portanto, não há páginas de manual)
  • você não parece incluir nenhuma ligação (exceto cpp), parece que você precisa de um -DBINDINGS=ALL
  • kdb gen precisaria de python cheetah para funcionar e --install-layout . Parece ser difícil de consertar (melhor deixar isso por enquanto e simplesmente desabilitar gen de TOOLS).

Eles devem ser incluídos (veja o log acima)

Eu acho que você misturou ligações e plugins python, as ligações não estão presentes (sem -- Include Binding swig_python2 ).

  • ronn parece estar faltando (portanto, não há páginas de manual)

Só parece faltar. Eu instalei ronn via rbenv . Parece que o ambiente Homebrew usa um valor diferente para PATH que não inclui ~/.rbenv/shims . Depois de algumas pesquisas, encontrei uma maneira de adicionar ronn como dependência opcional do Ruby. No momento a fórmula não reconhece minha instalação de ronn . Espero encontrar uma solução para este problema.

  • você não parece incluir nenhuma ligação (exceto cpp), parece que você precisa de um -DBINDINGS=ALL

Você está certo, obrigado. Eu adicionei a opção aos argumentos CMake da fórmula.

Eu acho que você misturou ligações e plugins python, as ligações não estão presentes (sem -- Include Binding swig_python2 ).

Você está certo novamente :o). Vou verificar se as ligações funcionam mais tarde.

Atualizar

Páginas de manual

Eu adicionei ronn como dependência necessária para o processo de compilação aqui . Eu não acho que exigir ronn para a compilação seja um problema, já que a maioria das pessoas usará apenas a versão engarrafada da fórmula de qualquer maneira.

Você pode perguntar por que eu não adicionei ronn como dependência opcional. A causa disso foi a saída de brew info , que parece meio bobo e também super errado se eu adicionar a tag :optional :

…
==> Dependencies
Build: cmake ✔
==> Requirements
Build: ronn (ruby module) ✔
Optional: ronn (ruby module) ✔
==> Options
--with-languagemodule
    Build with languagemodule support
…

. O texto abaixo mostra a saída atual de brew info elektra :

elektrainitiative/elektra/elektra: stable 0.8.19 (bottled), HEAD
Configuration Framework
https://web.libelektra.org
Not installed
From: https://github.com/ElektraInitiative/homebrew-elektra/blob/master/Formula/elektra.rb
==> Dependencies
Build: cmake ✔
==> Requirements
Build: ronn (ruby module) ✔

.

Encadernações

Depois de adicionar -DBINDINGS=ALL às opções do CMake da fórmula brew audit --strict elektra mostra a seguinte mensagem (depois de instalar o Elektra):

elektrainitiative/elektra/elektra:
  * python modules have explicit framework links
    These python extension modules were linked directly to a Python
    framework binary. They should be linked with -undefined dynamic_lookup
    instead of -lpython or -framework Python.
      /usr/local/Cellar/elektra/0.8.19/lib/python2.7/site-packages/_kdb.so
      /usr/local/Cellar/elektra/0.8.19/lib/python3.5/site-packages/_kdb.so
Error: 1 problem in 1 formula

. Se eu tentar import kdb na versão Hombrew do Python, o interpretador do Python travará, exibindo a seguinte mensagem de erro:

Fatal Python error: PyThreadState_Get: no current thread
fish: '/usr/local/bin/python' terminated by signal SIGABRT (Abort)

Isso parece ser normal, já que ninja test – no meu diretório de compilação usual – também falha, mostrando os seguintes erros:

     31 - testpy2_kdb.py (OTHER_FAULT)
     32 - testpy2_key.py (OTHER_FAULT)
     33 - testpy2_keyset.py (OTHER_FAULT)
     34 - test_kdb.py (OTHER_FAULT)
     35 - test_key.py (OTHER_FAULT)
     36 - test_keyset.py (OTHER_FAULT)
     40 - testruby_kdb (OTHER_FAULT)
     41 - testruby_key (OTHER_FAULT)
     42 - testruby_keyset (OTHER_FAULT)

. Usei o seguinte comando para gerar o projeto Ninja:

    cmake ..                        \
          -GNinja                       \
          -DENABLE_TESTING=ON               \
          -DENABLE_DEBUG=ON                 \
          -DENABLE_LOGGER=OFF               \
          -DBUILD_PDF=ON                    \
          -DCMAKE_EXPORT_COMPILE_COMMANDS=ON        \
          -DPDFLATEX_COMPILER=`which latexmk`       \
          -DPDFLATEX_COMPILER_OPTIONS='-pdf;-f;-quiet'  \
          -DCMAKE_PREFIX_PATH=/usr/local/opt/qt5        \
          -DTOOLS=ALL                   \
          -DBINDINGS=ALL

. As ligações Lua parecem funcionar bem. Pelo menos require 'kdb' não mostra nenhuma mensagem de erro.

Obrigado pelo seu esforço!

Páginas de manual

Sim, concordo que as pessoas vão preferir a versão engarrafada. E não ter páginas de manual é realmente um grande problema de usabilidade, então o requisito é razoável.

acidente de import kdb

@manuelm lm você tem uma idéia de por que as ligações falham?

@sanssecours Talvez a versão do gole seja muito antiga ou um gole errado foi usado?

Eles devem ser vinculados com -undefined dynamic_lookup em vez de -lpython ou -framework Python.

Talvez devêssemos simplesmente passar -framework no caso de APPLE para target_link_libraries. De acordo com cmake docu parece haver um tratamento especial para -framework .

Talvez o arquivo cmake para python esteja quebrado? Aqui está uma longa discussão sobre arquivos python cmake quebrados. (Pode não estar relacionado, no entanto) Eu realmente não posso ajudar aqui, o problema é bastante específico do Mac OS X.

@sanssecours Talvez a versão swig seja muito antiga…

Não, instalei a versão mais recente de swig ( 3.0.10 ) via Homebrew.

…, ou um gole errado usado?

Eu penso que não. Eu pesquiso rapidamente via locate swig só mostra a versão instalada via Homebrew.

@markus2330 sim, funciona! muito obrigado pela fórmula caseira, @sanssecours :ok_hand:

Eu tive um pequeno problema, mas isso pode ser porque sudo make uninstall não desinstala corretamente o elektra:

> brew install elektra
==> Installing elektra from elektrainitiative/elektra
==> Downloading https://github.com/ElektraInitiative/homebrew-elektra/releases/download/0.
==> Downloading from https://github-cloud.s3.amazonaws.com/releases/76387201/caf85aac-c307
######################################################################## 100.0%
==> Pouring elektra-0.8.19.sierra.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink share/elektra/test_data/lua/batterytotracker.lua
/usr/local/share/elektra/test_data/lua is not writable.

You can try again using:
  brew link elektra
==> Summary
🍺  /usr/local/Cellar/elektra/0.8.19: 2,668 files, 54.1M
> brew link elektra
Linking /usr/local/Cellar/elektra/0.8.19...
Error: Could not symlink lib/elektra/libelektra-storage.so
Target /usr/local/lib/elektra/libelektra-storage.so
already exists. You may want to remove it:
  rm '/usr/local/lib/elektra/libelektra-storage.so'

To force the link and overwrite all conflicting files:
  brew link --overwrite elektra

To list all files that would be deleted:
  brew link --overwrite --dry-run elektra

Depois de executar brew link --overwrite elektra funciona perfeitamente bem.

Se eu tentar importar kdb na versão Hombrew do Python, o interpretador do Python travará, exibindo a seguinte mensagem de erro:

Erro fatal do Python: PyThreadState_Get: nenhum thread atual
fish: '/usr/local/bin/python' finalizado pelo sinal SIGABRT (Abort)

Então python -c "import kdb" dá o erro fatal acima? Parece estranho porque as ligações (em contraste com o plugin) não tocam em nenhum estado de thread ou intérprete.

Então python -c "import kdb" dá o erro fatal acima?

Sim, o comando /usr/local/bin/python -c "import kdb" imprime esta mensagem de erro, se eu instalar o Elektra usando uma versão antiga da fórmula . A boa notícia é que /usr/local/bin/python3 -c "import kdb" funciona.

btw dê uma olhada em https://github.com/ElektraInitiative/libelektra/blob/master/.travis.yml#L52

Se eu adicionar as definições adicionais e desabilitar pyenv , os testes do Python - no meu diretório de compilação usual - serão executados bem. Obrigada.

Obrigado, ótimo trabalho!

Para quem estiver interessado: recentemente abri um pull request para o Elektra 0.8.21 em homebrew-core aqui .

Tão bom que a fórmula caseira foi aceita! https://github.com/Homebrew/homebrew-core/pull/22049

Uma pequena coisa: em http://brewformulas.org/Elektra a descrição "Um repositório para compartilhar trechos de configuração" está um pouco errada, é possível modificar isso através da fórmula? Ou precisamos enviar um problema no rastreador deles para alterar esse texto?

Eu não acho que http://brewformulas.org seja um site oficial do Homebrew. Você pode encontrar a descrição correta da Fórmula :

Estrutura para acessar as configurações em um banco de dados de chave global

na página oficial do Homebrew .

Obrigado, parece que a outra página não oficial com a descrição errada obteve uma classificação mais alta na minha pesquisa na Internet. Então não há problema com a descrição do nosso lado.

Obrigado novamente por sua tenacidade em oficializar a fórmula caseira.

Você pode atualizar doc/INSTALL.md e esclarecer quando usar a fórmula oficial e quando usar nossa torneira?

Você pode atualizar doc/INSTALL.md e esclarecer quando usar a fórmula oficial…

Eu já fiz isso na minha versão local do repositório. A solicitação pull nº 1777 contém essas alterações.

…e quando usar nossa torneira?

O Readme da nossa torneira já inclui esta informação.

Que tal manter isso aberto para acompanhar o status da fórmula homebrew para cada lançamento? Se preferir, também podemos adicionar um novo problema para o rastreamento.

Que tal manter isso aberto para acompanhar o status da fórmula homebrew para cada lançamento?

Como você já mostrou postando aqui 😊, não precisamos manter essa edição aberta para adicionar novos comentários.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

mpranj picture mpranj  ·  3Comentários

mpranj picture mpranj  ·  3Comentários

markus2330 picture markus2330  ·  3Comentários

markus2330 picture markus2330  ·  3Comentários

mpranj picture mpranj  ·  3Comentários