This is the packaging repository that I use to build the stable Emacs packages that I publish at https://launchpad.net/~kelleyk/+archive/ubuntu/emacs.
Please report issues with the PPA by filing an issue against this repository.
You'll need to pick one of these types of packages to install.
-
emacs28
: With support for X11 via GTK3. You may also want to consider tryingemacs28-nativecomp
. -
emacs28-nox
: Without support for X11. -
emacs28-nativecomp
: Same configuration asemacs28
but with native compilation. These packages are available for 22.04 LTS ("focal") and later; #25 tracks adding support for earlier Ubuntu releases.
These are the only changes between the Emacs project's releases and the contents of this PPA.
-
A fix for an
xinput
-related bug that, when triggered, causesemacs
to enter an infinite loop; the process will then be unresponsive and will consume 100% of a single CPU core until you kill it. -
An ELPA signing key expired in 2019-09. The new key, which is valid until 2024, is included Emacs 26.3 and later. I have also backported it to the
emacs25
series. If you have an existing install that is affected by the key expiration, you will need to fetch the new key and insert it into the keychain.
- Add
emacs28-nativecomp
package series. Native compilation will remain disabled for theemacs28
package series; see #23 for discussion.
--with-native-compilation
has been temporarily disabled until #23 can be resolved.
Released for 18.04 LTS ("bionic"), 20.04 LTS ("focal"), 21.10 ("impish"), and 22.04 LTS ("jammy").
Thanks to everyone for their patience; I know that I haven't uploaded new packages in a while.
-
Emacs 28 deprecates support for Xft in favor of Cairo and HarfBuzz. This was already our build configuration, so this deprecation has no impact.
-
Emacs 28 adds support for native compilation (
--with-native-compilation
). This feature has been enabled in all builds for 20.04 LTS ("focal") and newer.- The 18.04 LTS ("bionic") package does not include support for
native compilation. The feature requires
libgccjit
, which is only available starting with GCC 8; and 18.04 LTS uses GCC 7 by default.
- The 18.04 LTS ("bionic") package does not include support for
native compilation. The feature requires
The 'load-path has been changed to include version-specific directories like the Ubuntu/Debian packages do. The packages now also provide the non-version-specific package names used by the Ubuntu packages (e.g. emacs27-common provides emacs-common).
The emacs27
packages have cairo
-based text rendering; this may
cause issues with bitmapped fonts. They add native JSON manipulation,
ACL support, and version-dependent 'load-path entries (like what the
Ubuntu packages have), and more. The emacs27
packages for 16.04 LTS
("xenial") no longer include xwidgets support due to an upstream
change that requires newer libraries.
I have backported the 2019 ELPA signing key, which is valid until 2024.
I have experimentally enabled debug symbols (-dbgsym
packages) and
non-x86 architectures in this PPA's settings.
The GTK and -nox packages have had --with-modules
and
--with-file-notification
added to their build-time configuration.
Debug symbols are available! After adding the PPA however you
normally do, find the corresponding entry in
/etc/apt/sources.list.d
. It will look like the first line below
(though the suite name may be different if you are not using jammy);
duplicate it and change the component name ("main") to "main/debug".
deb http://ppa.launchpad.net/kelleyk/emacs/ubuntu jammy main
deb http://ppa.launchpad.net/kelleyk/emacs/ubuntu jammy main/debug
The packaging was originally based on that from the emacs-snapshot
PPA. The source packages that I upload are built with the help of my
kk-debuilder
utility.
$ kk-debuilder --target=impish,jammy --no-check --debian-branch=master-emacs28.1-jammy --upstream-branch=upstream-emacs28.1 --source-only
If you want to build binary packages yourself, note that you may run into trouble unless you disable ASLR.
$ echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
Remember to re-enable it once the build is complete.
$ echo 2 | sudo tee /proc/sys/kernel/randomize_va_space