Petr Hracek 832068
%global _hardened_build 1
Yaakov Selkowitz 0d766e
%bcond webkit %[!(0%{?rhel} >= 10)]
Petr Hracek 832068
cvsdist d31aa3
# This file is encoded in UTF-8.  -*- coding: utf-8 -*-
Petr Hracek da86ac
Summary:       GNU Emacs text editor
Petr Hracek da86ac
Name:          emacs
Petr Hracek da86ac
Epoch:         1
Peter Oliver bc0c01
Version:       29.2
Peter Oliver 85031a
Release:       %autorelease
Lukáš Zaoral 57bf08
License:       GPL-3.0-or-later AND CC0-1.0
Petr Hracek da86ac
URL:           http://www.gnu.org/software/emacs/
Jan Synacek 9e6823
Source0:       https://ftp.gnu.org/gnu/emacs/emacs-%{version}.tar.xz
Dan Čermák 6f367b
Source1:       https://ftp.gnu.org/gnu/emacs/emacs-%{version}.tar.xz.sig
Dan Čermák 28d8e7
# Emacs 29+ sign key
Dan Čermák 28d8e7
Source2:       https://keys.openpgp.org/vks/v1/by-fingerprint/17E90D521672C04631B1183EE78DAE0F3115E06B
Dan Čermák 6f367b
Source4:       dotemacs.el
Dan Čermák 6f367b
Source5:       site-start.el
Dan Čermák 6f367b
Source6:       default.el
Karel Klic c98151
# Emacs Terminal Mode, #551949, #617355
Dan Čermák 6f367b
Source7:       emacs-terminal.desktop
Dan Čermák 6f367b
Source8:       emacs-terminal.sh
Peter Oliver 6a39a2
Source9:       emacs-desktop.sh
Karel Klic 24eae4
# rhbz#713600
Petr Hracek da86ac
Patch1:        emacs-spellchecker.patch
Jan Synacek 0588f1
Patch2:        emacs-system-crypto-policies.patch
Dan Čermák e6bb94
# causes a dependency on pkgconfig(systemd)
Dan Čermák e6bb94
# => remove it if we stop using this patch
Bhavin Gandhi e79d2e
Patch3:        emacs-libdir-vs-systemd.patch
Peter Oliver 6a39a2
# Avoid using the pure GTK build on X11 where it is unsupported:
Peter Oliver 6a39a2
Patch4:        emacs-desktop.patch
Dan Čermák 4c61f6
Patch5:        0001-configure-Remove-obsolete-check-for-b-i486-linuxaout.patch
Peter Oliver 6a39a2
Patch6:        emacs-pgtk-on-x-error-message.patch
Petr Hracek 832068
Dan Čermák 662bd4
BuildRequires: gcc
Petr Hracek 832068
BuildRequires: atk-devel
Petr Hracek 832068
BuildRequires: cairo-devel
Petr Hracek 832068
BuildRequires: freetype-devel
Petr Hracek 832068
BuildRequires: fontconfig-devel
Petr Hracek 832068
BuildRequires: dbus-devel
Petr Hracek 832068
BuildRequires: giflib-devel
Petr Hracek 832068
BuildRequires: glibc-devel
Petr Hracek 832068
BuildRequires: libpng-devel
Petr Hracek 832068
BuildRequires: libjpeg-turbo-devel
Petr Hracek 832068
BuildRequires: libjpeg-turbo
Petr Hracek 832068
BuildRequires: libtiff-devel
Petr Hracek 832068
BuildRequires: libX11-devel
Petr Hracek 832068
BuildRequires: libXau-devel
Petr Hracek 832068
BuildRequires: libXdmcp-devel
Peter Oliver 0fd1a3
BuildRequires: libXi-devel
Petr Hracek 832068
BuildRequires: libXrender-devel
Petr Hracek 832068
BuildRequires: libXt-devel
Petr Hracek 832068
BuildRequires: libXpm-devel
Petr Hracek 832068
BuildRequires: ncurses-devel
Petr Hracek 832068
BuildRequires: xorg-x11-proto-devel
Petr Hracek 832068
BuildRequires: zlib-devel
Petr Hracek 832068
BuildRequires: gnutls-devel
Petr Hracek 832068
BuildRequires: librsvg2-devel
Petr Hracek 832068
BuildRequires: m17n-lib-devel
Petr Hracek 832068
BuildRequires: libotf-devel
Petr Hracek 832068
BuildRequires: libselinux-devel
Petr Hracek 832068
BuildRequires: alsa-lib-devel
Petr Hracek 832068
BuildRequires: gpm-devel
Petr Hracek 832068
BuildRequires: liblockfile-devel
Petr Hracek 832068
BuildRequires: libxml2-devel
Dan Čermák 3485b7
BuildRequires: autoconf
Petr Hracek 832068
BuildRequires: bzip2
Petr Hracek 832068
BuildRequires: cairo
Petr Hracek 832068
BuildRequires: texinfo
Petr Hracek 832068
BuildRequires: gzip
Petr Hracek 832068
BuildRequires: desktop-file-utils
Peter Oliver a3d22a
BuildRequires: libappstream-glib
Petr Hracek 4b0f20
BuildRequires: libacl-devel
Bhavin Gandhi ac0772
BuildRequires: harfbuzz-devel
Bhavin Gandhi ac0772
BuildRequires: jansson-devel
Bhavin Gandhi ac0772
BuildRequires: systemd-devel
Bhavin Gandhi e79d2e
BuildRequires: libgccjit-devel
Peter Oliver 9c5e49
BuildRequires: libtree-sitter-devel
Lukáš Zaoral 6efc21
BuildRequires: sqlite-devel
Peter Oliver 9c5e49
BuildRequires: libwebp-devel
Petr Hracek 392f47
Petr Hracek 832068
BuildRequires: gtk3-devel
Yaakov Selkowitz 0d766e
%if %{with webkit}
1670e5
BuildRequires: webkit2gtk4.1-devel
Yaakov Selkowitz 0d766e
%endif
Petr Hracek 392f47
Dan Čermák 6f367b
BuildRequires: gnupg2
Dan Čermák 6f367b
Gregory Shimansky 3abc8d
# For lucid
Gregory Shimansky 3abc8d
BuildRequires: Xaw3d-devel
Gregory Shimansky 3abc8d
Dan Čermák e6bb94
# for Patch3
Dan Čermák e6bb94
BuildRequires: pkgconfig(systemd)
Dan Čermák e6bb94
Jan Synacek 47162e
%ifarch %{ix86}
Karel Klic 77da56
BuildRequires: util-linux
Karel Klic 97f8c1
%endif
Tom Stellard 87fd25
BuildRequires: make
Karel Klic e8a2c6
Peter Oliver 448113
# Emacs doesn't run without a font, rhbz#732422
Peter Oliver 448113
Requires:      google-noto-sans-mono-vf-fonts
Yaakov Selkowitz aba744
Requires(preun): /usr/sbin/alternatives
Yaakov Selkowitz aba744
Requires(posttrans): /usr/sbin/alternatives
Petr Hracek da86ac
Requires:      emacs-common = %{epoch}:%{version}-%{release}
Petr Hracek da86ac
Provides:      emacs(bin) = %{epoch}:%{version}-%{release}
Peter Oliver 6a39a2
Supplements:   (libwayland-server and emacs-common)
Jonathan G. Underwood 815d30
Charles Coldwell fa071f
%define site_lisp %{_datadir}/emacs/site-lisp
Jonathan G. Underwood 7501f2
%define site_start_d %{site_lisp}/site-start.d
Charles Coldwell fa071f
%define pkgconfig %{_datadir}/pkgconfig
Karel Klic 97f8c1
%define emacs_libexecdir %{_libexecdir}/emacs/%{version}/%{_host}
Bhavin Gandhi e79d2e
%define native_lisp %{_libdir}/emacs/%{version}/native-lisp
Charles Coldwell fa071f
Peter Oliver 6a39a2
%global desc %{expand:Emacs is a powerful, customizable, self-documenting, modeless text
cvsdist af3202
editor. Emacs contains special code editing features, a scripting
cvsdist 3b2e93
language (elisp), and the capability to read mail, news, and more
cvsdist 3b2e93
without leaving the editor.
Peter Oliver 6a39a2
}
cvsdist af3202
Peter Oliver 6a39a2
%description
Peter Oliver 6a39a2
%desc
Peter Oliver 6a39a2
This package provides an emacs binary with support for Wayland, using the
Peter Oliver 6a39a2
GTK toolkit.
Peter Oliver 6a39a2
Peter Oliver 6a39a2
%package gtk+x11
Peter Oliver 6a39a2
Summary:       GNU Emacs text editor with GTK toolkit X support
Peter Oliver 6a39a2
Requires:      libgccjit
Yaakov Selkowitz aba744
Requires(preun): /usr/sbin/alternatives
Yaakov Selkowitz aba744
Requires(posttrans): /usr/sbin/alternatives
Peter Oliver 6a39a2
Requires:      emacs-common = %{epoch}:%{version}-%{release}
Peter Oliver 6a39a2
Provides:      emacs(bin) = %{epoch}:%{version}-%{release}
Peter Oliver 6a39a2
Supplements:   (xorg-x11-server-Xorg and emacs-common)
Peter Oliver 6a39a2
Peter Oliver 6a39a2
%description gtk+x11
Peter Oliver 6a39a2
%desc
Peter Oliver 6a39a2
This package provides an emacs-gtk+x11 binary with support for the X
Peter Oliver 6a39a2
Window System, using the GTK toolkit.
cvsdist 45b61e
Gregory Shimansky 3abc8d
%package lucid
Peter Oliver 6a39a2
Summary:       GNU Emacs text editor with Lucid toolkit X support
Peter Oliver 448113
Requires:      google-noto-sans-mono-vf-fonts
Yaakov Selkowitz aba744
Requires(preun): /usr/sbin/alternatives
Yaakov Selkowitz aba744
Requires(posttrans): /usr/sbin/alternatives
Gregory Shimansky 3abc8d
Requires:      emacs-common = %{epoch}:%{version}-%{release}
Gregory Shimansky 3abc8d
Provides:      emacs(bin) = %{epoch}:%{version}-%{release}
Gregory Shimansky 3abc8d
Gregory Shimansky 3abc8d
%description lucid
Peter Oliver 6a39a2
%desc
Peter Oliver 6a39a2
This package provides an emacs-lucid binary with support for the X
Peter Oliver 6a39a2
Window System, using the Lucid toolkit.
Gregory Shimansky 3abc8d
Peter Oliver e739d3
%package nw
Petr Hracek da86ac
Summary:       GNU Emacs text editor without X support
Yaakov Selkowitz aba744
Requires(preun): /usr/sbin/alternatives
Yaakov Selkowitz aba744
Requires(posttrans): /usr/sbin/alternatives
Petr Hracek da86ac
Requires:      emacs-common = %{epoch}:%{version}-%{release}
Petr Hracek da86ac
Provides:      emacs(bin) = %{epoch}:%{version}-%{release}
Peter Oliver e739d3
Provides:      emacs-nox = %{epoch}:%{version}-%{release}
Peter Oliver e739d3
Obsoletes:     emacs-nox < 1:29.1-5
cvsdist 45b61e
Peter Oliver e739d3
%description nw
Peter Oliver 6a39a2
%desc
Peter Oliver e739d3
This package provides an emacs-nw binary with no graphical display
Peter Oliver 6a39a2
support, for running on a terminal.
cvsdist 45b61e
cvsdist 45b61e
%package common
Petr Hracek da86ac
Summary:       Emacs common files
Karel Klic 3ded10
# The entire source code is GPLv3+ except lib-src/etags.c which is
Karel Klic 3ded10
# also BSD.  Manual (info) is GFDL.
Lukáš Zaoral 57bf08
License:       GPL-3.0-or-later AND GFDL-1.3-no-invariants-or-later AND BSD-3-Clause
Yaakov Selkowitz aba744
Requires(preun): /usr/sbin/alternatives
Yaakov Selkowitz aba744
Requires(posttrans): /usr/sbin/alternatives
Petr Hracek da86ac
Requires:      %{name}-filesystem = %{epoch}:%{version}-%{release}
Peter Oliver 448113
Requires:      libgccjit
Peter Oliver e739d3
Recommends:    (emacs or emacs-gtk+x11 or emacs-lucid or emacs-nw)
Peter Oliver 14924f
Recommends:    enchant2
Peter Oliver 448113
Recommends:    info
Petr Hracek da86ac
Provides:      %{name}-el = %{epoch}:%{version}-%{release}
Petr Hracek da86ac
Obsoletes:     emacs-el < 1:24.3-29
Dan Čermák 615534
# transient.el is provided by emacs in lisp/transient.el
Dan Čermák 615534
Provides:      emacs-transient = 0.3.7
Dan Čermák 615534
# the existing emacs-transient package is obsoleted by emacs 28+, last package
Dan Čermák 615534
# version as of the release of emacs 28.1 is obsoleted
Dan Čermák 615534
Obsoletes:     emacs-transient < 0.3.0-4
cvsdist 45b61e
Peter Oliver 9c5e49
# Ideally, we'd package all tree-sitter parsers as RPMs, but, in the
Peter Oliver 9c5e49
# meantime, we need the following packages for
Peter Oliver 9c5e49
# treesit-install-language-grammar to be able to build the parsers for
Peter Oliver 9c5e49
# us at runtime:
Peter Oliver 6a817e
Recommends:    ((gcc and gcc-c++) or clang)
Peter Oliver 6a817e
Recommends:    git
Peter Oliver 9c5e49
Peter Oliver 927faa
Recommends:    libtree-sitter-java
Peter Oliver 927faa
Peter Oliver 9c5e49
cvsdist 45b61e
%description common
Peter Oliver 6a39a2
%desc
Peter Oliver 6a39a2
This package contains all the common files needed by emacs, emacs-gtk+x11,
Peter Oliver e739d3
emacs-lucid, or emacs-nw.
cvsdist 45b61e
Karel Klic c98151
%package terminal
Petr Hracek da86ac
Summary:       A desktop menu item for GNU Emacs terminal.
Petr Hracek da86ac
Requires:      emacs = %{epoch}:%{version}-%{release}
Petr Hracek da86ac
BuildArch:     noarch
Karel Klic c98151
Karel Klic c98151
%description terminal
Karel Klic c98151
Contains a desktop menu item running GNU Emacs terminal. Install
Karel Klic c98151
emacs-terminal if you need a terminal with Malayalam support.
Karel Klic c98151
Karel Klic c98151
Please note that emacs-terminal is a temporary package and it will be
Ville Skyttä c4e075
removed when another terminal becomes capable of handling Malayalam.
Karel Klic c98151
Karel Klic 96340c
%package filesystem
Petr Hracek da86ac
Summary:       Emacs filesystem layout
Petr Hracek da86ac
BuildArch:     noarch
Karel Klic 96340c
Karel Klic 96340c
%description filesystem
Karel Klic 96340c
This package provides some directories which are required by other
Karel Klic 96340c
packages that add functionality to Emacs.
Karel Klic 96340c
Jan Synacek f6258e
%package devel
Jan Synacek f6258e
Summary: Development header files for Emacs
Jan Synacek f6258e
Jan Synacek f6258e
%description devel
Jan Synacek f6258e
Development header files for Emacs.
Jan Synacek f6258e
cvsdist af3202
%prep
Dan Čermák 6f367b
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
Dan Čermák 2850fb
%autosetup -p1
Dan Čermák 2850fb
Michael Cronenworth de26e2
autoconf
Jochen Schmitt 668910
Daniel Novotny fef43a
grep -v "tetris.elc" lisp/Makefile.in > lisp/Makefile.in.new \
Daniel Novotny fef43a
   && mv lisp/Makefile.in.new lisp/Makefile.in
Petr Hracek 61c3d5
grep -v "pong.elc" lisp/Makefile.in > lisp/Makefile.in.new \
Petr Hracek 61c3d5
   && mv lisp/Makefile.in.new lisp/Makefile.in
Daniel Novotny fef43a
Karel Klic 96340c
# Avoid trademark issues
Charles Coldwell e15ad4
rm -f lisp/play/tetris.el lisp/play/tetris.elc
Jason Thatcher a0c541
rm -f lisp/play/pong.el lisp/play/pong.elc
Charles Coldwell 80ee80
Dennis Gilmore a63192
%ifarch %{ix86}
Dennis Gilmore a63192
%define setarch setarch %{_arch} -R
Dennis Gilmore a63192
%else
Dennis Gilmore a63192
%define setarch %{nil}
Dennis Gilmore a63192
%endif
Dennis Gilmore a63192
Karel Klic 3e2828
# Avoid duplicating doc files in the common subpackage
Karel Klic 3e2828
ln -s ../../%{name}/%{version}/etc/COPYING doc
Karel Klic 3e2828
ln -s ../../%{name}/%{version}/etc/NEWS doc
Karel Klic 3e2828
Michael Cronenworth cda0f6
cvsdist af3202
%build
Dan Čermák 662bd4
export CFLAGS="-DMAIL_USE_LOCKF %{build_cflags}"
Dan Čermák 662bd4
%set_build_flags
Jens Petersen 7a997d
Gregory Shimansky 3abc8d
# Build Lucid binary
Gregory Shimansky 3abc8d
mkdir build-lucid && cd build-lucid
Gregory Shimansky 3abc8d
ln -s ../configure .
Gregory Shimansky 3abc8d
Gregory Shimansky 3abc8d
LDFLAGS=-Wl,-z,relro;  export LDFLAGS;
Gregory Shimansky 3abc8d
Peter Oliver 277843
%configure --with-cairo \
Peter Oliver 277843
           --with-dbus \
Peter Oliver 277843
           --with-gif \
Peter Oliver 277843
           --with-gpm=no \
Peter Oliver 277843
           --with-harfbuzz \
Peter Oliver 277843
           --with-jpeg \
Peter Oliver 277843
           --with-json \
Peter Oliver 277843
           --with-modules \
Peter Oliver 277843
           --with-native-compilation=aot \
Peter Oliver 277843
           --with-png \
Peter Oliver 277843
           --with-rsvg \
Peter Oliver 277843
           --with-sqlite3 \
Peter Oliver 277843
           --with-tiff \
Peter Oliver 277843
           --with-tree-sitter \
Peter Oliver 277843
           --with-webp \
Peter Oliver 277843
           --with-x-toolkit=lucid \
Peter Oliver 277843
           --with-xft \
Peter Oliver 277843
           --with-xinput2 \
Peter Oliver 64a3d6
           --with-xpm
Peter Oliver 9c5e49
%{setarch} %make_build bootstrap
Dan Čermák 662bd4
%{setarch} %make_build
Gregory Shimansky 3abc8d
cd ..
Gregory Shimansky 3abc8d
Jonathan G. Underwood 71dd62
# Build binary without X support
Peter Oliver e739d3
mkdir build-nw && cd build-nw
Jonathan G. Underwood 71dd62
ln -s ../configure .
Peter Oliver 277843
%configure --with-json \
Peter Oliver 277843
           --with-modules \
Peter Oliver 277843
           --with-native-compilation=aot \
Peter Oliver 277843
           --with-sqlite3 \
Peter Oliver 277843
           --with-tree-sitter \
Peter Oliver 277843
           --with-x=no
Peter Oliver 9c5e49
%{setarch} %make_build bootstrap
Bhavin Gandhi e79d2e
%{setarch} %make_build
Bhavin Gandhi e79d2e
cd ..
Bhavin Gandhi e79d2e
Peter Oliver 6a39a2
# Build GTK/X11 binary
Peter Oliver 6a39a2
mkdir build-gtk+x11 && cd build-gtk+x11
Bhavin Gandhi e79d2e
ln -s ../configure .
Bhavin Gandhi e79d2e
Bhavin Gandhi e79d2e
LDFLAGS=-Wl,-z,relro;  export LDFLAGS;
Bhavin Gandhi e79d2e
Peter Oliver 277843
%configure --with-cairo \
Peter Oliver 277843
           --with-dbus \
Peter Oliver 277843
           --with-gif \
Peter Oliver 277843
           --with-gpm=no \
Peter Oliver 277843
           --with-harfbuzz \
Peter Oliver 277843
           --with-jpeg \
Peter Oliver 277843
           --with-json \
Peter Oliver 277843
           --with-modules \
Peter Oliver 277843
           --with-native-compilation=aot \
Peter Oliver 277843
           --with-png \
Peter Oliver 277843
           --with-rsvg \
Peter Oliver 277843
           --with-sqlite3 \
Peter Oliver 277843
           --with-tiff \
Peter Oliver 277843
           --with-tree-sitter \
Peter Oliver 277843
           --with-webp \
Peter Oliver 277843
           --with-x-toolkit=gtk3 \
Peter Oliver 277843
           --with-xinput2 \
Peter Oliver 277843
           --with-xpm \
Peter Oliver 277843
           %{?with_webkit:--with-xwidgets}
Peter Oliver 9c5e49
%{setarch} %make_build bootstrap
Dan Čermák 662bd4
%{setarch} %make_build
Jonathan G. Underwood 71dd62
cd ..
Charles Coldwell ee280a
Peter Oliver 6a39a2
# Build pure GTK binary
Peter Oliver 6a39a2
mkdir build-pgtk && cd build-pgtk
Peter Oliver 6a39a2
ln -s ../configure .
Peter Oliver 6a39a2
Peter Oliver 6a39a2
LDFLAGS=-Wl,-z,relro;  export LDFLAGS;
Peter Oliver 6a39a2
Peter Oliver 277843
%configure --with-cairo \
Peter Oliver 277843
           --with-dbus \
Peter Oliver 277843
           --with-gif \
Peter Oliver 277843
           --with-gpm=no \
Peter Oliver 277843
           --with-harfbuzz \
Peter Oliver 277843
           --with-jpeg \
Peter Oliver 277843
           --with-json \
Peter Oliver 277843
           --with-modules \
Peter Oliver 277843
           --with-native-compilation=aot \
Peter Oliver 277843
           --with-pgtk \
Peter Oliver 277843
           --with-png \
Peter Oliver 277843
           --with-rsvg \
Peter Oliver 277843
           --with-sqlite3 \
Peter Oliver 277843
           --with-tiff \
Peter Oliver 277843
           --with-tree-sitter \
Peter Oliver eb9a48
           --with-webp \
Peter Oliver 277843
           --with-xpm \
Peter Oliver 277843
           %{?with_webkit:--with-xwidgets}
Peter Oliver 6a39a2
%{setarch} %make_build bootstrap
Peter Oliver 6a39a2
%{setarch} %make_build
Peter Oliver 6a39a2
cd ..
Peter Oliver 6a39a2
Jonathan G. Underwood 71dd62
# Remove versioned file so that we end up with .1 suffix and only one DOC file
Peter Oliver e739d3
rm build-{gtk+x11,lucid,nw,pgtk}/src/emacs-%{version}.*
cvsdist af3202
Charles Coldwell fa071f
# Create pkgconfig file
Charles Coldwell 80ee80
cat > emacs.pc << EOF
Charles Coldwell 80ee80
sitepkglispdir=%{site_lisp}
Jonathan G. Underwood 28acda
sitestartdir=%{site_start_d}
Charles Coldwell 80ee80
Charles Coldwell 80ee80
Name: emacs
Charles Coldwell 80ee80
Description: GNU Emacs text editor
Dennis Gilmore a63192
Version: %{epoch}:%{version}
Charles Coldwell 80ee80
EOF
Charles Coldwell 80ee80
Jonathan G. Underwood 7501f2
# Create macros.emacs RPM macro file
Jonathan G. Underwood 7501f2
cat > macros.emacs << EOF
Jonathan G. Underwood 7501f2
%%_emacs_version %{version}
Jonathan G. Underwood 28acda
%%_emacs_ev %{?epoch:%{epoch}:}%{version}
Jonathan G. Underwood 28acda
%%_emacs_evr %{?epoch:%{epoch}:}%{version}-%{release}
Jonathan G. Underwood 7501f2
%%_emacs_sitelispdir %{site_lisp}
Jonathan G. Underwood 7501f2
%%_emacs_sitestartdir %{site_start_d}
Tim Landscheidt 346107
%%_emacs_bytecompile(W) /usr/bin/emacs -batch --no-init-file --no-site-file --eval '(push nil load-path)' %%{-W:--eval '(setq byte-compile-error-on-warn t)' }-f batch-byte-compile %%*
Jonathan G. Underwood 7501f2
EOF
Jonathan G. Underwood 7501f2
cvsdist af3202
%install
Peter Oliver 6a39a2
cd build-pgtk
Jan Synacek 1cedb9
%make_install
Jonathan G. Underwood 71dd62
cd ..
Jens Petersen 41350f
Karel Klic 96340c
# Let alternatives manage the symlink
Charles Coldwell fa071f
rm %{buildroot}%{_bindir}/emacs
Karel Klic a6db38
touch %{buildroot}%{_bindir}/emacs
Charles Coldwell ee280a
Karel Klic 96340c
# Do not compress the files which implement compression itself (#484830)
Daniel Novotny 793e02
gunzip %{buildroot}%{_datadir}/emacs/%{version}/lisp/jka-compr.el.gz
Daniel Novotny 793e02
gunzip %{buildroot}%{_datadir}/emacs/%{version}/lisp/jka-cmpr-hook.el.gz
Daniel Novotny 793e02
Peter Oliver 6a39a2
# Install the emacs with GTK toolkit
Peter Oliver 6a39a2
install -p -m 0755 build-gtk+x11/src/emacs %{buildroot}%{_bindir}/emacs-%{version}-gtk+x11
Peter Oliver 6a39a2
Peter Oliver 6a39a2
# Install the emacs with Lucid toolkit
Gregory Shimansky 3abc8d
install -p -m 0755 build-lucid/src/emacs %{buildroot}%{_bindir}/emacs-%{version}-lucid
Gregory Shimansky 3abc8d
Peter Oliver e739d3
# Install the emacs without graphical display
Peter Oliver e739d3
install -p -m 0755 build-nw/src/emacs %{buildroot}%{_bindir}/emacs-%{version}-nw
Peter Oliver e739d3
ln -s emacs-%{version}-nw %{buildroot}%{_bindir}/emacs-%{version}-nox
Peter Oliver e739d3
ln -s emacs-nw %{buildroot}%{_bindir}/emacs-nox
cvsdist af3202
Karel Klic 96340c
# Make sure movemail isn't setgid
Charles Coldwell fa071f
chmod 755 %{buildroot}%{emacs_libexecdir}/movemail
Charles Coldwell ee280a
Charles Coldwell fa071f
mkdir -p %{buildroot}%{site_lisp}
Dan Čermák 6f367b
install -p -m 0644 %SOURCE5 %{buildroot}%{site_lisp}/site-start.el
Dan Čermák 6f367b
install -p -m 0644 %SOURCE6 %{buildroot}%{site_lisp}
Charles Coldwell ee280a
Karel Klic 96340c
# This solves bz#474958, "update-directory-autoloads" now finally
Karel Klic 96340c
# works the path is different each version, so we'll generate it here
Daniel Novotny 42cbd7
echo "(setq source-directory \"%{_datadir}/emacs/%{version}/\")" \
Daniel Novotny 42cbd7
 >> %{buildroot}%{site_lisp}/site-start.el
Daniel Novotny 42cbd7
Charles Coldwell fa071f
mv %{buildroot}%{_bindir}/{etags,etags.emacs}
Karel Klic 2d7f92
mv %{buildroot}%{_mandir}/man1/{ctags.1.gz,gctags.1.gz}
Karel Klic 2d7f92
mv %{buildroot}%{_mandir}/man1/{etags.1.gz,etags.emacs.1.gz}
Charles Coldwell fa071f
mv %{buildroot}%{_bindir}/{ctags,gctags}
Petr Hracek b1c2ab
# BZ 927996
Petr Hracek b1c2ab
mv %{buildroot}%{_infodir}/{info.info.gz,info.gz}
cvsdist af3202
Charles Coldwell fa071f
mkdir -p %{buildroot}%{site_lisp}/site-start.d
cvsdist af3202
Karel Klic 96340c
# Default initialization file
Charles Coldwell fa071f
mkdir -p %{buildroot}%{_sysconfdir}/skel
Dan Čermák 6f367b
install -p -m 0644 %SOURCE4 %{buildroot}%{_sysconfdir}/skel/.emacs
Jens Petersen 336b3d
Karel Klic 96340c
# Install pkgconfig file
Charles Coldwell fa071f
mkdir -p %{buildroot}/%{pkgconfig}
Daniel Novotny fef43a
install -p -m 0644 emacs.pc %{buildroot}/%{pkgconfig}
Charles Coldwell 80ee80
Karel Klic 96340c
# Install rpm macro definition file
Petr Hracek ff52e7
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
Petr Hracek ff52e7
install -p -m 0644 macros.emacs %{buildroot}%{_rpmconfigdir}/macros.d/
Jonathan G. Underwood 7501f2
Karel Klic 96340c
# Installing emacs-terminal binary
Dan Čermák 6f367b
install -p -m 755 %SOURCE8 %{buildroot}%{_bindir}/emacs-terminal
Karel Klíč 0134b8
Karel Klic 96340c
# After everything is installed, remove info dir
Charles Coldwell fa071f
rm -f %{buildroot}%{_infodir}/dir
Jens Petersen fa4e25
Karel Klic 96340c
# Install desktop files
Karel Klíč 0134b8
desktop-file-install --dir=%{buildroot}%{_datadir}/applications \
Dan Čermák 6f367b
                     %SOURCE7
Charles Coldwell dcc57f
Peter Oliver 6a39a2
# Install a wrapper to avoid running the Wayland-only build on X11
Peter Oliver 6a39a2
install -p -m 0755 %SOURCE9 %{buildroot}%{_bindir}/emacs-desktop
Peter Oliver 6a39a2
Peter Oliver f8859c
# Remove duplicate desktop-related files
Peter Oliver f8859c
rm %{buildroot}%{_datadir}/%{name}/%{version}/etc/%{name}.{desktop,service}
Peter Oliver f8859c
Bhavin Gandhi e79d2e
# We don't ship the client variants yet
Bhavin Gandhi e79d2e
# https://src.fedoraproject.org/rpms/emacs/pull-request/12
Bhavin Gandhi e79d2e
rm %{buildroot}%{_datadir}/applications/emacsclient.desktop
Bhavin Gandhi e79d2e
rm %{buildroot}%{_datadir}/applications/emacsclient-mail.desktop
Bhavin Gandhi e79d2e
cvsdist af3202
#
Karel Klic 96340c
# Create file lists
cvsdist af3202
#
Jens Petersen fa4e25
rm -f *-filelist {common,el}-*-files
Jens Petersen fa4e25
cvsdist 45b61e
( TOPDIR=${PWD}
Charles Coldwell fa071f
  cd %{buildroot}
cvsdist af3202
Peter Oliver f151e6
  find .%{_datadir}/emacs/%{version}/lisp .%{site_lisp} \
Peter Oliver f151e6
    \( -type f -name '*.elc' -fprint $TOPDIR/common-lisp-none-elc-files \) -o \( -type d -fprintf $TOPDIR/common-lisp-dir-files "%%%%dir %%p\n" \) -o \( -name '*.el.gz' -fprint $TOPDIR/el-bytecomped-files -o -fprint $TOPDIR/common-not-comped-files \)
Charles Coldwell ee280a
Charles Coldwell ee280a
)
cvsdist af3202
Dan Čermák ebd9e6
# Sorted list of info files
Dan Čermák 0bef05
%define info_files auth autotype bovine calc ccmode cl dbus dired-x ebrowse ede ediff edt efaq eglot eieio eintr elisp emacs-gnutls emacs-mime emacs epa erc ert eshell eudc eww flymake forms gnus htmlfontify idlwave ido mairix-el message mh-e modus-themes newsticker nxml-mode octave-mode org pcl-cvs pgg rcirc reftex remember sasl sc semantic ses sieve smtpmail speedbar srecode todo-mode tramp transient url use-package vhdl-mode vip viper vtable widget wisent woman
Dan Čermák ebd9e6
Dan Čermák ebd9e6
for info_f in %info_files; do
Dan Čermák ebd9e6
    echo "%{_infodir}/${info_f}.info*" >> info-filelist
Dan Čermák ebd9e6
done
Dan Čermák ebd9e6
# info.gz is a rename of info.info.gz and thus needs special handling
Dan Čermák ebd9e6
echo "%{_infodir}/info*" >> info-filelist
Dan Čermák ebd9e6
Karel Klic 96340c
# Put the lists together after filtering  ./usr to /usr
Jens Petersen d1cee9
sed -i -e "s|\.%{_prefix}|%{_prefix}|" *-files
Peter Oliver f151e6
grep -vhE '%{site_lisp}(|/(default\.el|site-start\.d|site-start\.el))$' {common,el}-*-files > common-filelist
cvsdist af3202
Jan Synacek 904568
# Remove old icon
Jan Synacek 904568
rm %{buildroot}%{_datadir}/icons/hicolor/scalable/mimetypes/emacs-document23.svg
Jan Synacek 904568
Bhavin Gandhi e79d2e
# Install all the pdmp with fingerprints
Peter Oliver 6a39a2
pgtk_pdmp="emacs-$(./build-pgtk/src/emacs --fingerprint 2>&1 | sed 's/.* //').pdmp"
Peter Oliver 6a39a2
install -p -m 0644 build-pgtk/src/emacs.pdmp %{buildroot}%{emacs_libexecdir}/${pgtk_pdmp}
Peter Oliver 6a39a2
Peter Oliver 6a39a2
gtkx11_pdmp="emacs-$(./build-gtk+x11/src/emacs --fingerprint 2>&1 | sed 's/.* //').pdmp"
Peter Oliver 6a39a2
install -p -m 0644 build-gtk+x11/src/emacs.pdmp %{buildroot}%{emacs_libexecdir}/${gtkx11_pdmp}
Bhavin Gandhi e79d2e
Bhavin Gandhi e79d2e
lucid_pdmp="emacs-$(./build-lucid/src/emacs --fingerprint 2>&1 | sed 's/.* //').pdmp"
Bhavin Gandhi e79d2e
install -p -m 0644 build-lucid/src/emacs.pdmp %{buildroot}%{emacs_libexecdir}/${lucid_pdmp}
Bhavin Gandhi e79d2e
Peter Oliver e739d3
nw_pdmp="emacs-$(./build-nw/src/emacs --fingerprint 2>&1 | sed 's/.* //').pdmp"
Peter Oliver e739d3
install -p -m 0644 build-nw/src/emacs.pdmp %{buildroot}%{emacs_libexecdir}/${nw_pdmp}
Bhavin Gandhi e79d2e
Bhavin Gandhi e79d2e
# Install native compiled Lisp of all builds
Peter Oliver 6a39a2
pgtk_comp_native_ver=$(ls -1 build-pgtk/native-lisp)
Peter Oliver 6a39a2
gtkx11_comp_native_ver=$(ls -1 build-gtk+x11/native-lisp)
Bhavin Gandhi e79d2e
lucid_comp_native_ver=$(ls -1 build-lucid/native-lisp)
Peter Oliver e739d3
nw_comp_native_ver=$(ls -1 build-nw/native-lisp)
Peter Oliver 6a39a2
cp -ar build-pgtk/native-lisp/${pgtk_comp_native_ver} %{buildroot}%{native_lisp}
Peter Oliver 6a39a2
cp -ar build-gtk+x11/native-lisp/${gtkx11_comp_native_ver} %{buildroot}%{native_lisp}
Bhavin Gandhi e79d2e
cp -ar build-lucid/native-lisp/${lucid_comp_native_ver} %{buildroot}%{native_lisp}
Peter Oliver e739d3
cp -ar build-nw/native-lisp/${nw_comp_native_ver} %{buildroot}%{native_lisp}
Bhavin Gandhi e79d2e
Dan Čermák 42430c
(TOPDIR=${PWD}
Dan Čermák 42430c
 cd %{buildroot}
Peter Oliver 6a39a2
 find .%{native_lisp}/${gtkx11_comp_native_ver} \( -type f -name '*eln' -fprintf $TOPDIR/gtk+x11-eln-filelist "%%%%attr(755,-,-) %%p\n" \) -o \( -type d -fprintf $TOPDIR/gtk+x11-dirs "%%%%dir %%p\n" \)
Peter Oliver 6a39a2
)
Peter Oliver 6a39a2
(TOPDIR=${PWD}
Peter Oliver 6a39a2
 cd %{buildroot}
Peter Oliver 6a39a2
 find .%{native_lisp}/${pgtk_comp_native_ver} \( -type f -name '*eln' -fprintf $TOPDIR/pgtk-eln-filelist "%%%%attr(755,-,-) %%p\n" \) -o \( -type d -fprintf $TOPDIR/pgtk-dirs "%%%%dir %%p\n" \)
Dan Čermák 42430c
)
Dan Čermák 42430c
(TOPDIR=${PWD}
Dan Čermák 42430c
 cd %{buildroot}
Dan Čermák 42430c
 find .%{native_lisp}/${lucid_comp_native_ver} \( -type f -name '*eln' -fprintf $TOPDIR/lucid-eln-filelist "%%%%attr(755,-,-) %%p\n" \) -o \( -type d -fprintf $TOPDIR/lucid-dirs "%%%%dir %%p\n" \)
Dan Čermák 42430c
)
Dan Čermák 42430c
(TOPDIR=${PWD}
Dan Čermák 42430c
 cd %{buildroot}
Peter Oliver e739d3
 find .%{native_lisp}/${nw_comp_native_ver} \( -type f -name '*eln' -fprintf $TOPDIR/nw-eln-filelist "%%%%attr(755,-,-) %%p\n" \) -o \( -type d -fprintf $TOPDIR/nw-dirs "%%%%dir %%p\n" \)
Dan Čermák 42430c
)
Peter Oliver 6a39a2
echo %{emacs_libexecdir}/${pgtk_pdmp} >> pgtk-eln-filelist
Peter Oliver 6a39a2
echo %{emacs_libexecdir}/${gtkx11_pdmp} >> gtk+x11-eln-filelist
Dan Čermák 42430c
echo %{emacs_libexecdir}/${lucid_pdmp} >> lucid-eln-filelist
Peter Oliver e739d3
echo %{emacs_libexecdir}/${nw_pdmp} >> nw-eln-filelist
Dan Čermák 42430c
Dan Čermák 42430c
# remove leading . from filelists
Dan Čermák 42430c
sed -i -e "s|\.%{native_lisp}|%{native_lisp}|" *-eln-filelist *-dirs
Bhavin Gandhi e79d2e
Dan Čermák 69e675
# remove exec permissions from eln files to prevent the debuginfo extractor from
Dan Čermák 69e675
# trying to extract debuginfo from them
Dan Čermák 69e675
find %{buildroot}%{_libdir}/ -name '*eln' -type f | xargs chmod -x
Dan Čermák 69e675
Dan Čermák a45e30
# ensure native files are newer than byte-code files
Dan Čermák a45e30
# see: https://bugzilla.redhat.com/show_bug.cgi?id=2157979#c11
Dan Čermák a45e30
find %{buildroot}%{_libdir}/ -name '*eln' -type f | xargs touch
Dan Čermák a45e30
Peter Oliver e65978
%check
Bhavin Gandhi e79d2e
appstream-util validate-relax --nonet %{buildroot}/%{_metainfodir}/*.metainfo.xml
Peter Oliver e65978
desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
Peter Oliver e65978
Karel Klic be557b
%preun
Yaakov Selkowitz aba744
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-%{version} || :
Michel Alexandre Salim c005e5
Karel Klic be557b
%posttrans
Yaakov Selkowitz aba744
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-%{version} 80 || :
Charles Coldwell fc47e9
Gregory Shimansky 3abc8d
%preun lucid
Yaakov Selkowitz aba744
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-%{version}-lucid || :
Yaakov Selkowitz aba744
/usr/sbin/alternatives --remove emacs-lucid %{_bindir}/emacs-%{version}-lucid || :
Gregory Shimansky 3abc8d
Gregory Shimansky 3abc8d
%posttrans lucid
Yaakov Selkowitz aba744
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-%{version}-lucid 70 || :
Yaakov Selkowitz aba744
/usr/sbin/alternatives --install %{_bindir}/emacs-lucid emacs-lucid %{_bindir}/emacs-%{version}-lucid 60 || :
Gregory Shimansky 3abc8d
Peter Oliver 6a39a2
%preun gtk+x11
Yaakov Selkowitz aba744
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-%{version}-gtk+x11 || :
Yaakov Selkowitz aba744
/usr/sbin/alternatives --remove emacs-gtk+x11 %{_bindir}/emacs-%{version}-gtk+x11 || :
Peter Oliver 6a39a2
Peter Oliver 6a39a2
%posttrans gtk+x11
Yaakov Selkowitz aba744
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-%{version}-gtk+x11 75 || :
Yaakov Selkowitz aba744
/usr/sbin/alternatives --install %{_bindir}/emacs-gtk+x11 emacs-gtk+x11 %{_bindir}/emacs-%{version}-gtk+x11 60 || :
Peter Oliver 6a39a2
Peter Oliver e739d3
%preun nw
Yaakov Selkowitz aba744
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-%{version}-nw || :
Yaakov Selkowitz aba744
/usr/sbin/alternatives --remove emacs-nw %{_bindir}/emacs-%{version}-nw || :
Karel Klic be557b
Peter Oliver e739d3
%posttrans nw
Yaakov Selkowitz aba744
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-%{version}-nw 70 || :
Yaakov Selkowitz aba744
/usr/sbin/alternatives --install %{_bindir}/emacs-nw emacs-nw %{_bindir}/emacs-%{version}-nw 60 || :
Charles Coldwell ee280a
cvsdist 45b61e
%preun common
Yaakov Selkowitz aba744
/usr/sbin/alternatives --remove emacs.etags %{_bindir}/etags.emacs || :
cvsdist af3202
Charles Coldwell 75c8a0
%posttrans common
Yaakov Selkowitz aba744
/usr/sbin/alternatives --install %{_bindir}/etags emacs.etags %{_bindir}/etags.emacs 80 \
Dan Čermák fe829a
       --slave %{_mandir}/man1/etags.1.gz emacs.etags.man %{_mandir}/man1/etags.emacs.1.gz || :
Charles Coldwell 75c8a0
Peter Oliver 6a39a2
%files -f pgtk-eln-filelist -f pgtk-dirs
cvsdist 45b61e
%{_bindir}/emacs-%{version}
Karel Klic a6db38
%attr(0755,-,-) %ghost %{_bindir}/emacs
Peter Oliver 6a39a2
%{_datadir}/glib-2.0/schemas/org.gnu.emacs.defaults.gschema.xml
Peter Oliver 6a39a2
Peter Oliver 6a39a2
%files gtk+x11 -f gtk+x11-eln-filelist -f gtk+x11-dirs
Peter Oliver 6a39a2
%{_bindir}/emacs-%{version}-gtk+x11
Peter Oliver 6a39a2
%attr(0755,-,-) %ghost %{_bindir}/emacs
Peter Oliver 6a39a2
%attr(0755,-,-) %ghost %{_bindir}/emacs-gtk+x11
Daniel Novotny fef43a
Dan Čermák 42430c
%files lucid -f lucid-eln-filelist -f lucid-dirs
Gregory Shimansky 3abc8d
%{_bindir}/emacs-%{version}-lucid
Gregory Shimansky 3abc8d
%attr(0755,-,-) %ghost %{_bindir}/emacs
Gregory Shimansky 3abc8d
%attr(0755,-,-) %ghost %{_bindir}/emacs-lucid
Gregory Shimansky 3abc8d
Peter Oliver e739d3
%files nw -f nw-eln-filelist -f nw-dirs
Jens Petersen 69dd38
%{_bindir}/emacs-%{version}-nox
Peter Oliver e739d3
%{_bindir}/emacs-%{version}-nw
Peter Oliver e739d3
%{_bindir}/emacs-nox
Jan Chaloupka 92271d
%attr(0755,-,-) %ghost %{_bindir}/emacs
Peter Oliver e739d3
%attr(0755,-,-) %ghost %{_bindir}/emacs-nw
cvsdist 45b61e
Peter Oliver f151e6
%files common -f common-filelist -f info-filelist
cvsdist d31aa3
%config(noreplace) %{_sysconfdir}/skel/.emacs
Petr Hracek ff52e7
%{_rpmconfigdir}/macros.d/macros.emacs
54f4bc
%license etc/COPYING
54f4bc
%doc doc/NEWS BUGS README
Karel Klic 9c6ebc
%{_bindir}/ebrowse
Karel Klic 9c6ebc
%{_bindir}/emacsclient
Peter Oliver 6a39a2
%{_bindir}/emacs-desktop
Karel Klic 9c6ebc
%{_bindir}/etags.emacs
Karel Klic 9c6ebc
%{_bindir}/gctags
Peter Oliver 448113
%{_datadir}/applications/emacs.desktop
Peter Oliver 448113
%{_datadir}/applications/emacs-mail.desktop
Peter Oliver 448113
%{_metainfodir}/%{name}.metainfo.xml
Peter Oliver 448113
%{_datadir}/icons/hicolor/*/apps/emacs.png
Peter Oliver 448113
%{_datadir}/icons/hicolor/scalable/apps/emacs.svg
Peter Oliver 448113
%{_datadir}/icons/hicolor/scalable/apps/emacs.ico
Peter Oliver 448113
%{_datadir}/icons/hicolor/scalable/mimetypes/emacs-document.svg
Dan Čermák ecd248
%{_mandir}/man1/ebrowse.1*
Dan Čermák ecd248
%{_mandir}/man1/emacs.1*
Dan Čermák ecd248
%{_mandir}/man1/emacsclient.1*
Dan Čermák ecd248
%{_mandir}/man1/etags.emacs.1*
Dan Čermák ecd248
%{_mandir}/man1/gctags.1*
cvsdist d31aa3
%dir %{_datadir}/emacs/%{version}
cvsdist d31aa3
%{_datadir}/emacs/%{version}/etc
cvsdist d31aa3
%{_datadir}/emacs/%{version}/site-lisp
Dan Čermák a1c92f
%dir %{emacs_libexecdir}/
Dan Čermák a1c92f
%{emacs_libexecdir}/movemail
Dan Čermák a1c92f
%{emacs_libexecdir}/hexl
Dan Čermák a1c92f
%{emacs_libexecdir}/rcs2log
Petr Hracek f86fe1
%{_userunitdir}/emacs.service
Peter Oliver f151e6
%attr(0644,root,root) %config(noreplace) %{site_lisp}/default.el
Peter Oliver f151e6
%attr(0644,root,root) %config %{site_lisp}/site-start.el
Charles Coldwell fa071f
%{pkgconfig}/emacs.pc
cvsdist af3202
Karel Klic c98151
%files terminal
Karel Klic c98151
%{_bindir}/emacs-terminal
Karel Klic c98151
%{_datadir}/applications/emacs-terminal.desktop
Karel Klic c98151
Karel Klic 96340c
%files filesystem
Karel Klic 96340c
%dir %{_datadir}/emacs
Karel Klic 96340c
%dir %{_datadir}/emacs/site-lisp
Karel Klic 96340c
%dir %{_datadir}/emacs/site-lisp/site-start.d
Karel Klic 96340c
Jan Synacek f6258e
%files devel
Jan Synacek f6258e
%{_includedir}/emacs-module.h
Jan Synacek f6258e
cvsdist c08065
%changelog
Peter Oliver 85031a
%autochangelog