aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <bsteiner@google.com>2016-12-15 14:06:52 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2016-12-15 14:22:56 -0800
commit6cf6d0a6c29d2dbeeae4d78bc9de1820c0822758 (patch)
treec704a9b1bb3dfc42dd15fd457ac0b45c0ade4fb3
parentabd3190d329385776e92baaaaf605d3371010486 (diff)
Upgraded to the latest version of Eigen
Made it possible to upgrade Eigen without having to change the version in multiple places Made the cmake file check the signature of the package again Change: 142186076
-rw-r--r--tensorflow/contrib/cmake/external/eigen.cmake17
-rwxr-xr-xtensorflow/contrib/makefile/download_dependencies.sh10
-rw-r--r--tensorflow/workspace.bzl16
3 files changed, 32 insertions, 11 deletions
diff --git a/tensorflow/contrib/cmake/external/eigen.cmake b/tensorflow/contrib/cmake/external/eigen.cmake
index 7f958eb3b0..aced5821a9 100644
--- a/tensorflow/contrib/cmake/external/eigen.cmake
+++ b/tensorflow/contrib/cmake/external/eigen.cmake
@@ -10,9 +10,16 @@ include (ExternalProject)
# We parse the current Eigen version and archive hash from the bazel configuration
file(STRINGS ${PROJECT_SOURCE_DIR}/../../workspace.bzl workspace_contents)
foreach(line ${workspace_contents})
- string(REGEX MATCH ".*\"(https://bitbucket.org/eigen/eigen/get/.*tar.gz)\"" has_url ${line})
- if(has_url)
- set(eigen_url ${CMAKE_MATCH_1})
+ string(REGEX MATCH ".*eigen_version.*=.*\"(.*)\"" has_version ${line})
+ if(has_version)
+ set(eigen_version ${CMAKE_MATCH_1})
+ break()
+ endif()
+endforeach()
+foreach(line ${workspace_contents})
+ string(REGEX MATCH ".*eigen_sha256.*=.*\"(.*)\"" has_hash ${line})
+ if(has_hash)
+ set(eigen_hash ${CMAKE_MATCH_1})
break()
endif()
endforeach()
@@ -22,13 +29,15 @@ set(eigen_INCLUDE_DIRS
${CMAKE_CURRENT_BINARY_DIR}/external/eigen_archive
${tensorflow_source_dir}/third_party/eigen3
)
-set(eigen_URL ${eigen_url})
+set(eigen_URL https://bitbucket.org/eigen/eigen/get/${eigen_version}.tar.gz)
+set(eigen_HASH SHA256=${eigen_hash})
set(eigen_BUILD ${CMAKE_CURRENT_BINARY_DIR}/eigen/src/eigen)
set(eigen_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/eigen/install)
ExternalProject_Add(eigen
PREFIX eigen
URL ${eigen_URL}
+ URL_HASH ${eigen_HASH}
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
INSTALL_DIR "${eigen_INSTALL}"
CMAKE_CACHE_ARGS
diff --git a/tensorflow/contrib/makefile/download_dependencies.sh b/tensorflow/contrib/makefile/download_dependencies.sh
index 7aebe18767..74d239a598 100755
--- a/tensorflow/contrib/makefile/download_dependencies.sh
+++ b/tensorflow/contrib/makefile/download_dependencies.sh
@@ -19,8 +19,14 @@ set -e
DOWNLOADS_DIR=tensorflow/contrib/makefile/downloads
BZL_FILE_PATH=tensorflow/workspace.bzl
-EIGEN_URL="$(grep -o 'http.*bitbucket.org/eigen/eigen/get/.*tar\.gz' "${BZL_FILE_PATH}" | grep -v bazel-mirror | head -n1)"
-GEMMLOWP_URL="$(grep -o 'http.*github.com/google/gemmlowp/.*tar\.gz' "${BZL_FILE_PATH}" | grep -v bazel-mirror | head -n1)"
+EIGEN_VERSION="$(sed -ne 's/^[ \t]*eigen_version = "\(.*\)".*$/\1/p' "${BZL_FILE_PATH}")"
+if [ "${EIGEN_VERSION}" == '' ]; then
+ echo "Cannot extract eigen_version from ${BZL_FILE_PATH}" >&2
+ exit 1
+fi
+EIGEN_URL="$(grep -o 'http.*bitbucket.org/eigen/eigen/get/' "${BZL_FILE_PATH}")${EIGEN_VERSION}.tar.gz"
+
+GEMMLOWP_URL="$(grep -o 'http.*github.com/google/gemmlowp/.*tar\.gz' "${BZL_FILE_PATH}" | head -n1)"
GOOGLETEST_URL="https://github.com/google/googletest/archive/release-1.8.0.tar.gz"
PROTOBUF_URL="$(grep -o 'http.*github.com/google/protobuf/.*tar\.gz' "${BZL_FILE_PATH}" | grep -v bazel-mirror | head -n1)"
RE2_URL="$(grep -o 'http.*github.com/google/re2/.*tar\.gz' "${BZL_FILE_PATH}" | grep -v bazel-mirror | head -n1)"
diff --git a/tensorflow/workspace.bzl b/tensorflow/workspace.bzl
index c6315b5668..aeaed9baa2 100644
--- a/tensorflow/workspace.bzl
+++ b/tensorflow/workspace.bzl
@@ -14,17 +14,23 @@ def tf_workspace(path_prefix = "", tf_repo_name = ""):
if tf_repo_name:
print("tf_repo_name was specified to tf_workspace but is no longer used and will be removed in the future.")
+ # These lines need to be changed when updating Eigen. They are parsed from
+ # this file by the cmake and make builds to determine the eigen version and
+ # hash.
+ eigen_version = "c362228c7087"
+ eigen_sha256 = "ea091e0a1d78b0c6714f7109a6a80af30c4745f3ff8c398675cf42271acc0c77"
+
native.new_http_archive(
name = "eigen_archive",
urls = [
- "http://bazel-mirror.storage.googleapis.com/bitbucket.org/eigen/eigen/get/a6cd28de5779.tar.gz",
- "https://bitbucket.org/eigen/eigen/get/a6cd28de5779.tar.gz",
+ "http://bazel-mirror.storage.googleapis.com/bitbucket.org/eigen/eigen/get/" + eigen_version + ".tar.gz",
+ "https://bitbucket.org/eigen/eigen/get/" + eigen_version + ".tar.gz",
],
- sha256 = "c5d96ed7671002856868e12f2ad55c6bec0f570a89c9d82088954b271538b990",
- strip_prefix = "eigen-eigen-a6cd28de5779",
+ sha256 = eigen_sha256,
+ strip_prefix = "eigen-eigen-" + eigen_version,
build_file = str(Label("//:eigen.BUILD")),
)
-
+
native.new_http_archive(
name = "libxsmm_archive",
urls = [