diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/cask/0000-cask-lispdir.diff b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/cask/0000-cask-lispdir.diff new file mode 100644 index 000000000000..7737594179ec --- /dev/null +++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/cask/0000-cask-lispdir.diff @@ -0,0 +1,43 @@ +diff -Naur cask-source-0.9.0-old/bin/cask cask-source-0.9.0-new/bin/cask +--- cask-source-0.9.0-old/bin/cask 1969-12-31 21:00:01.000000000 -0300 ++++ cask-source-0.9.0-new/bin/cask 2024-09-02 12:46:48.316364621 -0300 +@@ -21,8 +21,6 @@ + set -euo pipefail + CASK=$0 + EMACS=${CASK_EMACS:-${EMACS:-emacs}} +-READLINK=${READLINK:-readlink} +-GREADLINK=${GREADLINK:-greadlink} + + if [ "$#" -eq "0" ] ; then + subcommand=install +@@ -31,21 +29,10 @@ + shift + fi + +-set +eu +-SRCDIR__=$($READLINK -f "$CASK" 2>/dev/null) +-if [ -z "$SRCDIR__" ] ; then +- SRCDIR__=$($GREADLINK -f "$CASK" 2>/dev/null) +-fi +-set -eu +-if [ -z "$SRCDIR__" ]; then +- SRCDIR__=$(python -c "import os, sys; print(os.path.realpath(sys.argv[1]))" "$CASK") +-fi +-SRCDIR_=$(dirname "$SRCDIR__") +-SRCDIR=$(dirname "$SRCDIR_") + case $subcommand in + emacs) + EMACS="$EMACS" \ +- "$EMACS" -Q -L "$SRCDIR" -l "$SRCDIR/cask" \ ++ "$EMACS" -Q -L "@lispdir@" -l "@lispdir@/cask" \ + --eval "(cask--initialize (expand-file-name default-directory))" \ + "$@" + ;; +@@ -53,6 +40,6 @@ + EMACSLOADPATH="$($CASK load-path)" PATH="$($CASK path)" EMACS="$EMACS" "$@" + ;; + *) +- "$EMACS" -Q --script "$SRCDIR/cask-cli.el" -- $subcommand "$@" ++ "$EMACS" -Q --script "@lispdir@/cask-cli.el" -- $subcommand "$@" + ;; + esac diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/cask/package.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/cask/package.nix index 3ab796bcbd19..4334fce6ecbb 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/cask/package.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/cask/package.nix @@ -1,77 +1,80 @@ -{ lib -, stdenv -, fetchFromGitHub -, bash -, emacs -, python3 +{ + lib, + ansi, + cl-generic, + cl-lib, + commander, + + epl, + f, + fetchFromGitHub, + git, + gitUpdater, + melpaBuild, + package-build, + s, + shut-up, }: -stdenv.mkDerivation (finalAttrs: { +melpaBuild (finalAttrs: { pname = "cask"; - version = "0.8.8"; + version = "0.9.0"; src = fetchFromGitHub { + name = "cask-source-${finalAttrs.version}"; owner = "cask"; repo = "cask"; rev = "v${finalAttrs.version}"; - hash = "sha256-TlReq5sLVJj+pXmJSnepKQkNEWVhnh30iq4egM1HJMU="; + hash = "sha256-91rJFsp2SLk/JY+v6G5JmXH5bg9QnT+qhI8ccNJlI4A="; }; - doCheck = true; + patches = [ + # Uses LISPDIR substitution var + ./0000-cask-lispdir.diff + ]; - nativeBuildInputs = [ emacs ]; - buildInputs = [ - bash - python3 - ] - ++ (with emacs.pkgs; [ + packageRequires = [ ansi - dash - ecukes - el-mock - ert-async - ert-runner + cl-generic + cl-lib + commander + epl f git - noflet package-build s - servant - shell-split-string - ]); + shut-up + ]; + + ignoreCompilationError = false; strictDeps = true; - buildPhase = '' - runHook preBuild - - emacs --batch -L . -f batch-byte-compile cask.el cask-cli.el - - runHook postBuild + # use melpaVersion so that it works for unstable releases too + postPatch = '' + lispdir=$out/share/emacs/site-lisp/elpa/cask-${finalAttrs.melpaVersion} \ + substituteAllInPlace bin/cask ''; - installPhase = '' - runHook preInstall - - mkdir -p $out/bin - install -Dm444 -t $out/share/emacs/site-lisp/cask *.el *.elc - install -Dm555 -t $out/share/emacs/site-lisp/cask/bin bin/cask - ln -s $out/share/emacs/site-lisp/cask/bin/cask $out/bin/cask - - runHook postInstall + # TODO: use installBin as soon as installBin arrives Master branch + postInstall = '' + install -D -t $out/bin bin/cask ''; - meta = with lib; { + passthru.updateScript = gitUpdater { + rev-prefix = "v"; + }; + + meta = { + homepage = "https://github.com/cask/cask"; description = "Project management for Emacs"; - mainProgram = "cask"; longDescription = '' Cask is a project management tool for Emacs that helps automate the package development cycle; development, dependencies, testing, building, packaging and more. ''; - homepage = "https://cask.readthedocs.io/en/latest/index.html"; - license = licenses.gpl3Plus; - maintainers = with maintainers; [ AndersonTorres ]; - inherit (emacs.meta) platforms; + license = lib.licenses.gpl3Plus; + mainProgram = "cask"; + maintainers = with lib.maintainers; [ AndersonTorres ]; }; })