Approccio adeguato alla fornitura di programmi esterni insieme a pacchetti?


12

Mantengo un numero di pacchetti elisp (ad es. Codici di ricerca, emacs-ycmd, traad) che trarrebbero beneficio dalla possibilità di installare i programmi esterni che usano, risparmiando tempo e fatica per alcuni utenti. Ad esempio, con codesearch.el sarebbe bello poter scaricare, compilare e installare gli strumenti di codeearch (scritti in go, non elisp) per gli utenti. Ciò eliminerebbe almeno una barriera per l'utilizzo del pacchetto.

Ci sono delle "migliori pratiche" per farlo? Ad esempio, dove devo inserire i programmi esterni?

Se non hai alcun consiglio diretto, puoi indirizzarmi a pacchetti che fanno qualcosa del genere (e, idealmente, che lo fanno bene)?


1
Temo che potrebbe esserci un punto tra estremamente difficile e impossibile, considerando che non hai alcun controllo sul fatto che il sistema operativo Emacs dell'utente utilizzi Linux, Windows o Mac OS come bootloader ;-).
mbork,

2
Temo sia meglio disaccoppiare il programma esterno dal pacchetto Emacs per la massima flessibilità. L'approccio di fornire al software esterno il pacchetto Emacs sembra funzionare meglio per cose come i file inclusi Ruby / Python / TeX / ... che vengono interpretati. L'approccio opposto di fornire al codice Emacs Lisp un pacchetto installato tramite il gestore pacchetti del sistema (come mu e non molto altro) è meno flessibile perché non è possibile caricare automaticamente.
wasamasa,

Sembra che voi due abbiate ragione. Gli unici esempi che posso trovare dei pacchetti emacs che forniscono dipendenze esterne sono ad esempio jedi che raggruppa alcuni script Python nel pacchetto elpa.
abingham

è qualcosa che potremo fare in Emacs 25 con caricamento dinamico?
wdkrnls,

Risposte:


3

Non ci sono "buone pratiche" per questo, no. Né alcun tipo di supporto esistente per questo. Penso che se è installato appositamente per il pacchetto Foo, il posto dove installarlo sarebbe nella directory del pacchetto Foo.

Per quanto riguarda come farlo, supponendo che il pacchetto Elisp sia installato tramite ELPA, quindi potresti voler provare ad aggiungere nel tuo file Elisp principale qualcosa come:

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

e quindi fornire un Makefile appropriato. Certo, perché funzioni nella maggior parte delle piattaforme, probabilmente vorrai qualcosa di un po 'più sofisticato.


1

Potresti voler cercare di fornire una ricetta el-get per l'installazione del tuo pacchetto.

Vedere la sezione 9 "Ricette di creazione" nel file di informazioni .

La :build/system-typestruttura può essere di particolare interesse, se si hanno requisiti variabili su piattaforme diverse. Vedere la sezione 9.5 "Build" per i dettagli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.