Merge pull request #12410 from ttuegel/emacs-packages

Emacs package updates
This commit is contained in:
Thomas Tuegel
2016-01-18 15:35:29 -06:00
15 changed files with 88723 additions and 68989 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -13,46 +13,17 @@ To update the list of packages from ELPA,
{ fetchurl, lib, stdenv, texinfo }:
let
inherit (lib) makeScope mapAttrs;
json = builtins.readFile ./elpa-packages.json;
manifest = builtins.fromJSON json;
mkPackage = self: name: recipe:
let drv =
{ elpaBuild, stdenv, fetchurl }:
let
unknownFetcher =
abort "emacs-${name}: unknown fetcher '${recipe.fetch.tag}'";
fetch =
{ inherit fetchurl; }."${recipe.fetch.tag}"
or unknownFetcher;
args = builtins.removeAttrs recipe.fetch [ "tag" ];
src = fetch args;
in elpaBuild {
pname = name;
inherit (recipe) version;
inherit src;
packageRequires =
let lookupDep = d: self."${d}" or null;
in map lookupDep recipe.deps;
meta = {
homepage = "http://elpa.gnu.org/packages/${name}.html";
license = stdenv.lib.licenses.free;
};
};
in self.callPackage drv {};
in
self:
let
super = removeAttrs (mapAttrs (mkPackage self) manifest) [ "dash" ];
elpaBuild = import ../../../build-support/emacs/melpa.nix {
imported = import ./elpa-generated.nix {
inherit (self) callPackage;
};
super = removeAttrs imported [ "dash" ];
elpaBuild = import ../../../build-support/emacs/elpa.nix {
inherit fetchurl lib stdenv texinfo;
inherit (self) emacs;
};
@@ -63,11 +34,14 @@ self:
});
};
elpaPackages = super // {
overrides = {
# These packages require emacs-25
el-search = markBroken super.el-search;
iterators = markBroken super.iterators;
midi-kbd = markBroken super.midi-kbd;
stream = markBroken super.stream;
};
elpaPackages = super // overrides;
in elpaPackages // { inherit elpaBuild elpaPackages; }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -14,62 +14,171 @@ To update the list of packages from MELPA,
{ lib }:
let
inherit (lib) makeScope mapAttrs;
json = builtins.readFile ./melpa-packages.json;
manifest = builtins.fromJSON json;
mkPackage = self: name: recipe:
let drv =
{ melpaBuild, stdenv, fetchbzr, fetchcvs, fetchFromGitHub, fetchFromGitLab
, fetchgit, fetchhg, fetchsvn, fetchurl }:
let
unknownFetcher =
abort "emacs-${name}: unknown fetcher '${recipe.fetch.tag}'";
fetch =
{
inherit fetchbzr fetchcvs fetchFromGitHub fetchFromGitLab fetchgit fetchhg
fetchsvn fetchurl;
}."${recipe.fetch.tag}"
or unknownFetcher;
args = builtins.removeAttrs recipe.fetch [ "tag" ];
src = fetch args;
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/${recipe.recipe.commit}/recipes/${name}";
inherit (recipe.recipe) sha256;
};
in melpaBuild {
pname = name;
inherit (recipe) version;
inherit recipeFile src;
packageRequires =
let lookupDep = d: self."${d}" or null;
in map lookupDep recipe.deps;
meta = {
homepage = "http://melpa.org/#/${name}";
license = stdenv.lib.licenses.free;
};
};
in self.callPackage drv {};
in
self:
let
super = mapAttrs (mkPackage self) manifest;
imported = import ./melpa-generated.nix { inherit (self) callPackage; };
super = builtins.removeAttrs imported [
"swbuff-x" # required dependency swbuff is missing
];
markBroken = pkg: pkg.override {
melpaBuild = args: self.melpaBuild (args // {
meta = (args.meta or {}) // { broken = true; };
dontConfigure = pkg: pkg.override (args: {
melpaBuild = drv: args.melpaBuild (drv // {
configureScript = "true";
});
});
markBroken = pkg: pkg.override (args: {
melpaBuild = drv: args.melpaBuild (drv // {
meta = (drv.meta or {}) // { broken = true; };
});
});
overrides = {
ac-php = super.ac-php.override {
inherit (self.melpaPackages) company popup;
};
# upstream issue: mismatched filename
ack-menu = markBroken super.ack-menu;
airline-themes = super.airline-themes.override {
inherit (self.melpaPackages) powerline;
};
# upstream issue: missing file header
bufshow = markBroken super.bufshow;
# part of a larger package
# upstream issue: missing package version
cmake-mode = markBroken (dontConfigure super.cmake-mode);
# upstream issue: missing file header
cn-outline = markBroken super.cn-outline;
# upstream issue: missing file header
connection = markBroken super.connection;
# upstream issue: missing file header
crux = markBroken super.crux;
# upstream issue: missing file header
dictionary = markBroken super.dictionary;
easy-kill-extras = super.easy-kill-extras.override {
inherit (self.melpaPackages) easy-kill;
};
# missing git
egg = markBroken super.egg;
# upstream issue: missing file header
elmine = markBroken super.elmine;
ess-R-data-view = super.ess-R-data-view.override {
inherit (self.melpaPackages) ess ctable popup;
};
ess-R-object-popup = super.ess-R-object-popup.override {
inherit (self.melpaPackages) ess popup;
};
# missing OCaml
flycheck-ocaml = markBroken super.flycheck-ocaml;
# upstream issue: missing file header
fold-dwim = markBroken super.fold-dwim;
# upstream issue: mismatched filename
helm-lobsters = markBroken super.helm-lobsters;
# upstream issue: missing file header
helm-words = markBroken super.helm-words;
# upstream issue: missing file header
ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
# upstream issue: missing file header
initsplit = markBroken super.initsplit;
# upstream issue: missing file header
jsfmt = markBroken super.jsfmt;
# upstream issue: missing file header
link = markBroken super.link;
# upstream issue: mismatched filename
link-hint = markBroken super.link-hint;
# part of a larger package
llvm-mode = dontConfigure super.llvm-mode;
# upstream issue: missing file header
maxframe = markBroken super.maxframe;
# missing OCaml
merlin = markBroken super.merlin;
mhc = super.mhc.override {
inherit (self.melpaPackages) calfw;
};
# missing .NET
nemerle = markBroken super.nemerle;
# part of a larger package
notmuch = dontConfigure super.notmuch;
# missing OCaml
ocp-indent = markBroken super.ocp-indent;
# upstream issue: missing file header
perl-completion = markBroken super.perl-completion;
# upstream issue: truncated file
powershell = markBroken super.powershell;
# upstream issue: mismatched filename
processing-snippets = markBroken super.processing-snippets;
# upstream issue: missing file header
qiita = markBroken super.qiita;
# upstream issue: missing package version
quack = markBroken super.quack;
# upstream issue: missing file header
railgun = markBroken super.railgun;
# upstream issue: missing file footer
seoul256-theme = markBroken super.seoul256-theme;
spaceline = super.spaceline.override {
inherit (self.melpaPackages) powerline;
};
# upstream issue: missing file header
speech-tagger = markBroken super.speech-tagger;
# upstream issue: missing file header
stgit = markBroken super.stgit;
# upstream issue: missing file header
textmate = markBroken super.textmate;
# missing OCaml
utop = markBroken super.utop;
# upstream issue: missing file header
voca-builder = markBroken super.voca-builder;
# upstream issue: missing file header
window-numbering = markBroken super.window-numbering;
# upstream issue: missing file header
zeitgeist = markBroken super.zeitgeist;
};
melpaPackages = super // {
# broken upstream
ack-menu = markBroken super.ack-menu;
};
melpaPackages = super // overrides;
in
melpaPackages // { inherit melpaPackages; }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -16,62 +16,146 @@ To update the list of packages from MELPA Stable,
{ lib }:
let
inherit (lib) makeScope mapAttrs;
json = builtins.readFile ./melpa-stable-packages.json;
manifest = builtins.fromJSON json;
mkPackage = self: name: recipe:
let drv =
{ melpaBuild, stdenv, fetchbzr, fetchcvs, fetchFromGitHub, fetchFromGitLab
, fetchgit, fetchhg, fetchsvn, fetchurl }:
let
unknownFetcher =
abort "emacs-${name}: unknown fetcher '${recipe.fetch.tag}'";
fetch =
{
inherit fetchbzr fetchcvs fetchFromGitHub fetchFromGitLab fetchgit fetchhg
fetchsvn fetchurl;
}."${recipe.fetch.tag}"
or unknownFetcher;
args = builtins.removeAttrs recipe.fetch [ "tag" ];
src = fetch args;
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/${recipe.recipe.commit}/recipes/${name}";
inherit (recipe.recipe) sha256;
};
in melpaBuild {
pname = name;
inherit (recipe) version;
inherit recipeFile src;
packageRequires =
let lookupDep = d: self."${d}" or null;
in map lookupDep recipe.deps;
meta = {
homepage = "http://stable.melpa.org/#/${name}";
license = stdenv.lib.licenses.free;
};
};
in self.callPackage drv {};
in
self:
let
super = mapAttrs (mkPackage self) manifest;
imported = import ./melpa-stable-generated.nix { inherit (self) callPackage; };
markBroken = pkg: pkg.override {
melpaBuild = args: self.melpaBuild (args // {
meta = (args.meta or {}) // { broken = true; };
super = imported;
dontConfigure = pkg: pkg.override (args: {
melpaBuild = drv: args.melpaBuild (drv // {
configureScript = "true";
});
});
markBroken = pkg: pkg.override (args: {
melpaBuild = drv: args.melpaBuild (drv // {
meta = (drv.meta or {}) // { broken = true; };
});
});
overrides = {
ac-php = super.ac-php.override {
inherit (self.melpaPackages) company popup;
};
# upstream issue: mismatched filename
ack-menu = markBroken super.ack-menu;
airline-themes = super.airline-themes.override {
inherit (self.melpaPackages) powerline;
};
# upstream issue: missing file header
bufshow = markBroken super.bufshow;
# part of a larger package
# upstream issue: missing package version
cmake-mode = markBroken (dontConfigure super.cmake-mode);
# upstream issue: missing file header
connection = markBroken super.connection;
# upstream issue: missing file header
crux = markBroken super.crux;
# upstream issue: missing file header
dictionary = markBroken super.dictionary;
easy-kill-extras = super.easy-kill-extras.override {
inherit (self.melpaPackages) easy-kill;
};
# missing git
egg = markBroken super.egg;
# upstream issue: missing file header
elmine = markBroken super.elmine;
ess-R-data-view = super.ess-R-data-view.override {
inherit (self.melpaPackages) ess ctable popup;
};
ess-R-object-popup = super.ess-R-object-popup.override {
inherit (self.melpaPackages) ess popup;
};
# missing OCaml
flycheck-ocaml = markBroken super.flycheck-ocaml;
# upstream issue: missing file header
fold-dwim = markBroken super.fold-dwim;
# upstream issue: mismatched filename
helm-lobsters = markBroken super.helm-lobsters;
# upstream issue: missing file header
ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
# upstream issue: missing file header
initsplit = markBroken super.initsplit;
# upstream issue: missing file header
jsfmt = markBroken super.jsfmt;
# upstream issue: missing file header
link = markBroken super.link;
# upstream issue: mismatched filename
link-hint = markBroken super.link-hint;
# upstream issue: missing file header
maxframe = markBroken super.maxframe;
# missing OCaml
merlin = markBroken super.merlin;
mhc = super.mhc.override {
inherit (self.melpaPackages) calfw;
};
# missing .NET
nemerle = markBroken super.nemerle;
# part of a larger package
notmuch = dontConfigure super.notmuch;
# missing OCaml
ocp-indent = markBroken super.ocp-indent;
# upstream issue: truncated file
powershell = markBroken super.powershell;
# upstream issue: mismatched filename
processing-snippets = markBroken super.processing-snippets;
# upstream issue: missing file header
qiita = markBroken super.qiita;
spaceline = super.spaceline.override {
inherit (self.melpaPackages) powerline;
};
# upstream issue: missing file header
speech-tagger = markBroken super.speech-tagger;
# upstream issue: missing file header
stgit = markBroken super.stgit;
# upstream issue: missing file header
textmate = markBroken super.textmate;
# missing OCaml
utop = markBroken super.utop;
# upstream issue: missing file header
voca-builder = markBroken super.voca-builder;
# upstream issue: missing file header
window-numbering = markBroken super.window-numbering;
};
melpaStablePackages = super // {
# broken upstream
ack-menu = markBroken super.ack-menu;
};
melpaStablePackages = super // overrides;
in
melpaStablePackages // { inherit melpaStablePackages; }

View File

@@ -0,0 +1,30 @@
# builder for Emacs packages built for packages.el
{ lib, stdenv, fetchurl, emacs, texinfo }:
with lib;
{ pname
, version
, src
, ...
}@args:
import ./generic.nix { inherit lib stdenv emacs texinfo; } ({
phases = "installPhase fixupPhase distPhase";
installPhase = ''
runHook preInstall
emacs --batch -Q -l ${./elpa2nix.el} \
-f elpa2nix-install-package \
"${src}" "$out/share/emacs/site-lisp/elpa"
runHook postInstall
'';
}
// removeAttrs args [ "files" "fileSpecs"
"meta"
])

View File

@@ -0,0 +1,30 @@
(require 'package)
(package-initialize)
(defun elpa2nix-install-package ()
(if (not noninteractive)
(error "`elpa2nix-install-package' is to be used only with -batch"))
(pcase command-line-args-left
(`(,archive ,elpa)
(progn (setq package-user-dir elpa)
(elpa2nix-install-file archive)))))
(defun elpa2nix-install-from-buffer ()
"Install a package from the current buffer."
(let ((pkg-desc (if (derived-mode-p 'tar-mode)
(package-tar-file-info)
(package-buffer-info))))
;; Install the package itself.
(package-unpack pkg-desc)
pkg-desc))
(defun elpa2nix-install-file (file)
"Install a package from a file.
The file can either be a tar file or an Emacs Lisp file."
(let ((is-tar (string-match "\\.tar\\'" file)))
(with-temp-buffer
(if is-tar
(insert-file-contents-literally file)
(insert-file-contents file))
(when is-tar (tar-mode))
(elpa2nix-install-from-buffer))))

View File

@@ -32,8 +32,11 @@ stdenv.mkDerivation ({
unpackCmd = ''
case "$curSrc" in
*.el)
cp $curSrc $pname.el
chmod +w $pname.el
# keep original source filename without the hash
local filename=$(basename "$curSrc")
filename="''${filename:33}"
cp $curSrc $filename
chmod +w $filename
sourceRoot="."
;;
*)

View File

@@ -28,8 +28,6 @@ let
sha256 = "1biwg2pqmmdz5iwqbjdszljazqymvgyyjcnc255nr6qz8mhnx67j";
};
fname = "${pname}-${version}";
targets = concatStringsSep " " (if files == null then fileSpecs else files);
defaultMeta = {
@@ -41,31 +39,33 @@ in
import ./generic.nix { inherit lib stdenv emacs texinfo; } ({
inherit packageBuild;
buildPhase = ''
runHook preBuild
buildPhase =
if recipeFile == null
then ''
runHook preBuild
emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \
${if recipeFile == null
then
''
-f melpa2nix-build-package \
${pname} ${version} ${targets}
''
else
''
-f melpa2nix-build-package-from-recipe \
${pname} ${version} ${recipeFile}
''}
export archive=$(emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \
-f melpa2nix-build-package \
${pname} ${version} ${targets})
runHook postBuild
'';
runHook postBuild
''
else ''
runHook preBuild
export archive=$(emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \
-f melpa2nix-build-package-from-recipe \
${recipeFile} ${version})
runHook postBuild
'';
installPhase = ''
runHook preInstall
emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \
-f melpa2nix-install-package \
${fname}.* $out/share/emacs/site-lisp/elpa
emacs --batch -Q -l ${./elpa2nix.el} \
-f elpa2nix-install-package \
"$archive" "$out/share/emacs/site-lisp/elpa"
runHook postInstall
'';

View File

@@ -6,14 +6,6 @@
(setq package-build-working-dir (expand-file-name ".")
package-build-archive-dir (expand-file-name "."))
(defun melpa2nix-install-package ()
(if (not noninteractive)
(error "`melpa2nix-install-package' is to be used only with -batch"))
(pcase command-line-args-left
(`(,archive ,elpa)
(progn (setq package-user-dir elpa)
(package-install-file archive)))))
(defun melpa2nix-build-package ()
(if (not noninteractive)
(error "`melpa2nix-build-package' is to be used only with -batch"))
@@ -25,8 +17,10 @@
(if (not noninteractive)
(error "`melpa2nix-build-package' is to be used only with -batch"))
(pcase command-line-args-left
(`(,package ,version ,recipe-file)
(let* ((rcp (cdr (package-build--read-from-file recipe-file)))
(`(,recipe-file ,version)
(let* ((recipe (package-build--read-from-file recipe-file))
(rcp (cdr recipe))
(package (car recipe))
(files (package-build--config-file-list rcp)))
(melpa2nix-package-build-archive package version files)))))
@@ -38,8 +32,11 @@
version
files
package-build-working-dir
package-build-archive-dir)))
package-build-archive-dir))
(archive-file (package-build--archive-file-name archive-entry)))
(package-build--message "Built in %.3fs, finished at %s"
(progn
(package-build--message "Built in %.3fs, finished at %s"
(time-to-seconds (time-since start-time))
(current-time-string))))
(current-time-string))
(princ (format "%s\n" archive-file)))))

View File

@@ -24,6 +24,9 @@
## FOR CONTRIBUTORS
#
# When adding a new package here please note that
# * please use `elpaBuild` for pre-built package.el packages and
# `melpaBuild` or `trivialBuild` if the package must actually
# be built from the source.
# * lib.licenses are `with`ed on top of the file here
# * both trivialBuild and melpaBuild will automatically derive a
# `meta` with `platforms` and `homepage` set to something you are
@@ -235,23 +238,6 @@ let
};
};
auctex = melpaBuild rec {
pname = "auctex";
version = "11.87.7";
src = fetchurl {
url = "http://elpa.gnu.org/packages/${pname}-${version}.tar";
sha256 = "07bhw8zc3d1f2basjy80njmxpsp4f70kg3ynkch9ghlai3mm2b7n";
};
buildPhase = ''
cp $src ${pname}-${version}.tar
'';
meta = {
description = "Extensible package for writing and formatting TeX files in GNU Emacs and XEmacs";
homepage = https://www.gnu.org/software/auctex/;
license = gpl3Plus;
};
};
autotetris = melpaBuild {
pname = "autotetris-mode";
version = "20141114.846";
@@ -1172,23 +1158,6 @@ let
};
};
let-alist = melpaBuild rec {
pname = "let-alist";
version = "1.0.4";
src = fetchurl {
url = "http://elpa.gnu.org/packages/${pname}-${version}.el";
sha256 = "07312bvvyz86lf64vdkxg2l1wgfjl25ljdjwlf1bdzj01c4hm88x";
};
unpackPhase = "true";
buildPhase = ''
cp $src ${pname}-${version}.el
'';
meta = {
description = "Easily let-bind values of an assoc-list by their names";
license = gpl3Plus;
};
};
log4e = melpaBuild rec {
pname = "log4e";
version = "0.3.0";
@@ -1381,16 +1350,13 @@ let
};
};
org-plus-contrib = melpaBuild rec {
org-plus-contrib = elpaBuild rec {
pname = "org-plus-contrib";
version = "20150406";
src = fetchurl {
url = "http://orgmode.org/elpa/${pname}-${version}.tar";
sha256 = "1ny2myg4rm75ab2gl5rqrwy7h53q0vv18df8gk3zv13kljj76c6i";
};
buildPhase = ''
cp $src ${pname}-${version}.tar
'';
meta = {
description = "Notes, TODO lists, projects, and authoring in plain-text with Emacs";
license = gpl3Plus;
@@ -1926,7 +1892,7 @@ in
lib.makeScope newScope (self:
{}
// melpaPackages self
// melpaStablePackages self
// elpaPackages self
// melpaStablePackages self
// packagesFun self
)