app-emacs/rudel: Fix compilation with Emacs 25.
authorUlrich Müller <ulm@gentoo.org>
Sat, 6 Aug 2016 12:29:03 +0000 (14:29 +0200)
committerUlrich Müller <ulm@gentoo.org>
Sat, 6 Aug 2016 12:29:03 +0000 (14:29 +0200)
Bug: 590340

Package-Manager: portage-2.3.0

app-emacs/rudel/files/rudel-0.3_pre20110721-emacs25.patch [new file with mode: 0644]
app-emacs/rudel/rudel-0.3_pre20110721-r1.ebuild [new file with mode: 0644]

diff --git a/app-emacs/rudel/files/rudel-0.3_pre20110721-emacs25.patch b/app-emacs/rudel/files/rudel-0.3_pre20110721-emacs25.patch
new file mode 100644 (file)
index 0000000..98aa38f
--- /dev/null
@@ -0,0 +1,341 @@
+Fix byte-compilation with Emacs 25.
+https://bugs.gentoo.org/590340
+
+This comprises parts of the following commits from ELPA:
+
+commit 9ec4b84e27f3faae8ad3eb5d3e96c523ce1fece2
+Author: Stefan Monnier <monnier@iro.umontreal.ca>
+Date:   Sun Jul 10 18:16:39 2016 -0400
+
+    * rudel-backend.el: Try and fix compilation problem
+
+commit 5e4f147f6b23c392505cb0cbb5f13384d6d96304
+Author: Stefan Monnier <monnier@iro.umontreal.ca>
+Date:   Mon May 12 02:23:00 2014 -0400
+
+    Fix up headers and compilation
+
+--- rudel-orig/rudel-backend.el
++++ rudel/rudel-backend.el
+@@ -46,8 +46,7 @@
+ ;;; Code:
+ ;;
+-(eval-when-compile
+-  (require 'cl))
++(require 'cl)
+ (require 'warnings)
+@@ -97,24 +96,34 @@
+   "Factory class that holds an object for each known backend
+ category. Objects manage backend implementation for one backend
+ category each.")
+-(oset-default rudel-backend-factory factories
++(oset-default 'rudel-backend-factory factories
+             (make-hash-table :test #'eq))
+-(defmethod initialize-instance ((this rudel-backend-factory) &rest slots)
++(defmethod initialize-instance ((this rudel-backend-factory) &rest _slots)
+   "Initialize slots of THIS with SLOTS."
+   (when (next-method-p)
+     (call-next-method))
+-  (oset this :backends (make-hash-table :test #'eq)))
++  (oset this backends (make-hash-table :test #'eq)))
++
++;;;###autoload
++(progn
++(defmacro rudel--with-memoization (place &rest code)
++  (declare (indent 1) (debug t))
++  (gv-letplace (getter setter) place
++    `(or ,getter
++         ,(macroexp-let2 nil val (macroexp-progn code)
++            `(progn
++               ,(funcall setter val)
++               ,val))))))
+ ;;;###autoload
+ (defmethod rudel-get-factory :static ((this rudel-backend-factory)
+                                     category)
+   "Return the factory responsible for CATEGORY.
+ If there is no responsible factory, create one and return it."
+-  (with-slots (factories) this
+-    (or (gethash category factories)
+-      (puthash category (rudel-backend-factory category) factories)))
+-  )
++  (rudel--with-memoization
++   (gethash category (eieio-oref-default this 'factories))
++   (make-instance 'rudel-backend-factory))) ;; category
+ ;;;###autoload
+ (defmethod rudel-add-backend ((this rudel-backend-factory)
+@@ -188,7 +197,8 @@
+        (unless (object-p class)
+        (condition-case error
+            (puthash name (make-instance
+-                          class (symbol-name name)) backends)
++                          class (symbol-name name))
++                      backends)
+          (error
+           ;; Store this error on the name symbol of the backend for
+           ;; later display.
+@@ -224,7 +234,7 @@
+ ;;;###autoload
+ (defun rudel-backend-get-factory (category)
+   "A shortcut for getting the factory object for CATEGORY."
+-  (rudel-get-factory rudel-backend-factory category))
++  (rudel-get-factory 'rudel-backend-factory category))
+ (defun rudel-backend-suitable-backends (category predicate)
+   "Return backends from category CATEGORY that satisfy PREDICATE.
+@@ -290,15 +300,15 @@
+      ;; Insert all backends provided by this factory.
+      (dolist (backend (rudel-all-backends factory))
+-       (if (or (object-p (cdr backend))
+-             (null (get (car backend)
+-                        'rudel-backend-last-load-error)))
+-         (insert (rudel-backend--format-backend-normal backend))
+-       (insert (rudel-backend--format-backend-error backend))))
++       (insert (if (or (object-p (cdr backend))
++                       (null (get (car backend)
++                                  'rudel-backend-last-load-error)))
++                   (rudel-backend--format-backend-normal backend)
++                 (rudel-backend--format-backend-error backend))))
+      ;; One empty line between backend categories.
+      (insert "\n"))
+-   (oref rudel-backend-factory factories))
++   (oref-default 'rudel-backend-factory factories))
+   (current-buffer))
+ (defun rudel-backend--format-backend-normal (backend)
+@@ -316,7 +326,7 @@
+         (propertize
+          (if (object-p (cdr backend))
+              (mapconcat #'prin1-to-string
+-                        (oref (cdr backend) :version)
++                        (oref (cdr backend) version)
+                         ".")
+            "?")
+          'face 'font-lock-constant-face)
+@@ -324,7 +334,7 @@
+         (propertize
+          (if (object-p (cdr backend))
+              (mapconcat #'prin1-to-string
+-                        (oref (cdr backend) :capabilities)
++                        (oref (cdr backend) capabilities)
+                         " ")
+            "?")
+          'face 'font-lock-constant-face))
+--- rudel-orig/rudel-color.el
++++ rudel/rudel-color.el
+@@ -46,6 +46,7 @@
+ ;;; Code:
+ ;;
++(eval-when-compile (require 'cl))
\f
+ ;;; RGV <-> HSV conversion
+ ;;
+--- rudel-orig/rudel.el
++++ rudel/rudel.el
+@@ -41,8 +41,7 @@
+ ;;; Code:
+ ;;
+-(eval-when-compile
+-  (require 'cl))
++(require 'cl)
+ (require 'eieio)
+ (require 'eieio-base)
+--- rudel-orig/rudel-icons.el
++++ rudel/rudel-icons.el
+@@ -41,8 +41,9 @@
+ ;;; Image constants
+ ;;
++(eval-and-compile
+ (defconst rudel-icons-image-formats '(svg png)
+-  "Image formats to try (in that order) when loading Rudel icons.")
++  "Image formats to try (in that order) when loading Rudel icons."))
+ (defvar rudel-icons-directory
+   (file-name-as-directory
+--- rudel-orig/rudel-interactive.el
++++ rudel/rudel-interactive.el
+@@ -38,6 +38,7 @@
\f
+ ;;; Code:
+ ;;
++(require 'cl)
+ (require 'rudel-compat) ;; for `read-color' replacement
+ (require 'rudel-backend) ;; for `rudel-backend-cons-p'
+@@ -80,25 +81,29 @@
+     (setq prompt "Session: "))
+   ;; For presentation and identification of sessions, use the :name
+   ;; property.
+-  (flet ((to-string (session)
+-                  (if (rudel-backend-cons-p session)
+-                      (symbol-name (car session))
+-                    (plist-get session :name))))
++  (let ((to-string
++         (lambda (session)
++           (if (rudel-backend-cons-p session)
++               (symbol-name (car session))
++             (plist-get session :name)))))
+     ;; Read a session by name, then return that name or the
+     ;; corresponding session info.
+     (let ((session-name (completing-read prompt
+-                                       (mapcar #'to-string sessions)
++                                       (mapcar to-string sessions)
+                                        nil t)))
+       (cond
+        ((eq return 'object)
+       (find session-name sessions
+-            :key  #'to-string :test #'string=))
++            :key to-string :test #'string=))
+        (t session-name))))
+   )
+ (defvar rudel-read-user-name-history nil
+   "History of inputs read by `rudel-read-user-name'.")
++(defvar rudel-default-username)
++(defvar rudel-current-session)
++
+ (defun rudel-read-user-name ()
+   "Read a username.
+ The default is taken from `rudel-default-username'."
+--- rudel-orig/rudel-mode.el
++++ rudel/rudel-mode.el
+@@ -48,6 +48,7 @@
+ ;;; Code:
+ ;;
++(require 'cl)
+ (require 'easy-mmode)
+ (require 'easymenu)
+@@ -132,6 +133,8 @@
+          (rudel-buffer-document))))
+   (force-mode-line-update))
++(defvar rudel-header-subscriptions-minor-mode)
++
+ (defun rudel-header-subscriptions--options-changed ()
+   "Update headers in buffers that have header subscriptions mode enabled."
+   (dolist (buffer (buffer-list))
+@@ -228,8 +231,7 @@
+                         #'rudel-header-subscriptions--remove-user))
+     ;; Reset header line to default format.
+-    (setq header-line-format default-header-line-format)
+-    (force-mode-line-update)) ;; TODO remove all handlers
++    (kill-local-variable 'header-line-format)) ;; TODO remove all handlers
+    ;; No buffer document
+    (t
+@@ -237,8 +239,7 @@
+     (setq rudel-header-subscriptions-minor-mode nil)
+     ;; Reset header line to default format.
+-    (setq header-line-format default-header-line-format)
+-    (force-mode-line-update)))
++    (kill-local-variable 'header-line-format)))
+   )
\f
+@@ -411,6 +412,8 @@
+   (force-mode-line-update)
+   )
++(defvar rudel-mode-line-publish-state-minor-mode)
++
+ (defun rudel-mode-line-publish-state--document-attach (document buffer)
+   "Handle attaching of DOCUMENT to BUFFER.
+ When `rudel-mode-line-publish-state-minor-mode' is enabled in
+--- rudel-orig/rudel-overlay.el
++++ rudel/rudel-overlay.el
+@@ -36,8 +36,7 @@
+ (require 'custom)
+-(eval-when-compile
+-  (require 'cl))
++(require 'cl)
+ (require 'eieio)
+--- rudel-orig/rudel-session-initiation.el
++++ rudel/rudel-session-initiation.el
+@@ -54,8 +54,7 @@
+ ;;; Code:
+ ;;
+-(eval-when-compile
+-  (require 'cl))
++(require 'cl)
+ (require 'eieio)
+--- rudel-orig/rudel-speedbar.el
++++ rudel/rudel-speedbar.el
+@@ -77,6 +77,8 @@
+   '([ "Subscribe" #'ignore t])
+   "Menu part in easymenu format used in speedbar while browsing objects.")
++(defvar rudel-current-session)
++
+ (defun rudel-speedbar-toplevel-buttons (dir)
+   "Return a list of objects to display in speedbar.
+ Argument DIR is the directory from which to derive the list of objects."
+--- rudel-orig/rudel-state-machine.el
++++ rudel/rudel-state-machine.el
+@@ -41,8 +41,7 @@
+ ;;; Code:
+ ;;
+-(eval-when-compile
+-  (require 'cl))
++(require 'cl)
+ (require 'eieio)
+--- rudel-orig/rudel-transport-util.el
++++ rudel/rudel-transport-util.el
+@@ -48,7 +48,10 @@
\f
+ ;;; Code:
+ ;;
++(eval-when-compile (require 'cl))
++(require 'eieio)
++(eval-when-compile (require 'rudel-util))
+ (require 'rudel-errors) ;; for `rudel-error'
+ (require 'rudel-transport)
+--- rudel-orig/rudel-util.el
++++ rudel/rudel-util.el
+@@ -43,8 +43,7 @@
+ ;;; Code:
+ ;;
+-(eval-when-compile
+-  (require 'cl))
++(require 'cl)
+ (require 'eieio)
+--- rudel-orig/rudel-xml.el
++++ rudel/rudel-xml.el
+@@ -45,6 +45,7 @@
+ ;;; Code:
+ ;;
++(eval-when-compile (require 'cl))
+ (require 'xml)
\f
diff --git a/app-emacs/rudel/rudel-0.3_pre20110721-r1.ebuild b/app-emacs/rudel/rudel-0.3_pre20110721-r1.ebuild
new file mode 100644 (file)
index 0000000..07b7c39
--- /dev/null
@@ -0,0 +1,50 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+NEED_EMACS=24
+
+inherit readme.gentoo-r1 elisp
+
+DESCRIPTION="Collaborative editing environment for GNU Emacs"
+HOMEPAGE="http://rudel.sourceforge.net/
+       http://www.emacswiki.org/emacs/Rudel"
+# snapshot of bzr://rudel.bzr.sourceforge.net/bzrroot/rudel/trunk
+SRC_URI="https://dev.gentoo.org/~ulm/distfiles/${P}.tar.xz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+S="${WORKDIR}/${PN}"
+ELISP_PATCHES="${P}-emacs25.patch"
+SITEFILE="60${PN}-gentoo.el"
+
+src_compile() {
+       ${EMACS} ${EMACSFLAGS} -l rudel-compile.el || die
+}
+
+src_install() {
+       local dir
+
+       for dir in . adopted infinote jupiter obby socket telepathy tls \
+               xmpp zeroconf
+       do
+               insinto "${SITELISP}/${PN}/${dir}"
+               doins ${dir}/*.{el,elc}
+       done
+
+       elisp-site-file-install "${FILESDIR}/${SITEFILE}"
+
+       insinto "${SITEETC}/${PN}"
+       doins -r icons
+
+       dodoc README INSTALL ChangeLog TODO doc/card.pdf
+
+       DOC_CONTENTS="Connections to Gobby servers require the gnutls-cli program
+               (net-libs/gnutls).
+               \\n\\nThe Avahi daemon (net-dns/avahi) is required for automatic
+               session discovery and advertising."
+       readme.gentoo_create_doc
+}