Repository navigation
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
153 lines (141 loc) · 4.02 KB
/
Copy pathdocker-compose.yml
File metadata and controls
153 lines (141 loc) · 4.02 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
147
148
149
150
151
152
153
# Try hellish in a clean, dependency-complete container on four distros.
# It builds the shell FROM SOURCE inside each image, so you never fight missing
# readline/ncurses/toolchain on your host -- the container has exactly what is
# needed and nothing else.
#
# docker compose build # build all four images
# docker compose run --rm alpine # interactive hellish on Alpine
# docker compose run --rm arch # ... or Arch, Debian, Ubuntu
# make docker-test # build + smoke-test every distro
#
# Each service builds with the same docker/Dockerfile, only BASE differs.
name: hellish
services:
alpine:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "alpine:3.20"
image: hellish:alpine
tty: true
stdin_open: true
debian:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "debian:stable-slim"
image: hellish:debian
tty: true
stdin_open: true
ubuntu:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "ubuntu:24.04"
image: hellish:ubuntu
tty: true
stdin_open: true
# Ubuntu 22.04 LTS pins gcc 11, and gcc 11 is the ONLY compiler in this
# matrix whose -Wstringop-overflow fires on a va_list forwarded between
# functions (issue #9). gcc 13 on 24.04 and gcc 14 on Debian stable both
# stay quiet, so without this rung the whole matrix went green while
# `make` failed outright for anyone on 22.04 -- which is what WSL installs
# by default. Keep it: it is the oldest toolchain we claim to support.
ubuntu2204:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "ubuntu:22.04"
image: hellish:ubuntu2204
tty: true
stdin_open: true
arch:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "archlinux:base-devel"
image: hellish:arch
tty: true
stdin_open: true
# Arch is the family the CachyOS report in issue #42 came from, and Fedora
# is the other big non-Debian desktop. Neither ships the same readline,
# the same gcc, or the same /etc defaults as Ubuntu, and a bug that only
# appears on one of them is the whole reason this list is long.
fedora:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "fedora:41"
image: hellish:fedora
tty: true
stdin_open: true
# The enterprise rung: an old glibc and an old gcc, the combination people
# actually run servers on.
rocky:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "rockylinux:9"
image: hellish:rocky
tty: true
stdin_open: true
opensuse:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "opensuse/tumbleweed"
image: hellish:opensuse
tty: true
stdin_open: true
void:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "ghcr.io/void-linux/void-linux:latest-full-x86_64"
image: hellish:void
tty: true
stdin_open: true
# Same Alpine, built with clang instead of gcc. musl AND a second front end
# in one rung: clang warns about things gcc does not, and -Werror means a
# warning is a build failure.
alpine-clang:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "alpine:3.20"
CC: "clang"
image: hellish:alpine-clang
tty: true
stdin_open: true
debian-clang:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "debian:stable-slim"
CC: "clang"
image: hellish:debian-clang
tty: true
stdin_open: true
# The custom ft_malloc heap, on musl. The allocator is the part of this
# code base least likely to survive a different libc unexamined.
alpine-ftmalloc:
build:
context: .
dockerfile: docker/Dockerfile
args:
BASE: "alpine:3.20"
BUILD_FLAGS: "OPT=1 SAFE=0"
image: hellish:alpine-ftmalloc
tty: true
stdin_open: true