-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathDockerfile
86 lines (78 loc) · 2.3 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
FROM ubuntu:22.04
WORKDIR /opt
ENV DEBIAN_FRONTEND=noninteractive
RUN sed -i 's/# deb-src/deb-src/' /etc/apt/sources.list &&\
apt-get update && apt-get install --yes --no-install-recommends \
apt-transport-https\
ca-certificates\
build-essential \
autoconf \
git \
pkg-config \
libgnutls28-dev \
libasound2-dev \
libacl1-dev \
libgtk-3-dev \
libgpm-dev \
liblockfile-dev \
libotf-dev \
libsystemd-dev \
libjansson-dev \
libgccjit-11-dev \
libgif-dev \
librsvg2-dev \
libxml2-dev \
libxpm-dev \
libtiff-dev \
libjbig-dev \
libncurses-dev\
liblcms2-dev\
libwebp-dev\
libsqlite3-dev\
texinfo\
libtree-sitter-dev
# Clone emacs
RUN update-ca-certificates \
&& git clone --depth 1 https://git.savannah.gnu.org/git/emacs.git -b emacs-29 emacs \
&& mv emacs/* .
# Build
ENV CC="gcc-11"
RUN ./autogen.sh && ./configure \
--prefix "/usr/local" \
--with-pgtk \
--with-json \
--with-gnutls \
--with-rsvg \
--without-xwidgets \
--without-xaw3d \
--with-mailutils \
--with-native-compilation=aot \
CFLAGS="-O2 -pipe"
RUN make -j $(nproc)
# Create package
RUN EMACS_VERSION=$(sed -ne 's/AC_INIT(\[GNU Emacs\], \[\([0-9.]\+\)\], .*/\1/p' configure.ac).$(date +%y.%m.%d.%H) \
&& make install prefix=/opt/emacs-gcc-pgtk_${EMACS_VERSION}/usr/local \
&& mkdir emacs-gcc-pgtk_${EMACS_VERSION}/DEBIAN && echo "Package: emacs-gcc-pgtk\n\
Version: ${EMACS_VERSION}\n\
Section: base\n\
Priority: optional\n\
Architecture: amd64\n\
Depends: libtree-sitter0, libgif7, libotf1, libgccjit0, libgtk-3-0, librsvg2-2, libtiff5, libjansson4, libacl1, libgmp10, libwebp7, libsqlite3-0\n\
Conflicts: emacs\n\
Maintainer: konstare\n\
Description: Emacs with native compilation, pure GTK and tree-sitter\n\
--with-pgtk \
--with-json \
--with-gnutls \
--with-rsvg \
--without-xwidgets \
--without-xaw3d \
--with-mailutils \
--with-native-compilation=aot\
CFLAGS='-O2 -pipe'" \
>> emacs-gcc-pgtk_${EMACS_VERSION}/DEBIAN/control \
&& echo "activate-noawait ldconfig" >> emacs-gcc-pgtk_${EMACS_VERSION}/DEBIAN/triggers \
&& cd /opt \
&& dpkg-deb --build emacs-gcc-pgtk_${EMACS_VERSION} \
&& mkdir /opt/deploy \
&& mv /opt/emacs-gcc-pgtk_*.deb /opt/deploy