This makes it difficult to install emacs on a resource constrainted environment like a embedded system, and hard to justify installing on a server. (Yes we can use tramp but it's not always a option)
It's a real shame and why I still need to know vi and vim.
1: https://gitweb.gentoo.org/repo/gentoo.git/tree/app-editors/e...
I'm still a Guix newb, so all I can say is that there may be some tweaking to be done if you're using non-default paths, (e.g. XDG Base Directory Specification) [0].
[0]: https://mail.gnu.org/archive/html/guix-devel/2019-03/msg0045...
https://github.com/alexmurray/emacs-snap/
In fact, it's already updated
The default branch has native-compilation, tree-sitter, and json enabled. See here for the enabled flags:
https://github.com/alexmurray/emacs-snap/blob/master/snapcra...
Last I tried building Emacs, it took me more than hour. I now use a snap that's updated very quickly and is already updated to 29.1:
apt-get update
apt-get install -y git software-properties-common make checkinstall autoconf texinfo
add-apt-repository -y ppa:ubuntu-toolchain-r/ppa
add-apt-repository -y ppa:ubuntu-toolchain-r/test
apt-get update
apt-get install -y gcc-10 g++-10 libgccjit0 libgccjit-10-dev libjansson4 libjansson-dev libgtk-3-dev
apt-get install -y libjpeg-dev libxpm-dev libgif-dev libtiff-dev libgnutls28-dev libncurses-dev
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10
git clone --depth=1 git://git.sv.gnu.org/emacs.git --branch=master # or use emacs-28.1 or whatever tag
cd emacs || exit
./autogen.sh
./configure \
--with-cairo \
--with-gnutls \
--with-harfbuzz \
--with-jpeg \
--with-json \
--with-mailutils \
--with-modules \
--with-native-compilation \
--with-pgtk \
--with-png \
--with-rsvg \
--with-tiff \
--with-wide-int \
--with-x-toolkit=gtk3 \
--with-xft \
--with-xml2 \
--with-xpm \
--without-compress-install \
--without-gconf \
--without-gsettings \
--without-imagemagick \
--without-toolkit-scroll-bars \
--without-xaw3d \
--without-xwidgets \
CFLAGS="-O3 -mtune=native -march=native -fomit-frame-pointer" \
prefix=/usr/local
make -j"$(nproc)" NATIVE_FULL_AOT=1
checkinstall -y -D --install=no \
--pkgname=${pkgname}-nativecomp \
--pkgversion=1"$(git rev-parse --short HEAD)" \
--requires="libjansson-dev,libharfbuzz-dev,libgccjit-10-dev" \
--pkggroup=emacs \
--gzman=yes \
make install-strip