Richtiger Ansatz für die Bereitstellung externer Programme zusammen mit Paketen?


12

Ich verwalte eine Reihe von elisp-Paketen (z. B. codesearch, emacs-ycmd, traad), die von der Möglichkeit profitieren, die von ihnen verwendeten externen Programme zu installieren, was einigen Benutzern Zeit und Mühe spart. Zum Beispiel wäre es mit codesearch.el schön, die Codesuchwerkzeuge (geschrieben in go, nicht elisp) für Benutzer herunterladen, kompilieren und installieren zu können. Dies würde mindestens eine Barriere für die Verwendung der Verpackung entfernen.

Gibt es dafür "Best Practices"? Wo soll ich zum Beispiel die externen Programme ablegen?

Wenn Sie keinen direkten Rat haben, können Sie mich auf Pakete verweisen, die so etwas tun (und im Idealfall gut tun)?


1
Ich befürchte, es könnte zwischen extrem schwierig und unmöglich liegen, wenn man bedenkt, dass man keine Kontrolle darüber hat, ob das Emacs-Betriebssystem des Benutzers Linux, Windows oder Mac OS als Bootloader verwendet ;-).
mbork

2
Ich fürchte, es ist besser, das externe Programm vom Emacs-Paket zu entkoppeln, um maximale Flexibilität zu erzielen. Der Ansatz, die externe Software mit dem Emacs-Paket zu versehen, scheint am besten für Dinge wie enthaltene Ruby / Python / TeX / ... -Dateien zu funktionieren, die interpretiert werden. Der umgekehrte Ansatz, den Emacs-Lisp-Code mit einem Paket zu versehen, das über den Paketmanager Ihres Systems installiert wurde (wie bei mu und notmuch do), ist weniger flexibel, da keine automatischen Ladevorgänge möglich sind.
Wasamasa

Es sieht so aus, als ob ihr zwei recht habt. Die einzigen Beispiele für Emacs-Pakete, die externe Abhängigkeiten bieten, sind zB jedi, das einige Python-Skripte im elpa-Paket bündelt.
Abingham

ist dies etwas, was wir in Emacs 25 mit dynamischem Laden tun können?
wdkrnls

Antworten:


3

Dafür gibt es keine "Best Practices", nein. Auch keine existierende Unterstützung dafür. Ich denke, wenn es speziell für das Paket Foo installiert ist, dann wäre der Ort, an dem es installiert werden soll, im Verzeichnis des Pakets Foo.

Wenn Sie Ihr Elisp-Paket über ELPA installiert haben, können Sie versuchen, in Ihre Elisp-Hauptdatei Folgendes einzufügen:

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

und dann ein passendes Makefile bereitstellen. Damit es auf "den meisten" Plattformen funktioniert, möchten Sie wahrscheinlich etwas ausgefeilteres.


1

Sie könnten ein umfassend suchen mögen el-get Rezept für die Installation Ihres Pakets.

Siehe Abschnitt 9 "Authoring Recipes" in der Info-Datei .

Die :build/system-typeEinrichtung kann von besonderem Interesse sein, wenn Sie unterschiedliche Anforderungen für verschiedene Plattformen haben. Siehe Abschnitt 9.5 "Build" für Details.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.