Abordagem adequada para fornecer programas externos junto com pacotes?


12

Eu mantenho vários pacotes elisp (por exemplo, codesearch, emacs-ycmd, traad) que se beneficiariam de poder instalar os programas externos que eles usam, economizando tempo e esforço para alguns usuários. Por exemplo, com codesearch.el, seria bom poder baixar, compilar e instalar as ferramentas de pesquisa de código (escritas em go, não elisp) para os usuários. Isso removeria pelo menos uma barreira para o uso da embalagem.

Existem "melhores práticas" para fazer isso? Por exemplo, onde devo colocar os programas externos?

Se você não tiver um conselho direto, poderá me referir a algum pacote que faça algo assim (e, idealmente, faça isso bem)?


1
Receio que possa estar entre algo extremamente difícil e impossível, considerando que você não tem controle se o sistema operacional Emacs do usuário usa Linux, Windows ou Mac OS como o gerenciador de inicialização ;-).
— mbork

2
Receio que seja melhor desacoplar o programa externo do pacote Emacs para obter o máximo de flexibilidade. A abordagem de fornecer o software externo com o pacote Emacs parece funcionar melhor em coisas como arquivos Ruby / Python / TeX / ... incluídos, que são interpretados. A abordagem oposta de fornecer ao código Emacs Lisp um pacote instalado através do gerenciador de pacotes do seu sistema (como mu e notmuch do) é menos flexível porque você não pode ter carregamentos automáticos.
— wasamasa

Parece que vocês dois estão certos. Os únicos exemplos que posso encontrar dos pacotes emacs que fornecem dependências externas são, por exemplo, o jedi, que agrupa alguns scripts python no pacote elpa.
— abingham

isso é algo que poderemos fazer no Emacs 25 com carregamento dinâmico?
— Wdkrnls

Respostas:


3

Não há "melhores práticas" para isso, não. Nem qualquer tipo de suporte existente para ele. Eu acho que se for instalado especificamente para o pacote Foo, o local para instalá-lo seria dentro do diretório do pacote Foo.

Quanto a como fazer isso, como o seu pacote Elisp está instalado via ELPA, você pode tentar adicionar no seu arquivo Elisp principal algo como:

(eval-when-compile (call-process "make"))

e forneça um Makefile apropriado. Obviamente, para que ele funcione na "maioria" das plataformas, você provavelmente desejará algo um pouco mais sofisticado.


1

Você pode querer fornecer uma receita el-get para instalar seu pacote.

Consulte a seção 9 "Criação de receitas" no arquivo de informações .

O :build/system-typerecurso pode ser de particular interesse, se você tiver requisitos variáveis ​​em diferentes plataformas. Veja a seção 9.5 "Build" para detalhes.

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.