From 1c59dc3673a349afa5c82b4387e89e629e8c557e Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 04:36:23 +0000 Subject: [PATCH] auto-import changelog data from emacs-21.3-9.src.rpm Sat Jan 24 2004 Jens Petersen - 21.3-9 - base emacs package now only contains emacs binary built with X support - bring back emacs-nox subpackage (emacs built without X support) (#113001) [suggested by Frank Kruchio] - all the common files required by emacs and emacs-nox are now in emacs-common - emacs no longer obsoletes emacs-nox - update php-mode.el to 1.0.5 - add missing rfc1345.el leim input method - update po-compat.el to version in gettext-0.13.1 - update base package summary - add url for python-mode.el and php-mode.el - gctags is now a symlink to ctags.emacs Wed Jan 14 2004 Jens Petersen - 21.3-8 - comment out setting transient-mark-mode in skel .emacs (#102441,#90193) [reported by mal@gromco.com, Jonathan Kamens] - improve lang-coding-systems-init.el to set-language-environment for CJK utf-8 locale too and use utf-8 for default-coding-systems and terminal-coding-system (#111172) [Yoshinori Kuniga] - update rpm-spec-mode.el to newer one in xemacs package cvs (#105888) [Dams] - rename etags to etags.emacs and make etags a symlink to it at install time if it doesn't exist (#92256) [marc_soft@merlins.org] - apply editfns.c-Fformat-multibyte-davej.patch to fix multibyte code typo in Fformat [patch from Dave Jones] - add runtime requirements for XFree86-libs, image libraries, ncurses and zlib - improve -el and -leim package summaries - no longer configure build with redundant --with-gcc Tue Nov 25 2003 Jens Petersen - buildrequire autoconf213 (#110741) [reported by mvd@mylinux.com.ua] --- dotemacs.el | 2 +- emacs.spec | 210 ++++++++++++++++++++++++---------- rfc1345.el | Bin 0 -> 31752 bytes rpm-spec-mode.el | 291 ++++++++++++++++++++++++++++++++--------------- 4 files changed, 348 insertions(+), 155 deletions(-) create mode 100644 rfc1345.el diff --git a/dotemacs.el b/dotemacs.el index 034d975..9180e94 100644 --- a/dotemacs.el +++ b/dotemacs.el @@ -7,4 +7,4 @@ (global-font-lock-mode t) ;; enable visual feedback on selections -(setq transient-mark-mode t) +;(setq transient-mark-mode t) diff --git a/emacs.spec b/emacs.spec index ab111ce..4789979 100644 --- a/emacs.spec +++ b/emacs.spec @@ -2,10 +2,10 @@ %define muleucs_ver current -Summary: The libraries needed to run the GNU Emacs text editor. +Summary: GNU Emacs text editor Name: emacs Version: 21.3 -Release: 7 +Release: 9 License: GPL URL: http://www.gnu.org/software/emacs/ Group: Applications/Editors @@ -15,12 +15,11 @@ Source3: emacs.desktop Source4: emacs.png Source5: dotemacs.el Source6: site-start.el -Source7: python-mode.el -Source8: http://www.tihlde.org/~stigb/rpm-spec-mode.el -#Source9: emacs-asian-0.2.tar.bz2 +Source7: http://www.python.org/emacs/python-mode/python-mode.el +Source8: http://cvs.xemacs.org/viewcvs.cgi/XEmacs/packages/xemacs-packages/prog-modes/rpm-spec-mode.el Source10: ftp://ftp.gnu.org/gnu/emacs/elisp-manual-21-2.8.tar.bz2 # 1.0.2 - http://prdownloads.sourceforge.net/php-mode/php-mode-102.el -Source11: php-mode.el +Source11: http://prdownloads.sourceforge.net/php-mode/php-mode.el Source12: php-mode-init.el Source13: ssl.el Source16: python-mode-init.el @@ -33,7 +32,7 @@ Source23: po-mode-auto-replace-date-71264.patch Source24: ftp://ftp.m17n.org/pub/mule/Mule-UCS/test/Mule-UCS-%{muleucs_ver}.tar.gz Source25: lang-coding-systems-init.el Source26: default.el -#Patch1: emacs-21.2-pop.patch +Source27: rfc1345.el Patch2: emacs-21.2-s390.patch Patch3: emacs-21.2-x86_64.patch Patch4: emacs-21.2-sticky-bit-80049.patch @@ -42,13 +41,18 @@ Patch6: emacs-21.2-menubar-games.patch Patch7: emacs-21.2-alloc-blockinput-83600.patch Patch8: browse-url-htmlview-84262.patch Patch9: emacs-21.3-ppc64.patch +Patch10: editfns.c-Fformat-multibyte-davej.patch Buildroot: %{_tmppath}/%{name}-%{version}-root Prereq: /sbin/install-info, dev -BuildRequires: glibc-devel, gcc, XFree86-devel, bzip2, ncurses-devel, zlib-devel, libpng-devel, libjpeg-devel, libungif-devel, libtiff-devel +BuildRequires: glibc-devel, gcc, bzip2, ncurses-devel, zlib-devel, autoconf213 +Buildrequires: XFree86-devel, Xaw3d-devel, libpng-devel, libjpeg-devel, libungif-devel, libtiff-devel +Requires: ncurses, zlib +Requires: XFree86-libs, Xaw3d, libpng, libjpeg, libungif, libtiff %ifarch %{ix86} BuildRequires: setarch %endif -Obsoletes: emacs-nox, emacs-X11 +Requires: emacs-common = %{version}-%{release} +Obsoletes: emacs-X11 Conflicts: gettext < 0.10.40 %description @@ -57,10 +61,39 @@ editor. Emacs contains special code editing features, a scripting language (elisp), and the capability to read mail, news, and more without leaving the editor. -%package el -Summary: The sources for elisp programs included with Emacs. +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 +Requires: ncurses, zlib +Requires: emacs-common = %{version}-%{release} + +%description nox +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 provides an emacs binary with no X windows support for running +on a terminal. + +%package common +Summary: Emacs common files +Group: Applications/Editors + +%description common +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 contains all the common files needed by emacs or emacs-nox. + +%package el +Summary: Emacs Lisp source files included with Emacs. +Group: Applications/Editors +Requires: emacs = %{version} %description el Emacs-el contains the emacs-elisp sources for many of the elisp @@ -70,9 +103,9 @@ You need to install emacs-el only if you intend to modify any of the Emacs packages or see some elisp examples. %package leim -Summary: Emacs Lisp code for input methods for international characters. +Summary: Emacs Lisp files for input methods for international characters. Group: Applications/Editors -Requires: emacs +Requires: emacs = %{version} %description leim The emacs-leim package contains Emacs Lisp code for input methods for @@ -92,6 +125,7 @@ sets are included in this package. # block input in `allocate_vectorlike' (alloc.c) %patch7 -p1 -b .block %patch9 -p1 -b .ppc64 +%patch10 -p1 -b .multibyte ## Lisp patches # remove game we can't ship @@ -102,9 +136,12 @@ rm lisp/finder-inf.el lisp/play/tetris.el* # patches 2 and 3 touch configure.in autoconf-2.13 +# add rfc1345 input method (default for UTF-8 lang env) +cp -pi %SOURCE27 leim/quail + %build export CFLAGS="-DMAIL_USE_LOCKF $RPM_OPT_FLAGS" -%configure --with-gcc --with-pop --with-sound +%configure --with-pop --with-sound # workaround #101818 (vm/break dumper problem) %ifarch %{ix86} @@ -114,23 +151,25 @@ export CFLAGS="-DMAIL_USE_LOCKF $RPM_OPT_FLAGS" %__make %{?_smp_mflags} # remove versioned file so that we end up with .1 suffix and only one DOC file rm src/emacs-%{version}.* + +TOPDIR=${PWD} +%define emacsbatch ${TOPDIR}/src/emacs -batch --no-init-file --no-site-file + +# setup site-lisp files +cp %SOURCE7 %SOURCE8 %SOURCE11 %SOURCE13 %SOURCE20 %SOURCE21 site-lisp +# xemacs compat patch +patch -d site-lisp < %SOURCE18 +# fix po-auto-replace-revision-date nil +patch -d site-lisp < %SOURCE23 + # make sure patched lisp files get byte-compiled -src/emacs -batch -f batch-byte-recompile-directory lisp +%emacsbatch -f batch-byte-recompile-directory lisp +%emacsbatch -f batch-byte-compile leim/quail/rfc1345.el site-lisp/*.el + %__make %{?_smp_mflags} -C lisp updates -%define emacsbatch src/emacs -batch --no-init-file --no-site-file - -# bytecompile python-mode, ssl, php-mode and rpm-spec-mode -cp %SOURCE7 %SOURCE8 %SOURCE11 %SOURCE13 %SOURCE20 %SOURCE21 . - -# xemacs compat patch -patch < %SOURCE18 -# fix po-auto-replace-revision-date nil -patch < %SOURCE23 -%{emacsbatch} -f batch-byte-compile *.el - ( cd Mule-UCS-%{muleucs_ver} - ../%{emacsbatch} -q --no-site-file -l mucs-comp.el ) + %{emacsbatch} -l mucs-comp.el ) %install rm -rf $RPM_BUILD_ROOT @@ -142,20 +181,29 @@ rm -rf $RPM_BUILD_ROOT %makeinstall +# rebuild without X support +%configure --without-x +%__make %{?_smp_mflags} + +# install the emacs without X +install -m 0755 src/emacs $RPM_BUILD_ROOT%{_bindir}/emacs-nox +install -m 0755 src/emacs-%{version}.2 $RPM_BUILD_ROOT%{_bindir}/emacs-nox-%{version} +install -m 0644 etc/DOC-%{version}.2 $RPM_BUILD_ROOT%{_datadir}/emacs/%{version}/etc/ +install -m 0644 lib-src/fns-%{version}.2.el $RPM_BUILD_ROOT%{_libexecdir}/emacs/%{version}/*/ + # make sure movemail isn't setgid chmod 755 $RPM_BUILD_ROOT%{_libexecdir}/emacs/%{version}/*/movemail -# # install lisp files for Japanese and other Asian languages -# tar jxC $RPM_BUILD_ROOT -f %{SOURCE9} - rm -f $RPM_BUILD_ROOT%{_infodir}/dir mkdir -p $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp install -m 0644 %SOURCE6 $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/site-start.el install -m 0644 %SOURCE26 $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp -mv $RPM_BUILD_ROOT%{_mandir}/man1/ctags.1 $RPM_BUILD_ROOT%{_mandir}/man1/gctags.1 -mv $RPM_BUILD_ROOT%{_bindir}/ctags $RPM_BUILD_ROOT%{_bindir}/gctags +mv $RPM_BUILD_ROOT%{_bindir}/{etags,etags.emacs} +mv $RPM_BUILD_ROOT%{_mandir}/man1/{ctags.1,gctags.1} +mv $RPM_BUILD_ROOT%{_bindir}/{ctags,ctags.emacs} +ln -s ctags.emacs $RPM_BUILD_ROOT%{_bindir}/gctags # GNOME / KDE files mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications @@ -164,7 +212,7 @@ mkdir -p $RPM_BUILD_ROOT%{_datadir}/pixmaps install -m 0644 %SOURCE4 $RPM_BUILD_ROOT%{_datadir}/pixmaps/ # install site-lisp files -install -m 0644 *.el *.elc $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/ +install -m 0644 site-lisp/*.el{,c} $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/ mkdir -p $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/site-start.d install -m 0644 $RPM_SOURCE_DIR/*-init.el $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/site-start.d @@ -176,7 +224,7 @@ install -m 0644 %SOURCE5 $RPM_BUILD_ROOT%{_sysconfdir}/skel/.emacs # elisp reference manual tar jxf %{SOURCE10} ( cd elisp-manual-21-2.8 - install -m 644 elisp elisp-? elisp-?? $RPM_BUILD_ROOT%{_infodir} ) + install -m 644 elisp elisp-* $RPM_BUILD_ROOT%{_infodir} ) ( cd Mule-UCS-%{muleucs_ver}/lisp mkdir %buildroot%{_datadir}/emacs/site-lisp/Mule-UCS @@ -185,19 +233,18 @@ tar jxf %{SOURCE10} # # create file lists # -SRC_TOP=$PWD -rm -f *-filelist {base,el,leim}-*-files -pushd $RPM_BUILD_ROOT +rm -f *-filelist {common,el,leim}-*-files +( TOPDIR=${PWD} + cd $RPM_BUILD_ROOT -find .%{_datadir}/emacs/%{version}/lisp .%{_datadir}/emacs/site-lisp \( -type f -not -name '*.el' -fprint $SRC_TOP/base-lisp-none-elc-files \) -o \( -type d -fprintf $SRC_TOP/base-lisp-dir-files "%%%%dir %%p\n" \) -o \( -name '*.el' \( -exec test -e '{}'c \; -fprint $SRC_TOP/el-bytecomped-files -o -fprint $SRC_TOP/base-not-comped-files \) \) + find .%{_datadir}/emacs/%{version}/lisp .%{_datadir}/emacs/site-lisp \( -type f -not -name '*.el' -fprint $TOPDIR/common-lisp-none-elc-files \) -o \( -type d -fprintf $TOPDIR/common-lisp-dir-files "%%%%dir %%p\n" \) -o \( -name '*.el' ! -name site-start.el \( -exec test -e '{}'c \; -fprint $TOPDIR/el-bytecomped-files -o -fprint $TOPDIR/common-not-comped-files \) \) -find .%{_datadir}/emacs/%{version}/leim \( -name '*.elc' -fprint $SRC_TOP/leim-elc-files \) -o \( -type d -fprintf $SRC_TOP/leim-dir-files "%%%%dir %%p\n" -fprintf $SRC_TOP/el-leim-dir-files "%%%%dir %%p\n" \) -o \( -name '*.el' \( -exec test -e '{}'c \; -fprint $SRC_TOP/el-leim-bytecomped-files -o -fprint $SRC_TOP/leim-not-comped-files \) \) - -popd + find .%{_datadir}/emacs/%{version}/leim \( -name '*.elc' -fprint $TOPDIR/leim-elc-files \) -o \( -type d -fprintf $TOPDIR/leim-dir-files "%%%%dir %%p\n" -fprintf $TOPDIR/el-leim-dir-files "%%%%dir %%p\n" \) -o \( -name '*.el' \( -exec test -e '{}'c \; -fprint $TOPDIR/el-leim-bytecomped-files -o -fprint $TOPDIR/leim-not-comped-files \) \) +) # put the lists together after filtering ./usr to /usr perl -pi -e "s|\.%{_prefix}|%{_prefix}|" *-files -cat base-*-files > base-filelist +cat common-*-files > common-filelist cat el-*-files > el-filelist cat leim-*-files > leim-filelist @@ -205,12 +252,15 @@ cat leim-*-files > leim-filelist rm -rf $RPM_BUILD_ROOT %define info_files ccmode cl dired-x ediff emacs forms gnus info message mh-e reftex sc vip viper widget elisp -%post +%post common for f in %{info_files}; do /sbin/install-info %{_infodir}/$f.gz %{_infodir}/dir --section="GNU Emacs" 2> /dev/null || : done -%preun +# make etags a symlink to etags.emacs if etags doesn't exist +[ -e %{_bindir}/etags ] || ln -s etags.emacs %{_bindir}/etags + +%preun common if [ "$1" = 0 ]; then for f in %{info_files}; do /sbin/install-info --delete %{_infodir}/$f.gz %{_infodir}/dir \ @@ -218,30 +268,44 @@ for f in %{info_files}; do done fi +%files +%defattr(-,root,root) +%{_bindir}/emacs +%{_bindir}/emacs-%{version} +%dir %{_datadir}/emacs/%{version}/etc +%{_datadir}/emacs/%{version}/etc/DOC-%{version}.1 +%dir %{_libexecdir}/emacs/%{version}/* +%{_libexecdir}/emacs/%{version}/*/fns-%{version}.1.el -%files -f base-filelist +%files nox +%defattr(-,root,root) +%{_bindir}/emacs-nox +%{_bindir}/emacs-nox-%{version} +%dir %{_datadir}/emacs/%{version}/etc +%{_datadir}/emacs/%{version}/etc/DOC-%{version}.2 +%dir %{_libexecdir}/emacs/%{version}/* +%{_libexecdir}/emacs/%{version}/*/fns-%{version}.2.el + +%files -f common-filelist common %defattr(-,root,root) %config(noreplace) %{_sysconfdir}/skel/.emacs %doc etc/NEWS BUGS README +%exclude %{_bindir}/emacs +%exclude %{_bindir}/emacs-%{version} +%exclude %{_bindir}/emacs-nox +%exclude %{_bindir}/emacs-nox-%{version} %{_bindir}/* %{_mandir}/*/* %{_infodir}/* %dir %{_datadir}/emacs -# %dir %{_datadir}/emacs/site-lisp -# %{_datadir}/emacs/site-lisp/python-mode.elc -# %{_datadir}/emacs/site-lisp/php-mode.elc -# %{_datadir}/emacs/site-lisp/po-*.elc -# %{_datadir}/emacs/site-lisp/rpm-spec-mode.elc -# %{_datadir}/emacs/site-lisp/ssl.elc -# %{_datadir}/emacs/site-lisp/subdirs.el -# %{_datadir}/emacs/site-lisp/site-start.d/*.el -# %{_datadir}/emacs/site-lisp/lang %dir %{_datadir}/emacs/%{version} %{_datadir}/emacs/%{version}/etc +%exclude %{_datadir}/emacs/%{version}/etc/DOC-%{version}.* # quieten startup when -leim and -el aren't installed %dir %{_datadir}/emacs/%{version}/leim %{_datadir}/emacs/%{version}/site-lisp %{_libexecdir}/emacs +%exclude %{_libexecdir}/emacs/%{version}/*/fns-%{version}.*.el %attr(0644,root,root) %config %{_datadir}/emacs/site-lisp/site-start.el # %dir %{_datadir}/emacs/site-lisp/site-start.d %{_datadir}/applications/gnu-emacs.desktop @@ -249,16 +313,42 @@ fi %files -f el-filelist el %defattr(-,root,root) -# %{_datadir}/emacs/site-lisp/python-mode.el -# %{_datadir}/emacs/site-lisp/php-mode.el -# %{_datadir}/emacs/site-lisp/po-*.el -# %{_datadir}/emacs/site-lisp/ssl.el -# %{_datadir}/emacs/site-lisp/rpm-spec-mode.el %files -f leim-filelist leim %defattr(-,root,root) %changelog +* Sat Jan 24 2004 Jens Petersen - 21.3-9 +- base emacs package now only contains emacs binary built with X support +- bring back emacs-nox subpackage (emacs built without X support) (#113001) + [suggested by Frank Kruchio] +- all the common files required by emacs and emacs-nox are now in emacs-common +- emacs no longer obsoletes emacs-nox +- update php-mode.el to 1.0.5 +- add missing rfc1345.el leim input method +- update po-compat.el to version in gettext-0.13.1 +- update base package summary +- add url for python-mode.el and php-mode.el +- gctags is now a symlink to ctags.emacs + +* Wed Jan 14 2004 Jens Petersen - 21.3-8 +- comment out setting transient-mark-mode in skel .emacs (#102441,#90193) + [reported by mal@gromco.com, Jonathan Kamens] +- improve lang-coding-systems-init.el to set-language-environment for CJK + utf-8 locale too and use utf-8 for default-coding-systems and + terminal-coding-system (#111172) [Yoshinori Kuniga] +- update rpm-spec-mode.el to newer one in xemacs package cvs (#105888) [Dams] +- rename etags to etags.emacs and make etags a symlink to it at install time + if it doesn't exist (#92256) [marc_soft@merlins.org] +- apply editfns.c-Fformat-multibyte-davej.patch to fix multibyte code typo + in Fformat [patch from Dave Jones] +- add runtime requirements for XFree86-libs, image libraries, ncurses and zlib +- improve -el and -leim package summaries +- no longer configure build with redundant --with-gcc + +* Tue Nov 25 2003 Jens Petersen +- buildrequire autoconf213 (#110741) [reported by mvd@mylinux.com.ua] + * Mon Oct 27 2003 Jens Petersen - 21.3-7 - use "setarch i386" to build on ix86 (#101818) [reported by Michael Redinger] - use __make to %%build and %%install diff --git a/rfc1345.el b/rfc1345.el new file mode 100644 index 0000000000000000000000000000000000000000..87c62b2c65dc5808da5cd032a8049ad2fd16481b GIT binary patch literal 31752 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 MHX^}4mHXEJ1PZP4W&i*H literal 0 HcmV?d00001 diff --git a/rpm-spec-mode.el b/rpm-spec-mode.el index bc147b4..b1e7336 100644 --- a/rpm-spec-mode.el +++ b/rpm-spec-mode.el @@ -3,7 +3,7 @@ ;; Copyright (C) 1997-2002 Stig Bjørlykke, ;; Author: Stig Bjørlykke, -;; Keywords: unix, languages +;; Keywords: unix, languages, rpm ;; Version: 0.12 ;; This file is part of XEmacs. @@ -33,6 +33,7 @@ ;; Tim Powers and Trond Eivind Glomsrød ;; for Red Hat adaptions and some fixes. ;; Chmouel Boudjnah for Mandrake fixes. +;; Ville Skyttä for some fixes. ;;; ToDo: @@ -69,11 +70,6 @@ :prefix "rpm-spec-" :group 'languages) -(defcustom rpm-spec-build-command "rpmbuild" - "Command for building a RPM package." - :type 'string - :group 'rpm-spec) - (defcustom rpm-spec-add-attr nil "Add \"%attr\" entry for file listings or not." :type 'boolean @@ -95,7 +91,7 @@ timecheck age." :group 'rpm-spec) (defcustom rpm-spec-buildroot "" - "Override the BuildRoot tag with directory ." + "When building, override the BuildRoot tag with directory ." :type 'string :group 'rpm-spec) @@ -125,11 +121,20 @@ This is used during Tempo template completion." :type 'boolean :group 'rpm-spec) +(define-obsolete-variable-alias + 'rpm-spec-test 'rpm-spec-nobuild) + (defcustom rpm-spec-nobuild nil "Do not execute any build stages. Useful for testing out spec files." :type 'boolean :group 'rpm-spec) +(defcustom rpm-spec-quiet nil + "Print as little as possible. +Normally only error messages will be displayed." + :type 'boolean + :group 'rpm-spec) + (defcustom rpm-spec-sign-gpg nil "Embed a GPG signature in the package. This signature can be used to verify the integrity and the origin of @@ -142,11 +147,6 @@ the package." :type 'boolean :group 'rpm-spec) -(defcustom rpm-spec-old-rpm nil - "Set if using `rpm' as command for building packages." - :type 'boolean - :group 'rpm-spec) - (define-obsolete-variable-alias 'rpm-initialize-sections 'rpm-spec-initialize-sections) @@ -179,8 +179,50 @@ value returned by function `user-mail-address'." string) :group 'rpm-spec) +(defcustom rpm-spec-indent-heading-values nil + "*Indent values for all tags in the \"heading\" of the spec file." + :type 'boolean + :group 'rpm-spec) + +(defcustom rpm-spec-use-compilation-mode t + "*If non-nil, build in `compilation-mode' if it's available." + :type 'boolean + :group 'rpm-spec) + +(defcustom rpm-spec-default-release "1" + "*Default value for the Release tag in new spec files." + :type 'string + :group 'rpm-spec) + +(defcustom rpm-spec-default-epoch nil + "*If non-nil, default value for the Epoch tag in new spec files." + :type '(choice (const :tag "No Epoch" nil) integer) + :group 'rpm-spec) + +(defcustom rpm-spec-default-buildroot + "%{_tmppath}/%{name}-%{version}-%{release}-root" + "*Default value for the BuildRoot tag in new spec files." + :type 'integer + :group 'rpm-spec) + +(defcustom rpm-spec-default-build-section "" + "*Default %build section in new spec files." + :type 'string + :group 'rpm-spec) + +(defcustom rpm-spec-default-install-section "rm -rf $RPM_BUILD_ROOT\n" + "*Default %install section in new spec files." + :type 'string + :group 'rpm-spec) + +(defcustom rpm-spec-default-clean-section "rm -rf $RPM_BUILD_ROOT\n" + "*Default %clean section in new spec files." + :type 'string + :group 'rpm-spec) + (defgroup rpm-spec-faces nil "Font lock faces for `rpm-spec-mode'." + :prefix "rpm-spec-" :group 'rpm-spec :group 'faces) @@ -188,12 +230,12 @@ value returned by function `user-mail-address'." ;; variables used by navigation functions. (defconst rpm-sections - '("preamble" "description" "prep" "setup" "build" "install" "clean" + '("preamble" "description" "prep" "setup" "build" "install" "check" "clean" "changelog" "files") "Partial list of section names.") (defvar rpm-section-list '(("preamble") ("description") ("prep") ("setup") ("build") ("install") - ("clean") ("changelog") ("files")) + ("check") ("clean") ("changelog") ("files")) "Partial list of section names.") (defconst rpm-scripts '("pre" "post" "preun" "postun" @@ -204,60 +246,67 @@ value returned by function `user-mail-address'." (eval-when-compile (concat "^%" (regexp-opt - ;; From RPM 4.1 sources, file build/parseSpec.c: partList[]. - '("build" "changelog" "clean" "description" "files" "install" - "package" "post" "postun" "pre" "prep" "preun" "trigger" - "triggerin" "triggerpostun" "triggerun" "verifyscript") t) + ;; From RPM 4.2 sources, file build/parseSpec.c: partList[]. + '("build" "changelog" "check" "clean" "description" "files" + "install" "package" "post" "postun" "pre" "prep" "preun" + "trigger" "triggerin" "triggerpostun" "triggerun" + "verifyscript") t) "\\b")) "Regular expression to match beginning of a section.") ;;------------------------------------------------------------ (defface rpm-spec-tag-face - '(( ((class color) (background light)) (:foreground "blue") ) + '(( ((class color) (background light)) (:foreground "blue3") ) ( ((class color) (background dark)) (:foreground "blue") )) - "*The face used for tags." + "*Face for tags." :group 'rpm-spec-faces) (defface rpm-spec-macro-face '(( ((class color) (background light)) (:foreground "purple") ) ( ((class color) (background dark)) (:foreground "yellow") )) - "*The face used for macros." + "*Face for RPM macros and variables." :group 'rpm-spec-faces) (defface rpm-spec-var-face '(( ((class color) (background light)) (:foreground "maroon") ) ( ((class color) (background dark)) (:foreground "maroon") )) - "*The face used for environment variables." + "*Face for environment variables." :group 'rpm-spec-faces) (defface rpm-spec-doc-face - '(( ((class color) (background light)) (:foreground "magenta") ) + '(( ((class color) (background light)) (:foreground "magenta3") ) ( ((class color) (background dark)) (:foreground "magenta") )) - "*The face used for document files." + "*Face for %doc entries in %files." :group 'rpm-spec-faces) (defface rpm-spec-dir-face - '(( ((class color) (background light)) (:foreground "green") ) + '(( ((class color) (background light)) (:foreground "green4") ) ( ((class color) (background dark)) (:foreground "green") )) - "*The face used for directories." + "*Face for %dir entries in %files." :group 'rpm-spec-faces) (defface rpm-spec-package-face - '(( ((class color) (background light)) (:foreground "red") ) + '(( ((class color) (background light)) (:foreground "red3") ) ( ((class color) (background dark)) (:foreground "red") )) - "*The face used for files." + "*Face for package tag." :group 'rpm-spec-faces) (defface rpm-spec-ghost-face - '(( ((class color) (background light)) (:foreground "red") ) + '(( ((class color) (background light)) (:foreground "gray50") ) ( ((class color) (background dark)) (:foreground "red") )) - "*The face used for ghost tags." + "*Face for %ghost and %config entries in %files." + :group 'rpm-spec-faces) + +(defface rpm-spec-section-face + '(( ((class color) (background light)) (:foreground "purple" :underline t) ) + ( ((class color) (background dark)) (:foreground "yellow" :underline t) )) + "*Face for section markers." :group 'rpm-spec-faces) ;;; GNU emacs font-lock needs these... (defvar rpm-spec-macro-face - 'rpm-spec-macro-face "*Face for macros.") + 'rpm-spec-macro-face "*Face for RPM macros and variables.") (defvar rpm-spec-var-face 'rpm-spec-var-face "*Face for environment variables.") (defvar rpm-spec-tag-face @@ -265,11 +314,13 @@ value returned by function `user-mail-address'." (defvar rpm-spec-package-face 'rpm-spec-package-face "*Face for package tag.") (defvar rpm-spec-dir-face - 'rpm-spec-dir-face "*Face for directory entries.") + 'rpm-spec-dir-face "*Face for %dir entries in %files.") (defvar rpm-spec-doc-face - 'rpm-spec-doc-face "*Face for documentation entries.") + 'rpm-spec-doc-face "*Face for %doc entries in %files.") (defvar rpm-spec-ghost-face - 'rpm-spec-ghost-face "*Face for \"%ghost\" files.") + 'rpm-spec-ghost-face "*Face for %ghost and %config entries in %files.") +(defvar rpm-spec-section-face + 'rpm-spec-section-face "*Face for section markers.") (defvar rpm-default-umask "-" "*Default umask for files, specified with \"%attr\".") @@ -281,9 +332,11 @@ value returned by function `user-mail-address'." ;;------------------------------------------------------------ (defvar rpm-no-gpg nil "Tell rpm not to sign package.") +(defvar rpm-spec-build-command "rpmbuild" "Command to build rpms.") +(defvar rpm-spec-nobuild-option "--nobuild" "Option for no build.") (defvar rpm-tags-list - ;; From RPM 4.1 sources, file build/parsePreamble.c: preambleList[].") + ;; From RPM 4.2 sources, file build/parsePreamble.c: preambleList[].") '(("AutoProv") ("AutoReq") ("AutoReqProv") @@ -332,7 +385,7 @@ value returned by function `user-mail-address'." "List of elements that are valid tags.") (defvar rpm-group-tags-list - ;; From RPM 4.1 sources, file GROUPS. + ;; From RPM 4.2 sources, file GROUPS. '(("Amusements/Games") ("Amusements/Graphics") ("Applications/Archiving") @@ -421,9 +474,10 @@ value returned by function `user-mail-address'." (define-key rpm-spec-mode-map "\C-c\C-xi" 'rpm-change-timecheck-option) (define-key rpm-spec-mode-map "\C-c\C-xn" 'rpm-toggle-nobuild) (define-key rpm-spec-mode-map "\C-c\C-xo" 'rpm-files-owner) - (define-key rpm-spec-mode-map "\C-c\C-xp" 'rpm-change-target-option) (define-key rpm-spec-mode-map "\C-c\C-xr" 'rpm-toggle-rmsource) + (define-key rpm-spec-mode-map "\C-c\C-xq" 'rpm-toggle-quiet) (define-key rpm-spec-mode-map "\C-c\C-xs" 'rpm-toggle-short-circuit) + (define-key rpm-spec-mode-map "\C-c\C-xt" 'rpm-change-target-option) (define-key rpm-spec-mode-map "\C-c\C-xu" 'rpm-files-umask) ;;(define-key rpm-spec-mode-map "\C-q" 'indent-spec-exp) ;;(define-key rpm-spec-mode-map "\t" 'sh-indent-line) @@ -466,6 +520,8 @@ value returned by function `user-mail-address'." :style toggle :selected rpm-spec-clean] ["No build" rpm-toggle-nobuild :style toggle :selected rpm-spec-nobuild] + ["Quiet" rpm-toggle-quiet + :style toggle :selected rpm-spec-quiet] ["GPG sign" rpm-toggle-sign-gpg :style toggle :selected rpm-spec-sign-gpg] ["Ignore dependencies" rpm-toggle-nodeps @@ -488,33 +544,35 @@ value returned by function `user-mail-address'." ))) (defvar rpm-spec-font-lock-keywords - '( - ("%[a-zA-Z0-9_]+" 0 rpm-spec-macro-face) - ("^\\([a-zA-Z0-9]+\\)\\(\([a-zA-Z0-9,]+\)\\):" + (list + (cons rpm-section-regexp rpm-spec-section-face) + '("%[a-zA-Z0-9_]+" 0 rpm-spec-macro-face) + '("^\\([a-zA-Z0-9]+\\)\\(\([a-zA-Z0-9,_]+\)\\):" (1 rpm-spec-tag-face) (2 rpm-spec-ghost-face)) - ("^\\([a-zA-Z0-9]+\\):" 1 rpm-spec-tag-face) - ("%\\(de\\(fine\\|scription\\)\\|files\\|package\\)[ \t]+\\([^-][^ \t\n]*\\)" + '("^\\([a-zA-Z0-9]+\\):" 1 rpm-spec-tag-face) + '("%\\(de\\(fine\\|scription\\)\\|files\\|package\\)[ \t]+\\([^-][^ \t\n]*\\)" (3 rpm-spec-package-face)) - ("%p\\(ost\\|re\\)\\(un\\)?[ \t]+\\([^-][^ \t\n]*\\)" + '("%p\\(ost\\|re\\)\\(un\\)?[ \t]+\\([^-][^ \t\n]*\\)" (3 rpm-spec-package-face)) - ("%configure " 0 rpm-spec-macro-face) - ("%dir[ \t]+\\([^ \t\n]+\\)[ \t]*" 1 rpm-spec-dir-face) - ("%doc\\(dir\\)?[ \t]+\\(.*\\)\n" 2 rpm-spec-doc-face) - ("%\\(ghost\\|config\\)[ \t]+\\(.*\\)\n" 2 rpm-spec-ghost-face) - ("^%.+-[a-zA-Z][ \t]+\\([a-zA-Z0-9\.-]+\\)" 1 rpm-spec-doc-face) - ("^\\(.+\\)(\\([a-zA-Z]\\{2,2\\}\\)):" + '("%configure " 0 rpm-spec-macro-face) + '("%dir[ \t]+\\([^ \t\n]+\\)[ \t]*" 1 rpm-spec-dir-face) + '("%doc\\(dir\\)?[ \t]+\\(.*\\)\n" 2 rpm-spec-doc-face) + '("%\\(ghost\\|config\\([ \t]*(.*)\\)?\\)[ \t]+\\(.*\\)\n" + 3 rpm-spec-ghost-face) + '("^%.+-[a-zA-Z][ \t]+\\([a-zA-Z0-9\.-]+\\)" 1 rpm-spec-doc-face) + '("^\\(.+\\)(\\([a-zA-Z]\\{2,2\\}\\)):" (1 rpm-spec-tag-face) (2 rpm-spec-doc-face)) - ("^\\*\\(.*[0-9] \\)\\(.*\\)\\(<.*>\\)\\(.*\\)\n" + '("^\\*\\(.*[0-9] \\)\\(.*\\)<\\(.*\\)>\\(.*\\)\n" (1 rpm-spec-dir-face) (2 rpm-spec-package-face) (3 rpm-spec-tag-face) - (4 font-lock-warning-face)) - ("%{[^{}]*}" 0 rpm-spec-macro-face) - ("$[a-zA-Z0-9_]+" 0 rpm-spec-var-face) - ("${[a-zA-Z0-9_]+}" 0 rpm-spec-var-face) - ) + (4 rpm-spec-ghost-face)) + '("%{[^{}]*}" 0 rpm-spec-macro-face) + '("$[a-zA-Z0-9_]+" 0 rpm-spec-var-face) + '("${[a-zA-Z0-9_]+}" 0 rpm-spec-var-face) + ) "Additional expressions to highlight in `rpm-spec-mode'.") ;;Initialize font lock for xemacs @@ -526,6 +584,8 @@ value returned by function `user-mail-address'." ;;------------------------------------------------------------ +(add-hook 'rpm-spec-mode-new-file-hook 'rpm-spec-initialize) + ;;;###autoload (defun rpm-spec-mode () "Major mode for editing RPM spec files. @@ -553,13 +613,13 @@ with no args, if that value is non-nil." "Post menu for `rpm-spec-mode'." rpm-spec-mode-menu) (easy-menu-add rpm-spec-mode-menu) - (if (= (buffer-size) 0) - (rpm-spec-initialize)) + (if (and (= (buffer-size) 0) rpm-spec-initialize-sections) + (run-hooks 'rpm-spec-mode-new-file-hook)) - (if (executable-find "rpmbuild") - (setq rpm-spec-build-command "rpmbuild") - (setq rpm-spec-old-rpm t) - (setq rpm-spec-build-command "rpm")) + (if (not (executable-find "rpmbuild")) + (progn + (setq rpm-spec-build-command "rpm") + (setq rpm-spec-nobuild-option "--test"))) (make-local-variable 'paragraph-start) (setq paragraph-start (concat "$\\|" page-delimiter)) @@ -608,7 +668,7 @@ with no args, if that value is non-nil." (substring (current-time-string) -4) " " fullname " <" address ">" (and rpm-spec-insert-changelog-version - (concat " " (rpm-find-spec-version t)))))) + (concat " - " (rpm-find-spec-version t)))))) (if (not (search-forward string nil t)) (insert "\n" string "\n") (forward-line 2)) @@ -878,6 +938,9 @@ leave point at previous location." (defun rpm-build (buildoptions) "Build this RPM package." + (if (and (buffer-modified-p) + (y-or-n-p (format "Buffer %s modified, save it? " (buffer-name)))) + (save-buffer)) (setq rpm-buffer-name (concat "*" rpm-spec-build-command " " buildoptions " " (file-name-nondirectory buffer-file-name) "*")) @@ -906,18 +969,23 @@ leave point at previous location." (setq buildoptions (cons "--target" (cons rpm-spec-target buildoptions)))) (if rpm-spec-nobuild - (setq buildoptions (cons (if rpm-spec-old-rpm "--test" "--nobuild") - buildoptions))) + (setq buildoptions (cons rpm-spec-nobuild-option buildoptions))) + (if rpm-spec-quiet + (setq buildoptions (cons "--quiet" buildoptions))) (if rpm-spec-nodeps (setq buildoptions (cons "--nodeps" buildoptions))) (if (and rpm-spec-sign-gpg (not rpm-no-gpg)) (setq buildoptions (cons "--sign" buildoptions))) (save-excursion (set-buffer (get-buffer rpm-buffer-name)) + (and rpm-spec-use-compilation-mode + (fboundp 'compilation-mode) + (compilation-mode)) (goto-char (point-max))) - (let ((process - (apply 'start-process rpm-spec-build-command rpm-buffer-name - rpm-spec-build-command buildoptions))) + (let* ((process-environment (cons "EMACS=t" process-environment)) + (process + (apply 'start-process rpm-spec-build-command rpm-buffer-name + rpm-spec-build-command buildoptions))) (if (and rpm-spec-sign-gpg (not rpm-no-gpg)) (let ((rpm-passwd-cache (read-passwd "GPG passphrase: "))) (process-send-string process (concat rpm-passwd-cache "\n")))) @@ -1022,9 +1090,17 @@ command." (interactive "p") (setq rpm-spec-nobuild (not rpm-spec-nobuild)) (rpm-update-mode-name) - (message (concat "Turned `" (if rpm-spec-old-rpm "--test" "--nobuild") "' " + (message (concat "Turned `" rpm-spec-nobuild-option "' " (if rpm-spec-nobuild "on" "off") "."))) +(defun rpm-toggle-quiet (&optional arg) + "Toggle `rpm-spec-quiet'." + (interactive "p") + (setq rpm-spec-quiet (not rpm-spec-quiet)) + (rpm-update-mode-name) + (message (concat "Turned `--quiet' " + (if rpm-spec-quiet "on" "off") "."))) + (defun rpm-toggle-sign-gpg (&optional arg) "Toggle `rpm-spec-sign-gpg'." (interactive "p") @@ -1059,6 +1135,7 @@ command." (if rpm-spec-nobuild "N") (if rpm-spec-rmsource "R") (if rpm-spec-short-circuit "S") + (if rpm-spec-quiet "Q") )) (if (not (equal modes "")) (setq mode-name (concat mode-name ":" modes)))) @@ -1128,14 +1205,19 @@ See `search-forward-regexp'." (search-forward-regexp (concat field ":[ \t]*\\(.*?\\)[ \t]*$") max) (match-string 1)))) - (if (string-match "%{?\\([^}]*\\)}?$" str) - (progn - (goto-char (point-min)) - (search-forward-regexp - (concat "%define[ \t]+" (substring str (match-beginning 1) - (match-end 1)) - "[ \t]+\\(.*\\)")) - (match-string 1)) + (if (string-match "\\(%{?\\)\\([a-zA-Z0-9_]*\\)\\(}?\\)" str) + (let ((end-string (substring str (match-end 3)))) + (concat (substring str 0 (match-beginning 1)) + (progn + (goto-char (point-min)) + (search-forward-regexp + (concat "%define[ \t]+" + (substring str + (match-beginning 2) + (match-end 2)) + "[ \t]+\\(.*\\)")) + (match-string 1)) + end-string)) str))))) (defun rpm-find-spec-version (&optional with-epoch) @@ -1182,7 +1264,7 @@ if one is present in the file." (defun rpm-spec-initialize () "Create a default spec file if one does not exist or is empty." - (let (file name version (release "1")) + (let (file name version (release rpm-spec-default-release)) (setq file (if (buffer-file-name) (file-name-nondirectory (buffer-file-name)) (buffer-name))) @@ -1197,30 +1279,52 @@ if one is present in the file." ((eq (string-match "\\(.*\\).spec" file) 0) (setq name (match-string 1 file)))) + (if rpm-spec-indent-heading-values + (insert + "Summary: " + "\nName: " (or name "") + "\nVersion: " (or version "") + "\nRelease: " (or release "") + (if rpm-spec-default-epoch + (concat "\nEpoch: " + (int-to-string rpm-spec-default-epoch)) + "") + "\nLicense: " + "\nGroup: " + "\nURL: " + "\nSource0: %{name}-%{version}.tar.gz" + "\nBuildRoot: " rpm-spec-default-buildroot) + (insert + "Summary: " + "\nName: " (or name "") + "\nVersion: " (or version "") + "\nRelease: " (or release "") + (if rpm-spec-default-epoch + (concat "\nEpoch: " (int-to-string rpm-spec-default-epoch)) + "") + "\nLicense: " + "\nGroup: " + "\nURL: " + "\nSource0: %{name}-%{version}.tar.gz" + "\nBuildRoot: " rpm-spec-default-buildroot)) + (insert - "Summary: " - "\nName: " (or name "") - "\nVersion: " (or version "") - "\nRelease: " (or release "") - "\nLicense: " - "\nGroup: " - "\nURL: " - "\nSource0: %{name}-%{version}.tar.gz" - "\nBuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot" "\n\n%description\n" "\n%prep" "\n%setup -q" - "\n\n%build" - "\n\n%install" - "\nrm -rf $RPM_BUILD_ROOT" - "\n\n%clean" - "\nrm -rf $RPM_BUILD_ROOT" + "\n\n%build\n" + (or rpm-spec-default-build-section "") + "\n%install\n" + (or rpm-spec-default-install-section "") + "\n%clean\n" + (or rpm-spec-default-clean-section "") "\n\n%files" "\n%defattr(-,root,root,-)" "\n%doc\n" "\n\n%changelog\n") - (rpm-add-change-log-entry "Initial build.\n"))) + (end-of-line 1) + (rpm-add-change-log-entry "Initial build."))) ;;------------------------------------------------------------ @@ -1232,8 +1336,7 @@ if one is present in the file." rpm-spec-mode-version " by Stig Bjørlykke, "))) -;;;###autoload -(add-to-list 'auto-mode-alist '("\\.spec$" . rpm-spec-mode)) +;;;###autoload(add-to-list 'auto-mode-alist '("\\.spec\\(\\.in\\)?$" . rpm-spec-mode)) (provide 'rpm-spec-mode)