branch: elpa/vm
commit f9105cc8333538b114a68ec343ae62a779892329
Merge: 3f3deb718dc cc1ea3762ab
Author: Mark Diekhans <[email protected]>
Commit: Mark Diekhans <[email protected]>

    Merge branch 'main' into 'main'
    
    Packaging work for release
    
    See merge request emacs-vm/vm!62
---
 .gitignore             |  9 -------
 INSTALL                | 20 ++++++----------
 Makefile.in            | 65 +++++++++++++++++++++++++++++++++++++++++---------
 NEWS                   |  4 +++-
 README.md              | 17 +++++++++----
 configure.ac           |  2 +-
 dev/docs/dev-guide.org | 22 +++++++++++++++++
 dev/docs/releasing.org | 50 ++++++++++++++++++++++++++++++++++----
 info/vm.texinfo        |  1 +
 lisp/vm.el             | 26 +++++++++++---------
 10 files changed, 162 insertions(+), 54 deletions(-)

diff --git a/.gitignore b/.gitignore
index af79030249a..e14fd76a000 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,6 @@
 *.elc
 TAGS
 configure.lineno
-ChangeLog
-base64-decode
-base64-encode
-qp-decode
-qp-encode
-base64-decode.exe
-base64-encode.exe
-qp-decode.exe
-qp-encode.exe
 *.info*
 *.diff
 *.log
diff --git a/INSTALL b/INSTALL
index 5e9cef2478a..58cef42da17 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,21 +1,15 @@
-PRE-COMPILED BINARIES
-=====================
+PACKAGE INSTALL
+===============
 
-If you have downloaded binaries for Gnu Emacs version 22 or 23, you
-can unpack it to a directory, say ~/vm, and go to step (3) below.
+VM releases are avaliable through a non-gnu ELPA package:
 
-However, this build assumes that you are not using any supporting
-libraries such as BBDB, W3 or W3M.  If you are using such libraries,
-please rebuild VM as indicated below.  
+   M-x package-install <ret> vm <ret>
 
-If you are using XEmacs, you need to do your own build.
 
-USING CONFIGURE
-===============
+BUILD FROM SOURCE
+=================
 
-0) autoconf: If you get VM from the revision control, the `configure' script
-   is not included. You have to run `autoconf' to create it.  If you got VM
-   from a public release, you should skip this step.
+VM source is availabe from https://gitlab.com/emacs-vm/vm
 
 1) configure: First you need to decide the various options.
 
diff --git a/Makefile.in b/Makefile.in
index 987d02eb623..f85d73dc8b5 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -9,6 +9,7 @@ XARGS = @XARGS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+EMACS_PROG = @EMACS_PROG@
 
 prefix = @prefix@
 srcdir = @srcdir@
@@ -66,10 +67,58 @@ distclean:
        -$(RM) -f Makefile vm-load.el config.status config.log
        -$(RM) -rf autom4te.cache
 
-push:
-       $(BZR) push
+##############################################################################
+# linting
+#
+PACKAGE_INIT = --eval "(progn (require 'package) (package-initialize))"
+
+# byte compile check
+byte-compile-lint:
+       rm -f list/*.elc
+       $(EMACS_PROG) -batch -Q -L lisp \
+           --eval '(setq byte-compile-error-on-warn t)' \
+           -f batch-byte-compile lisp/*.el
+
+# native compile check
+native-compile-lint:
+       rm -rf eln.tmp
+       @mkdir -p eln.tmp
+       $(EMACS_PROG) -batch -Q -L lisp \
+           --eval '(setq native-comp-async-report-warnings-errors nil)' \
+           --eval '(setq byte-compile-error-on-warn nil)' \
+           --eval '(dolist (f (directory-files "lisp" t "\\.el$$")) (let ((out 
(concat "eln.tmp/" (file-name-nondirectory f) ".eln"))) (message "Native 
compiling %s..." f) (native-compile f out)))'
+       rm -rf eln.tmp
+
+# check with build-in elint
+elint-lint:
+       $(EMACS_PROG) -batch -Q -l `pwd`/lisp \
+           --eval '(mapc (lambda (f) (message "Checking %s" f) (elint-file f)) 
\
+                         (directory-files "lisp" t "\\.el$$"))'
+
+# check package file with external package-lint
+package-lint:
+       $(EMACS_PROG) -batch -L lisp $(PACKAGE_INIT) \
+           --eval "(require 'package-lint)" \
+           -f package-lint-batch-and-exit lisp/vm.el
+
+# check reqular expressions with external relint
+relint-lint:
+       $(EMACS_PROG) -batch -L lisp $(PACKAGE_INIT) \
+           --eval "(require 'relint)" \
+           -f relint-batch lisp/*.el
+
+
+# check with external elisp-lint
+ELINT_CONFIG = --eval '(setq-default fill-column 80)'
+elisp-lint:
+       $(EMACS_PROG) -batch -L `pwd`/lisp $(PACKAGE_INIT) $(ELINT_CONFIG) \
+           --eval "(require 'elisp-lint)" \
+           -f elisp-lint-files-batch `pwd`/lisp/*.el
+
+.PHONY: byte-compile-lint native-compile-lint elint package-lint relint-lint 
elisp-lint
 
 ##############################################################################
+# xemacs package (not tested)
 PKGDIR =  $(shell pwd)/,,package/
 PKGINFO = $(PKGDIR)/lisp/vm/_pkg.el
 xemacs-package:
@@ -79,9 +128,9 @@ xemacs-package:
          exit 1; \
        fi
        -$(RM) -rf ,,package
-       cd lisp && $(make) PACKAGEDIR=$(PKGDIR)/lisp/vm install-pkg
-       cd info && $(make) infodir=$(PKGDIR)/info install-pkg
-       cd src && $(make) infodir=$(PKGDIR)/bin install-pkg
+       cd lisp && $(MAKE) PACKAGEDIR=$(PKGDIR)/lisp/vm install-pkg
+       cd info && $(MAKE) infodir=$(PKGDIR)/info install-pkg
+       cd src && $(MAKE) infodir=$(PKGDIR)/bin install-pkg
        echo ";;;###autoload" > $(PKGINFO)
        echo "(package-provide 'vm'" > $(PKGINFO)
        echo "         :version $(PACKAGE_VERSION)" >> $(PKGINFO)
@@ -93,12 +142,6 @@ xemacs-package:
        cd ,,package; $(TAR) -cvzf ../vm-pkg.tar.gz *
 
 ##############################################################################
-release::
-       ./release.sh
-
-snapshot::
-       ./release.sh snapshot
-
 tags::
        etags lisp/*.el contrib/*.el info/*.texinfo NEWS example.vm INSTALL 
Makefile.in lisp/Makefile.in info/Makefile.in src/Makefile.in 
pixmaps/Makefile.in
 
diff --git a/NEWS b/NEWS
index 8bd21f72549..a7ee3afddd2 100644
--- a/NEWS
+++ b/NEWS
@@ -22,7 +22,8 @@ Status
   Bug reports (email):     [email protected]
                            (Please use `M-x vm-submit-bug-report' within VM)
 
-VM 8.3.0 <in progress>
+VM 8.3.0 (pending)
+
   CHANGES
   * VM development convert from bzr to git and moved to GitLab.
   * Merged multiple pending changes.
@@ -31,6 +32,7 @@ VM 8.3.0 <in progress>
   * Remove outdated copy of vcard support in favor of standard package, which 
must
     me install for vcard functionality to work
   * Enable vm-mail-check-recipient-format by default
+  * Multiple bug fixes
 
 VM 8.2.0b1
 
diff --git a/README.md b/README.md
index 4838317602d..f175bd893f0 100644
--- a/README.md
+++ b/README.md
@@ -9,17 +9,26 @@ mailer. It has a powerful virtual folder facility to 
facilitate
 searching as well as more advanced handling of multiple mail folders.
 This site exists to continue VM development community project.
 
+VM is available from 
+  <https://gitlab.com/emacs-vm/vm>
+
 ## Version Information
 
 The VM versions 8.3.0 and up are designed to work with:
 
-- Gnu Emacs versions 28. or higher
+- Gnu Emacs versions 28.1 or higher
 - XEmacs version (not currently tested with XEmacs)
 
 ## Installation
 
-Read [INSTALL](INSTALL) and follow the instructions to compile and
-setup VM.
+VM releases are avaliable through a non-gnu ELPA package:
+
+```
+   M-x package-install <ret> vm <ret>
+```
+
+If you wish to build from source, see [INSTALL](INSTALL)
+for instructions.
 
 If you are new to VM, see example.vm for example configuration
 settings (to be put into a `~/.vm` file). Read more in the VM manual
@@ -28,7 +37,7 @@ in _info_ format.
 ## Bugs
 
 The preferred way to report bugs is to file issues at
-https://gitlab.com/emacs-vm/vm/-/issues.
+  <https://gitlab.com/emacs-vm/vm/-/issues>
 
 Alternatively, bugs can be reported report in VM using the VM function.
 
diff --git a/configure.ac b/configure.ac
index e26f37a19cf..43b06c325cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -237,7 +237,7 @@ TEST
 ])
 
 ##############################################################################
-AC_INIT([VM],[8.3.x],[[email protected]])
+AC_INIT([VM],[8.3.0snapshot],[[email protected]])
 # Name of the application
 # Version (release) number
 # Contact address
diff --git a/dev/docs/dev-guide.org b/dev/docs/dev-guide.org
new file mode 100644
index 00000000000..abde2dcce8d
--- /dev/null
+++ b/dev/docs/dev-guide.org
@@ -0,0 +1,22 @@
+
+* code linting
+** byte and native compile check
+make byte-compile-lint
+make native-compile-lint
+
+** package-lint of vm.el (external package-lint)
+make package-lint
+
+** regular expresion lint (external relint)
+make relint-lint
+
+** elint
+make elint-lint
+*** This is current very broken:
+gets Lisp nesting exceeds `max-lisp-eval-depth': 1601
+
+
+** elisp-lint (external package elisp-lint)
+make elisp-lint
+*** lots of errors, many false positives.
+
diff --git a/dev/docs/releasing.org b/dev/docs/releasing.org
index efd046c1eb9..e0369be3de5 100644
--- a/dev/docs/releasing.org
+++ b/dev/docs/releasing.org
@@ -1,11 +1,53 @@
 Releasing VM
 
-* pre-release testing:
-(package-vc-install '("https://gitlab.com/USER/REPO.git"; :rev "v1.2.3"))
+* use package-lint to check vm.el packages
+requires package-lint
+  make package-lint
+or 
+  M-x package-lint-current-buffer
+note lint will not be clean, due to xemacs references
 
+* release is built initial in fork
+then merge to make official
 
+* version update in these files:
+- Add note release to info/vm.texinfo @item Version ..
+- NEWS
+- version in configure.ac AC_INIT
+- lisp/vm.el Version:
+  
+* test build
+- make distclean
+- autoconf
+- configure
+- make
 
-* post-release testing
-(package-vc-install '("https://gitlab.com/USER/REPO.git"; :rev "v1.2.3"))
+* pre-release testing from repo:
+(package-vc-install 
+  '(vm :url "file:////Users/markd/projs/emacs/vm/vm-markd"
+       :lisp-dir "lisp"))
+
+
+* commit and tag
+- tag is in the form '3.0.0'
+- a branch are only made if changes are needed relative to a tag
+
+
+* pre-release testing from fork:
+(package-vc-install
+  '(vm :url"https://gitlab.com/USER/vm.git";
+       :lisp-dir "lisp"
+       :branch "3.0.0"))
+  
+* post-release testing from main repo:
+(package-vc-install
+  '(vm :url"https://gitlab.com/emacs-vm/vm.git";
+       :lisp-dir "lisp"
+       :branch "3.0.0"))
+
+* push and test install once available in nongnu ELPA
+
+* update version to a snapshot of the next patch
+e.g. 3.0.0 -> 3.0.1snapshot
 
 
diff --git a/info/vm.texinfo b/info/vm.texinfo
index 7ebae96e4c1..2b257927e1f 100644
--- a/info/vm.texinfo
+++ b/info/vm.texinfo
@@ -7215,6 +7215,7 @@ Please let us know if any contributors have been missed 
out.
 @item Version 8.1.1, released 25 April, 2010.
 @item Version 8.1.2, released 5 March, 2012.
 @item Version 8.2.0, planned for release in March, 2013.
+@item Version 8.3.0snapshot, coming soon
 @end itemize
 
 
diff --git a/lisp/vm.el b/lisp/vm.el
index db9c5fc452e..0bd0b6232e3 100644
--- a/lisp/vm.el
+++ b/lisp/vm.el
@@ -1,4 +1,4 @@
-;;; vm.el --- Entry points for VM  -*- lexical-binding: t; -*-
+;;; vm.el --- VM mail reader -*- lexical-binding: t; -*-
 ;;
 ;; This file is part of VM
 ;;
@@ -9,7 +9,8 @@
 ;; Version: 8.3.0snapshot
 ;; Maintainer: [email protected]
 ;; URL: https://gitlab.com/emacs-vm/vm
-;; Package-Requires: ((emacs "28.0") (vcard "0.2.2"))
+;; Package-Requires: ((emacs "28.1") (vcard "0.2.2"))
+;; Keywords: mail
 ;;
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -25,10 +26,13 @@
 ;; with this program; if not, write to the Free Software Foundation, Inc.,
 ;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-
-;;; History:
-;;
-;; This file was vm-startup.el!
+;;; Commentary:
+;; VM mail reader for Emacs
+;; It is designed ot be highly configurable and easy to use. It supports POP
+;; and IMAP mail servers, understands MIME, and handles mail folders in the
+;; standard UNIX mailbox format and the BABYL format used by the RMAIL
+;; mailer. It has a powerful virtual folder facility to facilitate searching
+;; as well as more advanced handling of multiple mail folders.
 
 ;;; Code:
 
@@ -58,7 +62,8 @@
 (eval-when-compile (require 'cl-lib))
 (require 'package)
 
-(defconst vm-min-emacs-version "28.0"
+;; keep vm-min-emacs-version in sync with above Package-Requires
+(defconst vm-min-emacs-version "28.1"
   "Minimum Emacs version supported by VM.")
 
 (defvar enable-multibyte-characters)
@@ -78,7 +83,7 @@
 
 ;; vm-xemacs.el is a non-existent file to fool the Emacs 23 compiler
 (declare-function get-coding-system "vm-xemacs.el" (name))
-(declare-function find-face "vm-xemacs.el" (face-or-name))
+(declare-function facep "vm-xemacs.el" (face-or-name))
 
 (declare-function vm-rfaddons-infect-vm "vm-rfaddons.el" 
                  (&optional sit-for option-list exclude-option-list))
@@ -1716,9 +1721,8 @@ draft messages."
 (defun vm--commit-from-package (pkg)
   "Get commit hash from PKG, whether VC-installed or archive-installed."
   (let ((desc (package-get-descriptor pkg)))
-    (or (when (package-vc-p desc)
-          (package-vc-commit desc))
-        (alist-get :commit (package-desc-extras desc)))))
+    (or (alist-get :commit (package-desc-extras desc))
+        "unknown-commit")))
 
 (defun vm--version-info-from-package ()
   "Return version and commit if VM is loaded from a package."

Reply via email to