Skip to content

Commit 71882f2

Browse files
committed
unix: use pre-built Clang toolchains
Waiting for clang to build has historically been a pain point with this project. Especially on Linux, where we first have to build GCC in order to build clang. Building clang slows down local builds. It slows down CI. It makes pull requests time out because sccache isn't populated (since it requires credentials to speak to an S3 bucket). I have broken out the building of Clang into its own project. This commit deletes the code for building Clang from source and replaces it with functionality for downloading a pre-built Clang. Because we only built GCC to build Clang, functionality for building GCC has also been deleted.
1 parent 7aaf6f0 commit 71882f2

File tree

16 files changed

+77
-646
lines changed

16 files changed

+77
-646
lines changed

.github/workflows/apple.yml

Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -34,45 +34,6 @@ jobs:
3434
name: pythonbuild
3535
path: target/release/pythonbuild
3636

37-
toolchain:
38-
runs-on: 'macos-11'
39-
env:
40-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
41-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
42-
SCCACHE_BUCKET: 'python-build-standalone-sccache'
43-
SCCACHE_S3_USE_SSL: '1'
44-
SCCACHE_IDLE_TIMEOUT: '0'
45-
steps:
46-
- uses: actions/checkout@v3
47-
48-
- name: Install Python
49-
uses: actions/setup-python@v2
50-
with:
51-
python-version: '3.9'
52-
53-
- name: Install sccache
54-
run: |
55-
curl --location --insecure https://github.com/mozilla/sccache/releases/download/v0.3.0/sccache-v0.3.0-x86_64-apple-darwin.tar.gz > sccache.tar.gz
56-
echo "61c16fd36e32cdc923b66e4f95cb367494702f60f6d90659af1af84c3efb11eb sccache.tar.gz" | shasum -a 256 -c
57-
tar -xvf sccache.tar.gz
58-
mv sccache-*/sccache .
59-
chmod +x sccache
60-
./sccache --start-server
61-
62-
- name: Build
63-
run: |
64-
python3.9 ./build-macos.py --make-target toolchain
65-
66-
- name: Stop sccache
67-
run: |
68-
./sccache -s
69-
70-
- name: Upload Toolchain Archive
71-
uses: actions/upload-artifact@v3
72-
with:
73-
name: toolchain
74-
path: build/clang-*.tar
75-
7637
build:
7738
strategy:
7839
fail-fast: false
@@ -177,7 +138,6 @@ jobs:
177138
optimizations: 'lto'
178139
needs:
179140
- pythonbuild
180-
- toolchain
181141
runs-on: 'macos-11'
182142
steps:
183143
- uses: actions/checkout@v3
@@ -195,12 +155,6 @@ jobs:
195155
name: pythonbuild
196156
path: build
197157

198-
- name: Download toolchain
199-
uses: actions/download-artifact@v3
200-
with:
201-
name: toolchain
202-
path: build
203-
204158
- name: Build
205159
run: |
206160
export APPLE_HOST_SDK_PATH=/Applications/Xcode_12.5.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk
@@ -218,7 +172,7 @@ jobs:
218172
exit 1
219173
fi
220174
221-
./build-macos.py --skip-toolchain --target-triple ${{ matrix.build.target_triple }} --python ${{ matrix.build.py }} --optimizations ${{ matrix.build.optimizations }}
175+
./build-macos.py --target-triple ${{ matrix.build.target_triple }} --python ${{ matrix.build.py }} --optimizations ${{ matrix.build.optimizations }}
222176
223177
- uses: actions/checkout@v3
224178
with:

.github/workflows/linux.yml

Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -39,45 +39,6 @@ jobs:
3939
name: pythonbuild
4040
path: target/release/pythonbuild
4141

42-
toolchain:
43-
runs-on: 'ubuntu-20.04'
44-
env:
45-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
46-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
47-
SCCACHE_BUCKET: 'python-build-standalone-sccache'
48-
SCCACHE_S3_USE_SSL: '1'
49-
SCCACHE_IDLE_TIMEOUT: '0'
50-
steps:
51-
- uses: actions/checkout@v3
52-
53-
- name: Install Python
54-
uses: actions/setup-python@v2
55-
with:
56-
python-version: '3.9'
57-
58-
- name: Install sccache
59-
run: |
60-
curl --location --insecure https://github.com/mozilla/sccache/releases/download/v0.3.0/sccache-v0.3.0-x86_64-unknown-linux-musl.tar.gz > sccache.tar.gz
61-
echo "e6cd8485f93d683a49c83796b9986f090901765aa4feb40d191b03ea770311d8 sccache.tar.gz" | sha256sum -c
62-
tar -xvf sccache.tar.gz
63-
mv sccache-*/sccache .
64-
chmod +x sccache
65-
./sccache --start-server
66-
67-
- name: Build
68-
run: |
69-
python3.9 ./build-linux.py --make-target toolchain
70-
71-
- name: Stop sccache
72-
run: |
73-
./sccache -s
74-
75-
- name: Upload Toolchain Archive
76-
uses: actions/upload-artifact@v3
77-
with:
78-
name: toolchain
79-
path: build/*.tar
80-
8142
build:
8243
strategy:
8344
fail-fast: false
@@ -456,7 +417,6 @@ jobs:
456417

457418
needs:
458419
- pythonbuild
459-
- toolchain
460420
runs-on: 'ubuntu-20.04'
461421
steps:
462422
- uses: actions/checkout@v3
@@ -474,15 +434,9 @@ jobs:
474434
name: pythonbuild
475435
path: build
476436

477-
- name: Download toolchain
478-
uses: actions/download-artifact@v3
479-
with:
480-
name: toolchain
481-
path: build
482-
483437
- name: Build
484438
run: |
485-
./build-linux.py --skip-toolchain --target-triple ${{ matrix.build.target_triple }} --python ${{ matrix.build.py }} --optimizations ${{ matrix.build.optimizations }}
439+
./build-linux.py --target-triple ${{ matrix.build.target_triple }} --python ${{ matrix.build.py }} --optimizations ${{ matrix.build.optimizations }}
486440
487441
- name: Validate Distribution
488442
run: |

cpython-unix/Makefile

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@ $(shell $(RUN_BUILD) placeholder_archive dockerfiles)
5050

5151
BASE_TOOLCHAIN_DEPENDS := \
5252
$(if $(NEED_BINUTILS),$(OUTDIR)/binutils-$(BINUTILS_VERSION)-$(HOST_PLATFORM).tar) \
53-
$(if $(NEED_GCC),$(OUTDIR)/gcc-$(GCC_VERSION)-$(HOST_PLATFORM).tar) \
54-
$(OUTDIR)/clang-$(CLANG_VERSION)-$(HOST_PLATFORM).tar \
53+
$(OUTDIR)/$(CLANG_FILENAME) \
5554
$(NULL)
5655

5756
TOOLCHAIN_DEPENDS := \
@@ -62,7 +61,7 @@ TOOLCHAIN_DEPENDS := \
6261
PYTHON_DEP_DEPENDS := \
6362
$(OUTDIR)/targets/$(TARGET_TRIPLE) \
6463
$(if $(PYBUILD_NO_DOCKER),,$(OUTDIR)/image-$(DOCKER_IMAGE_BUILD).tar) \
65-
$(if $(PYBUILD_SKIP_TOOLCHAIN),,$(TOOLCHAIN_DEPENDS)) \
64+
$(TOOLCHAIN_DEPENDS) \
6665
$(NULL)
6766

6867
default: $(OUTDIR)/cpython-$(PYBUILD_PYTHON_VERSION)-$(PACKAGE_SUFFIX).tar
@@ -75,28 +74,7 @@ endif
7574
$(OUTDIR)/binutils-$(BINUTILS_VERSION)-$(HOST_PLATFORM).tar: $(OUTDIR)/image-gcc.tar $(HERE)/build-binutils.sh
7675
$(RUN_BUILD) --toolchain binutils
7776

78-
GCC_DEPENDS := \
79-
$(OUTDIR)/binutils-$(BINUTILS_VERSION)-$(HOST_PLATFORM).tar \
80-
$(OUTDIR)/versions/VERSION.gmp \
81-
$(OUTDIR)/versions/VERSION.isl \
82-
$(OUTDIR)/versions/VERSION.mpc \
83-
$(OUTDIR)/versions/VERSION.mpfr \
84-
$(HERE)/build-gcc.sh \
85-
$(NULL)
86-
87-
$(OUTDIR)/gcc-$(GCC_VERSION)-$(HOST_PLATFORM).tar: $(GCC_DEPENDS)
88-
$(RUN_BUILD) --toolchain gcc
89-
90-
CLANG_DEPENDS := \
91-
$(if $(NEED_BINUTILS),$(OUTDIR)/binutils-$(BINUTILS_VERSION)-$(HOST_PLATFORM).tar) \
92-
$(if $(NEED_GCC),$(OUTDIR)/gcc-$(GCC_VERSION)-$(HOST_PLATFORM).tar) \
93-
$(if $(PYBUILD_NO_DOCKER),,$(OUTDIR)/image-clang.tar) \
94-
$(OUTDIR)/versions/VERSION.cmake-linux-bin \
95-
$(OUTDIR)/versions/VERSION.cmake-macos-bin \
96-
$(HERE)/build-clang-$(HOST_PLATFORM).sh \
97-
$(NULL)
98-
99-
$(OUTDIR)/clang-$(CLANG_VERSION)-$(HOST_PLATFORM).tar: $(CLANG_DEPENDS)
77+
$(OUTDIR)/$(CLANG_FILENAME):
10078
$(RUN_BUILD) --toolchain clang
10179

10280
$(OUTDIR)/musl-$(MUSL_VERSION)-$(HOST_PLATFORM).tar: $(BASE_TOOLCHAIN_DEPENDS) $(HERE)/build-musl.sh
@@ -105,7 +83,7 @@ $(OUTDIR)/musl-$(MUSL_VERSION)-$(HOST_PLATFORM).tar: $(BASE_TOOLCHAIN_DEPENDS) $
10583
ifeq ($(HOST_PLATFORM),linux64)
10684
TOOLCHAIN_TARGET := $(OUTDIR)/musl-$(MUSL_VERSION)-$(HOST_PLATFORM).tar
10785
else
108-
TOOLCHAIN_TARGET := $(OUTDIR)/clang-$(CLANG_VERSION)-$(HOST_PLATFORM).tar
86+
TOOLCHAIN_TARGET :=
10987
endif
11088

11189
toolchain: $(TOOLCHAIN_TARGET)

0 commit comments

Comments
 (0)