Subject: pkg/28977: a couple of problems with editors/emacs
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: Greg A. Woods <woods@weird.com>
List: pkgsrc-bugs
Date: 01/15/2005 23:24:00
>Number:         28977
>Category:       pkg
>Synopsis:       a couple of problems with editors/emacs
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Jan 15 23:24:00 +0000 2005
>Originator:     Greg A. Woods
>Release:        pkgsrc-2004Q4
>Organization:
Planix, Inc.; Toronto, Ontario; Canada
>Environment:
System: NetBSD
>Description:

	There are several long-standing problems with the editors/emacs
	package.

	The first is that emacs DOES NOT use libtool and the pkgsrc
	module really must not set USE_LIBTOOL either.

	The second is specific to NetBSD -- POSIX_SIGNALS is not used
	but really it should be for correct operation.  As an emacs
	contributor with a copyright declaration on file at the FSF I've
	forwarded this suggestion to the maintainers several times, but
	it still hasn't made it into the main tree so it still must be
	done by pkgsrc.

	The third is that there's no proper support for non-pkgsrc emacs
	add-on packages, e.g. which would be installed in /usr/local.
	This patch adds a new "configuration" file that allows for
	proper handling of /usr/local/share/emacs/site-lisp in an
	extensible way that should not conflict with installation of
	multiple different emacs versions.

>How-To-Repeat:

>Fix:

cvs diff: Diffing editors/emacs
Index: editors/emacs/Makefile
===================================================================
RCS file: /cvs/master/m-NetBSD/main/pkgsrc/editors/emacs/Makefile,v
retrieving revision 1.74
diff -u -r1.74 Makefile
--- editors/emacs/Makefile	3 Oct 2004 00:14:38 -0000	1.74
+++ editors/emacs/Makefile	15 Jan 2005 23:10:19 -0000
@@ -15,7 +15,7 @@
 USE_BUILDLINK3=		yes
 USE_X11=		yes
 USE_GNU_TOOLS+=		make
-USE_LIBTOOL=		yes
+#USE_LIBTOOL=		yes	# NO!!! it does _not_
 GNU_CONFIGURE=		yes
 
 CONFIGURE_ARGS+=	--with-x
@@ -67,6 +67,15 @@
 
 REPLACE_PERL=	lib-src/grep-changelog
 
+BUILD_TARGET=	all info
+
+# Note:  ${PKGVERSION} here is not the same as ${PKGVERSION} in the PLIST!
+# The expression below is the one used in PLIST_SUBST.
+#
+EGDIR =		${PREFIX}/share/examples/emacs-${PKGVERSION:C/nb[0-9]*$//}
+
+CONF_FILES=	${EGDIR}/default.el ${PREFIX}/share/emacs/site-lisp/default.el
+
 post-extract:
 	${CP} ${FILESDIR}/site-init.el ${WRKSRC}/lisp
 	${CP} ${FILESDIR}/amd64.h ${WRKSRC}/src/m
@@ -78,6 +87,9 @@
 	@${FIND} ${WRKSRC} -type f -name "*.orig" -print | ${XARGS} ${RM} -f
 
 post-install:
+	${INSTALL_DATA_DIR} ${EGDIR}
+	${INSTALL_DATA} ${FILESDIR}/default.el ${EGDIR}
 	${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${PREFIX}/share/emacs
 
+.include "../../mk/bsd.pkg.install.mk"
 .include "../../mk/bsd.pkg.mk"
Index: editors/emacs/PLIST
===================================================================
RCS file: /cvs/master/m-NetBSD/main/pkgsrc/editors/emacs/PLIST,v
retrieving revision 1.9
diff -u -r1.9 PLIST
--- editors/emacs/PLIST	16 Feb 2004 20:59:26 -0000	1.9
+++ editors/emacs/PLIST	15 Jan 2005 22:46:40 -0000
@@ -1743,6 +1743,7 @@
 share/emacs/${PKGVERSION}/lisp/xt-mouse.elc
 share/emacs/${PKGVERSION}/site-lisp/subdirs.el
 share/emacs/site-lisp/subdirs.el
+share/examples/emacs-${PKGVERSION}/default.el
 @unexec ${RMDIR} %D/share/emacs/site-lisp 2>/dev/null || ${TRUE}
 @dirrm share/emacs/${PKGVERSION}/site-lisp
 @dirrm share/emacs/${PKGVERSION}/lisp/toolbar
Index: editors/emacs/distinfo
===================================================================
RCS file: /cvs/master/m-NetBSD/main/pkgsrc/editors/emacs/distinfo,v
retrieving revision 1.16
diff -u -r1.16 distinfo
--- editors/emacs/distinfo	31 Jul 2004 21:01:54 -0000	1.16
+++ editors/emacs/distinfo	9 Sep 2004 20:54:07 -0000
@@ -9,4 +9,4 @@
 SHA1 (patch-ag) = 3d64c0d53e3a8a737eeb04a6080a92a826b73620
 SHA1 (patch-ak) = c37ecdcb1e0b0211b15baa7100dd43eab3f0830b
 SHA1 (patch-bg) = 567ccce83e2b6d898a87f20763d5ff4b19c30deb
-SHA1 (patch-xx) = a818041b6c851f8a675b17d4c7372ddb5f468c53
+SHA1 (patch-xx) = a959dd74a444392eee1e1872a44efd31dc34db3d
cvs diff: Diffing editors/emacs/files
Index: editors/emacs/files/default.el
===================================================================
RCS file: editors/emacs/files/default.el
diff -N editors/emacs/files/default.el
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ editors/emacs/files/default.el	15 Jan 2005 23:09:04 -0000
@@ -0,0 +1,13 @@
+;;;
+;;;     default.el - localized system wide default initialization
+;;;
+;;; This file is loaded by default.  Users can prevent loading of this file
+;;; with the `-q' command-line option, or by setting `inhibit-default-init' in
+;;; their own init files.
+
+;; Additional elisp stuff may be installed in /usr/local...
+(setq local-site-lisp-dir "/usr/local/share/emacs/site-lisp")
+(setq load-path (cons local-site-lisp-dir load-path))
+
+;; load that file whenever this one is loaded
+(load-file (concat local-site-lisp-dir "/default.el"))
cvs diff: Diffing editors/emacs/patches
Index: editors/emacs/patches/patch-xx
===================================================================
RCS file: /cvs/master/m-NetBSD/main/pkgsrc/editors/emacs/patches/patch-xx,v
retrieving revision 1.5
diff -u -r1.5 patch-xx
--- editors/emacs/patches/patch-xx	6 Jul 2003 16:10:19 -0000	1.5
+++ editors/emacs/patches/patch-xx	27 Aug 2003 01:57:32 -0000
@@ -2,6 +2,14 @@
 
 --- src/s/netbsd.h.orig	Fri Apr 18 19:04:10 2003
 +++ src/s/netbsd.h
+@@ -1,6 +1,7 @@
+ /* s/ file for netbsd system.  */
+ 
+ /* Get most of the stuff from bsd4.3 */
++/* XXX There should be a "bsd4-4.h" because so many things are different! */
+ #include "bsd4-3.h"
+ 
+ #if defined (__alpha__) && !defined (__ELF__)
 @@ -60,9 +60,17 @@
  #endif /* not NO_SHARED_LIBS and not ELF */
  
@@ -20,3 +28,15 @@
  #undef LIB_GCC
  #define LIB_GCC
  #endif
+@@ -106,6 +107,11 @@
+ #ifndef NOT_C_CODE
+ #include <signal.h>
+ #endif
++
++/* Use POSIX Signals [sigaction(), sigprocmask(), sigsuspend(), etc.]
++   Gerd says this works OK in FreeBSD -- should be fine on any 4.4BSD */
++
++#define POSIX_SIGNALS 1
+ 
+ /* Don't close pty in process.c to make it as controlling terminal.
+    It is already a controlling terminal of subprocess, because we did