From a631929c090c247a7ba7c0f2b9bbd8d2e489bb82 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Fri, 2 May 2008 01:48:26 +0000 Subject: [PATCH] apply patches and epoch tod evel tree --- emacs-22.1.50-regex.patch | 55 +++++++++++++++++++++++++++++++++++++ emacs-22.1.50-sparc64.patch | 22 +++++++++++++++ emacs.spec | 43 +++++++++++++++++++++++------ 3 files changed, 112 insertions(+), 8 deletions(-) create mode 100644 emacs-22.1.50-regex.patch create mode 100644 emacs-22.1.50-sparc64.patch diff --git a/emacs-22.1.50-regex.patch b/emacs-22.1.50-regex.patch new file mode 100644 index 0000000..7d8a371 --- /dev/null +++ b/emacs-22.1.50-regex.patch @@ -0,0 +1,55 @@ +for src/ChangeLog +from Alexandre Oliva + + * regex.c (MOVE_BUFFER_POINTER, EXTEND_BUFFER): Don't compute + offsets between unrelated pointers. + +--- emacs-22.1.50.orig/src/regex.c 2007-09-10 15:46:20.000000000 -0300 ++++ emacs-22.1.50/src/regex.c 2008-03-22 08:07:06.000000000 -0300 +@@ -3,7 +3,7 @@ + internationalization features.) + + Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +- 2002, 2003, 2004, 2005, 2006, 2007 ++ 2002, 2003, 2004, 2005, 2006, 2007, 2008 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify +@@ -1832,8 +1832,10 @@ + being larger than MAX_BUF_SIZE, then flag memory exhausted. */ + #if __BOUNDED_POINTERS__ + # define SET_HIGH_BOUND(P) (__ptrhigh (P) = __ptrlow (P) + bufp->allocated) +-# define MOVE_BUFFER_POINTER(P) \ +- (__ptrlow (P) += incr, SET_HIGH_BOUND (P), __ptrvalue (P) += incr) ++# define MOVE_BUFFER_POINTER(P) \ ++ (__ptrlow (P) = new_buffer + (__ptrlow (P) - old_buffer), \ ++ SET_HIGH_BOUND (P), \ ++ __ptrvalue (P) = new_buffer + (__ptrvalue (P) - old_buffer)) + # define ELSE_EXTEND_BUFFER_HIGH_BOUND \ + else \ + { \ +@@ -1847,12 +1849,12 @@ + SET_HIGH_BOUND (pending_exact); \ + } + #else +-# define MOVE_BUFFER_POINTER(P) (P) += incr ++# define MOVE_BUFFER_POINTER(P) ((P) = new_buffer + ((P) - old_buffer)) + # define ELSE_EXTEND_BUFFER_HIGH_BOUND + #endif + #define EXTEND_BUFFER() \ + do { \ +- re_char *old_buffer = bufp->buffer; \ ++ unsigned char *old_buffer = bufp->buffer; \ + if (bufp->allocated == MAX_BUF_SIZE) \ + return REG_ESIZE; \ + bufp->allocated <<= 1; \ +@@ -1864,7 +1866,7 @@ + /* If the buffer moved, move all the pointers into it. */ \ + if (old_buffer != bufp->buffer) \ + { \ +- int incr = bufp->buffer - old_buffer; \ ++ unsigned char *new_buffer = bufp->buffer; \ + MOVE_BUFFER_POINTER (b); \ + MOVE_BUFFER_POINTER (begalt); \ + if (fixup_alt_jump) \ + diff --git a/emacs-22.1.50-sparc64.patch b/emacs-22.1.50-sparc64.patch new file mode 100644 index 0000000..86e9c3b --- /dev/null +++ b/emacs-22.1.50-sparc64.patch @@ -0,0 +1,22 @@ +--- emacs-22.1.50/src/m/sparc.h.old 2008-02-11 01:26:36.000000000 -0600 ++++ emacs-22.1.50/src/m/sparc.h 2008-02-11 09:12:09.000000000 -0600 +@@ -93,6 +93,19 @@ + + #ifdef __arch64__ /* GCC, 64-bit ABI. */ + #define BITS_PER_LONG 64 ++#ifdef __linux__ ++#undef START_FILES ++#define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o ++ ++/* The duplicate -lgcc is intentional in the definition of LIB_STANDARD. ++ The reason is that some functions in libgcc.a call functions from libc.a, ++ and some libc.a functions need functions from libgcc.a. Since most ++ versions of ld are one-pass linkers, we need to mention -lgcc twice, ++ or else we risk getting unresolved externals. */ ++#undef LIB_STANDARD ++#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib64/crtn.o ++#endif ++ + #ifndef _LP64 + #define _LP64 /* Done on Alpha -- not sure if it + should be here. -- fx */ diff --git a/emacs.spec b/emacs.spec index bf6cc92..81e4109 100644 --- a/emacs.spec +++ b/emacs.spec @@ -2,8 +2,9 @@ Summary: GNU Emacs text editor Name: emacs +Epoch: 1 Version: 22.2 -Release: 1%{?dist} +Release: 4%{?dist} License: GPLv3+ URL: http://www.gnu.org/software/emacs/ Group: Applications/Editors @@ -21,19 +22,23 @@ Source13: focus-init.el Source14: po-mode.el Source15: po-mode-init.el Source18: default.el -Source19: wrapper Source20: igrep.el Source21: igrep-init.el Patch0: glibc-open-macro.patch Patch1: rpm-spec-mode.patch Patch2: po-mode-auto-replace-date-71264.patch +Patch3: emacs-22.1.50-sparc64.patch +Patch4: emacs-22.1.50-regex.patch Buildroot: %{_tmppath}/%{name}-%{version}-root BuildRequires: atk-devel, cairo-devel, freetype-devel, fontconfig-devel, giflib-devel, glibc-devel, gtk2-devel, libpng-devel BuildRequires: libjpeg-devel, libtiff-devel, libX11-devel, libXau-devel, libXdmcp-devel, libXrender-devel, libXt-devel BuildRequires: libXpm-devel, ncurses-devel, xorg-x11-proto-devel, zlib-devel BuildRequires: autoconf, automake, bzip2, cairo, texinfo +%ifarch %{ix86} +BuildRequires: setarch +%endif Requires: xorg-x11-fonts-ISO8859-1-100dpi -Requires: emacs-common = %{version}-%{release} +Requires: emacs-common = %{epoch}:%{version}-%{release} Conflicts: gettext < 0.10.40 Provides: emacs(bin) @@ -58,7 +63,7 @@ This package provides an emacs binary with support for X windows. %package nox Summary: GNU Emacs text editor without X support Group: Applications/Editors -Requires: emacs-common = %{version}-%{release} +Requires: emacs-common = %{epoch}:%{version}-%{release} Provides: emacs(bin) %description nox @@ -100,10 +105,11 @@ Emacs packages or see some elisp examples. %prep %setup -q %patch0 -p1 -b .glibc-open-macro +%patch3 -p1 -b .sparc64-libdir +%patch4 -p1 -b .regexp # install rest of site-lisp files -( ! [ -d site-lisp ] && mkdir site-lisp - cd site-lisp +( cd site-lisp cp %SOURCE7 %SOURCE9 %SOURCE10 %SOURCE14 %SOURCE20 . # rpm-spec-mode can use compilation-mode patch < %PATCH1 @@ -122,13 +128,19 @@ rm -f lisp/play/tetris.el lisp/play/tetris.elc rm -f etc/sex.6 etc/condom.1 etc/celibacy.1 etc/COOKIES etc/future-bug etc/JOKES %endif +%ifarch %{ix86} +%define setarch setarch %{_arch} -R +%else +%define setarch %{nil} +%endif + %build export CFLAGS="-DMAIL_USE_LOCKF $RPM_OPT_FLAGS" %configure --with-x-toolkit=gtk %__make bootstrap -%__make %{?_smp_mflags} +%{setarch} %__make %{?_smp_mflags} # remove versioned file so that we end up with .1 suffix and only one DOC file rm src/emacs-%{version}.* @@ -148,7 +160,7 @@ sitestartdir=%{site_lisp}/site-start.d Name: emacs Description: GNU Emacs text editor -Version: %{version} +Version: %{epoch}:%{version} EOF %install @@ -301,6 +313,19 @@ alternatives --install %{_bindir}/etags emacs.etags %{_bindir}/etags.emacs 80 \ %dir %{_datadir}/emacs/%{version} %changelog +* Thu May 01 2008 Tom "spot" Callaway +- fix requires to include epoch + +* Thu May 01 2008 Dennis Gilmore 1:22.2-4 +- add patch from bz#435767 + +* Thu May 01 2008 Dennis Gilmore 1:22.2-3 +- add epoch +- put epoch in .pc file + +* Thu Apr 24 2008 Dennis Gilmore 22.2-2 +- add patch fixing libdir on sparc64 + * Tue Apr 22 2008 Chip Coldwell 22.2-1 - revert back to emacs-22.2 (bz443639) - update to php-mode-1.4.0 @@ -309,6 +334,8 @@ alternatives --install %{_bindir}/etags emacs.etags %{_bindir}/etags.emacs 80 \ - fix the Release tag (bz440624) - drop superfluous configure options - move the new icons into the right destination directory +- the heuristics for detecting address space randomization in the emacs dumper + seem insufficient, so bring back setarch -R * Fri Apr 18 2008 Chip Coldwell 23.0.60-2 - New upstream tarball (fixes bz435767)