Skip to content

Commit d49e9ea

Browse files
committed
unix: make Docker image names variables
In order to support cross compiling, we'll be introducing new Docker images containing cross toolchains. This means we need to make the Docker image names variable. This commit writes out the Docker image names to the target-specific Makefile. We then use the variables when resolving dependencies. In order to support using dynamic image names, we teach build.py to accept the image name as an argument. We feed the image name from the Makefile variable through to build.py. There should be no net change in behavior as a result of this change.
1 parent 5b9e4f2 commit d49e9ea

File tree

3 files changed

+50
-45
lines changed

3 files changed

+50
-45
lines changed

cpython-unix/Makefile

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ TOOLCHAIN_DEPENDS := \
6161
$(NULL)
6262

6363
PYTHON_DEP_DEPENDS := \
64-
$(if $(PYBUILD_NO_DOCKER),,$(OUTDIR)/image-build.tar) \
64+
$(if $(PYBUILD_NO_DOCKER),,$(OUTDIR)/image-$(DOCKER_IMAGE_BUILD).tar) \
6565
$(if $(PYBUILD_SKIP_TOOLCHAIN),,$(TOOLCHAIN_DEPENDS)) \
6666
$(NULL)
6767

@@ -109,28 +109,28 @@ endif
109109
toolchain: $(TOOLCHAIN_TARGET)
110110

111111
$(OUTDIR)/bdb-$(BDB_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-bdb.sh
112-
$(RUN_BUILD) bdb
112+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) bdb
113113

114114
$(OUTDIR)/bzip2-$(BZIP2_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-bzip2.sh
115-
$(RUN_BUILD) bzip2
115+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) bzip2
116116

117117
$(OUTDIR)/gdbm-$(GDBM_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-gdbm.sh
118-
$(RUN_BUILD) gdbm
118+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) gdbm
119119

120120
$(OUTDIR)/gettext-$(GETTEXT_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-gettext.sh
121-
$(RUN_BUILD) gettext
121+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) gettext
122122

123123
$(OUTDIR)/inputproto-$(INPUTPROTO_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-inputproto.sh
124-
$(RUN_BUILD) inputproto
124+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) inputproto
125125

126126
$(OUTDIR)/kbproto-$(KBPROTO_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-kbproto.sh
127-
$(RUN_BUILD) kbproto
127+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) kbproto
128128

129129
$(OUTDIR)/libffi-$(LIBFFI_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-libffi.sh
130-
$(RUN_BUILD) libffi
130+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) libffi
131131

132-
$(OUTDIR)/libpthread-stubs-$(LIBPTHREAD_STUBS_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-libpthread-stubs.sh $(OUTDIR)/image-build.tar
133-
$(RUN_BUILD) libpthread-stubs
132+
$(OUTDIR)/libpthread-stubs-$(LIBPTHREAD_STUBS_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-libpthread-stubs.sh $(OUTDIR)/image-$(DOCKER_IMAGE_BUILD).tar
133+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) libpthread-stubs
134134

135135
LIBX11_DEPENDS = \
136136
$(PYTHON_DEP_DEPENDS) \
@@ -145,7 +145,7 @@ LIBX11_DEPENDS = \
145145
$(NULL)
146146

147147
$(OUTDIR)/libX11-$(LIBX11_VERSION)-$(PACKAGE_SUFFIX).tar: $(LIBX11_DEPENDS)
148-
$(RUN_BUILD) libX11
148+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) libX11
149149

150150
LIBXAU_DEPENDS = \
151151
$(PYTHON_DEP_DEPENDS) \
@@ -155,26 +155,26 @@ LIBXAU_DEPENDS = \
155155
$(NULL)
156156

157157
$(OUTDIR)/libXau-$(LIBXAU_VERSION)-$(PACKAGE_SUFFIX).tar: $(LIBXAU_DEPENDS)
158-
$(RUN_BUILD) libXau
158+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) libXau
159159

160160
LIBXCB_DEPENDS = \
161161
$(PYTHON_DEP_DEPENDS) \
162162
$(HERE)/build-libxcb.sh \
163-
$(OUTDIR)/image-xcb.tar \
163+
$(OUTDIR)/image-$(DOCKER_IMAGE_XCB).tar \
164164
$(OUTDIR)/xcb-proto-$(XCB_PROTO_VERSION)-$(PACKAGE_SUFFIX).tar \
165165
$(OUTDIR)/libXau-$(LIBXAU_VERSION)-$(PACKAGE_SUFFIX).tar \
166166
$(OUTDIR)/xproto-$(XPROTO_VERSION)-$(PACKAGE_SUFFIX).tar \
167167
$(OUTDIR)/libpthread-stubs-$(LIBPTHREAD_STUBS_VERSION)-$(PACKAGE_SUFFIX).tar
168168
$(NULL)
169169

170170
$(OUTDIR)/libxcb-$(LIBXCB_VERSION)-$(PACKAGE_SUFFIX).tar: $(LIBXCB_DEPENDS)
171-
$(RUN_BUILD) libxcb
171+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_XCB) libxcb
172172

173173
$(OUTDIR)/ncurses-$(NCURSES_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-ncurses.sh
174-
$(RUN_BUILD) ncurses
174+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) ncurses
175175

176176
$(OUTDIR)/openssl-$(OPENSSL_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-openssl.sh
177-
$(RUN_BUILD) openssl
177+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) openssl
178178

179179
LIBEDIT_DEPENDS = \
180180
$(PYTHON_DEP_DEPENDS) \
@@ -183,24 +183,24 @@ LIBEDIT_DEPENDS = \
183183
$(NULL)
184184

185185
$(OUTDIR)/libedit-$(LIBEDIT_VERSION)-$(PACKAGE_SUFFIX).tar: $(LIBEDIT_DEPENDS)
186-
$(RUN_BUILD) libedit
186+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) libedit
187187

188188
$(OUTDIR)/libressl-$(LIBRESSL_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-libressl.sh
189-
$(RUN_BUILD) libressl
189+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) libressl
190190

191191
READLINE_DEPENDS = \
192192
$(PYTHON_DEP_DEPENDS) \
193193
$(OUTDIR)/ncurses-$(NCURSES_VERSION)-$(PACKAGE_SUFFIX).tar \
194194
$(HERE)/build-readline.sh
195195

196196
$(OUTDIR)/readline-$(READLINE_VERSION)-$(PACKAGE_SUFFIX).tar: $(READLINE_DEPENDS)
197-
$(RUN_BUILD) readline
197+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) readline
198198

199199
$(OUTDIR)/sqlite-$(SQLITE_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-sqlite.sh
200-
$(RUN_BUILD) sqlite
200+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) sqlite
201201

202202
$(OUTDIR)/tcl-$(TCL_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-tcl.sh
203-
$(RUN_BUILD) tcl
203+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) tcl
204204

205205
TIX_DEPENDS = \
206206
$(HERE)/build-tix.sh \
@@ -210,7 +210,7 @@ TIX_DEPENDS = \
210210
$(NULL)
211211

212212
$(OUTDIR)/tix-$(TIX_VERSION)-$(PACKAGE_SUFFIX).tar: $(TIX_DEPENDS)
213-
$(RUN_BUILD) tix
213+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) tix
214214

215215
TK_DEPENDS = \
216216
$(HERE)/build-tk.sh \
@@ -219,34 +219,34 @@ TK_DEPENDS = \
219219
$(NULL)
220220

221221
$(OUTDIR)/tk-$(TK_VERSION)-$(PACKAGE_SUFFIX).tar: $(TK_DEPENDS)
222-
$(RUN_BUILD) tk
222+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_XCB) tk
223223

224224
$(OUTDIR)/uuid-$(UUID_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-uuid.sh
225-
$(RUN_BUILD) uuid
225+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) uuid
226226

227227
$(OUTDIR)/x11-util-macros-$(X11_UTIL_MACROS_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-x11-util-macros.sh
228-
$(RUN_BUILD) x11-util-macros
228+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) x11-util-macros
229229

230230
$(OUTDIR)/xcb-proto-$(XCB_PROTO_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-xcb-proto.sh
231-
$(RUN_BUILD) xcb-proto
231+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_XCB) xcb-proto
232232

233233
$(OUTDIR)/xextproto-$(XEXTPROTO_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-xextproto.sh
234-
$(RUN_BUILD) xextproto
234+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) xextproto
235235

236236
$(OUTDIR)/xorgproto-$(XORGPROTO_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-xorgproto.sh
237-
$(RUN_BUILD) xorgproto
237+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) xorgproto
238238

239239
$(OUTDIR)/xproto-$(XPROTO_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-xproto.sh
240-
$(RUN_BUILD) xproto
240+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) xproto
241241

242242
$(OUTDIR)/xtrans-$(XTRANS_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-xtrans.sh
243-
$(RUN_BUILD) xtrans
243+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) xtrans
244244

245245
$(OUTDIR)/xz-$(XZ_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-xz.sh
246-
$(RUN_BUILD) xz
246+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) xz
247247

248248
$(OUTDIR)/zlib-$(ZLIB_VERSION)-$(PACKAGE_SUFFIX).tar: $(PYTHON_DEP_DEPENDS) $(HERE)/build-zlib.sh
249-
$(RUN_BUILD) zlib
249+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) zlib
250250

251251
PYTHON_DEPENDS := \
252252
$(if $(NEED_BDB),$(OUTDIR)/bdb-$(BDB_VERSION)-$(PACKAGE_SUFFIX).tar) \
@@ -276,10 +276,10 @@ ALL_PYTHON_DEPENDS = \
276276
$(NULL)
277277

278278
$(OUTDIR)/cpython-$(CPYTHON_3.8_VERSION)-$(PACKAGE_SUFFIX).tar: $(ALL_PYTHON_DEPENDS)
279-
$(RUN_BUILD) cpython-3.8
279+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) cpython-3.8
280280

281281
$(OUTDIR)/cpython-$(CPYTHON_3.9_VERSION)-$(PACKAGE_SUFFIX).tar: $(ALL_PYTHON_DEPENDS)
282-
$(RUN_BUILD) cpython-3.9
282+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) cpython-3.9
283283

284284
$(OUTDIR)/cpython-$(CPYTHON_3.10_VERSION)-$(PACKAGE_SUFFIX).tar: $(ALL_PYTHON_DEPENDS)
285-
$(RUN_BUILD) cpython-3.10
285+
$(RUN_BUILD) --docker-image $(DOCKER_IMAGE_BUILD) cpython-3.10

cpython-unix/build.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,6 +1031,7 @@ def main():
10311031
parser.add_argument(
10321032
"--dest-archive", required=True, help="Path to archive that we are producing"
10331033
)
1034+
parser.add_argument("--docker-image", help="Docker image to use for building")
10341035
parser.add_argument("action")
10351036

10361037
args = parser.parse_args()
@@ -1041,6 +1042,7 @@ def main():
10411042
host_platform = args.host_platform
10421043
optimizations = args.optimizations
10431044
dest_archive = pathlib.Path(args.dest_archive)
1045+
docker_image = args.docker_image
10441046

10451047
if args.action == "makefiles":
10461048
log_name = "makefiles"
@@ -1087,7 +1089,7 @@ def main():
10871089
elif action == "libedit":
10881090
build_libedit(
10891091
client,
1090-
get_image(client, ROOT, BUILD, "build"),
1092+
get_image(client, ROOT, BUILD, docker_image),
10911093
host_platform=host_platform,
10921094
target_triple=target_triple,
10931095
optimizations=optimizations,
@@ -1097,7 +1099,7 @@ def main():
10971099
elif action == "readline":
10981100
build_readline(
10991101
client,
1100-
get_image(client, ROOT, BUILD, "build"),
1102+
get_image(client, ROOT, BUILD, docker_image),
11011103
host_platform=host_platform,
11021104
target_triple=target_triple,
11031105
optimizations=optimizations,
@@ -1129,7 +1131,7 @@ def main():
11291131
):
11301132
simple_build(
11311133
client,
1132-
get_image(client, ROOT, BUILD, "build"),
1134+
get_image(client, ROOT, BUILD, docker_image),
11331135
action,
11341136
host_platform=host_platform,
11351137
target_triple=target_triple,
@@ -1140,7 +1142,7 @@ def main():
11401142
elif action == "libX11":
11411143
simple_build(
11421144
client,
1143-
get_image(client, ROOT, BUILD, "build"),
1145+
get_image(client, ROOT, BUILD, docker_image),
11441146
action,
11451147
host_platform=host_platform,
11461148
target_triple=target_triple,
@@ -1163,7 +1165,7 @@ def main():
11631165
elif action == "libXau":
11641166
simple_build(
11651167
client,
1166-
get_image(client, ROOT, BUILD, "build"),
1168+
get_image(client, ROOT, BUILD, docker_image),
11671169
action,
11681170
host_platform=host_platform,
11691171
target_triple=target_triple,
@@ -1175,7 +1177,7 @@ def main():
11751177
elif action == "xcb-proto":
11761178
simple_build(
11771179
client,
1178-
get_image(client, ROOT, BUILD, "xcb"),
1180+
get_image(client, ROOT, BUILD, docker_image),
11791181
action,
11801182
host_platform=host_platform,
11811183
target_triple=target_triple,
@@ -1186,7 +1188,7 @@ def main():
11861188
elif action == "libxcb":
11871189
simple_build(
11881190
client,
1189-
get_image(client, ROOT, BUILD, "xcb"),
1191+
get_image(client, ROOT, BUILD, docker_image),
11901192
action,
11911193
host_platform=host_platform,
11921194
target_triple=target_triple,
@@ -1198,7 +1200,7 @@ def main():
11981200
elif action == "tix":
11991201
build_tix(
12001202
client,
1201-
get_image(client, ROOT, BUILD, "build"),
1203+
get_image(client, ROOT, BUILD, docker_image),
12021204
host_platform=host_platform,
12031205
target_triple=target_triple,
12041206
optimizations=optimizations,
@@ -1218,7 +1220,7 @@ def main():
12181220

12191221
simple_build(
12201222
client,
1221-
get_image(client, ROOT, BUILD, "xcb"),
1223+
get_image(client, ROOT, BUILD, docker_image),
12221224
action,
12231225
host_platform=host_platform,
12241226
target_triple=target_triple,
@@ -1230,7 +1232,7 @@ def main():
12301232
elif action in ("cpython-3.8", "cpython-3.9", "cpython-3.10"):
12311233
build_cpython(
12321234
client,
1233-
get_image(client, ROOT, BUILD, "build"),
1235+
get_image(client, ROOT, BUILD, docker_image),
12341236
host_platform=host_platform,
12351237
target_triple=target_triple,
12361238
optimizations=optimizations,

pythonbuild/utils.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@ def write_triples_makefiles(targets, dest_dir: pathlib.Path):
113113
else:
114114
lines.append("NEED_OPENSSL := 1\n")
115115

116+
lines.append("DOCKER_IMAGE_BUILD := build\n")
117+
lines.append("DOCKER_IMAGE_XCB := xcb\n")
118+
116119
write_if_different(makefile_path, "".join(lines).encode("ascii"))
117120

118121

0 commit comments

Comments
 (0)