summaryrefslogtreecommitdiff
path: root/dh-elpa.el
diff options
context:
space:
mode:
authorRémi Vanicat <vanicat@debian.org>2016-07-11 15:29:45 +0200
committerRémi Vanicat <vanicat@debian.org>2016-07-11 16:13:21 +0200
commitf0067363fdc4617ed64c2a7f666d8778c294ff44 (patch)
treec39139c25547773414b4ab4f4289c22b5dbed5c1 /dh-elpa.el
parenta9e48a4b0eb6b45790cc12095bc7ba70fbe90589 (diff)
Use DEB_VERSION_UPSTREAM as elpa version.
Diffstat (limited to 'dh-elpa.el')
-rw-r--r--dh-elpa.el45
1 files changed, 43 insertions, 2 deletions
diff --git a/dh-elpa.el b/dh-elpa.el
index d76830b..31244ef 100644
--- a/dh-elpa.el
+++ b/dh-elpa.el
@@ -60,6 +60,47 @@ current time is used."
#'dhelpa-autoload-insert-section-header)
pkg-dir))
+;; Originally package-buffer-info from package.el in Emacs 24.5.1
+(defun dhelpa-buffer-info ()
+ "Return a `package-desc' describing the package in the current buffer.
+
+If the buffer does not contain a conforming package, signal an
+error. If there is a package, narrow the buffer to the file's
+boundaries.
+
+If there is no version information, use DEB_VERSION_UPSTREAM"
+ (goto-char (point-min))
+ (unless (re-search-forward "^;;; \\([^ ]*\\)\\.el ---[ \t]*\\(.*?\\)[ \t]*\\(-\\*-.*-\\*-[ \t]*\\)?$" nil t)
+ (error "Package lacks a file header"))
+ (let ((file-name (match-string-no-properties 1))
+ (desc (match-string-no-properties 2))
+ (start (line-beginning-position)))
+ (unless (search-forward (concat ";;; " file-name ".el ends here"))
+ (error "Package lacks a terminating comment"))
+ ;; Try to include a trailing newline.
+ (forward-line)
+ (narrow-to-region start (point))
+ (require 'lisp-mnt)
+ ;; Use some headers we've invented to drive the process.
+ (let* ((requires-str (lm-header "package-requires"))
+ ;; Prefer Package-Version; if defined, the package author
+ ;; probably wants us to use it. Otherwise try Version.
+ (pkg-version
+ (or (package-strip-rcs-id (lm-header "package-version"))
+ (package-strip-rcs-id (lm-header "version"))
+ (getenv "DEB_VERSION_UPSTREAM")))
+ (homepage (lm-homepage)))
+ (unless pkg-version
+ (error
+ "Package lacks a \"Version\" or \"Package-Version\" header"))
+ (package-desc-from-define
+ file-name pkg-version desc
+ (if requires-str
+ (package--prepare-dependencies
+ (package-read-from-string requires-str)))
+ :kind 'single
+ :url homepage))))
+
(defun dhelpa-filter-deps-for-debian (deps)
"Filter a list of package.el deps DEPS for Debian.
@@ -109,7 +150,7 @@ autoload files."
(interactive "D")
(let ((pkg-desc (if (derived-mode-p 'tar-mode)
(package-tar-file-info)
- (package-buffer-info))))
+ (dhelpa-buffer-info))))
(dhelpa-unpack pkg-desc destdir epoch-time)
pkg-desc))
@@ -177,7 +218,7 @@ specifies time to use in generated autoloads files."
(condition-case nil
(with-temp-buffer
(find-file root-file)
- (package-buffer-info))
+ (dhelpa-buffer-info))
(error (progn
(message "dh_elpa: couldn't generate -pkg file; please write one")
(kill-emacs -1)))))