Skip to content

Commit 85000b1

Browse files
staticfloatvtjnash
andauthored
Add new checksum refreshing infrastructure (#38465)
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
1 parent 3365b4e commit 85000b1

24 files changed

+161
-86
lines changed

contrib/refresh_bb_tarballs.sh

Lines changed: 0 additions & 74 deletions
This file was deleted.

contrib/refresh_checksums.mk

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# This file is a part of Julia. License is MIT: https://julialang.org/license
2+
3+
# Invoke this with no arguments to refresh all tarballs, or with a project name to refresh only that project.
4+
#
5+
# Example:
6+
# make -f contrib/refresh_checksums.mk gmp
7+
8+
SRCDIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
9+
JULIAHOME := $(abspath $(SRCDIR)/..)
10+
11+
# Default target that will have everything else added to it as a dependency
12+
all:
13+
14+
# Get this list via:
15+
# using BinaryBuilder
16+
# print("TRIPLETS=\"$(join(sort(triplet.(BinaryBuilder.supported_platforms(;experimental=true))), " "))\"")
17+
TRIPLETS=aarch64-apple-darwin aarch64-linux-gnu aarch64-linux-musl armv6l-linux-gnueabihf armv6l-linux-musleabihf armv7l-linux-gnueabihf armv7l-linux-musleabihf i686-linux-gnu i686-linux-musl i686-w64-mingw32 powerpc64le-linux-gnu x86_64-apple-darwin x86_64-linux-gnu x86_64-linux-musl x86_64-unknown-freebsd x86_64-w64-mingw32
18+
CLANG_TRIPLETS=$(filter %-darwin %-freebsd,$(TRIPLETS))
19+
NON_CLANG_TRIPLETS=$(filter-out %-darwin %-freebsd,$(TRIPLETS))
20+
21+
# These are the projects currently using BinaryBuilder; both GCC-expanded and non-GCC-expanded:
22+
BB_PROJECTS=mbedtls libssh2 nghttp2 mpfr curl libgit2 pcre libuv unwind dsfmt objconv p7zip zlib suitesparse openlibm
23+
BB_GCC_EXPANDED_PROJECTS=openblas
24+
BB_CXX_EXPANDED_PROJECTS=gmp llvm
25+
# These are non-BB source-only deps
26+
NON_BB_PROJECTS=patchelf mozillacert lapack
27+
28+
# Convert `openblas` to `OPENBLAS`
29+
define upper
30+
$(shell echo $(1) | tr 'a-z' 'A-Z')
31+
endef
32+
33+
# If $(2) == `src`, this will generate a `USE_BINARYBUILDER_FOO=0` make flag
34+
# It will also generate a `FOO_BB_TRIPLET=$(2)` make flag.
35+
define make_flags
36+
USE_BINARYBUILDER_$(call upper,$(1))=$(if $(filter src,$(2)),0,1) $(call upper,$(1))_BB_TRIPLET=$(if $(filter src,$(2)),,$(2)) DEPS_GIT=0
37+
endef
38+
39+
# checksum_bb_dep takes in (name, triplet), and generates a `checksum-$(1)-$(2)` target.
40+
# note that `"src"` is a special triplet value.
41+
define checksum_dep
42+
checksum-$(1)-$(2):
43+
@-$(MAKE) -C "$(JULIAHOME)/deps" $(call make_flags,$(1),$(2)) checksum-$(1)
44+
45+
# Add this guy to his project target (e.g. `make -f contrib/refresh_checksums.mk openblas`)
46+
$(1): checksum-$(1)-$(2)
47+
48+
# Add this guy to the `all` default target
49+
all: checksum-$(1)-$(2)
50+
endef
51+
52+
# Generate targets for source hashes for all our projects
53+
$(foreach project,$(BB_PROJECTS) $(BB_GCC_EXPANDED_PROJECTS) $(BB_CXX_EXPANDED_PROJECTS) $(NON_BB_PROJECTS),$(eval $(call checksum_dep,$(project),src)))
54+
55+
# Generate targets for triplet-specific hashes for all our BB projects
56+
$(foreach project,$(BB_PROJECTS),$(foreach triplet,$(TRIPLETS),$(eval $(call checksum_dep,$(project),$(triplet)))))
57+
$(foreach project,$(BB_GCC_EXPANDED_PROJECTS),$(foreach triplet,$(TRIPLETS),$(foreach libgfortran_version,libgfortran3 libgfortran4 libgfortran5,$(eval $(call checksum_dep,$(project),$(triplet)-$(libgfortran_version))))))
58+
59+
# Because MacOS and FreeBSD use clang, they don't actually use cxxstring_abi expansion:
60+
$(foreach project,$(BB_CXX_EXPANDED_PROJECTS),$(foreach triplet,$(NON_CLANG_TRIPLETS),$(foreach cxxstring_abi,cxx11 cxx03,$(eval $(call checksum_dep,$(project),$(triplet)-$(cxxstring_abi))))))
61+
$(foreach project,$(BB_CXX_EXPANDED_PROJECTS),$(foreach triplet,$(CLANG_TRIPLETS),$(eval $(call checksum_dep,$(project),$(triplet)))))
62+
63+
# External stdlibs
64+
checksum-stdlibs:
65+
@-$(MAKE) -C "$(JULIAHOME)/stdlib" checksumall
66+
all: checksum-stdlibs
67+
68+
# doc unicode data
69+
checksum-doc-unicodedata:
70+
@-$(MAKE) -C "$(JULIAHOME)/doc" checksum-unicodedata
71+
all: checksum-doc-unicodedata
72+
73+
# Special LLVM source hashes for optional targets
74+
checksum-llvm-special-src:
75+
@-$(MAKE) -C "${JULIAHOME}/deps" USE_BINARYBUILDER_LLVM=0 DEPS_GIT=0 BUILD_LLDB=1 BUILD_LLVM_CLANG=1 BUILD_CUSTOM_LIBCXX=1 checksum-llvm
76+
all: checksum-llvm-special-src
77+
78+
# This file is completely phony
79+
.PHONY: checksum-*
80+
81+
# Debugging helper
82+
print-%:
83+
@echo '$*=$(subst ','\'',$($*))'

deps/blas.mk

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
## OpenBLAS ##
2+
ifneq ($(USE_BINARYBUILDER_OPENBLAS), 1)
23
# LAPACK is built into OpenBLAS by default
34
OPENBLAS_GIT_URL := git://github.com/xianyi/OpenBLAS.git
45
OPENBLAS_TAR_URL = https://api.github.com/repos/xianyi/OpenBLAS/tarball/$1
@@ -92,8 +93,6 @@ endif
9293
# Do not overwrite the "-j" flag
9394
OPENBLAS_BUILD_OPTS += MAKE_NB_JOBS=0
9495

95-
ifneq ($(USE_BINARYBUILDER_OPENBLAS), 1)
96-
9796
$(BUILDDIR)/$(OPENBLAS_SRC_DIR)/openblas-winexit.patch-applied: $(BUILDDIR)/$(OPENBLAS_SRC_DIR)/source-extracted
9897
cd $(BUILDDIR)/$(OPENBLAS_SRC_DIR) && \
9998
patch -p1 -f < $(SRCDIR)/patches/openblas-winexit.patch
@@ -164,6 +163,9 @@ $(BUILDDIR)/lapack-$(LAPACK_VER)/source-extracted: $(SRCCACHE)/lapack-$(LAPACK_V
164163
cp $(dir $@)INSTALL/make.inc.gfortran $(dir $@)make.inc
165164
echo 1 > $@
166165

166+
checksum-lapack: $(SRCCACHE)/lapack-$(LAPACK_VER).tgz
167+
$(JLCHECKSUM) $<
168+
167169
ifeq ($(USE_SYSTEM_BLAS), 0)
168170
$(BUILDDIR)/lapack-$(LAPACK_VER)/build-compiled0: | $(build_prefix)/manifest/openblas
169171
else ifeq ($(OS),Darwin)

deps/curl.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ $(SRCCACHE)/curl-$(CURL_VER)/source-extracted: $(SRCCACHE)/curl-$(CURL_VER).tar.
2626
touch -c $(SRCCACHE)/curl-$(CURL_VER)/configure # old target
2727
echo 1 > $@
2828

29+
checksum-curl: $(SRCCACHE)/curl-$(CURL_VER).tar.bz2
30+
$(JLCHECKSUM) $<
31+
2932
$(BUILDDIR)/curl-$(CURL_VER)/build-configured: $(SRCCACHE)/curl-$(CURL_VER)/source-extracted
3033
mkdir -p $(dir $@)
3134
cd $(dir $@) && \

deps/dsfmt.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ $(BUILDDIR)/dsfmt-$(DSFMT_VER)/source-extracted: $(SRCCACHE)/dsfmt-$(DSFMT_VER).
2626
cd $(dir $@) && patch < $(SRCDIR)/patches/dSFMT.c.patch
2727
echo 1 > $@
2828

29+
checksum-dsfmt: $(SRCCACHE)/dsfmt-$(DSFMT_VER).tar.gz
30+
$(JLCHECKSUM) $<
31+
2932
$(BUILDDIR)/dsfmt-$(DSFMT_VER)/build-compiled: $(BUILDDIR)/dsfmt-$(DSFMT_VER)/source-extracted
3033
cd $(dir $<) && \
3134
$(CC) $(CPPFLAGS) $(DSFMT_CFLAGS) $(LDFLAGS) dSFMT.c -o libdSFMT.$(SHLIB_EXT)

deps/gmp.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ $(SRCCACHE)/gmp-$(GMP_VER)/source-extracted: $(SRCCACHE)/gmp-$(GMP_VER).tar.bz2
1919
touch -c $(SRCCACHE)/gmp-$(GMP_VER)/configure # old target
2020
echo 1 > $@
2121

22+
checksum-gmp: $(SRCCACHE)/gmp-$(GMP_VER).tar.bz2
23+
$(JLCHECKSUM) $<
24+
2225
$(SRCCACHE)/gmp-$(GMP_VER)/build-patched: $(SRCCACHE)/gmp-$(GMP_VER)/source-extracted
2326
cd $(dir $@) && patch -p1 < $(SRCDIR)/patches/gmp-exception.patch
2427
cd $(dir $@) && patch -p1 < $(SRCDIR)/patches/gmp_alloc_overflow_func.patch

deps/libgit2.mk

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
## libgit2
2+
ifneq ($(USE_BINARYBUILDER_LIBGIT2),1)
23

34
LIBGIT2_GIT_URL := git://github.com/libgit2/libgit2.git
45
LIBGIT2_TAR_URL = https://api.github.com/repos/libgit2/libgit2/tarball/$1
@@ -12,8 +13,6 @@ ifeq ($(USE_SYSTEM_MBEDTLS), 0)
1213
$(BUILDDIR)/$(LIBGIT2_SRC_DIR)/build-configured: | $(build_prefix)/manifest/mbedtls
1314
endif
1415

15-
ifneq ($(USE_BINARYBUILDER_LIBGIT2),1)
16-
1716
LIBGIT2_OPTS := $(CMAKE_COMMON) -DCMAKE_BUILD_TYPE=Release -DTHREADSAFE=ON -DUSE_BUNDLED_ZLIB=ON
1817
ifeq ($(OS),WINNT)
1918
LIBGIT2_OPTS += -DWIN32=ON -DMINGW=ON
@@ -114,5 +113,8 @@ $(build_datarootdir)/julia/cert.pem: $(SRCCACHE)/cacert-$(MOZILLA_CACERT_VERSION
114113
mkdir -p $(build_datarootdir)/julia
115114
cp $< $@
116115

116+
checksum-mozillacert: $(SRCCACHE)/cacert-$(MOZILLA_CACERT_VERSION).pem
117+
$(JLCHECKSUM) $<
118+
117119
# When "get"'ing libgit2, download the .pem
118120
get-libgit2: $(SRCCACHE)/cacert-$(MOZILLA_CACERT_VERSION).pem

deps/libssh2.mk

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
## libssh2
2-
2+
ifneq ($(USE_BINARYBUILDER_LIBSSH2), 1)
33
LIBSSH2_GIT_URL := git://github.com/libssh2/libssh2.git
44
LIBSSH2_TAR_URL = https://api.github.com/repos/libssh2/libssh2/tarball/$1
55
$(eval $(call git-external,libssh2,LIBSSH2,CMakeLists.txt,,$(SRCCACHE)))
@@ -8,7 +8,6 @@ ifeq ($(USE_SYSTEM_MBEDTLS), 0)
88
$(BUILDDIR)/$(LIBSSH2_SRC_DIR)/build-configured: | $(build_prefix)/manifest/mbedtls
99
endif
1010

11-
ifneq ($(USE_BINARYBUILDER_LIBSSH2), 1)
1211
LIBSSH2_OPTS := $(CMAKE_COMMON) -DBUILD_SHARED_LIBS=ON -DBUILD_EXAMPLES=OFF \
1312
-DCMAKE_BUILD_TYPE=Release
1413

deps/libuv.mk

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
## LIBUV ##
2+
ifneq ($(USE_BINARYBUILDER_LIBUV),1)
23
LIBUV_GIT_URL:=git://github.com/JuliaLang/libuv.git
34
LIBUV_TAR_URL=https://api.github.com/repos/JuliaLang/libuv/tarball/$1
45
$(eval $(call git-external,libuv,LIBUV,configure,,$(SRCCACHE)))
56

6-
ifneq ($(USE_BINARYBUILDER_LIBUV),1)
7-
87
UV_CFLAGS := -O2
98
ifeq ($(USEMSVC), 1)
109
UV_CFLAGS += -DBUILDING_UV_SHARED

deps/llvm.mk

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ distclean-libcxx:
340340
distclean-libcxxabi:
341341
-rm -rf $(LLVM_LIBCXXABI_TAR) $(LLVM_SRC_DIR)/projects/libcxxabi $(LLVM_BUILD_DIR)/libcxxabi-build
342342

343+
343344
# We want to ensure that the libcxx linking flags don't get passed to the libcxx build, since it will
344345
# error on a fresh build
345346
LLVM_CMAKE += -DCMAKE_EXE_LINKER_FLAGS="$(LLVM_LDFLAGS) $(LLVM_LIBCXX_LDFLAGS)" \
@@ -355,6 +356,23 @@ LIBCXX_DEPENDENCY := $(build_libdir)/libc++abi.so.1.0 $(build_libdir)/libc++.so.
355356
get-llvm: get-libcxx get-libcxxabi
356357
endif
357358

359+
checksum-llvm: $(LLVM_TAR) $(LLVM_CLANG_TAR) $(LLVM_COMPILER_RT_TAR) $(LLVM_LIBCXX_TAR) $(LLVM_LLDB_TAR)
360+
ifneq ($(LLVM_CLANG_TAR),)
361+
$(JLCHECKSUM) $(LLVM_CLANG_TAR)
362+
endif
363+
ifneq ($(LLVM_COMPILER_RT_TAR),)
364+
$(JLCHECKSUM) $(LLVM_COMPILER_RT_TAR)
365+
endif
366+
ifneq ($(LLVM_LIBCXX_TAR),)
367+
$(JLCHECKSUM) $(LLVM_LIBCXX_TAR)
368+
endif
369+
ifneq ($(LLVM_VER),svn)
370+
$(JLCHECKSUM) $(LLVM_TAR)
371+
endif
372+
ifneq ($(LLVM_LLDB_TAR),)
373+
$(JLCHECKSUM) $(LLVM_LLDB_TAR)
374+
endif
375+
358376
$(LLVM_SRC_DIR)/source-extracted: | $(LLVM_TAR) $(LLVM_CLANG_TAR) $(LLVM_COMPILER_RT_TAR) $(LLVM_LIBCXX_TAR) $(LLVM_LLDB_TAR)
359377
ifneq ($(LLVM_CLANG_TAR),)
360378
$(JLCHECKSUM) $(LLVM_CLANG_TAR)

0 commit comments

Comments
 (0)