diff --git a/README.md b/README.md index 035cf7d..e76c086 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,9 @@ # emacs +Emacs is a powerful, customizable, self-documenting, modeless text editor. +Emacs contains special code editing features, a scripting language (elisp), and the capability to read mail, news and more without leaving the editor. + +This package includes the libraries you need to run the Emacs editor, so you need to install this package if you intend to use Emacs. +You also need to install the actual Emacs program package (emacs-nox or emacs-X11). +Install emacs-nox if you are not going to use the X Window System; install emacs-X11 if you will be using X. + diff --git a/emacs-21.3-ia64.patch b/emacs-21.3-ia64.patch new file mode 100644 index 0000000..bbbc3b0 --- /dev/null +++ b/emacs-21.3-ia64.patch @@ -0,0 +1,13 @@ +--- emacs-20.6.orig/src/coding.h Fri May 19 23:20:52 2000 ++++ emacs-20.6/src/coding.h Fri May 19 22:58:43 2000 +@@ -495,6 +495,9 @@ + s2 = c2 + 0x7E; \ + } while (0) + ++/* Must declare this, so that we don't lose high 4 bytes on 64-bit machines. */ ++extern Lisp_Object code_convert_string_norecord (); ++ + /* Encode the file name NAME using the specified coding system + for file names, if any. */ + #define ENCODE_FILE(name) \ + diff --git a/emacs-21.3-x86_64.patch b/emacs-21.3-x86_64.patch new file mode 100644 index 0000000..249977f --- /dev/null +++ b/emacs-21.3-x86_64.patch @@ -0,0 +1,220 @@ +--- emacs-21.2/src/m/x86_64.h.x86_64 2002-07-09 11:04:36.000000000 +0200 ++++ emacs-21.2/src/m/x86_64.h 2002-07-09 11:07:23.000000000 +0200 +@@ -0,0 +1,175 @@ ++/* machine description file for the X86-64 architecture. ++ Copyright (C) 2000 Free Software Foundation, Inc. ++ ++This file is part of GNU Emacs. ++ ++GNU Emacs is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 1, or (at your option) ++any later version. ++ ++GNU Emacs is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GNU Emacs; see the file COPYING. If not, write to ++the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++#define BITS_PER_LONG 64 ++#define BITS_PER_EMACS_INT 64 ++ ++/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word ++ is the most significant byte. */ ++ ++#undef WORDS_BIG_ENDIAN ++ ++/* Define NO_ARG_ARRAY if you cannot take the address of the first of a ++ group of arguments and treat it as an array of the arguments. */ ++ ++#define NO_ARG_ARRAY ++ ++/* Define WORD_MACHINE if addresses and such have ++ to be corrected before they can be used as byte counts. */ ++ ++/* #define WORD_MACHINE */ ++ ++/* Now define a symbol for the cpu type, if your compiler ++ does not define it automatically: ++ Ones defined so far include vax, m68000, ns16000, pyramid, ++ orion, tahoe, APOLLO and many others */ ++ ++/* __x86_64__ defined automatically */ ++ ++ ++/* Use type EMACS_INT rather than a union, to represent Lisp_Object */ ++/* This is desirable for most machines. */ ++ ++#define NO_UNION_TYPE ++ ++/* Define the type to use. */ ++#define EMACS_INT long ++#define EMACS_UINT unsigned long ++#define SPECIAL_EMACS_INT ++ ++/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend ++ the 24-bit bit field into an int. In other words, if bit fields ++ are always unsigned. ++ ++ If you use NO_UNION_TYPE, this flag does not matter. */ ++ ++#define EXPLICIT_SIGN_EXTEND ++ ++/* Data type of load average, as read out of kmem. */ ++ ++#define LOAD_AVE_TYPE long ++ ++/* Convert that into an integer that is 100 for a load average of 1.0 */ ++ ++#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE) ++ ++/* Define CANNOT_DUMP on machines where unexec does not work. ++ Then the function dump-emacs will not be defined ++ and temacs will do (load "loadup") automatically unless told otherwise. */ ++#if 0 ++#define CANNOT_DUMP ++#endif ++ ++/* Define VIRT_ADDR_VARIES if the virtual addresses of ++ pure and impure space as loaded can vary, and even their ++ relative order cannot be relied on. ++ ++ Otherwise Emacs assumes that text space precedes data space, ++ numerically. */ ++ ++/* #define VIRT_ADDR_VARIES */ ++ ++/* Define C_ALLOCA if this machine does not support a true alloca ++ and the one written in C should be used instead. ++ Define HAVE_ALLOCA to say that the system provides a properly ++ working alloca function and it should be used. ++ Define neither one if an assembler-language alloca ++ in the file alloca.s should be used. */ ++ ++#define HAVE_ALLOCA ++ ++/* Define the following if GNU malloc and the relocating allocator do ++ not work together with X. */ ++ ++/* #define SYSTEM_MALLOC */ ++ ++/* Define NO_REMAP if memory segmentation makes it not work well ++ to change the boundary between the text section and data section ++ when Emacs is dumped. If you define this, the preloaded Lisp ++ code will not be sharable; but that's better than failing completely. */ ++ ++/* #define NO_REMAP */ ++ ++/* Some really obscure 4.2-based systems (like Sequent DYNIX) do not ++ support asynchronous I/O (using SIGIO) on sockets, even though it ++ works fine on tty's. If you have one of these systems, define the ++ following, and then use it in config.h (or elsewhere) to decide ++ when (not) to use SIGIO. ++ ++ You'd think this would go in an operating-system description file, ++ but since it only occurs on some, but not all, BSD systems, the ++ reasonable place to select for it is in the machine description ++ file. */ ++ ++/* #define NO_SOCK_SIGIO */ ++ ++#ifdef __ELF__ ++#undef UNEXEC ++#define UNEXEC unexelf.o ++#endif ++ ++#define PNTR_COMPARISON_TYPE unsigned long ++ ++/* On the 64 bit architecture, we can use 60 bits for addresses */ ++ ++#define VALBITS 60 ++ ++/* Define XINT and XUINT so that they can take arguments of type int */ ++ ++#define XINT(a) (((long) (a) << (BITS_PER_LONG - VALBITS)) >> (BITS_PER_LONG - VALBITS)) ++#define XUINT(a) ((long) (a) & VALMASK) ++ ++/* Declare malloc and realloc in a way that is clean. ++ But not in makefiles! */ ++ ++#ifndef NOT_C_CODE ++/* We need these because pointers are larger than the default ints. */ ++# if !defined(__NetBSD__) && !defined(__OpenBSD__) ++# include ++# else ++# include ++# endif ++ ++/* We need to prototype these for the lib-src programs even if we don't ++ use the system malloc for the Emacs proper. */ ++#ifdef _MALLOC_INTERNAL ++/* These declarations are designed to match the ones in gmalloc.c. */ ++#if defined (__STDC__) && __STDC__ ++extern void *malloc (), *realloc (), *calloc (); ++#else ++extern char *malloc (), *realloc (), *calloc (); ++#endif ++#else /* not _MALLOC_INTERNAL */ ++extern void *malloc (), *realloc (), *calloc (); ++#endif /* not _MALLOC_INTERNAL */ ++ ++#ifdef REL_ALLOC ++#ifndef _MALLOC_INTERNAL ++/* "char *" because ralloc.c defines it that way. gmalloc.c thinks it ++ is allowed to prototype these as "void *" so we don't prototype in ++ that case. You're right: it stinks! */ ++extern char *r_alloc (), *r_re_alloc (); ++extern void r_alloc_free (); ++#endif /* not _MALLOC_INTERNAL */ ++#endif /* REL_ALLOC */ ++ ++#endif /* not NOT_C_CODE */ ++ ++#define HAVE_TEXT_START +--- emacs-21.2/src/s/gnu-linux.h.x86_64 2001-09-28 17:50:04.000000000 +0200 ++++ emacs-21.2/src/s/gnu-linux.h 2002-07-09 11:14:34.000000000 +0200 +@@ -173,8 +173,12 @@ Boston, MA 02111-1307, USA. */ + /* GNU/Linux usually has crt0.o in a non-standard place */ + #define START_FILES pre-crt0.o /usr/lib/crt0.o + #else ++#if defined(__x86_64) ++#define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o ++#else + #define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o + #endif ++#endif + + #ifdef __ELF__ + /* Here is how to find X Windows. LD_SWITCH_X_SITE_AUX gives an -R option +@@ -225,8 +229,12 @@ Boston, MA 02111-1307, USA. */ + #else + #undef LIB_GCC + #define LIB_GCC ++#if defined(__x86_64) ++#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib64/crtn.o ++#else + #define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtn.o + #endif ++#endif + + /* Don't use -g in test compiles in configure. + This is so we will use the same shared libs for that linking +--- emacs-21.2/configure.in.x86_64 2002-07-09 10:23:41.000000000 +0200 ++++ emacs-21.2/configure.in 2002-07-09 10:49:54.000000000 +0200 +@@ -997,6 +997,11 @@ case "${canonical}" in + machine=ia64 opsys=gnu-linux + ;; + ++ ## X86-64 ++ x86_64*-*-linux* ) ++ machine=x86_64 opsys=gnu-linux ++ ;; ++ + ## Intel 386 machines where we don't care about the manufacturer + i[3456]86-*-* ) + machine=intel386 diff --git a/emacs-22.2-infofix.patch b/emacs-22.2-infofix.patch new file mode 100644 index 0000000..4f3ed76 --- /dev/null +++ b/emacs-22.2-infofix.patch @@ -0,0 +1,47 @@ +diff -Nru emacs-22.2.orig/etc/emacs.1 emacs-22.2/etc/emacs.1 +--- emacs-22.2.orig/etc/emacs.1 2008-01-10 13:15:28.000000000 +0100 ++++ emacs-22.2/etc/emacs.1 2008-06-03 12:41:01.000000000 +0200 +@@ -630,28 +630,28 @@ + . + . + .SH FILES +-/usr/local/share/info \(em files for the Info documentation browser. ++/usr/share/info \(em files for the Info documentation browser. + The complete text of the Emacs reference manual is included in a + convenient tree structured form. + Also includes the Emacs Lisp Reference Manual, useful to anyone + wishing to write programs in the Emacs Lisp extension language. + +-/usr/local/share/emacs/$VERSION/lisp \(em Lisp source files and ++/usr/share/emacs/$VERSION/lisp \(em Lisp source files and + compiled files that define most editing commands. + Some are preloaded; others are autoloaded from this directory when + used. + +-/usr/local/libexec/emacs/$VERSION/$ARCH \(em various programs that are ++/usr/libexec/emacs/$VERSION/$ARCH \(em various programs that are + used with GNU Emacs. + +-/usr/local/share/emacs/$VERSION/etc \(em various files of information. ++/usr/share/emacs/$VERSION/etc \(em various files of information. + +-/usr/local/share/emacs/$VERSION/etc/DOC.* \(em contains the documentation ++/usr/share/emacs/$VERSION/etc/DOC.* \(em contains the documentation + strings for the Lisp primitives and preloaded Lisp functions + of GNU Emacs. + They are stored here to reduce the size of Emacs proper. + +-/usr/local/share/emacs/$VERSION/etc/SERVICE lists people offering ++/usr/share/emacs/$VERSION/etc/SERVICE lists people offering + various services to assist users of GNU Emacs, including education, + troubleshooting, porting and customization. + . +@@ -675,7 +675,7 @@ + + Please do not send anything but bug reports to this mailing list. + For more information about Emacs mailing lists, see the +-file /usr/local/emacs/etc/MAILINGLISTS. ++file /usr/share/emacs/etc/MAILINGLISTS. + Bugs tend actually to be fixed if they can be isolated, so it is + in your interest to report them in such a way that they can be + easily reproduced. diff --git a/emacs-22.3-security_mktemp.patch b/emacs-22.3-security_mktemp.patch new file mode 100644 index 0000000..8c082f1 --- /dev/null +++ b/emacs-22.3-security_mktemp.patch @@ -0,0 +1,12 @@ +diff -Nru emacs-22.3.orig/lib-src/rcs2log emacs-22.3/lib-src/rcs2log +--- emacs-22.3.orig/lib-src/rcs2log 2008-01-07 09:39:42.000000000 +0100 ++++ emacs-22.3/lib-src/rcs2log 2008-09-08 01:48:39.000000000 +0200 +@@ -205,7 +205,7 @@ + m[9]="Oct"; m[10]="Nov"; m[11]="Dec" + ' + +-logdir=$TMPDIR/rcs2log$$ ++logdir=`mktemp -d /tmp/rcs2log.XXXXXX` || exit 1 + llogout=$logdir/l + trap exit 1 2 13 15 + trap "rm -fr $logdir 2>/dev/null" 0 diff --git a/emacs-24.3-libgif-5.patch b/emacs-24.3-libgif-5.patch new file mode 100644 index 0000000..a832d2d --- /dev/null +++ b/emacs-24.3-libgif-5.patch @@ -0,0 +1,56 @@ +diff --git a/configure.ac b/configure.ac +index 62f53a3..ad9d948 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2659,15 +2659,15 @@ LIBGIF= + if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \ + || test "${HAVE_W32}" = "yes"; then + AC_CHECK_HEADER(gif_lib.h, +-# EGifPutExtensionLast only exists from version libungif-4.1.0b1. ++# EGifPutExtensionTrailer only exists from version libungif-4.1.0b1. + # Earlier versions can crash Emacs. +- [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)]) ++ [AC_CHECK_LIB(gif, EGifPutExtensionTrailer, HAVE_GIF=yes, HAVE_GIF=maybe)]) + + if test "$HAVE_GIF" = yes; then + LIBGIF=-lgif + elif test "$HAVE_GIF" = maybe; then + # If gif_lib.h but no libgif, try libungif. +- AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no) ++ AC_CHECK_LIB(ungif, EGifPutExtensionTrailer, HAVE_GIF=yes, HAVE_GIF=no) + test "$HAVE_GIF" = yes && LIBGIF=-lungif + fi + +diff --git a/src/image.c b/src/image.c +index ce36699..bbc5c49 100644 +--- a/src/image.c ++++ b/src/image.c +@@ -7101,8 +7101,8 @@ gif_image_p (Lisp_Object object) + /* GIF library details. */ + DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *)); + DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *)); +-DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc)); +-DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *)); ++DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc, int*)); ++DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *, int*)); + + static bool + init_gif_functions (void) +@@ -7192,7 +7192,7 @@ gif_load (struct frame *f, struct image *img) + } + + /* Open the GIF file. */ +- gif = fn_DGifOpenFileName (SSDATA (file)); ++ gif = fn_DGifOpenFileName (SSDATA (file), NULL); + if (gif == NULL) + { + image_error ("Cannot open `%s'", file, Qnil); +@@ -7213,7 +7213,7 @@ gif_load (struct frame *f, struct image *img) + memsrc.len = SBYTES (specified_data); + memsrc.index = 0; + +- gif = fn_DGifOpen (&memsrc, gif_read_from_memory); ++ gif = fn_DGifOpen (&memsrc, gif_read_from_memory, NULL); + if (!gif) + { + image_error ("Cannot open memory source `%s'", img->spec, Qnil); diff --git a/emacs-xemacs.desktop b/emacs-xemacs.desktop new file mode 100644 index 0000000..a258219 --- /dev/null +++ b/emacs-xemacs.desktop @@ -0,0 +1,103 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=X Emacs +Name[ar]=أكس إيمX +Name[bn]=এক্স ইম্যাক্স +Name[eo]=XEmakso +Name[es]=XEmacs +Name[fa]=ایمکس X +Name[fr]=XEmacs +Name[hi]=एक्स ईमेक्स +Name[id]= Emacs X +Name[ko]=X용 이맥스 +Name[nb]=X-Emacs +Name[pa]=X Eਮੈਕਸ +Name[ta]=X எமாக்ஸ் +Name[th]=Emacs บน X +Name[xx]=xxX Emacsxx +Name[zh_TW]=X Emacs 編輯器 +GenericName=Text Editor +GenericName[af]=Teks Redigeerder +GenericName[ar]=محرر نصوص +GenericName[az]=Mətn Editoru +GenericName[be]=Тэкставы рэдактар +GenericName[bg]=Текстов редактор +GenericName[bn]=টেক্সট সম্পাদক +GenericName[br]=Aozer skrid +GenericName[bs]=Tekst editor +GenericName[ca]=Editor de text +GenericName[cs]=Textový editor +GenericName[cy]=Golygydd Testun +GenericName[da]= Teksteditor +GenericName[de]=Texteditor +GenericName[el]=Επεξεργαστής κειμένου +GenericName[eo]=Tekstredaktilo +GenericName[es]=Editor de texto +GenericName[et]=Tekstiredaktor +GenericName[eu]=Testu editorea +GenericName[fa]=ویرایشگر متن +GenericName[fi]=Tekstieditori +GenericName[fo]=Tekstritil +GenericName[fr]=Éditeur de texte +GenericName[fy]=Tekst Bewurker +GenericName[ga]=Eagarthóir Téacs +GenericName[gl]=Editor de Textos +GenericName[he]=עורך טקסט +GenericName[hi]=पाठ संपादक +GenericName[hr]=Uređivač teksta +GenericName[hsb]=Wobdźěłar tekstow +GenericName[hu]=Szövegszerkesztő +GenericName[is]=Textaritill +GenericName[it]=Editor di testi +GenericName[ja]=テキストエディタ +GenericName[km]=កម្មវិធី​វាយ​អត្ថបទ +GenericName[ko]=글월 편집기 +GenericName[lo]=ເຄື່ອງມືແກ້ໄຂຂໍ້ຄວາມ +GenericName[lt]=Teksto redaktorius +GenericName[lv]=Teksta Redaktors +GenericName[mk]=Уредувач на текст +GenericName[mn]=Текст боловсруулагч +GenericName[ms]=Penyunting Teks +GenericName[mt]=Editur tat-test +GenericName[nb]=Skriveprogram +GenericName[nds]=Texteditor +GenericName[nl]=Teksteditor +GenericName[nn]=Skriveprogram +GenericName[nso]=Mofetosi wa Sengwalwana +GenericName[pa]=ਪਾਠ ਸੰਪਾਦਕ +GenericName[pl]=Edytor tekstowy +GenericName[pt]=Editor de Texto +GenericName[pt_BR]=Editor de Texto +GenericName[ro]=Editor de text +GenericName[ru]=Текстовый редактор +GenericName[rw]=Muhinduzi Umwandiko +GenericName[se]=Čállinprográmma +GenericName[sk]=Textový editor +GenericName[sl]=Urejevalnik besedil +GenericName[sr]=Уређивач текста +GenericName[sr@Latn]=Uređivač teksta +GenericName[ss]=Sihleli sembhalo +GenericName[sv]=Texteditor +GenericName[ta]=உரை தொகுப்பாளர் +GenericName[tg]=Муҳаррири матн +GenericName[th]=โปรแกรมแก้ไขข้อความ +GenericName[tr]=Metin Düzenleyici +GenericName[tt]=Mäten Tözätkeçe +GenericName[uk]=Редактор текстів +GenericName[uz]=Матн таҳрирчи +GenericName[ven]=Musengulusi wa Manwalwa +GenericName[vi]=Trình soạn văn bản +GenericName[wa]=Aspougneu di tecse +GenericName[xh]=Umhleli Wombhalo +GenericName[xx]=xxText Editorxx +GenericName[zh_CN]=文本编辑器 +GenericName[zh_TW]=文字編輯器 +GenericName[zu]=Umlungisi wombhalo +MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++; +Exec=emacs %f +Icon=emacs +Type=Application +Terminal=false +Categories=Application;TextEditor; +X-KDE-StartupNotify=true +X-KDE-AuthorizeAction=shell_access diff --git a/emacs-xemacs.png b/emacs-xemacs.png new file mode 100644 index 0000000..78f866e Binary files /dev/null and b/emacs-xemacs.png differ diff --git a/emacs.spec b/emacs.spec new file mode 100644 index 0000000..81973a4 --- /dev/null +++ b/emacs.spec @@ -0,0 +1,475 @@ +# Staged build (no first stage deps) +# rpm -ba emacs.spec --define 'stage1 1' + +# FIXME: currently (ver.22.1) --x-toolkit=gtk leads to a segfaulting xemacs +%define with_xtoolkit_motif 0 +%define dirver %(echo %version | sed "s|[a-z]$||") +Name: emacs +Version: 24.3 +Release: 3mamba +Summary: The libraries needed to run the GNU Emacs text editor +Group: Applications/Text +Vendor: openmamba +Distribution: openmamba +Packager: Davide Madrisan +URL: http://www.gnu.org/software/emacs/ +Source: ftp://ftp.gnu.org/pub/gnu/%{name}/%{name}-%{version}.tar.gz +Source1: %{name}-xemacs.desktop +Source2: %{name}-xemacs.png +Patch0: %{name}-22.2-infofix.patch +Patch1: %{name}-22.3-security_mktemp.patch +Patch2: %{name}-21.3-ia64.patch +Patch3: %{name}-21.3-x86_64.patch +Patch4: emacs-24.3-libgif-5.patch +License: GPL +## AUTOBUILDREQ-BEGIN +BuildRequires: GConf-devel +BuildRequires: glibc-devel +BuildRequires: libalsa-devel +%if ! %{with_xtoolkit_motif} +BuildRequires: libatk-devel +BuildRequires: libcairo-devel +%endif +BuildRequires: libdbus-devel +BuildRequires: libfontconfig-devel +%if ! %{with_xtoolkit_motif} +BuildRequires: libfreetype-devel +%endif +BuildRequires: libgdk-pixbuf-devel +BuildRequires: libgif-devel +%if ! %{with_xtoolkit_motif} +BuildRequires: libglib-devel +%endif +BuildRequires: libgnutls-devel +BuildRequires: libgomp-devel +BuildRequires: libgpm-devel +%if ! %{with_xtoolkit_motif} +BuildRequires: libgtk-devel +%endif +BuildRequires: libICE-devel +BuildRequires: libjpeg-devel +BuildRequires: libMagick-devel +BuildRequires: libncurses-devel +%if ! %{with_xtoolkit_motif} +BuildRequires: libpango-devel +%endif +%if "%{?stage1}" != "1" +BuildRequires: libpng-devel +%endif +BuildRequires: librsvg-devel +BuildRequires: libselinux-devel +%if "%{?stage1}" != "1" +BuildRequires: libSM-devel +BuildRequires: libtiff-devel +BuildRequires: libX11-devel +%endif +BuildRequires: libXft-devel +BuildRequires: libxml2-devel +%if "%{?stage1}" != "1" +BuildRequires: libXpm-devel +%endif +BuildRequires: libXrender-devel +BuildRequires: libz-devel +BuildRequires: perl-devel +## AUTOBUILDREQ-END +BuildRequires: debianutils +%if "%{?stage1}" != "1" +BuildRequires: Xaw3d-devel +#BuildRequires: libungif-devel +BuildRequires: liblesstif-devel +%endif +BuildRequires: pkgconfig +BuildRequires: texinfo +Requires: debianutils +Requires(post):%{__install_info} +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +# NOTE: +# Does Emacs use -lXaw3d? no +# (usage of Xaw3d is disabled when xtoolkit is set to motif) + +%description +Emacs is a powerful, customizable, self-documenting, modeless text editor. +Emacs contains special code editing features, a scripting language (elisp), and the capability to read mail, news and more without leaving the editor. + +This package includes the libraries you need to run the Emacs editor, so you need to install this package if you intend to use Emacs. +You also need to install the actual Emacs program package (emacs-nox or emacs-X11). +Install emacs-nox if you are not going to use the X Window System; install emacs-X11 if you will be using X. + +%package el +Summary: The sources for elisp programs included with Emacs +Group: Applications/Text +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} + +%description el +Emacs-el contains the emacs-elisp sources for many of the elisp programs included with the main Emacs text editor package. + +You need to install emacs-el only if you intend to modify any of the Emacs packages or see some elisp examples. + +%package doc +Summary: Emacs documentation +Group: Documentation +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} + +%description doc +The Emacs documentation. + +%package leim +Summary: Emacs Lisp code for input methods for internationalization +Group: Applications/Text +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} + +%description leim +The Emacs Lisp code for input methods for various international character scripts. + +%package nox +Summary: The Emacs text editor without support for the X Window System +Group: Applications/Text +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} +Provides: %{name}-bin + +%description nox +Emacs-nox is the Emacs text editor program without support for the X Window System. + +You need to install this package only if you plan on exclusively using Emacs without the X Window System (emacs-X11 will work both in X and out of X, but emacs-nox will only work outside of X). +You'll also need to install the emacs package in order to run Emacs. + +%package X11 +Summary: The Emacs text editor for the X Window System +Group: Graphical Desktop/Applications/Office +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} +Provides: %{name}-bin + +%description X11 +Emacs-X11 includes the Emacs text editor program for use with the X Window System (it provides support for the mouse and other GUI elements). +Emacs-X11 will also run Emacs outside of X, but it has a larger memory footprint than the 'non-X' Emacs package (emacs-nox). + +Install emacs-X11 if you're going to use Emacs with the X Window System. +You should also install emacs-X11 if you're going to run Emacs both with and without X (it will work fine both ways). +You'll also need to install the emacs package in order to run Emacs. + +%prep +%setup -q -n %{name}-%{dirver} +#%patch0 -p1 -b .infofix +%patch1 -p1 -b .security_mktemp +#patch2 -p1 -b .ia64 +#patch3 -p1 -b .x86_64 +%patch4 -p1 + +#sed -i 's/ctags/gctags/g' etc/etags.1 + +%build +./autogen.sh + +CFLAGSEXTRA="-DMAIL_USE_LOCKF -DSYSTEM_PURESIZE_EXTRA=16777216" +CONFOPTS="\ +--build=%{_build} \ +--host=%{_host} \ +--prefix=%{_prefix} \ +--libdir=%{_libdir} \ +--libexecdir=%{_libdir} \ +--mandir=%{_mandir} \ +--infodir=%{_infodir} \ +--sharedstatedir=/var \ +--with-pop" + +# build binary without X support +[ -d build-nox ] && rm -rf build-nox +mkdir build-nox && cd build-nox +CFLAGS="%{optflags} $CFLAGSEXTRA" LDFLAGS=-s \ +../configure ${CONFOPTS} \ + --with-x=no +%make bootstrap +%make +cd .. + +# build binary with X support +%if "%{?stage1}" != "1" +[ -d build-withx ] && rm -rf build-withx +mkdir build-withx && cd build-withx +CFLAGS="%{optflags} $CFLAGSEXTRA" LDFLAGS=-s \ +../configure ${CONFOPTS} \ +%if %{with_xtoolkit_motif} + --with-x-toolkit=motif \ +%else + --with-x-toolkit=gtk \ +%endif + --with-sound \ + %{_arch}-pc-linux-gnu + +%make bootstrap +%make +cd .. +%endif + +%install +[ "%{buildroot}" != / ] && rm -rf %{buildroot} +PATH=$PATH:/sbin +ARCHDIR=%{_arch}-pc-linux-gnu + +%if "%{?stage1}" != "1" + %define opt_build withx +%else + %define opt_build nox +%endif + +%makeoldinstall -C build-%{opt_build} \ + sharedstatedir=%{buildroot}/var \ + libexecdir=%{buildroot}%{_libdir} + +rm -f %{buildroot}%{_infodir}/dir +install -D -m755 build-nox/src/emacs %{buildroot}%{_bindir}/emacs-%{dirver}-nox +#install -D -m644 build-nox/etc/DOC-%{version}.1 \ +# %{buildroot}%{_datadir}/emacs/%{version}/etc/DOC-%{version}.1 + +mv %{buildroot}%{_mandir}/man1/ctags.1.gz %{buildroot}%{_mandir}/man1/gctags.1.gz +mv %{buildroot}%{_bindir}/ctags %{buildroot}%{_bindir}/gctags + +# remove sun specific stuff +rm -f %{buildroot}%{_datadir}/%{name}/%{dirver}/etc/emacstool.1 + +# remove unusefull stuff +rm -f %{buildroot}%{_datadir}/%{name}/%{dirver}/etc/sex.6 +rm -f %{buildroot}%{_libdir}/%{name}/%{dirver}/%{_arch}-pc-linux-gnu/fakemail +rm -f %{buildroot}%{_infodir}/dir +rm -f %{buildroot}%{_localstatedir}/games/emacs/* + +install -d %{buildroot}%{_libdir}/%{name}/site-lisp + +# create file lists +find %{buildroot}%{_datadir}/%{name}/%{dirver}/lisp \ + -name '*.elc' -print -o -type d -printf "%%%%dir %%p\n" | \ +sed "s,%{buildroot},," > core-filelist + +find %{buildroot}%{_libdir}/%{name}/%{dirver} -type f | \ +sed "s,%{buildroot},," | grep -v movemail >> core-filelist + +# include .el files which lack a corresponding byte compiled form +for f in `find %{buildroot}%{_datadir}/%{name}/%{dirver}/lisp -name '*.el'`; do + [ -e `dirname $f`/`basename $f .el`.elc ] || + echo $f | sed "s,%{buildroot},," +done >> core-filelist + +# move docs from emacs to emacs-el to reduce emacs core size +# (tutorials, news, postscript files, ...)' +find %{buildroot}%{_datadir}/%{name}/%{dirver}/etc/ -type f | \ + egrep -v 'DOC|TUTORIAL|NEWS|ONEWS|termcap.src|\.ps$' | \ + sed "s,%{buildroot},," >> core-filelist + +find %{buildroot}%{_datadir}/%{name}/%{dirver}/etc/ -type d -printf "%%%%dir %%p\n" | \ + sed "s,%{buildroot},," >> core-filelist + +# these two files're needed by ps-print +for f in %{_datadir}/%{name}/%{dirver}/etc/ps-prin{0,1}.ps; do + echo $f >> core-filelist +done + +find %{buildroot}%{_datadir}/%{name}/%{dirver}/etc/ -type f | \ + egrep 'termcap.src' | fgrep -v /etc/ps-prin | \ + sed "s,%{buildroot},," > el-filelist + +find %{buildroot}%{_datadir}/%{name}/%{dirver}/etc/ -type f | \ + egrep 'TUTORIAL|NEWS|ONEWS|.ps$' | fgrep -v /etc/ps-prin | \ + sed "s,%{buildroot},," > doc-filelist + +# include all non elisp files which emacs installs +find %{buildroot}%{_datadir}/%{name}/%{dirver}/lisp -type f | \ + sed "s,%{buildroot},," | grep -v "\.el\(c\)\?$" >> core-filelist + +find %{buildroot}%{_datadir}/%{name}/%{dirver}/leim \ + -name '*.elc' -print -o -mindepth 1 -type d -printf "%%%%dir %%p\n" | \ + sed "s^%{buildroot}^^" > leim-filelist + +# be sure to exclude some files which are need in core package +for f in `find %{buildroot}%{_datadir}/%{name}/%{dirver}/lisp -name '*.el'`; do + [ -e `dirname $f`/`basename $f .el`.elc ] && + echo $f | sed "s,%{buildroot},," +done >> el-filelist + +find %{buildroot}%{_datadir}/%{name}/%{dirver}/leim \ + -name '*.el.gz' -print | sed "s,%{buildroot},," | \ + grep -v "leim\/leim-list.el" >> el-filelist + +%if "%{?stage1}" != "1" +%if %{with_xtoolkit_motif} +install -d %{buildroot}%{_datadir}/X11/app-defaults/ +cat > %{buildroot}%{_datadir}/X11/app-defaults/Emacs << _EOF +Emacs*font: -*-fixed-medium-r-normal-*-*-140-75-75-*-*-* +emacs*foreground: Wheat +emacs*background: DarkSlateGray +emacs*region.attributeForeground: White +emacs*region.attributeBackground: SteelBlue +emacs*pointerColor: Orchid +emacs*cursorColor: Orchid +_EOF +%endif +%else +rm -rf %{buildroot}%{_datadir}/icons %{buildroot}%{_datadir}/applications +%endif + +rm -f %{buildroot}%{_bindir}/%{name} +ln -sf %{_bindir}/%{name}-%{dirver}-nox %{buildroot}%{_bindir}/%{name} + +%if "%{?stage1}" != "1" +ln -sf %{_bindir}/%{name}-%{dirver} %{buildroot}%{_bindir}/x%{name} + +# install a menu entry for xemacs +install -D -m0644 %{S:1} %{buildroot}%{_datadir}/applications/xemacs.desktop +install -D -m0644 %{S:2} %{buildroot}%{_datadir}/pixmaps/xemacs.png +rm -f %{buildroot}%{_datadir}/applications/emacs.desktop +%endif + +# info.info conflicting with texinfo 5.1 +rm -f %{buildroot}%{_infodir}/info.info.* + +%clean +[ "%{buildroot}" != / ] && rm -rf %{buildroot} + +%define info_files ada-mode autotype ccmode cl dired-x ebrowse ediff efaq emacs emacs-mime eshell eudc forms gnus idlwave message mh-e pcl-cvs reftex sc speedbar vip viper widget woman + +%post +for info_file in %info_files + do %install_info $info_file +done +exit 0 + +%preun +for info_file in %info_files + do %uninstall_info $info_file +done +exit 0 + +%files -f core-filelist +%defattr(-,root,root) +%{_bindir}/gctags +%{_bindir}/emacsclient +%{_bindir}/ebrowse +%{_bindir}/etags +%{_bindir}/grep-changelog +#%{_bindir}/rcs-checkin +%dir %{_libdir}/%{name} +%dir %{_libdir}/%{name}/%{dirver} +%dir %{_libdir}/%{name}/%{dirver}/%{_host} +%attr(755,root,root) %{_libdir}/%{name}/%{dirver}/%{_host}/movemail +%dir %{_datadir}/%{name}/site-lisp +%dir %{_datadir}/%{name}/%{dirver}/site-lisp +%dir %{_datadir}/%{name}/%{dirver}/leim +#%{_localstatedir}/games/%{name}/ +%{_mandir}/man?/* +%{_infodir}/* +%doc src/COPYING + +%files -f doc-filelist doc +%defattr(-,root,root) +%doc BUGS README + +%files -f el-filelist el +%defattr(-,root,root) +%{_datadir}/%{name}/%{dirver}/site-lisp/subdirs.el +%{_datadir}/%{name}/site-lisp/subdirs.el + +%files -f leim-filelist leim +%defattr(-,root,root) +%{_datadir}/%{name}/%{dirver}/leim/leim-list.el + +%files nox +%defattr(-,root,root) +%doc src/COPYING +%{_bindir}/%{name} +%if "%{?stage1}" == "1" +%{_bindir}/%{name}-%{dirver} +%endif +%{_bindir}/%{name}-%{dirver}-nox +%{_datadir}/%{name}/%{dirver}/etc/DOC-%{dirver}.* + +%if "%{?stage1}" != "1" +%files X11 +%defattr(-,root,root) +%{_datadir}/applications/xemacs.desktop +%{_bindir}/%{name}-%{dirver} +%{_bindir}/xemacs +%{_datadir}/pixmaps/xemacs.png +%{_datadir}/icons/hicolor/*/apps/emacs*.png +%{_datadir}/icons/hicolor/scalable/apps/emacs.svg +%{_datadir}/icons/hicolor/scalable/mimetypes/emacs-document.svg +%if %{with_xtoolkit_motif} +%{_datadir}/X11/app-defaults/Emacs +%endif +%endif + +%changelog +* Wed Dec 11 2013 Silvan Calarco 24.3-3mamba +- added build patch against libgif 5 + +* Mon Mar 18 2013 Silvan Calarco 24.3-2mamba +- don't install info.info.gz conflicting with texinfo 5.1 + +* Fri Mar 15 2013 Automatic Build System 24.3-1mamba +- automatic version update by autodist + +* Tue Aug 21 2012 Automatic Build System 24.2-1mamba +- automatic version update by autodist + +* Tue Jun 12 2012 Automatic Build System 24.1-1mamba +- automatic version update by autodist + +* Sat Jan 28 2012 Automatic Build System 23.4-1mamba +- automatic version update by autodist + +* Sat Nov 26 2011 Automatic Build System 23.3b-1mamba +- automatic version update by autodist + +* Sun Aug 07 2011 Automatic Build System 23.3a-1mamba +- automatic version update by autodist + +* Thu Mar 10 2011 Automatic Build System 23.3-1mamba +- automatic update by autodist + +* Sun Aug 22 2010 Silvan Calarco 23.2-2mamba +- pass correct host and build to configure + +* Sat May 08 2010 Automatic Build System 23.2-1mamba +- automatic update to 23.2 by autodist + +* Sun Aug 02 2009 Automatic Build System 23.1-1mamba +- automatic update to 23.1 by autodist + +* Mon Sep 08 2008 Silvan Calarco 22.3-1mamba +- automatic update to 22.3 by autodist + +* Tue Jun 03 2008 Silvan Calarco 22.2-1mamba +- update to 22.2 + +* Mon Jun 11 2007 Aleph0 22.1-1mamba +- update to 22.1 +- /usr/X11R6/lib/X11/app-defaults/Emacs moved to %{_datadir}/X11/app-defaults/Emacs +- add %%optflags options to CFLAGS +- remove /var/games for now +- new icon + +* Tue Dec 13 2005 Stefano Cotta Ramusino 21.4-2qilnx +- specfile fixes +- fixed group of X11 subpackage +- X11 subpackage excluded in bootstrap compilations + +* Tue Apr 12 2005 Davide Madrisan 21.4-1qilnx +- update to version 21.4a by autospec +- also fixes security issue QSA-2005-038 (CAN-2005-0100) +- added %%post and %%preun scriptlets + +* Wed Jan 05 2005 Davide Madrisan 21.3-5qilnx +- make emacs a symlink to the emacs binary build with no X11 support +- added KDE menu entry + +* Mon Dec 09 2004 Davide Madrisan 21.3-4qilnx +- ctags binary and man page renamed to gctags + +* Mon Nov 29 2004 Davide Madrisan 21.3-3qilnx +- added leim source and package +- specfile rewritten +- splitted emacs into several packages +- fixed insecure temporary file creation in the bash scripts +- added emacs.desktop to display the emacs antry in the KDE menu + +* Mon Apr 14 2003 Alessandro Ramazzina 21.3-1qilnx +- creation of emacs package