From 47162ef150d4db06e08aaba3d6e466ab1ff68a9b Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Jul 22 2016 08:54:37 +0000 Subject: fix: emacs build failure due to high memory consumption on ppc64 (#1356919) Resolves: #1356919 --- diff --git a/emacs-ppc64.patch b/emacs-ppc64.patch new file mode 100644 index 0000000..daed8c0 --- /dev/null +++ b/emacs-ppc64.patch @@ -0,0 +1,62 @@ +commit ff3fc21e24edffccce0d42065833e852a6792bd2 +Author: Paul Eggert +Date: Tue Jul 19 15:23:14 2016 +0200 + + Port to glibc 2.24 (pre-release) + ppc64 + + Backport from master (Bug#24033). + Inspired by a suggestion by Florian Weimer in: + https://sourceware.org/ml/libc-alpha/2016-07/msg00425.html + * src/emacs.c (main) [__PPC64__]: + Special case for __PPC64__, which needs ASLR disabled in + dumped Emacs too. + +diff --git a/src/emacs.c b/src/emacs.c +index 5c187e7..2480dfc 100644 +--- a/src/emacs.c ++++ b/src/emacs.c +@@ -674,6 +674,26 @@ main (int argc, char **argv) + + stack_base = &dummy; + ++#if defined HAVE_PERSONALITY_LINUX32 && defined __PPC64__ ++ /* This code partly duplicates the HAVE_PERSONALITY_LINUX32 code ++ below. This duplication is planned to be fixed in a later ++ Emacs release. */ ++# define ADD_NO_RANDOMIZE 0x0040000 ++ int pers = personality (0xffffffff); ++ if (! (pers & ADD_NO_RANDOMIZE) ++ && 0 <= personality (pers | ADD_NO_RANDOMIZE)) ++ { ++ /* Address randomization was enabled, but is now disabled. ++ Re-execute Emacs to get a clean slate. */ ++ execvp (argv[0], argv); ++ ++ /* If the exec fails, warn the user and then try without a ++ clean slate. */ ++ perror (argv[0]); ++ } ++# undef ADD_NO_RANDOMIZE ++#endif ++ + #ifndef CANNOT_DUMP + might_dump = !initialized; + #endif +@@ -784,7 +804,7 @@ main (int argc, char **argv) + dumping = !initialized && (strcmp (argv[argc - 1], "dump") == 0 + || strcmp (argv[argc - 1], "bootstrap") == 0); + +-#ifdef HAVE_PERSONALITY_LINUX32 ++#if defined HAVE_PERSONALITY_LINUX32 && !defined __PPC64__ + if (dumping && ! getenv ("EMACS_HEAP_EXEC")) + { + /* Set this so we only do this once. */ +@@ -801,7 +821,7 @@ main (int argc, char **argv) + /* If the exec fails, try to dump anyway. */ + emacs_perror (argv[0]); + } +-#endif /* HAVE_PERSONALITY_LINUX32 */ ++#endif + + #if defined (HAVE_SETRLIMIT) && defined (RLIMIT_STACK) && !defined (CYGWIN) + /* Extend the stack space available. Don't do that if dumping, diff --git a/emacs.spec b/emacs.spec index 252b349..342faac 100644 --- a/emacs.spec +++ b/emacs.spec @@ -5,7 +5,7 @@ Summary: GNU Emacs text editor Name: emacs Epoch: 1 Version: 25.0.95 -Release: 3%{?dist} +Release: 4%{?dist} License: GPLv3+ and CC0-1.0 URL: http://www.gnu.org/software/emacs/ Group: Applications/Editors @@ -25,6 +25,7 @@ Patch1: emacs-spellchecker.patch # Fix for default PDF viewer bug #971162 Patch2: emacs-pdf-default.patch Patch3: emacs-system-crypto-policies.patch +Patch4: emacs-ppc64.patch BuildRequires: atk-devel BuildRequires: cairo-devel @@ -69,7 +70,7 @@ BuildRequires: webkitgtk3-devel BuildRequires: python2-devel BuildRequires: python3-devel -%ifarch %{ix86} %{power64} +%ifarch %{ix86} BuildRequires: util-linux %endif @@ -167,6 +168,7 @@ packages that add functionality to Emacs. %patch1 -p1 -b .spellchecker %patch2 -p1 -b .pdf-default.patch %patch3 -p1 -b .system-crypto-policies +%patch4 -p1 -b .ppc64 autoconf # We prefer our emacs.desktop file @@ -220,12 +222,7 @@ LDFLAGS=-Wl,-z,relro; export LDFLAGS; %configure --with-dbus --with-gif --with-jpeg --with-png --with-rsvg \ --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3 --with-gpm=no \ --with-xwidgets -%ifarch %{power64} - # Temporary workaround for #1356919. Remove when Emacs has been fixed properly. - setarch %{_arch} -R make bootstrap -%else - make bootstrap -%endif +make bootstrap %{setarch} make %{?_smp_mflags} cd .. @@ -451,6 +448,9 @@ update-desktop-database &> /dev/null || : %dir %{_datadir}/emacs/site-lisp/site-start.d %changelog +* Fri Jul 22 2016 Jan Synáček - 1:25.0.95-4 +- fix: emacs build failure due to high memory consumption on ppc64 (#1356919) + * Mon Jul 18 2016 Jan Synáček - 1:25.0.95-3 - workaround: emacs build failure due to high memory consumption on ppc64 (#1356919) (patch provided by Sinny Kumari)