Created
March 7, 2019 19:17
-
-
Save oholiab/0efdbcbbc0c425a17c9e637a9f6a8ecb to your computer and use it in GitHub Desktop.
Makefile to build recent emacs as an unprivileged user
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This Makefile will build and install emacs with gnutls and nettle for an | |
# unprivileged user. Emacs files will be located in ~/emacs, shared files for | |
# nettle and gnutls will be in ~/build/emacs/libs. This is kinda just where | |
# they landed, I'll maybe relocate it all under ~/.local | |
# | |
# It should be run in ~/build/emacs | |
# | |
# The selection of dependencies is based on what wasn't installed on the Ubuntu | |
# Xenial server I was running it on | |
# | |
# All files downloaded are verified against the recommended PGP public keys and | |
# signature | |
# | |
# After installation, you'll either need to LD_PRELOAD libnettle.so and | |
# libgnutls.so, or use LD_LIBRARY_PATH to do similar | |
FINGERPRINT=D405 AA2C 862C 54F1 7EEE 6BE0 E8BC D786 6AFC F978 | |
VERSION=26.1 | |
PACKAGE=emacs-$(VERSION).tar.xz | |
BUILD_DIR=emacs-$(VERSION) | |
SIGNATURE=$(PACKAGE).sig | |
MIRROR=https://ftp.snt.utwente.nl/pub/software/gnu/emacs | |
GNUTLS_VERSION=3.3.6 | |
GNUTLS_MAJ_VERSION=3.3 | |
GNUTLS_PACKAGE=gnutls-$(GNUTLS_VERSION).tar.xz | |
GNUTLS_BUILD_DIR=gnutls-$(GNUTLS_VERSION) | |
GNUTLS_SIGNATURE=$(GNUTLS_PACKAGE).sig | |
GNUTLS_MIRROR=https://www.gnupg.org/ftp/gcrypt/gnutls/v$(GNUTLS_MAJ_VERSION) | |
NETTLE_FINGERPRINT=343C 2FF0 FBEE 5EC2 EDBE F399 F359 9FF8 28C6 7298 | |
NETTLE_MIRROR=https://ftp.gnu.org/gnu/nettle/ | |
NETTLE_VERSION=2.7.1 | |
NETTLE_PACKAGE=nettle-$(NETTLE_VERSION).tar.gz | |
NETTLE_BUILD_DIR=nettle-$(NETTLE_VERSION) | |
NETTLE_SIGNATURE=$(NETTLE_PACKAGE).sig | |
PKG_CONFIG="PKG_CONFIG_PATH=$(HOME)/build/emacs/libs/lib/pkgconfig:$$PKG_CONFIG_PATH" | |
GNUTLS_LDFLAGS=LDFLAGS=-L$(HOME)/build/emacs/libs/lib | |
#PKG_CONFIG_LIBDIR=$(HOME)/build/emacs/libs/gnutls/include:$$PKG_CONFIG_LIBDIR" | |
GNUTLS_LD_LIBRARY_PATH_HACK=export LD_LIBRARY_PATH=$(HOME)/build/emacs/libs/lib | |
.PHONY: install clean | |
default: $(GNUTLS_BUILD_DIR) | |
.key: | |
gpg --recv-keys "$(FINGERPRINT)" | |
touch .key | |
.gnutls-key: | |
wget https://www.gnutls.org/pgpkey-nmav.txt -O $@ | |
gpg --import $@ | |
.nettle-key: | |
gpg --recv-keys "$(NETTLE_FINGERPRINT)" | |
touch .nettle-key | |
$(NETTLE_PACKAGE) $(NETTLE_SIGNATURE): | .nettle-key | |
wget $(NETTLE_MIRROR)/$@ | |
$(NETTLE_BUILD_DIR): | $(NETTLE_PACKAGE) $(NETTLE_SIGNATURE) | |
gpg --verify $(NETTLE_SIGNATURE) | |
tar -xvf $(NETTLE_PACKAGE) | |
libs/lib/pkgconfig/nettle.pc: | $(NETTLE_BUILD_DIR) | |
cd $(NETTLE_BUILD_DIR) && ./configure --prefix=$(HOME)/build/emacs/libs | |
cd $(NETTLE_BUILD_DIR) && make && make install | |
$(GNUTLS_PACKAGE) $(GNUTLS_SIGNATURE): | .gnutls-key | |
wget $(GNUTLS_MIRROR)/$@ | |
$(GNUTLS_BUILD_DIR): | $(GNUTLS_PACKAGE) $(GNUTLS_SIGNATURE) | |
gpg --verify $(GNUTLS_SIGNATURE) | |
tar -xvf $(GNUTLS_PACKAGE) | |
libs/lib/pkgconfig/gnutls.pc: libs/lib/pkgconfig/nettle.pc | $(GNUTLS_BUILD_DIR) | |
cd $(GNUTLS_BUILD_DIR) && ./configure $(PKG_CONFIG) --prefix=$(HOME)/build/emacs/libs --bindir=$(HOME)/bin | |
cd $(GNUTLS_BUILD_DIR) && $(GNUTLS_LD_LIBRARY_PATH_HACK) make $(PKG_CONFIG) && make install | |
$(PACKAGE) $(SIGNATURE): | .key | |
wget $(MIRROR)/$@ | |
$(BUILD_DIR): | $(PACKAGE) $(SIGNATURE) | |
gpg --verify $(SIGNATURE) | |
tar -xvf $(PACKAGE) | |
$(BUILD_DIR)/src/emacs: libs/lib/pkgconfig/gnutls.pc | $(BUILD_DIR) | |
cd $(BUILD_DIR) && ./configure $(PKG_CONFIG) --with-x=no --without-sound --prefix=$(HOME)/emacs --bindir=$(HOME)/bin --without-imagemagick --without-xft --without-libotf --without-m17n-flt --without-xaw3d --without-xim --without-ns --without-gpm --without-dbus --without-gconf --without-gsettings --without-selinux --without-xpm --without-jpeg --without-tiff --without-gif --without-png --without-rsvg--without-pop --without-kerberos --without-mmdf | |
$(GNUTLS_LD_LIBRARY_PATH_HACK); make -C $(BUILD_DIR) | |
install: $(BUILD_DIR)/src/emacs | |
make -C $(BUILD_DIR) install | |
clean: | |
rm -rf libs/* |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment