¿Enfoque adecuado para proporcionar programas externos junto con paquetes?

12

Mantengo varios paquetes de elisp (p. Ej., Codesearch, emacs-ycmd, traad) que se beneficiarían de poder instalar los programas externos que usan, ahorrando tiempo y esfuerzo para algunos usuarios. Por ejemplo, con codesearch.el sería bueno poder descargar, compilar e instalar las herramientas de búsqueda de código (escritas en go, no elisp) para los usuarios. Esto eliminaría al menos una barrera para usar el paquete.

¿Hay alguna "mejor práctica" para hacer esto? Por ejemplo, ¿dónde debo poner los programas externos?

Si no tiene ningún consejo directo, ¿puede referirme a algún paquete que haga algo como esto (e, idealmente, que lo haga bien)?

abingham
fuente
1
Me temo que podría estar entre extremadamente difícil e imposible, teniendo en cuenta que no tiene control si el sistema operativo Emacs del usuario utiliza Linux, Windows o Mac OS como gestor de arranque ;-).
mbork
2
Me temo que es mejor desacoplar el programa externo del paquete Emacs para obtener la máxima flexibilidad. El enfoque de proporcionar el software externo con el paquete Emacs parece funcionar mejor para cosas como los archivos incluidos Ruby / Python / TeX / ... que se interpretan. El enfoque opuesto de proporcionar el código Emacs Lisp con un paquete instalado a través del administrador de paquetes de su sistema (como mu y notmuch do) es menos flexible porque no puede tener cargas automáticas.
wasamasa
Parece que ustedes dos tienen razón. Los únicos ejemplos que puedo encontrar de paquetes emacs que proporcionan dependencias externas son, por ejemplo, jedi, que agrupa algunos scripts de python en el paquete elpa.
abingham
¿Es esto algo que podremos hacer en Emacs 25 con carga dinámica?
wdkrnls

Respuestas:

3

No hay "mejores prácticas" para eso, no. Ni ningún tipo de soporte existente para ello. Creo que si está instalado específicamente para el paquete Foo, entonces el lugar para instalarlo estaría dentro del directorio del paquete Foo.

En cuanto a cómo hacerlo, asumiendo que su paquete Elisp está instalado a través de ELPA, puede intentar agregar en su archivo principal de Elisp algo como:

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

y luego proporcione un Makefile apropiado. Por supuesto, para que funcione en "la mayoría" de las plataformas, probablemente querrás algo un poco más sofisticado.

Stefan
fuente
1

Es posible que desee buscar una receta el-get para instalar su paquete.

Consulte la sección 9 "Recetas de autor" en el archivo de información .

La :build/system-typeinstalación puede ser de particular interés, si tiene requisitos variables en diferentes plataformas. Consulte la sección 9.5 "Compilación" para más detalles.

phils
fuente