mirror of
https://github.com/correl/melpa.git
synced 2024-11-15 03:00:14 +00:00
Fixed the wonkiness. About to test.
This commit is contained in:
parent
d6136c239d
commit
00d101530d
1 changed files with 86 additions and 59 deletions
123
package-build.el
123
package-build.el
|
@ -152,24 +152,15 @@
|
||||||
(cons newval (cdr lst))
|
(cons newval (cdr lst))
|
||||||
(cons (car lst) (package-change-list-elt (cdr lst) (1- idx) newval))))
|
(cons (car lst) (package-change-list-elt (cdr lst) (1- idx) newval))))
|
||||||
|
|
||||||
(defun package-build-pkg-file (pkg-file file-name version homepage)
|
(defun package-build-pkg-file (pkg-file pkg-info)
|
||||||
"build the pkg file"
|
"build the pkg file"
|
||||||
(let ((print-level nil)
|
(let ((print-level nil)
|
||||||
(print-length nil)
|
(print-length nil)
|
||||||
(pkglst
|
(pkg-list (list 'define-package
|
||||||
(or (package-read-from-file pkg-file)
|
(aref pkg-info 0)
|
||||||
(list 'define-package
|
(aref pkg-info 3)
|
||||||
file-name
|
(aref pkg-info 2)
|
||||||
version
|
(aref pkg-info 1))))
|
||||||
homepage
|
|
||||||
(list 'quote (mapcar
|
|
||||||
(lambda (elt)
|
|
||||||
(list (car elt)
|
|
||||||
(package-version-join (cadr elt))))
|
|
||||||
nil))))))
|
|
||||||
|
|
||||||
;; set the packages version
|
|
||||||
(setq pkglst (package-change-list-elt pkglst 2 version))
|
|
||||||
|
|
||||||
(write-region
|
(write-region
|
||||||
(concat
|
(concat
|
||||||
|
@ -226,8 +217,37 @@
|
||||||
(mapc 'package-build-archive pkgs)
|
(mapc 'package-build-archive pkgs)
|
||||||
(package-build-dump-archive-contents))
|
(package-build-dump-archive-contents))
|
||||||
|
|
||||||
|
(defun package-get-package-info (file-name)
|
||||||
|
(when (file-exists-p file-name)
|
||||||
|
(save-window-excursion
|
||||||
|
(find-file file-name)
|
||||||
|
(flet ((package-strip-rcs-id
|
||||||
|
(str)
|
||||||
|
(when str
|
||||||
|
(when (string-match "\\`[ \t]*[$]Revision:[ \t]+" str)
|
||||||
|
(setq str (substring str (match-end 0))))
|
||||||
|
(setq str (car (split-string str)))
|
||||||
|
(condition-case nil
|
||||||
|
(if (version-to-list str)
|
||||||
|
str)
|
||||||
|
(error nil)))))
|
||||||
|
(package-buffer-info)))))
|
||||||
|
|
||||||
|
(defun package-get-pkgfile-info (file-name)
|
||||||
|
(when (file-exists-p file-name)
|
||||||
|
(let ((pkgfile-info (cdr (package-read-from-file file-name))))
|
||||||
|
(vector
|
||||||
|
(nth 0 pkgfile-info)
|
||||||
|
(mapcar
|
||||||
|
(lambda (elt)
|
||||||
|
(list (car elt) (version-to-list (cadr elt))))
|
||||||
|
(eval (nth 3 pkgfile-info)))
|
||||||
|
(nth 2 pkgfile-info)
|
||||||
|
(nth 1 pkgfile-info)))))
|
||||||
|
|
||||||
|
|
||||||
(defun package-build-archive (file-name)
|
(defun package-build-archive (file-name)
|
||||||
"build a git package archive"
|
"build a package archive"
|
||||||
(interactive)
|
(interactive)
|
||||||
|
|
||||||
(let* ((name (intern file-name))
|
(let* ((name (intern file-name))
|
||||||
|
@ -240,10 +260,7 @@
|
||||||
|
|
||||||
(let* ((repo-type (plist-get cfg :fetcher))
|
(let* ((repo-type (plist-get cfg :fetcher))
|
||||||
(repo-url (plist-get cfg :url))
|
(repo-url (plist-get cfg :url))
|
||||||
(summary (plist-get cfg :summary))
|
|
||||||
(files (plist-get cfg :files))
|
(files (plist-get cfg :files))
|
||||||
(pkglst)
|
|
||||||
(pkgdeps)
|
|
||||||
(version
|
(version
|
||||||
(cond
|
(cond
|
||||||
((eq repo-type 'svn)
|
((eq repo-type 'svn)
|
||||||
|
@ -255,42 +272,49 @@
|
||||||
((eq repo-type 'darcs)
|
((eq repo-type 'darcs)
|
||||||
(print 'Darcs)
|
(print 'Darcs)
|
||||||
(package-build-checkout-darcs repo-url pkg-cwd))))
|
(package-build-checkout-darcs repo-url pkg-cwd))))
|
||||||
(pkg-base-dir (concat file-name "-" version))
|
|
||||||
(pkg-file (concat file-name "-pkg.el"))
|
|
||||||
(default-directory package-build-working-dir))
|
(default-directory package-build-working-dir))
|
||||||
|
|
||||||
(cond
|
(cond
|
||||||
((= 1 (length files))
|
((= 1 (length files))
|
||||||
(copy-file (expand-file-name (car files) pkg-cwd)
|
(let* ((pkgsrc (expand-file-name (car files) pkg-cwd))
|
||||||
|
(pkg-info (package-get-package-info pkgsrc)))
|
||||||
|
(unless pkg-info
|
||||||
|
(setq pkg-info
|
||||||
|
(vector file-name nil "No description available." version)))
|
||||||
|
(aset version 3 pkg-info)
|
||||||
|
(copy-file pkgsrc
|
||||||
(expand-file-name (concat file-name "-" version ".el")
|
(expand-file-name (concat file-name "-" version ".el")
|
||||||
package-build-archive-dir))
|
package-build-archive-dir))
|
||||||
(package-build-add-to-archive-contents
|
(package-build-add-to-archive-contents pkg-info 'single)))
|
||||||
name version pkgdeps summary 'single))
|
|
||||||
|
|
||||||
(t
|
(t
|
||||||
(copy-directory file-name pkg-base-dir)
|
(let* ((pkg-dir (concat file-name "-" version))
|
||||||
(setq pkglst
|
(pkg-tar-dir
|
||||||
(package-build-pkg-file
|
(file-name-as-directory
|
||||||
(expand-file-name
|
(expand-file-name pkg-dir package-build-working-dir)))
|
||||||
pkg-file
|
(pkg-file (concat file-name "-pkg.el"))
|
||||||
(concat
|
(pkg-info (package-get-pkgfile-info
|
||||||
(file-name-as-directory package-build-working-dir)
|
(expand-file-name pkg-file pkg-tar-dir))))
|
||||||
(file-name-as-directory pkg-base-dir)))
|
|
||||||
file-name version summary))
|
(copy-directory file-name pkg-dir)
|
||||||
(setq pkgdeps (mapcar
|
(unless pkg-info
|
||||||
(lambda (elt)
|
(setq pkg-info (package-get-package-info
|
||||||
(list (car elt) (version-to-list (cadr elt))))
|
(expand-file-name file-name pkg-tar-dir))))
|
||||||
(eval (nth 4 pkglst))))
|
(unless pkg-info
|
||||||
|
(setq pkg-info
|
||||||
|
(vector file-name nil "No description available." version)))
|
||||||
|
(package-build-pkg-file (expand-file-name pkg-file pkg-tar-dir)
|
||||||
|
pkg-info))
|
||||||
|
|
||||||
(when files
|
(when files
|
||||||
(add-to-list 'files pkg-file))
|
(add-to-list 'files pkg-file))
|
||||||
|
|
||||||
(package-build-create-tar
|
(package-build-create-tar
|
||||||
pkg-base-dir
|
pkg-dir
|
||||||
(expand-file-name
|
(expand-file-name
|
||||||
(concat file-name "-" version ".tar") package-build-archive-dir)
|
(concat file-name "-" version ".tar") package-build-archive-dir)
|
||||||
files)
|
files)
|
||||||
(delete-directory pkg-base-dir t nil)
|
|
||||||
(package-build-add-to-archive-contents
|
(delete-directory pkg-dir t nil)
|
||||||
name version pkgdeps summary 'tar))))
|
(package-build-add-to-archive-contents pkg-info 'tar))))
|
||||||
(package-build-dump-archive-contents))))
|
(package-build-dump-archive-contents))))
|
||||||
|
|
||||||
|
|
||||||
|
@ -324,10 +348,13 @@
|
||||||
(expand-file-name "archive-contents" package-build-archive-dir)
|
(expand-file-name "archive-contents" package-build-archive-dir)
|
||||||
nil nil nil nil))
|
nil nil nil nil))
|
||||||
|
|
||||||
|
(defun package-build-add-to-archive-contents (pkg-info type)
|
||||||
(defun package-build-add-to-archive-contents (name version deps homepage type)
|
|
||||||
"add an archive to the package-build-archive-contents"
|
"add an archive to the package-build-archive-contents"
|
||||||
(let ((existing (assq name package-build-archive-alist)))
|
(let ((name (aref pkg-info 0))
|
||||||
|
(requires (aref pkg-info 1))
|
||||||
|
(desc (or (aref pkg-info 2) "No description available."))
|
||||||
|
(version (aref pkg-info 3))
|
||||||
|
(existing (assq name package-build-archive-alist)))
|
||||||
(when existing
|
(when existing
|
||||||
(setq package-build-archive-alist
|
(setq package-build-archive-alist
|
||||||
(delq existing package-build-archive-alist)))
|
(delq existing package-build-archive-alist)))
|
||||||
|
@ -335,6 +362,6 @@
|
||||||
(cons name
|
(cons name
|
||||||
(vector
|
(vector
|
||||||
(version-to-list version)
|
(version-to-list version)
|
||||||
deps
|
requires
|
||||||
homepage
|
desc
|
||||||
type)))))
|
type)))))
|
||||||
|
|
Loading…
Reference in a new issue