X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/6e9ddbb313cf7db66550f93a74cbba12e39e93c0..7cef3569a3d872ea5be07a529b68910bf1d8b790:/lisp/version.el diff --git a/lisp/version.el b/lisp/version.el index bd30f0f81b..e63c51d0d2 100644 --- a/lisp/version.el +++ b/lisp/version.el @@ -24,27 +24,32 @@ ;;; Commentary: -;; This file is loaded uncompiled when dumping Emacs. -;; Doc-strings should adhere to the conventions of make-docfile. - ;;; Code: -(defconst emacs-major-version (progn (string-match "^[0-9]+" emacs-version) (string-to-number (match-string 0 emacs-version))) "\ -Major version number of this version of Emacs. +(defconst emacs-major-version + (progn (string-match "^[0-9]+" emacs-version) + (string-to-number (match-string 0 emacs-version))) + "Major version number of this version of Emacs. This variable first existed in version 19.23.") -(defconst emacs-minor-version (progn (string-match "^[0-9]+\\.\\([0-9]+\\)" emacs-version) (string-to-number (match-string 1 emacs-version))) "\ -Minor version number of this version of Emacs. +(defconst emacs-minor-version + (progn (string-match "^[0-9]+\\.\\([0-9]+\\)" emacs-version) + (string-to-number (match-string 1 emacs-version))) + "Minor version number of this version of Emacs. This variable first existed in version 19.23.") -(defconst emacs-build-time (current-time) "\ -Time at which Emacs was dumped out.") +(defconst emacs-build-time (current-time) + "Time at which Emacs was dumped out.") + +(defconst emacs-build-system (system-name) + "Name of the system on which Emacs was built.") -(defconst emacs-build-system (system-name) "\ -Name of the system on which Emacs was built.") +(defvar motif-version-string) +(defvar gtk-version-string) +(defvar ns-version-string) -(defun emacs-version (&optional here) "\ -Return string describing the version of Emacs that is running. +(defun emacs-version (&optional here) + "Return string describing the version of Emacs that is running. If optional argument HERE is non-nil, insert string at point. Don't use this function in programs to choose actions according to the system configuration; look at `system-configuration' instead." @@ -79,14 +84,46 @@ to the system configuration; look at `system-configuration' instead." ;; We hope that this alias is easier for people to find. (defalias 'version 'emacs-version) +;; Set during dumping, this is a defvar so that it can be setq'd. +(defvar emacs-bzr-version nil + "String giving the bzr revision from which this Emacs was built. +Value is the bzr revision number and a revision ID separated by a blank. +Value is nil if Emacs was not built from a bzr checkout, or if we could +not determine the revision.") + +(defun emacs-bzr-get-version (&optional dir) + "Try to return as a string the bzr revision number of the Emacs sources. +Value is the bzr revision number and a revision ID separated by a blank. +Value is nil if the sources do not seem to be under bzr, or if we could +not determine the revision. Note that this reports on the current state +of the sources, which may not correspond to the running Emacs. + +Optional argument DIR is a directory to use instead of `source-directory'." + (or dir (setq dir source-directory)) + (when (file-directory-p (setq dir (expand-file-name ".bzr/branch" dir))) + (let (file loc) + (cond ((file-readable-p + (setq file (expand-file-name "last-revision" dir))) + (with-temp-buffer + (insert-file-contents file) + (goto-char (point-max)) + (if (looking-back "\n") + (delete-char -1)) + (buffer-string))) + ;; OK, no last-revision. Is it a lightweight checkout? + ((file-readable-p + (setq file (expand-file-name "location" dir))) + ;; If the parent branch is local, try looking there for the revid. + (if (setq loc (with-temp-buffer + (insert-file-contents file) + (if (looking-at "file://\\(.*\\)") + (match-string 1)))) + (emacs-bzr-get-version loc))) + ;; Could fall back to eg `bzr testament' at this point. + )))) + ;; We put version info into the executable in the form that `ident' uses. -(or (eq system-type 'windows-nt) - (purecopy (concat "\n$Id: " (subst-char-in-string ?\n ?\s (emacs-version)) - " $\n"))) - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; End: +(purecopy (concat "\n$Id: " (subst-char-in-string ?\n ?\s (emacs-version)) + " $\n")) ;;; version.el ends here