forked from tensorflow/tensorflow
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Optimize Bazel external dependencies
This change does the following: - Always use {,new_}http_archive rather than git_repository - Make liberal use of strip_prefix - Clarify licenses() in BUILD files - On POSIX include headers like a normal C/C++ program This change accomplishes the following: - Reduce download size >100MB: The biggest culprit is grpc which has tens of thousands of commits in its GitHub repository. - Reduce disk size >200MB: On disk, grpc takes up 250MB when cloned even though the tarball of the git repo is 3.2MB. By never using git externals, we save on network. - Consume less cpu: Cloning git repositories is much slower than downloading and extracting a tarball. Change: 133895791
- Loading branch information
1 parent
e16dd87
commit 65038b0
Showing
25 changed files
with
484 additions
and
418 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,70 @@ | ||
package(default_visibility = ["//visibility:public"]) | ||
# Description: | ||
# Eigen is a C++ template library for linear algebra: vectors, | ||
# matrices, and related algorithms. | ||
|
||
licenses([ | ||
# Note: Eigen is an MPL2 library that includes GPL v3 and LGPL v2.1+ code. | ||
# We've taken special care to not reference any restricted code. | ||
"reciprocal", # MPL2 | ||
"notice", # Portions BSD | ||
]) | ||
|
||
# License-restricted (i.e. not reciprocal or notice) files inside Eigen/... | ||
EIGEN_RESTRICTED_FILES = [ | ||
"Eigen/src/OrderingMethods/Amd.h", | ||
"Eigen/src/SparseCholesky/**", | ||
] | ||
|
||
# Notable transitive dependencies of restricted files inside Eigen/... | ||
EIGEN_RESTRICTED_DEPS = [ | ||
"Eigen/Eigen", | ||
"Eigen/IterativeLinearSolvers", | ||
"Eigen/MetisSupport", | ||
"Eigen/Sparse", | ||
"Eigen/SparseCholesky", | ||
"Eigen/SparseLU", | ||
] | ||
|
||
# Note: unsupported/Eigen is unsupported and might go away at any time. | ||
EIGEN_FILES = [ | ||
"Eigen/**", | ||
"unsupported/Eigen/CXX11/**", | ||
"unsupported/Eigen/FFT", | ||
"unsupported/Eigen/KroneckerProduct", | ||
"unsupported/Eigen/src/FFT/**", | ||
"unsupported/Eigen/src/KroneckerProduct/**", | ||
"unsupported/Eigen/MatrixFunctions", | ||
"unsupported/Eigen/SpecialFunctions", | ||
"unsupported/Eigen/src/SpecialFunctions/**", | ||
] | ||
|
||
# List of files picked up by glob but actually part of another target. | ||
EIGEN_EXCLUDE_FILES = [ | ||
"Eigen/src/Core/arch/AVX/PacketMathGoogleTest.cc", | ||
] | ||
|
||
# Files known to be under MPL2 license. | ||
EIGEN_MPL2_HEADER_FILES = glob( | ||
EIGEN_FILES, | ||
exclude = EIGEN_EXCLUDE_FILES + | ||
EIGEN_RESTRICTED_FILES + | ||
EIGEN_RESTRICTED_DEPS + [ | ||
# Guarantees any file missed by excludes above will not compile. | ||
"Eigen/src/Core/util/NonMPL2.h", | ||
"Eigen/**/CMakeLists.txt", | ||
], | ||
) | ||
|
||
cc_library( | ||
name = "eigen", | ||
hdrs = glob(["**/*.h", "unsupported/Eigen/*", "unsupported/Eigen/CXX11/*", "Eigen/*"]), | ||
includes = [ '.' ], | ||
hdrs = EIGEN_MPL2_HEADER_FILES, | ||
defines = [ | ||
# This define (mostly) guarantees we don't link any problematic | ||
# code. We use it, but we do not rely on it, as evidenced above. | ||
"EIGEN_MPL2_ONLY", | ||
# TODO(jart): Use EIGEN_USE_NONBLOCKING_THREAD_POOL but first add an | ||
# eigen_initialize.cc file and alwayslink=1. | ||
], | ||
includes = ["."], | ||
visibility = ["//visibility:public"], | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,9 @@ | ||
package(default_visibility = ["//visibility:public"]) | ||
|
||
prefix_dir = "farmhash-34c13ddfab0e35422f4c3979f360635a8c050260" | ||
|
||
genrule( | ||
name = "configure", | ||
srcs = glob( | ||
["**/*"], | ||
exclude = [prefix_dir + "/config.h"], | ||
), | ||
outs = [prefix_dir + "/config.h"], | ||
cmd = "pushd external/farmhash_archive/%s; workdir=$$(mktemp -d -t tmp.XXXXXXXXXX); cp -a * $$workdir; pushd $$workdir; ./configure; popd; popd; cp $$workdir/config.h $(@D); rm -rf $$workdir;" % prefix_dir, | ||
) | ||
licenses(["notice"]) # MIT | ||
|
||
cc_library( | ||
name = "farmhash", | ||
srcs = [prefix_dir + "/src/farmhash.cc"], | ||
hdrs = [prefix_dir + "/src/farmhash.h"] + [":configure"], | ||
includes = [prefix_dir], | ||
visibility = ["//visibility:public"] | ||
srcs = ["farmhash.cc"], | ||
hdrs = ["farmhash.h"], | ||
includes = ["."], | ||
visibility = ["//visibility:public"], | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,65 +1,44 @@ | ||
SOURCES = [ | ||
"dgif_lib.c", | ||
"egif_lib.c", | ||
"gif_font.c", | ||
"gif_hash.c", | ||
"gifalloc.c", | ||
"openbsd-reallocarray.c", | ||
"gif_err.c", | ||
"quantize.c", | ||
] | ||
# Description: | ||
# A library for decoding and encoding GIF images | ||
|
||
HEADERS = [ | ||
"gif_hash.h", | ||
"gif_lib.h", | ||
"gif_lib_private.h", | ||
] | ||
licenses(["notice"]) # MIT | ||
|
||
config_setting( | ||
name = "windows", | ||
values = { | ||
"cpu": "x64_windows_msvc", | ||
}, | ||
visibility = ["//visibility:public"], | ||
cc_library( | ||
name = "gif", | ||
srcs = [ | ||
"dgif_lib.c", | ||
"egif_lib.c", | ||
"gif_err.c", | ||
"gif_font.c", | ||
"gif_hash.c", | ||
"gif_hash.h", | ||
"gif_lib_private.h", | ||
"gifalloc.c", | ||
"openbsd-reallocarray.c", | ||
"quantize.c", | ||
], | ||
hdrs = ["gif_lib.h"], | ||
includes = ["."], | ||
visibility = ["//visibility:public"], | ||
deps = select({ | ||
":windows": [":windows_polyfill"], | ||
"//conditions:default": [], | ||
}), | ||
) | ||
|
||
prefix_dir = "giflib-5.1.4/lib" | ||
prefix_dir_windows = "windows/giflib-5.1.4/lib" | ||
|
||
genrule( | ||
name = "srcs_without_unistd", | ||
srcs = [prefix_dir + "/" + source for source in SOURCES], | ||
outs = [prefix_dir_windows + "/" + source for source in SOURCES], | ||
cmd = "for f in $(SRCS); do " + | ||
" sed 's/#include <unistd.h>//g' $$f > $(@D)/%s/$$(basename $$f);" % prefix_dir_windows + | ||
"done", | ||
cc_library( | ||
name = "windows_polyfill", | ||
hdrs = ["windows/unistd.h"], | ||
includes = ["windows"], | ||
) | ||
|
||
genrule( | ||
name = "hdrs_without_unistd", | ||
srcs = [prefix_dir + "/" + hdrs for hdrs in HEADERS], | ||
outs = [prefix_dir_windows + "/" + hdrs for hdrs in HEADERS], | ||
cmd = "for f in $(SRCS); do " + | ||
" sed 's/#include <unistd.h>//g' $$f > $(@D)/%s/$$(basename $$f);" % prefix_dir_windows + | ||
"done", | ||
name = "windows_unistd_h", | ||
outs = ["windows/unistd.h"], | ||
cmd = "touch $@", | ||
) | ||
|
||
cc_library( | ||
name = "gif", | ||
srcs = select({ | ||
"//conditions:default" : [prefix_dir + "/" + source for source in SOURCES], | ||
":windows" : [":srcs_without_unistd"], | ||
}), | ||
hdrs = select({ | ||
"//conditions:default" : [prefix_dir + "/" + hdrs for hdrs in HEADERS], | ||
":windows" : [":hdrs_without_unistd"], | ||
}), | ||
includes = select({ | ||
"//conditions:default" : [prefix_dir], | ||
":windows" : [prefix_dir_windows], | ||
}), | ||
defines = [ | ||
"HAVE_CONFIG_H", | ||
], | ||
visibility = ["//visibility:public"], | ||
config_setting( | ||
name = "windows", | ||
values = {"cpu": "x64_windows_msvc"}, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.