Compiling Emacs =============== Quite some time ago I started with a git clone of the Emacs sources and compiled that. From that time on, on a regular basis I do a git pull and recompile Emacs. Like all self compiled software, I manage the installation with GNU Stow, see https://www.gnu.org/software/stow/. Being Emacs, there is probably more than one way to compile it, and I don't know if the way I compile Emacs is the best way, but it works and has never failed. Before you start, make sure you have the right dependencies installed. The (not very big) list of packages to install is, of course, for every operating system different. Lucid toolkit ------------- In the past, I had some problems with the GTK version, can't remember exactly what it was, I guess some problems with the interaction with the window manager (either ratpoison or dwm). I changed to the Lucid toolkit, and all problems were gone. From than on, I have sticked with Lucid. Prepare to install with stow ---------------------------- mkdir -p /usr/local/stow/emacs Initial git clone ----------------- As mortal user: git clone https://git.savannah.gnu.org/git/emacs.git ./autogen.sh ./configure --with-x-toolkit=lucid --prefix=/usr/local/stow/emacs make bootstrap As root: make install cd /usr/local/stow stow --ignore=dir emacs After this, Emacs has been installed, with a number of subdirectories, under /usr/local/stow/emacs: . |-- bin | |-- ctags | |-- ebrowse | |-- emacs -> emacs-30.0.50 | |-- emacs-30.0.50 | |-- emacsclient | `-- etags |-- include | `-- emacs-module.h |-- lib | `-- systemd |-- libexec | `-- emacs `-- share |-- applications |-- emacs |-- icons |-- info |-- man `-- metainfo The command stow --ignore=dir emacs creates symlinks in /usr/local/bin, /usr/local/include, and so on, to these subdirectories. Upgrade and recompile --------------------- Recompiling Emacs is not much different. This is how I do this: As mortal user: git pull git clean -dxf ./autogen.sh ./configure --with-x-toolkit=lucid --prefix=/usr/local/stow/emacs make bootstrap As root: cd /usr/local/stow stow -D --ignore=dir emacs rm -rf emacs-old mv emacs emacs-old cd [git clone dir] make install cd /usr/local/stow stow --ignore=dir emacs This moves the current install from /usr/local/stow/emacs to /usr/local/stow/emacs-old, creates a new directory /usr/local/stow/emacs and installs the new version there. This way, if the new compiled version has any problems, I can always revert to the last compiled version. In practice, however, I have never had to do this. Also, on several boxes with the same OS (and OS-version), the stow-directory can be shared, so compilation on only one system is needed. Upgrade packages ---------------- After a recompile, I upgrade the packages in Emacs. Happy Emacsing ! Last edited: $Date: 2023/04/12 10:33:21 $