/ppa-emacs

Packaging repository for my Emacs PPA

ppa-emacs

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.

Package series

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 trying emacs28-nativecomp.

  • emacs28-nox: Without support for X11.

  • emacs28-nativecomp: Same configuration as emacs28 but with native compilation. These packages are available for 22.04 LTS ("focal") and later; #25 tracks adding support for earlier Ubuntu releases.

Changes from upstream

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, causes emacs 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.

Release notes

28.1~1.git5a223c7f2e-kk3

  • Add emacs28-nativecomp package series. Native compilation will remain disabled for the emacs28 package series; see #23 for discussion.

28.1~1.git5a223c7f2e-kk2

  • --with-native-compilation has been temporarily disabled until #23 can be resolved.

28.1~1.git5a223c7f2e-kk1

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.

27.1~1.git86d8d76aa3-kk1

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.

25.3~2.gitc09215a-kk1

I have backported the 2019 ELPA signing key, which is valid until 2024.

25.1~1.gitf0eb70d-kk8

I have experimentally enabled debug symbols (-dbgsym packages) and non-x86 architectures in this PPA's settings.

25.1~1.gitf0eb70d-kk4

The GTK and -nox packages have had --with-modules and --with-file-notification added to their build-time configuration.

Debug symbols

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

Building packages

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