-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
146 lines (131 loc) · 3.95 KB
/
Dockerfile
File metadata and controls
146 lines (131 loc) · 3.95 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# Use Debian Bookworm as the base image
FROM debian:bookworm-slim
# Install necessary build dependencies
RUN apt-get update && \
apt-get install -y \
build-essential \
clang \
cmake \
firefox-esr \
git \
libcairo2-dev \
libcups2-dev \
libffi-dev \
libflite1 \
libgif-dev \
libgl1-mesa-dev \
libglade2-dev \
libgnutls28-dev \
libicns-dev \
libjpeg62-turbo-dev \
libmujs-dev \
libnotify-dev \
libpango1.0-dev \
libpocketsphinx-dev \
libpng-dev \
libreadline-dev \
libsndfile1-dev \
libtiff5-dev \
libwrap0-dev \
libx11-dev \
libxi-dev \
libxext-dev \
libxmu-dev \
libxslt1-dev \
libxml2-dev \
libxslt1-dev \
libxt-dev \
libxtst-dev \
ninja-build \
sudo \
wmaker \
x11proto-core-dev \
x11proto-xext-dev \
xterm && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Clone the GNUstep-related repositories
RUN git clone --depth 1 https://github.com/gnustep/tools-make.git /gnustep-src/tools-make
RUN git clone --depth 1 https://github.com/gnustep/libobjc2.git /gnustep-src/libobjc2
RUN git clone --depth 1 https://github.com/gnustep/libs-base.git gnustep-src/libs-base
RUN git clone --depth 1 https://github.com/gnustep/libs-gui.git /gnustep-src/libs-gui
RUN git clone --depth 1 https://github.com/gnustep/libs-back.git /gnustep-src/libs-back
RUN git clone --depth 1 https://github.com/gnustep/apps-gworkspace.git /gnustep-src/apps-gworkspace
RUN git clone --depth 1 https://github.com/gnustep/apps-systempreferences.git /gnustep-src/apps-systempreferences
RUN git clone --depth 1 https://github.com/gnustep/gap /gnustep-src/gap
# Build and install gnustep-make
RUN cd /gnustep-src/tools-make && \
./configure \
--with-thread-lib=-pthread \
--prefix="/" \
--with-layout=gnustep \
--with-config-file=/etc/GNUstep.conf \
--enable-objc-nonfragile-abi \
--enable-native-objc-exceptions \
--with-library-combo=ng-gnu-gnu && \
gmake install
# Build and install libobjc2
RUN . /System/Library/Makefiles/GNUstep.sh && \
export GNUSTEP_INSTALLATION_DOMAIN=SYSTEM && \
cd /gnustep-src/libobjc2/ && \
mkdir Build && \
cd Build && \
cmake .. \
-G Ninja \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ && \
ninja install
# Build gnustep-base
RUN . /System/Library/Makefiles/GNUstep.sh && \
export GNUSTEP_INSTALLATION_DOMAIN=SYSTEM && \
cd /gnustep-src/libs-base && \
./configure && \
gmake && \
gmake install
# Build gnustep-gui
RUN . /System/Library/Makefiles/GNUstep.sh && \
export GNUSTEP_INSTALLATION_DOMAIN=SYSTEM && \
cd /gnustep-src/libs-gui && \
./configure && \
gmake && \
gmake install
# Build gnustep-back
RUN . /System/Library/Makefiles/GNUstep.sh && \
export GNUSTEP_INSTALLATION_DOMAIN=SYSTEM && \
cd /gnustep-src/libs-back && \
./configure && \
gmake && \
gmake install
# Build GWorkspace
RUN . /System/Library/Makefiles/GNUstep.sh && \
export GNUSTEP_INSTALLATION_DOMAIN=SYSTEM && \
cd /gnustep-src/apps-gworkspace && \
./configure && \
gmake && \
gmake install
# Build SystemPreferences
RUN . /System/Library/Makefiles/GNUstep.sh && \
export GNUSTEP_INSTALLATION_DOMAIN=SYSTEM && \
cd /gnustep-src/apps-systempreferences && \
gmake && \
gmake install
# Build Terminal
RUN . /System/Library/Makefiles/GNUstep.sh && \
cd /gnustep-src/gap/system-apps/Terminal && \
gmake && \
gmake install
# Build Chess
RUN . /System/Library/Makefiles/GNUstep.sh && \
cd /gnustep-src/gap/ported-apps/Games/Chess && \
gmake && \
gmake install
# Cleanup GNUstep sources
RUN rm -rf /gnustep-src
# Expose the default GNUstep port (per GWorkspace configuration)
EXPOSE 8080
# Copy the entry point script
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
# Set the entry point
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]