Hi, some good news from the Emacs front.
Since glibc removed "private" stuff that was used for emacs, the direction is now towards using more portable techniques: - emacs-25.2 will use system malloc(3) (except for the "unexec" step) - emacs-26.1 will probably stop using this horrid "unexec" step which is causing build and toolchain problems since basically forever This means that emacs should soon stop being this cute time-eating project and start leveraging the same improvements as all other ports: no more -Z, PIE, ASLR, etc The diff below updates to the first pretest for emacs-25.2, which works fine for me since a couple of days. It doesn't use malloc(3) from the system yet, but it disables the use of ld -z nocombreloc, which upstream is considering. Build tests on !(amd64) would help! Index: Makefile =================================================================== RCS file: /d/cvs/ports/editors/emacs/Makefile,v retrieving revision 1.65 diff -u -p -r1.65 Makefile --- Makefile 16 Oct 2016 18:15:22 -0000 1.65 +++ Makefile 5 Dec 2016 13:01:11 -0000 @@ -2,9 +2,8 @@ COMMENT= GNU editor: extensible, customizable, self-documenting -VERSION= 25.1 +VERSION= 25.1.90 DISTNAME= emacs-${VERSION} -REVISION= 1 CATEGORIES= editors @@ -17,7 +16,8 @@ PERMIT_PACKAGE_CDROM= Yes WANTLIB= c m ncurses pthread gnutls xml2 z -MASTER_SITES= ${MASTER_SITE_GNU:=emacs/} +MASTER_SITES= ftp://alpha.gnu.org/gnu/emacs/pretest/ +EXTRACT_SUFX= .tar.xz USE_GMAKE= Yes Index: distinfo =================================================================== RCS file: /d/cvs/ports/editors/emacs/distinfo,v retrieving revision 1.8 diff -u -p -r1.8 distinfo --- distinfo 13 Oct 2016 15:39:32 -0000 1.8 +++ distinfo 5 Dec 2016 13:26:06 -0000 @@ -1,2 +1,2 @@ -SHA256 (emacs-25.1.tar.gz) = djNEuQ201A6f6QxdFHSKnb0gHOVE4s8INatIoKpKHGc= -SIZE (emacs-25.1.tar.gz) = 62345581 +SHA256 (emacs-25.1.90.tar.xz) = Ta3PHtlunDdWR6VaBTpBxkxJWMs+rbHuUNay6MGqimo= +SIZE (emacs-25.1.90.tar.xz) = 42999904 Index: patches/patch-configure =================================================================== RCS file: /d/cvs/ports/editors/emacs/patches/patch-configure,v retrieving revision 1.9 diff -u -p -r1.9 patch-configure --- patches/patch-configure 13 Oct 2016 15:39:32 -0000 1.9 +++ patches/patch-configure 5 Dec 2016 13:54:00 -0000 @@ -1,6 +1,19 @@ $OpenBSD: patch-configure,v 1.9 2016/10/13 15:39:32 jca Exp $ ---- configure.orig Fri Sep 16 11:20:23 2016 -+++ configure Tue Sep 27 15:22:19 2016 + +- don't use -znocombreloc +- use ld -Z only where needed + +--- configure.orig Mon Nov 28 18:44:04 2016 ++++ configure Mon Dec 5 14:46:14 2016 +@@ -9409,7 +9409,7 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if false ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else @@ -9531,7 +9531,14 @@ case "$opsys" in openbsd) ## Han Boetes <h...@boetes.org> says this is necessary, Index: patches/patch-lisp_vc_vc-cvs_el =================================================================== RCS file: patches/patch-lisp_vc_vc-cvs_el diff -N patches/patch-lisp_vc_vc-cvs_el --- patches/patch-lisp_vc_vc-cvs_el 16 Oct 2016 18:15:22 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,159 +0,0 @@ -$OpenBSD: patch-lisp_vc_vc-cvs_el,v 1.2 2016/10/16 18:15:22 jca Exp $ - -Bugfix for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24082 - ---- lisp/vc/vc-cvs.el.orig Wed Jun 29 11:49:20 2016 -+++ lisp/vc/vc-cvs.el Sun Oct 16 20:07:06 2016 -@@ -938,104 +938,33 @@ state." - (t 'edited)))))))) - - (defun vc-cvs-after-dir-status (update-function) -- ;; Heavily inspired by vc-cvs-parse-status. AKA a quick hack. -- ;; This needs a lot of testing. -- (let ((status nil) -- (status-str nil) -- (file nil) -- (result nil) -- (missing nil) -- (ignore-next nil) -- (subdir default-directory)) -+ (let ((result nil) -+ (translation '((?? . unregistered) -+ (?A . added) -+ (?C . conflict) -+ (?M . edited) -+ (?P . needs-merge) -+ (?R . removed) -+ (?U . needs-update)))) - (goto-char (point-min)) -- (while -- ;; Look for either a file entry, an unregistered file, or a -- ;; directory change. -- (re-search-forward -- "\\(^=+\n\\([^=c?\n].*\n\\|\n\\)+\\)\\|\\(\\(^?? .*\n\\)+\\)\\|\\(^cvs status: \\(Examining\\|nothing\\) .*\n\\)" -- nil t) -- ;; FIXME: get rid of narrowing here. -- (narrow-to-region (match-beginning 0) (match-end 0)) -- (goto-char (point-min)) -- ;; The subdir -- (when (looking-at "cvs status: Examining \\(.+\\)") -- (setq subdir (expand-file-name (match-string 1)))) -- ;; Unregistered files -- (while (looking-at "? \\(.*\\)") -- (setq file (file-relative-name -- (expand-file-name (match-string 1) subdir))) -- (push (list file 'unregistered) result) -- (forward-line 1)) -- (when (looking-at "cvs status: nothing known about") -- ;; We asked about a non existent file. The output looks like this: -+ (while (not (eobp)) -+ (if (looking-at "^[ACMPRU?] \\(.*\\)$") -+ (push (list (match-string 1) -+ (cdr (assoc (char-after) translation))) -+ result) -+ (cond -+ ((looking-at "cvs update: warning: \\(.*\\) was lost") -+ ;; Format is: -+ ;; cvs update: warning: FILENAME was lost -+ ;; U FILENAME -+ (push (list (match-string 1) 'missing) result) -+ ;; Skip the "U" line -+ (forward-line 1)) -+ ((looking-at "cvs update: New directory `\\(.*\\)' -- ignored") -+ (push (list (match-string 1) 'unregistered) result)))) -+ (forward-line 1)) -+ (funcall update-function result))) - -- ;; cvs status: nothing known about `lisp/v.diff' -- ;; =================================================================== -- ;; File: no file v.diff Status: Unknown -- ;; -- ;; Working revision: No entry for v.diff -- ;; Repository revision: No revision control file -- ;; -- -- ;; Due to narrowing in this iteration we only see the "cvs -- ;; status:" line, so just set a flag so that we can ignore the -- ;; file in the next iteration. -- (setq ignore-next t)) -- ;; A file entry. -- (when (re-search-forward "^File: \\(no file \\)?\\(.*[^ \t]\\)[ \t]+Status: \\(.*\\)" nil t) -- (setq missing (match-string 1)) -- (setq file (file-relative-name -- (expand-file-name (match-string 2) subdir))) -- (setq status-str (match-string 3)) -- (setq status -- (cond -- ((string-match "Up-to-date" status-str) 'up-to-date) -- ((string-match "Locally Modified" status-str) 'edited) -- ((string-match "Needs Merge" status-str) 'needs-merge) -- ((string-match "Needs \\(Checkout\\|Patch\\)" status-str) -- (if missing 'missing 'needs-update)) -- ((string-match "Locally Added" status-str) 'added) -- ((string-match "Locally Removed" status-str) 'removed) -- ((string-match "File had conflicts " status-str) 'conflict) -- ((string-match "Unknown" status-str) 'unregistered) -- (t 'edited))) -- (if ignore-next -- (setq ignore-next nil) -- (unless (eq status 'up-to-date) -- (push (list file status) result)))) -- (goto-char (point-max)) -- (widen)) -- (funcall update-function result)) -- ;; Alternative implementation: use the "update" command instead of -- ;; the "status" command. -- ;; (let ((result nil) -- ;; (translation '((?? . unregistered) -- ;; (?A . added) -- ;; (?C . conflict) -- ;; (?M . edited) -- ;; (?P . needs-merge) -- ;; (?R . removed) -- ;; (?U . needs-update)))) -- ;; (goto-char (point-min)) -- ;; (while (not (eobp)) -- ;; (if (looking-at "^[ACMPRU?] \\(.*\\)$") -- ;; (push (list (match-string 1) -- ;; (cdr (assoc (char-after) translation))) -- ;; result) -- ;; (cond -- ;; ((looking-at "cvs update: warning: \\(.*\\) was lost") -- ;; ;; Format is: -- ;; ;; cvs update: warning: FILENAME was lost -- ;; ;; U FILENAME -- ;; (push (list (match-string 1) 'missing) result) -- ;; ;; Skip the "U" line -- ;; (forward-line 1)) -- ;; ((looking-at "cvs update: New directory `\\(.*\\)' -- ignored") -- ;; (push (list (match-string 1) 'unregistered) result)))) -- ;; (forward-line 1)) -- ;; (funcall update-function result))) -- ) -- - ;; Based on vc-cvs-dir-state-heuristic from Emacs 22. - ;; FIXME does not mention unregistered files. - (defun vc-cvs-dir-status-heuristic (dir update-function &optional basedir) -@@ -1071,16 +1000,12 @@ state." - Query all files in DIR if files is nil." - (let ((local (vc-cvs-stay-local-p dir))) - (if (and (not files) local (not (eq local 'only-file))) -- (vc-cvs-dir-status-heuristic dir update-function) -- (if (not files) (setq files (vc-expand-dirs (list dir) 'CVS))) -- (vc-cvs-command (current-buffer) 'async files "-f" "status") -- ;; Alternative implementation: use the "update" command instead of -- ;; the "status" command. -- ;; (vc-cvs-command (current-buffer) 'async -- ;; (file-relative-name dir) -- ;; "-f" "-n" "update" "-d" "-P") -- (vc-run-delayed -- (vc-cvs-after-dir-status update-function))))) -+ (vc-cvs-dir-status-heuristic dir update-function)) -+ (vc-cvs-command (current-buffer) 'async -+ files -+ "-f" "-n" "-q" "update") -+ (vc-run-delayed -+ (vc-cvs-after-dir-status update-function)))) - - (defun vc-cvs-file-to-string (file) - "Read the content of FILE and return it as a string." Index: patches/patch-lisp_vc_vc_el =================================================================== RCS file: /d/cvs/ports/editors/emacs/patches/patch-lisp_vc_vc_el,v retrieving revision 1.1 diff -u -p -r1.1 patch-lisp_vc_vc_el --- patches/patch-lisp_vc_vc_el 13 Oct 2016 15:57:24 -0000 1.1 +++ patches/patch-lisp_vc_vc_el 5 Dec 2016 13:29:56 -0000 @@ -2,9 +2,9 @@ $OpenBSD: patch-lisp_vc_vc_el,v 1.1 2016 Drop messages that slow down VC with big repositories. ---- lisp/vc/vc.el.orig Thu Oct 13 17:46:35 2016 -+++ lisp/vc/vc.el Thu Oct 13 17:47:02 2016 -@@ -2897,13 +2897,11 @@ to provide the `find-revision' operation instead." +--- lisp/vc/vc.el.orig Mon Nov 21 14:16:04 2016 ++++ lisp/vc/vc.el Mon Dec 5 14:26:50 2016 +@@ -2901,13 +2901,11 @@ to provide the `find-revision' operation instead." (defun vc-file-tree-walk (dirname func &rest args) "Walk recursively through DIRNAME. Invoke FUNC f ARGS on each VC-managed file f underneath it." Index: pkg/PLIST =================================================================== RCS file: /d/cvs/ports/editors/emacs/pkg/PLIST,v retrieving revision 1.18 diff -u -p -r1.18 PLIST --- pkg/PLIST 13 Oct 2016 15:39:32 -0000 1.18 +++ pkg/PLIST 5 Dec 2016 13:40:10 -0000 @@ -999,7 +999,6 @@ share/emacs/${VERSION}/etc/refcards/de-r share/emacs/${VERSION}/etc/refcards/dired-ref.pdf share/emacs/${VERSION}/etc/refcards/dired-ref.tex share/emacs/${VERSION}/etc/refcards/emacsver.tex -share/emacs/${VERSION}/etc/refcards/emacsver.tex.in share/emacs/${VERSION}/etc/refcards/fr-dired-ref.pdf share/emacs/${VERSION}/etc/refcards/fr-dired-ref.tex share/emacs/${VERSION}/etc/refcards/fr-refcard.pdf @@ -1014,13 +1013,19 @@ share/emacs/${VERSION}/etc/refcards/gnus share/emacs/${VERSION}/etc/refcards/orgcard.pdf share/emacs/${VERSION}/etc/refcards/orgcard.tex share/emacs/${VERSION}/etc/refcards/pdflayout.sty +share/emacs/${VERSION}/etc/refcards/pl-refcard.pdf share/emacs/${VERSION}/etc/refcards/pl-refcard.tex +share/emacs/${VERSION}/etc/refcards/pt-br-refcard.pdf share/emacs/${VERSION}/etc/refcards/pt-br-refcard.tex share/emacs/${VERSION}/etc/refcards/refcard.pdf share/emacs/${VERSION}/etc/refcards/refcard.tex +share/emacs/${VERSION}/etc/refcards/ru-refcard.pdf share/emacs/${VERSION}/etc/refcards/ru-refcard.tex +share/emacs/${VERSION}/etc/refcards/sk-dired-ref.pdf share/emacs/${VERSION}/etc/refcards/sk-dired-ref.tex +share/emacs/${VERSION}/etc/refcards/sk-refcard.pdf share/emacs/${VERSION}/etc/refcards/sk-refcard.tex +share/emacs/${VERSION}/etc/refcards/sk-survival.pdf share/emacs/${VERSION}/etc/refcards/sk-survival.tex share/emacs/${VERSION}/etc/refcards/survival.pdf share/emacs/${VERSION}/etc/refcards/survival.tex -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE