diff options
author | ashish <ashish@FreeBSD.org> | 2015-03-23 22:12:30 +0800 |
---|---|---|
committer | ashish <ashish@FreeBSD.org> | 2015-03-23 22:12:30 +0800 |
commit | 6a75da6db20a1577e1e0a9264aa228a397ce3f6e (patch) | |
tree | c93cc5a88bd474790c0ae2d3bbe2e481564888fb /editors/emacs-devel | |
parent | 83c0b4da8cd5cde047a5cefdf96682a58dd70379 (diff) | |
download | freebsd-ports-gnome-6a75da6db20a1577e1e0a9264aa228a397ce3f6e.tar.gz freebsd-ports-gnome-6a75da6db20a1577e1e0a9264aa228a397ce3f6e.tar.zst freebsd-ports-gnome-6a75da6db20a1577e1e0a9264aa228a397ce3f6e.zip |
- Update to git snapshot 4a50af93
- Add an OPTION to enable support for LLDB debugger to GUD[1], provided
by third-party diff
- Add CPE information[2]
PR: 198022[1], 198239[2]
Submitted by: pfg[1], shun <shun.fbsd.pr at dropcut.net>[2]
Diffstat (limited to 'editors/emacs-devel')
-rw-r--r-- | editors/emacs-devel/Makefile | 11 | ||||
-rw-r--r-- | editors/emacs-devel/distinfo | 4 | ||||
-rw-r--r-- | editors/emacs-devel/files/extrapatch-lldb-gud.el | 294 | ||||
-rw-r--r-- | editors/emacs-devel/pkg-plist | 8 |
4 files changed, 310 insertions, 7 deletions
diff --git a/editors/emacs-devel/Makefile b/editors/emacs-devel/Makefile index eb4f18872ef9..d3b0ff2c9d79 100644 --- a/editors/emacs-devel/Makefile +++ b/editors/emacs-devel/Makefile @@ -22,14 +22,16 @@ CONFLICTS= emacs-19.* emacs21-[0-9]* emacs22-[0-9]* emacs23-[0-9]* \ emacs-nox11-[0-9]* EMACS_VER= 25.0.50 -EMACS_REV= 20150206.5c9ad35f +EMACS_REV= 20150321.4a50af93 GNU_CONFIGURE= yes -USES= gmake makeinfo ncurses pkgconfig shebangfix tar:xz +USES= cpe gmake makeinfo ncurses pkgconfig shebangfix tar:xz CPPFLAGS+= -I${LOCALBASE}/include LDFLAGS+= -L${LOCALBASE}/lib INFO_PATH= ${DATADIR_REL}/info WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} USE_AUTOTOOLS= autoconf:env aclocal:env automake:env autoheader:env +CPE_VENDOR= gnu +CPE_VERSION= ${EMACS_VER} SUB_FILES= pkg-install SUB_LIST+= ARCHLIBDIR=${PREFIX}/libexec/emacs/${EMACS_VER}/${CONFIGURE_TARGET} @@ -53,7 +55,7 @@ INFO= ada-mode auth autotype bovine calc ccmode cl dbus dired-x \ srecode todo-mode tramp url vhdl-mode vip viper widget wisent woman OPTIONS_DEFINE= X11 ACL DBUS GCONF GIF JPEG M17N OTF PNG SOUND SOURCES SVG TIFF SCROLLBARS \ - XFT XIM XML XPM MAGICK GNUTLS GSETTINGS LTO FILENOTIFY + XFT XIM XML XPM MAGICK GNUTLS GSETTINGS LTO FILENOTIFY LLDB OPTIONS_SINGLE= X11 SOUND @@ -69,6 +71,7 @@ M17N_DESC= M17N support for text-shaping OTF_DESC= Opentype fonts suport FILENOTIFY_DESC= File notification support LTO_DESC= Enable link-time optimization (requires GCC 4.6+) +LLDB_DESC= Enable lldb support for GUD (from llvm.org) OPTIONS_SINGLE_X11= GTK2 GTK3 XAW XAW3D MOTIF OPTIONS_SINGLE_SOUND= ALSA OSS @@ -78,6 +81,8 @@ OPTIONS_DEFAULT=ACL DBUS GCONF GIF GTK2 JPEG M17N OTF PNG SOUND SOURCES SVG TIFF OPTIONS_SUB= SOURCES +LLDB_EXTRA_PATCHES= ${PATCHDIR}/extrapatch-lldb-gud.el + SOUND_CONFIGURE_OFF= --with-sound=no ALSA_CONFIGURE_ON= --with-sound=alsa ALSA_LIB_DEPENDS= libasound.so:${PORTSDIR}/audio/alsa-lib diff --git a/editors/emacs-devel/distinfo b/editors/emacs-devel/distinfo index 5d8e760a1afe..f2ed97df2b00 100644 --- a/editors/emacs-devel/distinfo +++ b/editors/emacs-devel/distinfo @@ -1,2 +1,2 @@ -SHA256 (emacs-25.0.50.20150206.5c9ad35f.tar.xz) = 7e44251913596e2181e1697dca000afcc49f2566c196ff2a28df1e16995ce65b -SIZE (emacs-25.0.50.20150206.5c9ad35f.tar.xz) = 24728492 +SHA256 (emacs-25.0.50.20150321.4a50af93.tar.xz) = a0aadbf08666febec682901c3e925393e2bdb8c83ae71437b4bd7920e60c136f +SIZE (emacs-25.0.50.20150321.4a50af93.tar.xz) = 24789768 diff --git a/editors/emacs-devel/files/extrapatch-lldb-gud.el b/editors/emacs-devel/files/extrapatch-lldb-gud.el new file mode 100644 index 000000000000..9e2799e82963 --- /dev/null +++ b/editors/emacs-devel/files/extrapatch-lldb-gud.el @@ -0,0 +1,294 @@ + +$FreeBSD$ + +This diff is retrieved from http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg00274.html + +And traces its origin back to https://gitorious.org/lldb/lldb/commit/40e4dbf + +It's also present on Apple's OS site: + +http://www.opensource.apple.com/source/lldb/lldb-76/utils/emacs/ + +diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el +index 42c5b20..7f2e9c0 100644 +--- lisp/progmodes/gud.el ++++ lisp/progmodes/gud.el +@@ -35,7 +35,7 @@ + ;; kluge with the gud-xdb-directories hack producing gud-dbx-directories. + ;; Derek L. Davies <ddavies@world.std.com> added support for jdb (Java + ;; debugger.) Jan Nieuwenhuizen added support for the Guile REPL (Guile +-;; debugger). ++;; debugger). llvm.org added support for lldb. + + ;;; Code: + +@@ -56,7 +56,7 @@ + + (defgroup gud nil + "The \"Grand Unified Debugger\" interface. +-Supported debuggers include gdb, sdb, dbx, xdb, perldb, ++Supported debuggers include lldb, gdb, sdb, dbx, xdb, perldb, + pdb (Python), and jdb." + :group 'processes + :group 'tools) +@@ -141,12 +141,12 @@ Used to gray out relevant toolbar icons.") + (display-graphic-p) + (fboundp 'x-show-tip)) + :visible (memq gud-minor-mode +- '(gdbmi guiler dbx sdb xdb pdb)) ++ '(lldb gdbmi guiler dbx sdb xdb pdb)) + :button (:toggle . gud-tooltip-mode)) + ([refresh] "Refresh" . gud-refresh) + ([run] menu-item "Run" gud-run + :enable (not gud-running) +- :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb))) ++ :visible (memq gud-minor-mode '(lldb gdbmi gdb dbx jdb))) + ([go] menu-item (if (bound-and-true-p gdb-active-process) + "Continue" "Run") gud-go + :visible (and (eq gud-minor-mode 'gdbmi) +@@ -164,18 +164,18 @@ Used to gray out relevant toolbar icons.") + ([tbreak] menu-item "Temporary Breakpoint" gud-tbreak + :enable (not gud-running) + :visible (memq gud-minor-mode +- '(gdbmi gdb sdb xdb))) ++ '(lldb gdbmi gdb sdb xdb))) + ([break] menu-item "Set Breakpoint" gud-break + :enable (not gud-running) + :visible (gud-tool-bar-item-visible-no-fringe)) + ([up] menu-item "Up Stack" gud-up + :enable (not gud-running) + :visible (memq gud-minor-mode +- '(gdbmi gdb guiler dbx xdb jdb pdb))) ++ '(lldb gdbmi gdb guiler dbx xdb jdb pdb))) + ([down] menu-item "Down Stack" gud-down + :enable (not gud-running) + :visible (memq gud-minor-mode +- '(gdbmi gdb guiler dbx xdb jdb pdb))) ++ '(lldb gdbmi gdb guiler dbx xdb jdb pdb))) + ([pp] menu-item "Print S-expression" gud-pp + :enable (and (not gud-running) + (bound-and-true-p gdb-active-process)) +@@ -187,7 +187,7 @@ Used to gray out relevant toolbar icons.") + "Dump object" + "Print Dereference") gud-pstar + :enable (not gud-running) +- :visible (memq gud-minor-mode '(gdbmi gdb jdb))) ++ :visible (memq gud-minor-mode '(lldb gdbmi gdb jdb))) + ([print] menu-item "Print Expression" gud-print + :enable (not gud-running)) + ([watch] menu-item "Watch Expression" gud-watch +@@ -196,13 +196,13 @@ Used to gray out relevant toolbar icons.") + ([finish] menu-item "Finish Function" gud-finish + :enable (not gud-running) + :visible (memq gud-minor-mode +- '(gdbmi gdb guiler xdb jdb pdb))) ++ '(lldb gdbmi gdb guiler xdb jdb pdb))) + ([stepi] menu-item "Step Instruction" gud-stepi + :enable (not gud-running) +- :visible (memq gud-minor-mode '(gdbmi gdb dbx))) ++ :visible (memq gud-minor-mode '(lldb gdbmi gdb dbx))) + ([nexti] menu-item "Next Instruction" gud-nexti + :enable (not gud-running) +- :visible (memq gud-minor-mode '(gdbmi gdb dbx))) ++ :visible (memq gud-minor-mode '(lldb gdbmi gdb dbx))) + ([step] menu-item "Step Line" gud-step + :enable (not gud-running)) + ([next] menu-item "Next Line" gud-next +@@ -237,7 +237,7 @@ Used to gray out relevant toolbar icons.") + :visible (not (eq gud-minor-mode 'gdbmi))) + ([menu-bar run] menu-item + ,(propertize "run" 'face 'font-lock-doc-face) gud-run +- :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb))) ++ :visible (memq gud-minor-mode '(lldb gdbmi gdb dbx jdb))) + ([menu-bar go] menu-item + ,(propertize " go " 'face 'font-lock-doc-face) gud-go + :visible (and (eq gud-minor-mode 'gdbmi) +@@ -356,6 +356,7 @@ are interpreted specially if present. These are: + %l -- Number of current source line. + %e -- Text of the C lvalue or function-call expression surrounding point. + %a -- Text of the hexadecimal address surrounding point. ++ %b -- Text of the most recently created breakpoint id. + %p -- Prefix argument to the command (if any) as a number. + %c -- Fully qualified class name derived from the expression + surrounding point (jdb only). +@@ -964,6 +965,131 @@ SKIP is the number of chars to skip on each line, it defaults to 0." + + + ;; ====================================================================== ++;; lldb functions ++ ++;; History of argument lists passed to lldb. ++(defvar gud-lldb-history nil) ++ ++;; Keeps track of breakpoint created. In the following case, the id is "1". ++;; It is used to implement temporary breakpoint. ++;; (lldb) b main.c:39 ++;; breakpoint set --file 'main.c' --line 39 ++;; Breakpoint created: 1: file ='main.c', line = 39, locations = 1 ++(defvar gud-breakpoint-id nil) ++ ++(defun lldb-extract-breakpoint-id (string) ++ ;; Search for "Breakpoint created: \\([^:\n]*\\):" pattern. ++ (if (string-match "Breakpoint created: \\([^:\n]*\\):" string) ++ (progn ++ (setq gud-breakpoint-id (match-string 1 string)) ++ (message "breakpoint id: %s" gud-breakpoint-id))) ++) ++ ++(defun gud-lldb-marker-filter (string) ++ (setq gud-marker-acc ++ (if gud-marker-acc (concat gud-marker-acc string) string)) ++ (lldb-extract-breakpoint-id gud-marker-acc) ++ (let (start) ++ ;; Process all complete markers in this chunk ++ (while (or ++ ;; (lldb) r ++ ;; Process 15408 launched: '/Volumes/data/lldb/svn/trunk/test/conditional_break/a.out' (x86_64) ++ ;; (lldb) Process 15408 stopped ++ ;; * thread #1: tid = 0x2e03, 0x0000000100000de8 a.out`c + 7 at main.c:39, stop reason = breakpoint 1.1, queue = com.apple.main-thread ++ (string-match " at \\([^:\n]*\\):\\([0-9]*\\), stop reason = .*\n" ++ gud-marker-acc start) ++ ;; (lldb) frame select -r 1 ++ ;; frame #1: 0x0000000100000e09 a.out`main + 25 at main.c:44 ++ (string-match "\nframe.* at \\([^:\n]*\\):\\([0-9]*\\)\n" ++ gud-marker-acc start)) ++ (setq gud-last-frame ++ (cons (match-string 1 gud-marker-acc) ++ (string-to-number (match-string 2 gud-marker-acc))) ++ start (match-end 0))) ++ ++ ;; Search for the last incomplete line in this chunk ++ (while (string-match "\n" gud-marker-acc start) ++ (setq start (match-end 0))) ++ ++ ;; If we have an incomplete line, store it in gud-marker-acc. ++ (setq gud-marker-acc (substring gud-marker-acc (or start 0)))) ++ string) ++ ++;; Keeps track of whether the Python lldb_oneshot_break function definition has ++;; been exec'ed. ++(defvar lldb-oneshot-break-defined nil) ++ ++;;;###autoload ++(defun lldb (command-line) ++ "Run lldb on program FILE in buffer *gud-FILE*. ++The directory containing FILE becomes the initial working directory ++and source-file directory for your debugger." ++ (interactive (list (gud-query-cmdline 'lldb))) ++ ++ (gud-common-init command-line nil 'gud-lldb-marker-filter) ++ (set (make-local-variable 'gud-minor-mode) 'lldb) ++ (setq lldb-oneshot-break-defined nil) ++ ++ (gud-def gud-listb "breakpoint list" ++ "l" "List all breakpoints.") ++ (gud-def gud-bt "thread backtrace" ++ "b" "Show stack for the current thread.") ++ (gud-def gud-bt-all "thread backtrace all" ++ "B" "Show stacks for all the threads.") ++ ++ (gud-def gud-break "breakpoint set -f %f -l %l" ++ "\C-b" "Set breakpoint at current line.") ++ (gud-def gud-tbreak ++ (progn (gud-call "breakpoint set -f %f -l %l") ++ (sit-for 1) ++ (if (not lldb-oneshot-break-defined) ++ (progn ++ ;; The "\\n"'s are required to escape the newline chars ++ ;; passed to the lldb process. ++ (gud-call (concat "script exec \"def lldb_oneshot_break(frame, bp_loc):\\n" ++ " target=frame.GetThread().GetProcess().GetTarget()\\n" ++ " bp=bp_loc.GetBreakpoint()\\n" ++ " print 'Deleting oneshot breakpoint:', bp\\n" ++ " target.BreakpointDelete(bp.GetID())\"")) ++ (sit-for 1) ++ ;; Set the flag since Python knows about the function def now. ++ (setq lldb-oneshot-break-defined t))) ++ (gud-call "breakpoint command add -p %b -o 'lldb_oneshot_break(frame, bp_loc)'")) ++ "\C-t" "Set temporary breakpoint at current line.") ++ (gud-def gud-remove "breakpoint clear -f %f -l %l" ++ "\C-d" "Remove breakpoint at current line") ++ (gud-def gud-step "thread step-in" ++ "\C-s" "Step one source line with display.") ++ (gud-def gud-stepi "thread step-inst" ++ "\C-i" "Step one instruction with display.") ++ (gud-def gud-next "thread step-over" ++ "\C-n" "Step one line (skip functions).") ++ (gud-def gud-nexti "thread step-inst-over" ++ nil "Step one instruction (skip functions).") ++ (gud-def gud-cont "process continue" ++ "\C-r" "Continue with display.") ++ (gud-def gud-finish "thread step-out" ++ "\C-f" "Finish executing current function.") ++ (gud-def gud-up "frame select -r %p" ++ "<" "Up 1 stack frame.") ++ (gud-def gud-down "frame select -r -%p" ++ ">" "Down 1 stack frame.") ++ (gud-def gud-print "expression -- %e" ++ "\C-p" "Evaluate C expression at point.") ++ (gud-def gud-pstar "expression -- *%e" ++ nil "Evaluate C dereferenced pointer expression at point.") ++ (gud-def gud-run "run" ++ nil "Run the program.") ++ (gud-def gud-stop-subjob "process kill" ++ nil "Stop the program.") ++ ++ (setq comint-prompt-regexp "\\(^\\|\n\\)\\*") ++ (setq paragraph-start comint-prompt-regexp) ++ (run-hooks 'lldb-mode-hook) ++ ) ++ ++ ++;; ====================================================================== + ;; sdb functions + + ;; History of argument lists passed to sdb. +@@ -2499,9 +2625,10 @@ gud, see `gud-mode'." + "Major mode for interacting with an inferior debugger process. + + You start it up with one of the commands M-x gdb, M-x sdb, M-x dbx, +-M-x perldb, M-x xdb, or M-x jdb. Each entry point finishes by executing a +-hook; `gdb-mode-hook', `sdb-mode-hook', `dbx-mode-hook', +-`perldb-mode-hook', `xdb-mode-hook', or `jdb-mode-hook' respectively. ++M-x perldb, M-x xdb, M-x jdb, or M-x lldb. Each entry point finishes by ++executing a hook; `gdb-mode-hook', `sdb-mode-hook', `dbx-mode-hook', ++`perldb-mode-hook', `xdb-mode-hook', `jdb-mode-hook', or `lldb-mode-hook' ++respectively. + + After startup, the following commands are available in both the GUD + interaction buffer and any source buffer GUD visits due to a breakpoint stop +@@ -2531,7 +2658,7 @@ Under gdb, sdb and xdb, \\[gud-tbreak] behaves exactly like \\[gud-break], + except that the breakpoint is temporary; that is, it is removed when + execution stops on it. + +-Under gdb, dbx, and xdb, \\[gud-up] pops up through an enclosing stack ++Under gdb, dbx, xdb, and lldb, \\[gud-up] pops up through an enclosing stack + frame. \\[gud-down] drops back down through one. + + If you are using gdb or xdb, \\[gud-finish] runs execution to the return from +@@ -2858,7 +2985,7 @@ Obeying it means displaying in another window the specified file and line." + result) + (while (and str + (let ((case-fold-search nil)) +- (string-match "\\([^%]*\\)%\\([adefFlpc]\\)" str))) ++ (string-match "\\([^%]*\\)%\\([abdefFlpc]\\)" str))) + (let ((key (string-to-char (match-string 2 str))) + subst) + (cond +@@ -2886,6 +3013,8 @@ Obeying it means displaying in another window the specified file and line." + (setq subst (gud-find-expr))) + ((eq key ?a) + (setq subst (gud-read-address))) ++ ((eq key ?b) ++ (setq subst gud-breakpoint-id)) + ((eq key ?c) + (setq subst + (gud-find-class +@@ -3520,6 +3649,7 @@ With arg, dereference expr if ARG is positive, otherwise do not dereference." + (defun gud-tooltip-print-command (expr) + "Return a suitable command to print the expression EXPR." + (pcase gud-minor-mode ++ (`lldb (concat "expression -o -- \"" expr "\"")) + (`gdbmi (concat "-data-evaluate-expression \"" expr "\"")) + (`guiler expr) + (`dbx (concat "print " expr)) diff --git a/editors/emacs-devel/pkg-plist b/editors/emacs-devel/pkg-plist index f43327ea454f..99552eb75480 100644 --- a/editors/emacs-devel/pkg-plist +++ b/editors/emacs-devel/pkg-plist @@ -1208,7 +1208,6 @@ share/appdata/emacs.appdata.xml %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-cache.el %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/nntp.el %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/nnagent.elc -%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/rfc2104.el %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-demon.el %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-agent.elc %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/mml-smime.elc @@ -1353,7 +1352,6 @@ share/appdata/emacs.appdata.xml %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/score-mode.el %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/smiley.elc %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-msg.elc -%%DATADIR%%/%%EMACS_VER%%/lisp/gnus/rfc2104.elc %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-icalendar.elc %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/rfc2045.el %%DATADIR%%/%%EMACS_VER%%/lisp/gnus/gnus-salt.elc @@ -2752,6 +2750,8 @@ share/appdata/emacs.appdata.xml %%DATADIR%%/%%EMACS_VER%%/lisp/net/socks.el %%DATADIR%%/%%EMACS_VER%%/lisp/net/ldap.elc %%DATADIR%%/%%EMACS_VER%%/lisp/net/shr.el +%%DATADIR%%/%%EMACS_VER%%/lisp/net/rfc2104.el +%%DATADIR%%/%%EMACS_VER%%/lisp/net/rfc2104.elc %%DATADIR%%/%%EMACS_VER%%/lisp/net/rcirc.elc %%DATADIR%%/%%EMACS_VER%%/lisp/net/newsticker.elc %%DATADIR%%/%%EMACS_VER%%/lisp/net/net-utils.el @@ -2770,6 +2770,7 @@ share/appdata/emacs.appdata.xml %%DATADIR%%/%%EMACS_VER%%/lisp/net/network-stream.el %%DATADIR%%/%%EMACS_VER%%/lisp/net/mairix.elc %%DATADIR%%/%%EMACS_VER%%/lisp/net/sasl-cram.elc +%%DATADIR%%/%%EMACS_VER%%/lisp/net/sasl-scram-rfc.elc %%DATADIR%%/%%EMACS_VER%%/lisp/net/rlogin.el %%DATADIR%%/%%EMACS_VER%%/lisp/net/tramp-ftp.el %%DATADIR%%/%%EMACS_VER%%/lisp/net/tramp-loaddefs.el @@ -2831,6 +2832,7 @@ share/appdata/emacs.appdata.xml %%DATADIR%%/%%EMACS_VER%%/lisp/net/goto-addr.el %%DATADIR%%/%%EMACS_VER%%/lisp/net/telnet.el %%DATADIR%%/%%EMACS_VER%%/lisp/net/sasl-cram.el +%%DATADIR%%/%%EMACS_VER%%/lisp/net/sasl-scram-rfc.el %%DATADIR%%/%%EMACS_VER%%/lisp/net/netrc.elc %%DATADIR%%/%%EMACS_VER%%/lisp/net/secrets.el %%DATADIR%%/%%EMACS_VER%%/lisp/net/newst-treeview.el @@ -3787,6 +3789,8 @@ share/appdata/emacs.appdata.xml %%DATADIR%%/%%EMACS_VER%%/lisp/emacs-lisp/advice.el %%DATADIR%%/%%EMACS_VER%%/lisp/emacs-lisp/seq.el %%DATADIR%%/%%EMACS_VER%%/lisp/emacs-lisp/seq.elc +%%DATADIR%%/%%EMACS_VER%%/lisp/emacs-lisp/generator.el +%%DATADIR%%/%%EMACS_VER%%/lisp/emacs-lisp/generator.elc %%DATADIR%%/%%EMACS_VER%%/lisp/informat.el %%DATADIR%%/%%EMACS_VER%%/lisp/wdired.elc %%DATADIR%%/%%EMACS_VER%%/lisp/imenu.el |