summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wright <gienah@gentoo.org>2014-12-19 07:02:16 +0000
committerMark Wright <gienah@gentoo.org>2014-12-19 07:02:16 +0000
commitf85cde96601f9dadee19cd3cd7ef74c40f9c88b8 (patch)
tree45f5b2cdbf41302b0fcd99783b2d773659216e68 /app-emacs
parentAdd common-lisp-3.eclass from the lisp overlay, required by app-emacs/slime-2.11 (diff)
downloadgentoo-2-f85cde96601f9dadee19cd3cd7ef74c40f9c88b8.tar.gz
gentoo-2-f85cde96601f9dadee19cd3cd7ef74c40f9c88b8.tar.bz2
gentoo-2-f85cde96601f9dadee19cd3cd7ef74c40f9c88b8.zip
Bump slime to 2.11, as requested in Bug 530148
(Portage version: 2.2.15/cvs/Linux x86_64, signed Manifest commit with key 618E971F)
Diffstat (limited to 'app-emacs')
-rw-r--r--app-emacs/slime/ChangeLog12
-rw-r--r--app-emacs/slime/files/2.0_p20110617/70slime-gentoo.el15
-rw-r--r--app-emacs/slime/files/2.0_p20110617/gentoo-dont-call-init.patch16
-rw-r--r--app-emacs/slime/files/2.0_p20110617/swank.asd98
-rw-r--r--app-emacs/slime/files/2.0_p20130214/gentoo-module-load.patch84
-rw-r--r--app-emacs/slime/files/2.11/dont-load-sbcl-pprint.patch13
-rw-r--r--app-emacs/slime/files/2.11/gentoo-changelog-date.patch20
-rw-r--r--app-emacs/slime/slime-2.11.ebuild122
8 files changed, 379 insertions, 1 deletions
diff --git a/app-emacs/slime/ChangeLog b/app-emacs/slime/ChangeLog
index 235562502cbc..8d96e0dfd718 100644
--- a/app-emacs/slime/ChangeLog
+++ b/app-emacs/slime/ChangeLog
@@ -1,6 +1,16 @@
# ChangeLog for app-emacs/slime
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-emacs/slime/ChangeLog,v 1.73 2014/07/11 08:44:28 patrick Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-emacs/slime/ChangeLog,v 1.74 2014/12/19 07:02:16 gienah Exp $
+
+*slime-2.11 (19 Dec 2014)
+
+ 19 Dec 2014; Mark Wright <gienah@gentoo.org>
+ +files/2.0_p20110617/70slime-gentoo.el,
+ +files/2.0_p20110617/gentoo-dont-call-init.patch,
+ +files/2.0_p20110617/swank.asd, +files/2.0_p20130214/gentoo-module-load.patch,
+ +files/2.11/dont-load-sbcl-pprint.patch,
+ +files/2.11/gentoo-changelog-date.patch, +slime-2.11.ebuild:
+ Bump slime to 2.11, as requested in Bug 530148
11 Jul 2014; Patrick Lauer <patrick@gentoo.org> slime-2.0_p20101103.ebuild:
Stable on amd64 #511170
diff --git a/app-emacs/slime/files/2.0_p20110617/70slime-gentoo.el b/app-emacs/slime/files/2.0_p20110617/70slime-gentoo.el
new file mode 100644
index 000000000000..358af67d918d
--- /dev/null
+++ b/app-emacs/slime/files/2.0_p20110617/70slime-gentoo.el
@@ -0,0 +1,15 @@
+;;; site-lisp configuration for SLIME
+
+(add-to-list 'load-path "@SITELISP@")
+(add-to-list 'load-path "@SITELISP@/contrib")
+(autoload 'slime-highlight-edits-mode "slime-highlight-edits")
+
+(require 'slime-autoloads)
+(slime-setup '(slime-fancy slime-asdf slime-banner))
+
+;; this allows us not to require dev-lisp/hyperspec
+;; (which is non-free) as a hard dependency
+(setq common-lisp-hyperspec-root
+ (if (file-exists-p "/usr/share/doc/hyperspec/HyperSpec")
+ "file:///usr/share/doc/hyperspec/HyperSpec/"
+ "http://www.lispworks.com/reference/HyperSpec/"))
diff --git a/app-emacs/slime/files/2.0_p20110617/gentoo-dont-call-init.patch b/app-emacs/slime/files/2.0_p20110617/gentoo-dont-call-init.patch
new file mode 100644
index 000000000000..410c3913a2a1
--- /dev/null
+++ b/app-emacs/slime/files/2.0_p20110617/gentoo-dont-call-init.patch
@@ -0,0 +1,16 @@
+Author: Stelian Ionescu <sionescu@cddr.org>
+Date: 2010-05-14
+Status: Gentoo-only
+Description: Dont' call SWANK-LOADER:INIT on startup since we don't use
+ the upstream swank-loader.lisp
+
+--- a/slime.el
++++ b/slime.el
+@@ -1323,7 +1323,6 @@ See `slime-start'."
+ `(progn
+ (load ,(slime-to-lisp-filename (expand-file-name loader))
+ :verbose t)
+- (funcall (read-from-string "swank-loader:init"))
+ (funcall (read-from-string "swank:start-server")
+ ,(slime-to-lisp-filename port-filename)
+ :coding-system ,encoding)))))
diff --git a/app-emacs/slime/files/2.0_p20110617/swank.asd b/app-emacs/slime/files/2.0_p20110617/swank.asd
new file mode 100644
index 000000000000..b33ca6e67cb0
--- /dev/null
+++ b/app-emacs/slime/files/2.0_p20110617/swank.asd
@@ -0,0 +1,98 @@
+;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*-
+
+(defpackage #:swank-system
+ (:use #:common-lisp #:asdf))
+
+(in-package #:swank-system)
+
+(defun load-user-init-file ()
+ "Load the user init file, return NIL if it does not exist."
+ (load (merge-pathnames (user-homedir-pathname)
+ (make-pathname :name ".swank" :type "lisp"))
+ :if-does-not-exist nil))
+
+(defun load-site-init-file ()
+ (load (make-pathname :name "site-init" :type "lisp"
+ :defaults (truename
+ (asdf:system-definition-pathname
+ (asdf:find-system :swank))))
+ :if-does-not-exist nil))
+
+(defclass no-load-file (cl-source-file) ())
+
+(defmethod perform ((op load-op) (c no-load-file)) nil)
+
+(defmacro define-swank-system (sysdep-files)
+ `(defsystem :swank
+ :description "Swank is the Common Lisp back-end to SLIME"
+ :serial t
+ :components ((:file "swank-backend")
+ (:file "nregex")
+ ,@(mapcar #'(lambda (component)
+ (if (atom component)
+ (list :file component)
+ component))
+ sysdep-files)
+ (:file "swank-match")
+ (:file "swank-rpc")
+ (:file "swank")
+ (:module "contrib"
+ :components ((:no-load-file "swank-c-p-c")
+ (:no-load-file "swank-arglists"
+ :depends-on ("swank-c-p-c"))
+ (:no-load-file "swank-asdf")
+ (:no-load-file "swank-clipboard")
+ (:no-load-file "swank-fancy-inspector")
+ (:no-load-file "swank-fuzzy"
+ :depends-on ("swank-c-p-c"))
+ (:no-load-file "swank-hyperdoc")
+ (:no-load-file "swank-indentation")
+ (:no-load-file "swank-listener-hooks")
+ (:no-load-file "swank-media")
+ (:no-load-file "swank-motd")
+ (:no-load-file "swank-package-fu")
+ (:no-load-file "swank-presentations")
+ (:no-load-file "swank-presentation-streams"
+ :depends-on ("swank-presentations"))
+ (:no-load-file "swank-sbcl-exts"
+ :depends-on ("swank-arglists"))
+ (:no-load-file "swank-snapshot")
+ (:no-load-file "swank-sprof"))))
+ :depends-on (#+sbcl sb-bsd-sockets)
+ :perform (load-op :after (op swank)
+ (load-site-init-file)
+ (load-user-init-file))))
+
+#+(or cmu scl sbcl openmcl clozurecl lispworks allegro clisp armedbear cormanlisp ecl)
+(define-swank-system
+ #+cmu (swank-source-path-parser swank-source-file-cache swank-cmucl)
+ #+scl (swank-source-path-parser swank-source-file-cache swank-scl)
+ #+sbcl (swank-source-path-parser swank-source-file-cache swank-sbcl swank-gray)
+ #+(or openmcl clozurecl) (metering
+ #.(if (and (find-package "CCL")
+ (fboundp (intern "COMPUTE-APPLICABLE-METHODS-USING-CLASSES" "CCL")))
+ 'swank-ccl
+ 'swank-openmcl)
+ swank-gray)
+ #+lispworks (swank-lispworks swank-gray)
+ #+allegro (swank-allegro swank-gray)
+ #+clisp (xref metering swank-clisp swank-gray)
+ #+armedbear (swank-abcl)
+ #+cormanlisp (swank-corman swank-gray)
+ #+ecl (swank-source-path-parser swank-source-file-cache swank-ecl swank-gray))
+
+#-(or cmu scl sbcl openmcl clozurecl lispworks allegro clisp armedbear cormanlisp ecl)
+(error "Your CL implementation is not supported !")
+
+(defpackage #:swank-loader
+ (:use #:common-lisp)
+ (:export #:*source-directory*))
+
+(in-package #:swank-loader)
+
+(defparameter *source-directory*
+ (asdf:component-pathname (asdf:find-system :swank)))
+
+;; (funcall (intern (string :warn-unimplemented-interfaces) :swank-backend))
+
+;; swank.asd ends here
diff --git a/app-emacs/slime/files/2.0_p20130214/gentoo-module-load.patch b/app-emacs/slime/files/2.0_p20130214/gentoo-module-load.patch
new file mode 100644
index 000000000000..c25a248d04ab
--- /dev/null
+++ b/app-emacs/slime/files/2.0_p20130214/gentoo-module-load.patch
@@ -0,0 +1,84 @@
+--- slime-9999-orig/contrib/swank-arglists.lisp 2012-08-14 06:50:34.000000000 +1000
++++ slime-9999/contrib/swank-arglists.lisp 2013-02-14 21:33:26.879124163 +1100
+@@ -9,8 +9,7 @@
+
+ (in-package :swank)
+
+-(eval-when (:compile-toplevel :load-toplevel :execute)
+- (swank-require :swank-c-p-c))
++(swank-require :swank-c-p-c)
+
+ ;;;; Utilities
+
+--- slime-9999-orig/contrib/swank-fuzzy.lisp 2013-02-02 20:48:51.000000000 +1100
++++ slime-9999/contrib/swank-fuzzy.lisp 2013-02-14 21:35:32.059873714 +1100
+@@ -10,9 +10,8 @@
+
+ (in-package :swank)
+
+-(eval-when (:compile-toplevel :load-toplevel :execute)
+- (swank-require :swank-util)
+- (swank-require :swank-c-p-c))
++(swank-require :swank-util)
++(swank-require :swank-c-p-c)
+
+ ;;; For nomenclature of the fuzzy completion section, please read
+ ;;; through the following docstring.
+--- slime-9999-orig/contrib/swank-sbcl-exts.lisp 2009-09-25 16:43:33.000000000 +1000
++++ slime-9999/contrib/swank-sbcl-exts.lisp 2013-02-14 21:33:26.880124185 +1100
+@@ -7,8 +7,7 @@
+
+ (in-package :swank)
+
+-(eval-when (:compile-toplevel :load-toplevel :execute)
+- (swank-require :swank-arglists))
++(swank-require :swank-arglists)
+
+ ;; We need to do this so users can place `slime-sbcl-exts' into their
+ ;; ~/.emacs, and still use any implementation they want.
+--- slime-9999-orig/swank.lisp 2013-01-11 20:00:30.000000000 +1100
++++ slime-9999/swank.lisp 2013-02-14 22:15:39.624982175 +1100
+@@ -2535,14 +2535,17 @@
+ "Load the module MODULE."
+ (dolist (module (ensure-list modules))
+ (unless (member (string module) *modules* :test #'string=)
+- (require module (if filename
+- (filename-to-pathname filename)
+- (module-filename module)))
++ (let ((*load-print* nil)
++ (*load-verbose* nil)
++ #+cmu (ext:*gc-verbose* nil))
++ (require module (if filename
++ (filename-to-pathname filename)
++ (module-filename module))))
+ (assert (member (string module) *modules* :test #'string=)
+ () "Required module ~s was not provided" module)))
+ *modules*)
+
+-(defvar *find-module* 'find-module
++(defvar *find-module* 'find-module-gentoo
+ "Pluggable function to locate modules.
+ The function receives a module name as argument and should return
+ the filename of the module (or nil if the file doesn't exist).")
+@@ -2572,6 +2575,21 @@
+ (some (lambda (dir) (some #'probe-file (module-canditates name dir)))
+ *load-path*)))
+
++(defun swank-fasl-pathname ()
++ (make-pathname :name nil :type nil
++ :defaults (car (asdf:output-files
++ (make-instance 'asdf:compile-op)
++ (car (asdf:module-components
++ (asdf:find-system :swank)))))))
++
++(defun append-dir (pathname dir)
++ (make-pathname :directory (append (pathname-directory pathname) dir)))
++
++(defun find-module-gentoo (module)
++ (or (let ((*load-path* (list (append-dir (swank-fasl-pathname) '("contrib"))
++ (append-dir swank-loader:*source-directory* '("contrib")))))
++ (find-module module))
++ (find-module module)))
+
+ ;;;; Macroexpansion
+
diff --git a/app-emacs/slime/files/2.11/dont-load-sbcl-pprint.patch b/app-emacs/slime/files/2.11/dont-load-sbcl-pprint.patch
new file mode 100644
index 000000000000..c7dafb6cb91a
--- /dev/null
+++ b/app-emacs/slime/files/2.11/dont-load-sbcl-pprint.patch
@@ -0,0 +1,13 @@
+diff --git a/contrib/swank-presentation-streams.lisp b/contrib/swank-presentation-streams.lisp
+index 0c24bda..bd5a990 100644
+--- a/contrib/swank-presentation-streams.lisp
++++ b/contrib/swank-presentation-streams.lisp
+@@ -65,7 +65,7 @@ be sensitive and remember what object it is in the repl if predicate is true"
+ (funcall ,continue)))))
+
+ ;;; Get pretty printer patches for SBCL at load (not compile) time.
+-#+sbcl
++#+#:disable-dangerous-patching ; #+sbcl
+ (eval-when (:load-toplevel)
+ (handler-bind ((simple-error
+ (lambda (c)
diff --git a/app-emacs/slime/files/2.11/gentoo-changelog-date.patch b/app-emacs/slime/files/2.11/gentoo-changelog-date.patch
new file mode 100644
index 000000000000..4d7669a34d29
--- /dev/null
+++ b/app-emacs/slime/files/2.11/gentoo-changelog-date.patch
@@ -0,0 +1,20 @@
+--- slime-2.11-orig/slime.el 2014-12-01 21:05:54.000000000 +1100
++++ slime-2.11/slime.el 2014-12-19 11:57:45.455393436 +1100
+@@ -134,16 +134,7 @@
+ "Return the datestring of the latest entry in the ChangeLog file.
+ Return nil if the ChangeLog file cannot be found."
+ (interactive "p")
+- (let ((changelog (expand-file-name "ChangeLog" slime-path))
+- (date nil))
+- (when (file-exists-p changelog)
+- (with-temp-buffer
+- (insert-file-contents-literally changelog nil 0 100)
+- (goto-char (point-min))
+- (setq date (symbol-name (read (current-buffer))))))
+- (when interactivep
+- (message "Slime ChangeLog dates %s." date))
+- date)))
++ "@SLIME-CHANGELOG-DATE@"))
+
+ (defvar slime-protocol-version nil)
+ (setq slime-protocol-version
diff --git a/app-emacs/slime/slime-2.11.ebuild b/app-emacs/slime/slime-2.11.ebuild
new file mode 100644
index 000000000000..a146111aa626
--- /dev/null
+++ b/app-emacs/slime/slime-2.11.ebuild
@@ -0,0 +1,122 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-emacs/slime/slime-2.11.ebuild,v 1.1 2014/12/19 07:02:16 gienah Exp $
+
+EAPI=5
+
+[[ ${PV} = *9999* ]] && GIT_ECLASS="git-r3" || GIT_ECLASS=""
+
+inherit common-lisp-3 ${GIT_ECLASS} elisp eutils
+
+DESCRIPTION="SLIME, the Superior Lisp Interaction Mode (Extended)"
+HOMEPAGE="http://common-lisp.net/project/slime/"
+if [[ ${PV} != *9999* ]]; then
+ SRC_URI="https://github.com/slime/slime/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+fi
+
+LICENSE="GPL-2 xref? ( xref.lisp )"
+SLOT="0"
+if [[ ${PV} == *9999* ]]; then
+ KEYWORDS=""
+else
+ KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+fi
+IUSE="doc xref"
+RESTRICT=test # tests fail to contact sbcl
+
+RDEPEND="virtual/commonlisp
+ dev-lisp/asdf"
+DEPEND="${RDEPEND}
+ >=sys-apps/texinfo-5.1
+ doc? ( virtual/texi2dvi )"
+
+CLPACKAGE=swank
+CLSYSTEMS=swank
+SITEFILE=70${PN}-gentoo.el
+
+src_unpack() {
+ if [[ ${PV} == *9999* ]]; then
+ EGIT_REPO_URI="https://github.com/slime/slime.git"
+ ${GIT_ECLASS}_src_unpack
+ fi
+ elisp_src_unpack
+}
+
+src_prepare() {
+ if [[ "${PV}" == "2.11" ]]; then
+ epatch "${FILESDIR}"/2.11/dont-load-sbcl-pprint.patch
+ fi
+ epatch "${FILESDIR}"/2.0_p20130214/gentoo-module-load.patch
+ epatch "${FILESDIR}"/2.0_p20110617/gentoo-dont-call-init.patch
+ has_version ">=app-editors/emacs-24" && rm -f lib/cl-lib.el
+
+ # extract date of last update from ChangeLog, bug 233270
+ SLIME_CHANGELOG_DATE=$(awk '/^[-0-9]+ / { print $1; exit; }' ChangeLog)
+ [ -n "${SLIME_CHANGELOG_DATE}" ] || die "cannot determine ChangeLog date"
+
+ # SLIME uses the changelog date to make sure that the emacs side and the CL side
+ # are in sync. We hardcode it instead of letting slime determine it at runtime
+ # because ChangeLog doesn't get installed to $EMACSDIR
+ epatch "${FILESDIR}"/2.11/gentoo-changelog-date.patch
+
+ # When starting slime in emacs, slime looks for ${S}/swank/backend.lisp as
+ # /usr/share/common-lisp/source/swank/swank-backend.lisp
+ pushd swank || die
+ for i in *.lisp
+ do
+ mv ${i} ../swank-${i}
+ done
+ popd
+
+ sed -i "/(defvar \*swank-wire-protocol-version\*/s:nil:\"${SLIME_CHANGELOG_DATE}\":" swank.lisp \
+ || die "sed swank.lisp failed"
+ sed -i "s:@SLIME-CHANGELOG-DATE@:${SLIME_CHANGELOG_DATE}:" slime.el \
+ || die "sed slime.el failed"
+ sed -i "s/@itemx INIT-FUNCTION/@item INIT-FUNCTION/" doc/slime.texi \
+ || die "sed doc/slime.texi failed"
+
+ # Remove xref.lisp (which is non-free) unless USE flag is set
+ use xref || rm -f xref.lisp
+}
+
+src_compile() {
+ elisp-compile *.el || die
+ BYTECOMPFLAGS="${BYTECOMPFLAGS} -L contrib -l slime" \
+ elisp-compile contrib/*.el lib/*.el || die
+ emake -j1 -C doc slime.info || die "Cannot build info docs"
+
+ if use doc; then
+ VARTEXFONTS="${T}"/fonts \
+ emake -j1 -C doc slime.pdf || die "emake doc failed"
+ fi
+}
+
+src_install() {
+ ## install core
+ elisp-install ${PN} *.{el,elc} "${FILESDIR}"/swank-loader.lisp \
+ || die "Cannot install SLIME core"
+ sed "s:/usr/:${EPREFIX}&:g" "${FILESDIR}"/2.0_p20110617/${SITEFILE} \
+ >"${T}"/${SITEFILE} || die "sed failed"
+ elisp-site-file-install "${T}"/${SITEFILE} || die
+ cp "${FILESDIR}"/2.0_p20110617/swank.asd "${S}"
+ # remove upstream swank-loader, since it won't be used
+ rm "${S}"/swank-loader.lisp
+ common-lisp-install-sources *.lisp
+ common-lisp-install-asdf swank.asd
+
+ ## install contribs
+ elisp-install ${PN}/contrib/ contrib/*.{el,elc,scm,goo} \
+ || die "Cannot install contribs"
+ common-lisp-install-sources contrib/*.lisp
+
+ ## install lib
+ elisp-install ${PN}/lib/ lib/*.{el,elc} \
+ || die "Cannot install libs"
+
+ ## install docs
+ dodoc README.md ChangeLog CONTRIBUTING.md NEWS PROBLEMS
+ newdoc contrib/README.md README-contrib.md
+ newdoc contrib/ChangeLog ChangeLog.contrib
+ doinfo doc/slime.info
+ use doc && dodoc doc/*.pdf
+}