emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
blob ef12f4a3d1ddbc83234edc218c647afcc34df70a 4532 bytes (raw)
name: UTILITIES/org-fixup.el 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
 
;;; org-fixup.el - to make life easier for folks without GNU make
;;
;; Author: Achim Gratz
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
;;
;; This file is not yet part of GNU Emacs.
;;
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING.  If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Commentary:

(require 'org-compat)
(require 'autoload)

(defun org-make-org-version (org-release org-git-version odt-dir)
  (with-temp-buffer
    (insert "\
;;; org-version.el --- autogenerated file, do not edit
;;
;;; Code:
;;;\#\#\#autoload
\(defun org-release ()
  \"The release version of org-mode.
  Inserted by installing org-mode or when a release is made.\"
   (let ((org-release \"" org-release "\"))
     org-release))
;;;\#\#\#autoload
\(defun org-git-version ()
  \"The Git version of org-mode.
  Inserted by installing org-mode or when a release is made.\"
   (let ((org-git-version \"" org-git-version "\"))
     org-git-version))
;;;\#\#\#autoload
\(defconst org-odt-data-dir \"" odt-dir "\"
  \"The location of ODT styles.\")
\f\n;; Local Variables:\n;; version-control: never
;; no-byte-compile: t
;; coding: utf-8\n;; End:\n;;; org-version.el ends here\n")
    (toggle-read-only 0)
    (write-file "org-version.el")))

(defun org-make-org-install ()
  (with-temp-buffer
    (set-visited-file-name "org-install.el")
    (insert ";;; org-install.el --- autogenerated file, do not edit\n;;\n;;; Code:\n")
    (let ((files (directory-files default-directory nil "^\\(org\\|ob\\)\\(-.*\\)?\\.el$")))
      (mapc (lambda (f) (generate-file-autoloads f)) files))
    (insert "\f\n(provide 'org-install)\n")
    (insert "\f\n;; Local Variables:\n;; version-control: never\n")
    (insert ";; no-byte-compile: t\n;; no-update-autoloads: t\n")
    (insert ";; coding: utf-8\n;; End:\n;;; org-install.el ends here\n")
    (toggle-read-only 0)
    (save-buffer)))

(defun org-make-autoloads ()
  (let* ((origin default-directory)
	 (dirlisp (org-find-library-dir "org"))
	 (dirorg (concat dirlisp "../" ))
	 (dirodt (if (boundp 'org-odt-data-dir)
		     org-odt-data-dir
		   (concat dirorg "etc/"))))
    (unwind-protect
	(progn
	  (cd dirlisp)
	  (org-fixup)
	  (org-make-org-version (org-release) (org-git-version) dirodt)
	  (org-make-org-install))
      (cd origin))))

(defun org-make-autoloads-compile (&rest force)
  (let* ((origin default-directory)
	 (dirlisp (org-find-library-dir "org")))
    (unwind-protect
	(progn
	  (cd dirlisp)
	  (org-make-autoloads)
	  (byte-recompile-directory dirlisp 0 force))
      (cd origin))))

(defmacro org-fixup ()
  (let* ((origin default-directory)
	 (dirlisp (org-find-library-dir "org"))
	 (dirorg (concat dirlisp "../" ))
	 (dirgit (concat dirorg ".git/" ))
	 (org-version "N/A-fixup")
	 (org-git-version "N/A-fixup !!check installation!!"))
    (if (load (concat dirlisp "org-version.el") 'noerror 'nomessage 'nosuffix)
	(setq org-version     (org-release)
	      org-git-version (org-git-version))
      (when (and (file-exists-p dirgit)
		 (executable-find "git"))
	(unwind-protect
	    (progn
	      (cd dirorg)
	      (let ((git6 (substring (shell-command-to-string "git describe --abbrev=6 HEAD") 0 -1))
		    (git0 (substring (shell-command-to-string "git describe --abbrev=0 HEAD") 0 -1))
		    (gitd (string-match "\\S-" (shell-command-to-string "git status -uno --porcelain"))))
		(setq org-git-version (concat git6 (when gitd ".dirty")))
		(if (string-match "^release_" git0)
		    (setq org-version (substring git0 8))
		  (setq org-version git0))))
	  (cd origin))))
    `(progn
       (defun org-release () ,org-version)
       (defun org-git-version () ,org-git-version)
       "org-fixup.el: redefined org version.")))

(provide 'org-fixup)
\f
;; Local Variables:
;; no-byte-compile: t
;; coding: utf-8
;; End:
;;; org-fixup.el ends here

debug log:

solving ef12f4a ...
found ef12f4a in https://git.savannah.gnu.org/cgit/emacs/org-mode.git

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).