From 78bf14b807bb77ff478df3c06f6847826c28a047 Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Wed, 28 Aug 2024 16:14:33 -0300 Subject: [PATCH 1/2] emacsPackages.cask: use melpaBuild - use a patch that parameterizes lispdir - so that we can get rid of SRCDIR and other dependencies - finalAttrs - remove failing doCheck - sei ignoreCompilationError to false - meta.mainProgram - meta.homepage points to GitHub - because the previous is outdated - nixfmt-rfc-style --- .../cask/0000-cask-lispdir.diff | 24 ++++++ .../manual-packages/cask/package.nix | 79 ++++++++++--------- 2 files changed, 67 insertions(+), 36 deletions(-) create mode 100644 pkgs/applications/editors/emacs/elisp-packages/manual-packages/cask/0000-cask-lispdir.diff 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..2819a462d64c --- /dev/null +++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/cask/0000-cask-lispdir.diff @@ -0,0 +1,24 @@ +diff -Naur cask-source-0.8.8-old/bin/cask cask-source-0.8.8/bin/cask +--- cask-source-0.8.8-old/bin/cask 1969-12-31 21:00:01.000000000 -0300 ++++ cask-source-0.8.8/bin/cask 2024-08-30 18:34:48.986474121 -0300 +@@ -37,19 +37,6 @@ + EMACSLOADPATH="$($CASK load-path)" PATH="$($CASK path)" EMACS="$EMACS" "$@" + ;; + *) +- WHICH=${WHICH:-which} +- READLINK=$($WHICH readlink || true) +- if [ "$(uname || true)" == "Darwin" ] ; then +- READLINK= +- fi +- READLINK=${READLINK:-$($WHICH greadlink || true)} +- if [ ! -z "$READLINK" ] ; then +- SRCDIR__=$($READLINK -f "$CASK") +- else +- SRCDIR__=$(python -c "import os, sys; print(os.path.realpath(sys.argv[1]))" "$CASK") +- fi +- SRCDIR_=$(dirname "$SRCDIR__") +- SRCDIR=$(dirname "$SRCDIR_") +- "$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..5ede94094ff3 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,30 +1,42 @@ -{ lib -, stdenv -, fetchFromGitHub -, bash -, emacs -, python3 +{ + lib, + ansi, + coreutils, + dash, + ecukes, + el-mock, + ert-async, + ert-runner, + f, + fetchFromGitHub, + git, + gitUpdater, + melpaBuild, + noflet, + package-build, + s, + servant, + shell-split-string, }: -stdenv.mkDerivation (finalAttrs: { +melpaBuild (finalAttrs: { pname = "cask"; version = "0.8.8"; src = fetchFromGitHub { + name = "cask-source-${finalAttrs.version}"; owner = "cask"; repo = "cask"; rev = "v${finalAttrs.version}"; hash = "sha256-TlReq5sLVJj+pXmJSnepKQkNEWVhnh30iq4egM1HJMU="; }; - doCheck = true; + patches = [ + # Uses LISPDIR substitution var + ./0000-cask-lispdir.diff + ]; - nativeBuildInputs = [ emacs ]; - buildInputs = [ - bash - python3 - ] - ++ (with emacs.pkgs; [ + packageRequires = [ ansi dash ecukes @@ -38,40 +50,35 @@ stdenv.mkDerivation (finalAttrs: { s servant shell-split-string - ]); + ]; + + ignoreCompilationError = false; strictDeps = true; - buildPhase = '' - runHook preBuild - - emacs --batch -L . -f batch-byte-compile cask.el cask-cli.el - - runHook postBuild + postPatch = '' + lispdir=$out/share/emacs/site-lisp/elpa/cask-${finalAttrs.version} \ + 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 + 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 ]; }; }) From eb93347a3b01fc9917f8445816adac8f984f2b6c Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Mon, 2 Sep 2024 13:30:31 -0300 Subject: [PATCH 2/2] emacsPackages.cask: 0.8.8 -> 0.9.0 --- .../cask/0000-cask-lispdir.diff | 53 +++++++++++++------ .../manual-packages/cask/package.nix | 36 ++++++------- 2 files changed, 52 insertions(+), 37 deletions(-) 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 index 2819a462d64c..7737594179ec 100644 --- 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 @@ -1,23 +1,42 @@ -diff -Naur cask-source-0.8.8-old/bin/cask cask-source-0.8.8/bin/cask ---- cask-source-0.8.8-old/bin/cask 1969-12-31 21:00:01.000000000 -0300 -+++ cask-source-0.8.8/bin/cask 2024-08-30 18:34:48.986474121 -0300 -@@ -37,19 +37,6 @@ +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" "$@" ;; *) -- WHICH=${WHICH:-which} -- READLINK=$($WHICH readlink || true) -- if [ "$(uname || true)" == "Darwin" ] ; then -- READLINK= -- fi -- READLINK=${READLINK:-$($WHICH greadlink || true)} -- if [ ! -z "$READLINK" ] ; then -- SRCDIR__=$($READLINK -f "$CASK") -- else -- SRCDIR__=$(python -c "import os, sys; print(os.path.realpath(sys.argv[1]))" "$CASK") -- fi -- SRCDIR_=$(dirname "$SRCDIR__") -- SRCDIR=$(dirname "$SRCDIR_") - "$EMACS" -Q --script "$SRCDIR/cask-cli.el" -- $subcommand "$@" + "$EMACS" -Q --script "@lispdir@/cask-cli.el" -- $subcommand "$@" ;; 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 5ede94094ff3..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,34 +1,31 @@ { lib, ansi, - coreutils, - dash, - ecukes, - el-mock, - ert-async, - ert-runner, + cl-generic, + cl-lib, + commander, + + epl, f, fetchFromGitHub, git, gitUpdater, melpaBuild, - noflet, package-build, s, - servant, - shell-split-string, + shut-up, }: 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="; }; patches = [ @@ -38,29 +35,28 @@ melpaBuild (finalAttrs: { 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; + # use melpaVersion so that it works for unstable releases too postPatch = '' - lispdir=$out/share/emacs/site-lisp/elpa/cask-${finalAttrs.version} \ + lispdir=$out/share/emacs/site-lisp/elpa/cask-${finalAttrs.melpaVersion} \ substituteAllInPlace bin/cask ''; + # TODO: use installBin as soon as installBin arrives Master branch postInstall = '' install -D -t $out/bin bin/cask '';