From 740fd511158bcbd2c9b6c3a0561196427c3264b7 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Sun, 7 Mar 2021 23:22:32 -0500 Subject: [PATCH 01/26] Dump GCP credentials to file --- .github/workflows/ci.yml | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8a43696e190..c91e277423a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,6 +94,9 @@ jobs: mkdir -p $HOME/.m2 [[ "${{ github.event_name }}" == "push" ]] && MAVEN_PHASE=deploy || MAVEN_PHASE=install echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml + if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java"]]; then + printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/.gcp/credentials.json + fi echo Executing Maven $MAVEN_PHASE mvn clean $MAVEN_PHASE -B -U -e -Djavacpp.platform=linux-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl $NATIVE_BUILD_PROJECTS -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} df -h @@ -123,6 +126,9 @@ jobs: mkdir -p $HOME/.m2 [[ "${{ github.event_name }}" == "push" ]] && MAVEN_PHASE=deploy || MAVEN_PHASE=install echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml + if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java"]]; then + printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/.gcp/credentials.json + fi df -h echo Executing Maven $MAVEN_PHASE mvn clean $MAVEN_PHASE -B -U -e -Djavacpp.platform=macosx-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl $NATIVE_BUILD_PROJECTS -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} @@ -154,16 +160,16 @@ jobs: mkdir C:\bazel curl.exe -L https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-windows-x86_64.exe -o C:/bazel/bazel.exe --retry 10 set "EXT=${{ matrix.ext }}" - if "%EXT:~-4%"=="-gpu" ( - echo Removing some unused stuff to avoid running out of disk space - rm.exe -Rf "C:/Program Files (x86)/Android" "C:/Program Files/dotnet" "%CONDA%" "%GOROOT_1_10_X64%" "%GOROOT_1_11_X64%" "%GOROOT_1_12_X64%" "%GOROOT_1_13_X64%" "C:\hostedtoolcache\windows\Ruby" "C:\Rust" - echo Installing CUDA - curl.exe -L https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_451.82_win10.exe -o cuda.exe - curl.exe -L https://developer.download.nvidia.com/compute/redist/cudnn/v8.0.3/cudnn-11.0-windows-x64-v8.0.3.33.zip -o cudnn.zip - cuda.exe -s - mkdir cuda - unzip.exe cudnn.zip - cp.exe -a cuda/include cuda/lib cuda/bin "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/" + if "%EXT:~-4%" == "-gpu" ( + echo Removing some unused stuff to avoid running out of disk space + rm.exe -Rf "C:/Program Files (x86)/Android" "C:/Program Files/dotnet" "%CONDA%" "%GOROOT_1_10_X64%" "%GOROOT_1_11_X64%" "%GOROOT_1_12_X64%" "%GOROOT_1_13_X64%" "C:\hostedtoolcache\windows\Ruby" "C:\Rust" + echo Installing CUDA + curl.exe -L https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_451.82_win10.exe -o cuda.exe + curl.exe -L https://developer.download.nvidia.com/compute/redist/cudnn/v8.0.3/cudnn-11.0-windows-x64-v8.0.3.33.zip -o cudnn.zip + cuda.exe -s + mkdir cuda + unzip.exe cudnn.zip + cp.exe -a cuda/include cuda/lib cuda/bin "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/" ) echo %JAVA_HOME% - name: Checkout repository @@ -187,8 +193,13 @@ jobs: call mvn -version bazel version mkdir %USERPROFILE%\.m2 - if "${{ github.event_name }}"=="push" (set MAVEN_PHASE=deploy) else (set MAVEN_PHASE=install) + if "${{ github.event_name }}" == "push" (set MAVEN_PHASE=deploy) else (set MAVEN_PHASE=install) echo ^^^^ossrh^^${{ secrets.CI_DEPLOY_USERNAME }}^^${{ secrets.CI_DEPLOY_PASSWORD }}^^^^ > %USERPROFILE%\.m2\settings.xml + if "${{ github.event_name }}" == "push" ( + if "${{ github.repository }}" == "tensorflow/java" ( + printenv "${{ secrets.GCP_CREDS }}" > %USERPROFILE%\.gcp\credentials.json + ) + ) df -h wmic pagefile list /format:list echo Executing Maven %MAVEN_PHASE% From 0b0e6da15828e3d11b6403700f75a0fb55cbc75f Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Sun, 7 Mar 2021 23:34:03 -0500 Subject: [PATCH 02/26] Pass BAZEL_EXTRA_OPTS environment variable --- tensorflow-core/tensorflow-core-api/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/tensorflow-core/tensorflow-core-api/pom.xml b/tensorflow-core/tensorflow-core-api/pom.xml index fd3605d5759..d83beefc31e 100644 --- a/tensorflow-core/tensorflow-core-api/pom.xml +++ b/tensorflow-core/tensorflow-core-api/pom.xml @@ -260,6 +260,7 @@ ${javacpp.platform.extension} + ${native.build.opts} ${project.basedir} From 1bca2d1aaca0a4c07a2ae5b81542eeb96cbcc3ce Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Sun, 7 Mar 2021 23:36:43 -0500 Subject: [PATCH 03/26] Consume BUILD_EXTRA_FLAGS --- tensorflow-core/tensorflow-core-api/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tensorflow-core/tensorflow-core-api/build.sh b/tensorflow-core/tensorflow-core-api/build.sh index 6f283bb66dc..6aa129c3592 100755 --- a/tensorflow-core/tensorflow-core-api/build.sh +++ b/tensorflow-core/tensorflow-core-api/build.sh @@ -33,7 +33,7 @@ BUILD_FLAGS="$BUILD_FLAGS --experimental_repo_remote_exec --python_path="$PYTHON BUILD_FLAGS="$BUILD_FLAGS --distinct_host_configuration=true" # Build C/C++ API of TensorFlow itself including a target to generate ops for Java -bazel build $BUILD_FLAGS \ +bazel build $BUILD_FLAGS $BUILD_EXTRA_FLAGS \ @org_tensorflow//tensorflow:tensorflow_cc \ @org_tensorflow//tensorflow/tools/lib_package:jnilicenses_generate \ :java_proto_gen_sources \ From 397cbffa5ec7f39ae56d0a4ee5348beba3c8ec84 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Sun, 7 Mar 2021 23:38:46 -0500 Subject: [PATCH 04/26] Rename BUILD_EXTRA_FLAGS --- tensorflow-core/tensorflow-core-api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tensorflow-core/tensorflow-core-api/pom.xml b/tensorflow-core/tensorflow-core-api/pom.xml index d83beefc31e..f3580704472 100644 --- a/tensorflow-core/tensorflow-core-api/pom.xml +++ b/tensorflow-core/tensorflow-core-api/pom.xml @@ -260,7 +260,7 @@ ${javacpp.platform.extension} - ${native.build.opts} + ${native.build.flags} ${project.basedir} From 76533cef34b379dea3b061be332164935d1cfda3 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Sun, 7 Mar 2021 23:45:49 -0500 Subject: [PATCH 05/26] Pass native extra build flags to Maven --- .github/workflows/ci.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c91e277423a..7a7d956eb77 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -96,9 +96,12 @@ jobs: echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java"]]; then printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/.gcp/credentials.json + export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/.gcp/credentials.json" + else + export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" fi echo Executing Maven $MAVEN_PHASE - mvn clean $MAVEN_PHASE -B -U -e -Djavacpp.platform=linux-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl $NATIVE_BUILD_PROJECTS -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} + mvn clean $MAVEN_PHASE -B -U -e -Djavacpp.platform=linux-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl $NATIVE_BUILD_PROJECTS -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} -Dnative.build.flags=$BAZEL_CACHE df -h macosx-x86_64: if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'CI build') @@ -128,10 +131,13 @@ jobs: echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java"]]; then printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/.gcp/credentials.json + export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/.gcp/credentials.json" + else + export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" fi df -h echo Executing Maven $MAVEN_PHASE - mvn clean $MAVEN_PHASE -B -U -e -Djavacpp.platform=macosx-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl $NATIVE_BUILD_PROJECTS -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} + mvn clean $MAVEN_PHASE -B -U -e -Djavacpp.platform=macosx-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl $NATIVE_BUILD_PROJECTS -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} -Dnative.build.flags=$BAZEL_CACHE df -h windows-x86_64: if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'CI build') @@ -195,15 +201,17 @@ jobs: mkdir %USERPROFILE%\.m2 if "${{ github.event_name }}" == "push" (set MAVEN_PHASE=deploy) else (set MAVEN_PHASE=install) echo ^^^^ossrh^^${{ secrets.CI_DEPLOY_USERNAME }}^^${{ secrets.CI_DEPLOY_PASSWORD }}^^^^ > %USERPROFILE%\.m2\settings.xml + set "BAZEL_CACHE=--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" if "${{ github.event_name }}" == "push" ( if "${{ github.repository }}" == "tensorflow/java" ( printenv "${{ secrets.GCP_CREDS }}" > %USERPROFILE%\.gcp\credentials.json + set "BAZEL_CACHE=--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=%USERPROFILE%\.gcp\credentials.json" ) - ) + ) df -h wmic pagefile list /format:list echo Executing Maven %MAVEN_PHASE% - call mvn clean %MAVEN_PHASE% -B -U -e -Djavacpp.platform=windows-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl %NATIVE_BUILD_PROJECTS% -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} + call mvn clean %MAVEN_PHASE% -B -U -e -Djavacpp.platform=windows-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl %NATIVE_BUILD_PROJECTS% -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} -Dnative.build.flags=%BAZEL_CACHE% if ERRORLEVEL 1 exit /b df -h wmic pagefile list /format:list From d9443ae65e52fa7da20b212ed2f9f789566e49fb Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Sun, 7 Mar 2021 23:47:33 -0500 Subject: [PATCH 06/26] Trigger CI on bazel-cache branch for testing --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7a7d956eb77..7736d74c56a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,7 @@ on: push: branches: - master + - bazel-cache - r[0-9]+.* pull_request: branches: From 3460d4a5a255cbdc75e17efa8cd22fc358766c75 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Sun, 7 Mar 2021 23:52:04 -0500 Subject: [PATCH 07/26] Try to quote native build flags in Maven command --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7736d74c56a..fe096e70d4d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,7 +102,7 @@ jobs: export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" fi echo Executing Maven $MAVEN_PHASE - mvn clean $MAVEN_PHASE -B -U -e -Djavacpp.platform=linux-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl $NATIVE_BUILD_PROJECTS -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} -Dnative.build.flags=$BAZEL_CACHE + mvn clean $MAVEN_PHASE -B -U -e -Djavacpp.platform=linux-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl $NATIVE_BUILD_PROJECTS -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} "-Dnative.build.flags=$BAZEL_CACHE" df -h macosx-x86_64: if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'CI build') @@ -138,7 +138,7 @@ jobs: fi df -h echo Executing Maven $MAVEN_PHASE - mvn clean $MAVEN_PHASE -B -U -e -Djavacpp.platform=macosx-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl $NATIVE_BUILD_PROJECTS -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} -Dnative.build.flags=$BAZEL_CACHE + mvn clean $MAVEN_PHASE -B -U -e -Djavacpp.platform=macosx-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl $NATIVE_BUILD_PROJECTS -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} "-Dnative.build.flags=$BAZEL_CACHE" df -h windows-x86_64: if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'CI build') @@ -212,7 +212,7 @@ jobs: df -h wmic pagefile list /format:list echo Executing Maven %MAVEN_PHASE% - call mvn clean %MAVEN_PHASE% -B -U -e -Djavacpp.platform=windows-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl %NATIVE_BUILD_PROJECTS% -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} -Dnative.build.flags=%BAZEL_CACHE% + call mvn clean %MAVEN_PHASE% -B -U -e -Djavacpp.platform=windows-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -pl %NATIVE_BUILD_PROJECTS% -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }} "-Dnative.build.flags=%BAZEL_CACHE%" if ERRORLEVEL 1 exit /b df -h wmic pagefile list /format:list From 1b98525b9e40bff24d4fb099914db517e5eb4561 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Sun, 7 Mar 2021 23:55:50 -0500 Subject: [PATCH 08/26] Add missing spaces --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fe096e70d4d..cb27342d804 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -95,7 +95,7 @@ jobs: mkdir -p $HOME/.m2 [[ "${{ github.event_name }}" == "push" ]] && MAVEN_PHASE=deploy || MAVEN_PHASE=install echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml - if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java"]]; then + if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java" ]]; then printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/.gcp/credentials.json export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/.gcp/credentials.json" else @@ -130,7 +130,7 @@ jobs: mkdir -p $HOME/.m2 [[ "${{ github.event_name }}" == "push" ]] && MAVEN_PHASE=deploy || MAVEN_PHASE=install echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml - if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java"]]; then + if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java" ]]; then printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/.gcp/credentials.json export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/.gcp/credentials.json" else From e1843ee05e8b5a431ed86fa54f01724b9dff287c Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Mon, 8 Mar 2021 00:04:13 -0500 Subject: [PATCH 09/26] test --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cb27342d804..81a9f2c5248 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -132,6 +132,11 @@ jobs: echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java" ]]; then printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/.gcp/credentials.json + if [[ -f /Users/runner/.gcp/credentials.json ]]; then + echo "File exists" + else + echo "File do not exists" + fi export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/.gcp/credentials.json" else export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" From 60d7236f77f502197e51ec2a13119446c2f90f32 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Mon, 8 Mar 2021 00:09:14 -0500 Subject: [PATCH 10/26] Rename GCP credentials file --- .github/workflows/ci.yml | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81a9f2c5248..a49ac958e6a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -96,8 +96,8 @@ jobs: [[ "${{ github.event_name }}" == "push" ]] && MAVEN_PHASE=deploy || MAVEN_PHASE=install echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java" ]]; then - printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/.gcp/credentials.json - export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/.gcp/credentials.json" + printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/gcp_creds.json + export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/gcp_creds.json" else export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" fi @@ -131,13 +131,8 @@ jobs: [[ "${{ github.event_name }}" == "push" ]] && MAVEN_PHASE=deploy || MAVEN_PHASE=install echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java" ]]; then - printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/.gcp/credentials.json - if [[ -f /Users/runner/.gcp/credentials.json ]]; then - echo "File exists" - else - echo "File do not exists" - fi - export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/.gcp/credentials.json" + printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/gcp_creds.json + export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/gcp_creds.json" else export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" fi @@ -210,8 +205,8 @@ jobs: set "BAZEL_CACHE=--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" if "${{ github.event_name }}" == "push" ( if "${{ github.repository }}" == "tensorflow/java" ( - printenv "${{ secrets.GCP_CREDS }}" > %USERPROFILE%\.gcp\credentials.json - set "BAZEL_CACHE=--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=%USERPROFILE%\.gcp\credentials.json" + printenv "${{ secrets.GCP_CREDS }}" > %USERPROFILE%\gcp_creds.json + set "BAZEL_CACHE=--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=%USERPROFILE%\gcp_creds.json" ) ) df -h From 7c7660100dc6abb3194be96b2fe3cca258cf5237 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Mon, 8 Mar 2021 00:20:44 -0500 Subject: [PATCH 11/26] Declare GCP_CREDS in environment --- .github/workflows/ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a49ac958e6a..96d493b62a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,7 @@ on: env: STAGING_PROFILE_ID: 46f80d0729c92d NATIVE_BUILD_PROJECTS: tensorflow-core/tensorflow-core-generator,tensorflow-core/tensorflow-core-api + GCP_CREDS: ${{ secrets.GCP_CREDS }} jobs: quick-build: if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'CI build') @@ -96,7 +97,7 @@ jobs: [[ "${{ github.event_name }}" == "push" ]] && MAVEN_PHASE=deploy || MAVEN_PHASE=install echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java" ]]; then - printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/gcp_creds.json + printf '%s\n' "${GCP_CREDS}" > $HOME/gcp_creds.json export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/gcp_creds.json" else export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" @@ -131,7 +132,7 @@ jobs: [[ "${{ github.event_name }}" == "push" ]] && MAVEN_PHASE=deploy || MAVEN_PHASE=install echo "ossrh${{ secrets.CI_DEPLOY_USERNAME }}${{ secrets.CI_DEPLOY_PASSWORD }}" > $HOME/.m2/settings.xml if [[ "${{ github.event_name }}" == "push" && "${{ github.repository }}" == "tensorflow/java" ]]; then - printf '%s\n' "${{ secrets.GCP_CREDS }}" > $HOME/gcp_creds.json + printf '%s\n' "${GCP_CREDS}" > $HOME/gcp_creds.json export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=$HOME/gcp_creds.json" else export BAZEL_CACHE="--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" @@ -205,7 +206,7 @@ jobs: set "BAZEL_CACHE=--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=false" if "${{ github.event_name }}" == "push" ( if "${{ github.repository }}" == "tensorflow/java" ( - printenv "${{ secrets.GCP_CREDS }}" > %USERPROFILE%\gcp_creds.json + printenv GCP_CREDS > %USERPROFILE%\gcp_creds.json set "BAZEL_CACHE=--remote_cache=https://storage.googleapis.com/tensorflow-sigs-jvm --remote_upload_local_results=true --google_credentials=%USERPROFILE%\gcp_creds.json" ) ) From d888941460c333d7211eca5a17bff0fb48caf51a Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Mon, 8 Mar 2021 09:00:56 -0500 Subject: [PATCH 12/26] Reactivate windows GPU builds --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 96d493b62a9..1b55e326ba8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -147,7 +147,7 @@ jobs: needs: prepare strategy: matrix: - ext: ["", -mkl] # -gpu, -mkl-gpu] + ext: ["", -mkl, -gpu, -mkl-gpu] steps: - name: Configure page file uses: al-cheb/configure-pagefile-action@v1.2 From fcd92cacecd1d6b530eadc8919144b1d20266050 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Mon, 8 Mar 2021 11:16:40 -0500 Subject: [PATCH 13/26] Fix Windows build with GPU and MKL --- .../external/tensorflow-windows.patch | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch b/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch index df96098954f..8cb97091388 100644 --- a/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch +++ b/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch @@ -28,3 +28,17 @@ diff -ruN tensorflow-1.14.0-rc1/third_party/mkl/mkl.BUILD tensorflow-1.14.0-rc1- ], linkopts = ["/FORCE:MULTIPLE"], visibility = ["//visibility:public"], +diff --git a/third_party/llvm_openmp/BUILD b/third_party/llvm_openmp/BUILD +index 099a84dcbaa..f7f9d44118f 100644 +--- a/third_party/llvm_openmp/BUILD ++++ b/third_party/llvm_openmp/BUILD +@@ -71,7 +71,7 @@ omp_vars_linux = { + + # Windows Cmake vars to expand. + omp_vars_win = { +- "MSVC": 1, ++ "MSVC": 0, + } + + omp_all_cmake_vars = select({ + From 1cc7037091883668b45cbc089f5897c37316d1dc Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Mon, 8 Mar 2021 16:05:16 -0500 Subject: [PATCH 14/26] Restore Windows patches --- tensorflow-core/tensorflow-core-api/WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tensorflow-core/tensorflow-core-api/WORKSPACE b/tensorflow-core/tensorflow-core-api/WORKSPACE index bd5ce478f66..9415e8ac6fe 100644 --- a/tensorflow-core/tensorflow-core-api/WORKSPACE +++ b/tensorflow-core/tensorflow-core-api/WORKSPACE @@ -10,7 +10,7 @@ http_archive( patches = [ ":tensorflow-visibility.patch", ":tensorflow-macosx.patch", -# ":tensorflow-windows.patch", # https://github.com/tensorflow/tensorflow/issues/25213 + ":tensorflow-windows.patch", ":tensorflow-proto.patch", ], patch_tool = "patch", From 2cab7f0760167ef5cf82e77d1523c5db1ec901cb Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Mon, 8 Mar 2021 17:19:22 -0500 Subject: [PATCH 15/26] Delete previous/broken patch --- .../external/tensorflow-windows.patch | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch b/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch index 8cb97091388..b782ae559c0 100644 --- a/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch +++ b/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch @@ -1,33 +1,3 @@ -diff -ruN tensorflow-1.14.0-rc1/third_party/mkl/mkl.BUILD tensorflow-1.14.0-rc1-windows/third_party/mkl/mkl.BUILD ---- tensorflow-1.14.0-rc1/third_party/mkl/mkl.BUILD 2019-06-08 11:23:20.000000000 +0900 -+++ tensorflow-1.14.0-rc1-windows/third_party/mkl/mkl.BUILD 2019-06-12 08:30:41.232683854 +0900 -@@ -35,11 +35,23 @@ - visibility = ["//visibility:public"], - ) - -+cc_import( -+ name = "iomp5", -+ interface_library = "lib/libiomp5md.lib", -+ system_provided = 1, -+) -+ -+cc_import( -+ name = "mklml", -+ interface_library = "lib/mklml.lib", -+ system_provided = 1, -+) -+ - cc_library( - name = "mkl_libs_windows", -- srcs = [ -- "lib/libiomp5md.lib", -- "lib/mklml.lib", -+ deps = [ -+ "iomp5", -+ "mklml", - ], - linkopts = ["/FORCE:MULTIPLE"], - visibility = ["//visibility:public"], diff --git a/third_party/llvm_openmp/BUILD b/third_party/llvm_openmp/BUILD index 099a84dcbaa..f7f9d44118f 100644 --- a/third_party/llvm_openmp/BUILD From c661c1af39e2785aea29bab1264bfafa97a79d29 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Mon, 8 Mar 2021 22:14:18 -0500 Subject: [PATCH 16/26] Try to restore old windows MKL patch on 2.4.1 --- .../external/tensorflow-windows.patch | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch b/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch index b782ae559c0..be8622810aa 100644 --- a/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch +++ b/tensorflow-core/tensorflow-core-api/external/tensorflow-windows.patch @@ -1,3 +1,33 @@ +diff --git a/third_party/mkl/BUILD b/third_party/mkl/BUILD +index aa65b585b85..4e6546eac34 100644 +--- a/third_party/mkl/BUILD ++++ b/third_party/mkl/BUILD +@@ -91,10 +91,23 @@ cc_library( + visibility = ["//visibility:public"], + ) + ++cc_import( ++ name = "iomp5", ++ interface_library = "lib/libiomp5md.lib", ++ system_provided = 1, ++) ++ ++cc_import( ++ name = "mklml", ++ interface_library = "lib/mklml.lib", ++ system_provided = 1, ++) ++ + cc_library( + name = "mkl_libs_windows", +- srcs = [ +- "@llvm_openmp//:libiomp5md.dll", ++ deps = [ ++ "iomp5", ++ "mklml" + ], + visibility = ["//visibility:public"], + ) diff --git a/third_party/llvm_openmp/BUILD b/third_party/llvm_openmp/BUILD index 099a84dcbaa..f7f9d44118f 100644 --- a/third_party/llvm_openmp/BUILD From 677d578fd4c1354f4dce58df38de1953601afa86 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Tue, 9 Mar 2021 18:14:18 -0500 Subject: [PATCH 17/26] Disable MKL for Windows --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b55e326ba8..d842e1bf84f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -147,7 +147,7 @@ jobs: needs: prepare strategy: matrix: - ext: ["", -mkl, -gpu, -mkl-gpu] + ext: ["", -gpu] # -mkl, -mkl-gpu] steps: - name: Configure page file uses: al-cheb/configure-pagefile-action@v1.2 From 8f0c72530599ef5f8105857fbeb35a0a24cc68f5 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Tue, 9 Mar 2021 18:15:03 -0500 Subject: [PATCH 18/26] Disable Windows patch again --- tensorflow-core/tensorflow-core-api/WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tensorflow-core/tensorflow-core-api/WORKSPACE b/tensorflow-core/tensorflow-core-api/WORKSPACE index 9415e8ac6fe..cb3ff56874a 100644 --- a/tensorflow-core/tensorflow-core-api/WORKSPACE +++ b/tensorflow-core/tensorflow-core-api/WORKSPACE @@ -10,7 +10,7 @@ http_archive( patches = [ ":tensorflow-visibility.patch", ":tensorflow-macosx.patch", - ":tensorflow-windows.patch", + # ":tensorflow-windows.patch", ":tensorflow-proto.patch", ], patch_tool = "patch", From a4cd21e3a2a7444ae4e6ac838ce727d4ed55f7c1 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Thu, 11 Mar 2021 10:08:55 -0500 Subject: [PATCH 19/26] Try Bazel 4.0.0 for Windows build --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d842e1bf84f..a21faf74c87 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -147,7 +147,7 @@ jobs: needs: prepare strategy: matrix: - ext: ["", -gpu] # -mkl, -mkl-gpu] + ext: ["", -gpu, -mkl, -mkl-gpu] steps: - name: Configure page file uses: al-cheb/configure-pagefile-action@v1.2 @@ -166,7 +166,7 @@ jobs: bash.exe -lc "find 'C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/' -iname '14.1*' -exec rm -Rf {} \;" echo Downloading Bazel mkdir C:\bazel - curl.exe -L https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-windows-x86_64.exe -o C:/bazel/bazel.exe --retry 10 + curl.exe -L https://github.com/bazelbuild/bazel/releases/download/4.0.0/bazel-4.0.0-windows-x86_64.exe -o C:/bazel/bazel.exe --retry 10 set "EXT=${{ matrix.ext }}" if "%EXT:~-4%" == "-gpu" ( echo Removing some unused stuff to avoid running out of disk space From e9dbf4a22c618b8e2a85655334f30abae90b9655 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Thu, 11 Mar 2021 10:30:38 -0500 Subject: [PATCH 20/26] Revert to Bazel 3.1.0 and cleanup Cuda files --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a21faf74c87..65cc24bd111 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -147,7 +147,7 @@ jobs: needs: prepare strategy: matrix: - ext: ["", -gpu, -mkl, -mkl-gpu] + ext: ["", -gpu, -mkl] #, -mkl-gpu] steps: - name: Configure page file uses: al-cheb/configure-pagefile-action@v1.2 @@ -166,7 +166,7 @@ jobs: bash.exe -lc "find 'C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/' -iname '14.1*' -exec rm -Rf {} \;" echo Downloading Bazel mkdir C:\bazel - curl.exe -L https://github.com/bazelbuild/bazel/releases/download/4.0.0/bazel-4.0.0-windows-x86_64.exe -o C:/bazel/bazel.exe --retry 10 + curl.exe -L https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-windows-x86_64.exe -o C:/bazel/bazel.exe --retry 10 set "EXT=${{ matrix.ext }}" if "%EXT:~-4%" == "-gpu" ( echo Removing some unused stuff to avoid running out of disk space From 30ea7e45cc997654254b9b4fc924a33826606a3c Mon Sep 17 00:00:00 2001 From: Samuel Audet Date: Fri, 12 Mar 2021 00:48:01 +0900 Subject: [PATCH 21/26] Remove more stuff from CUDA to avoid running out of disk space (#239) --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65cc24bd111..f20788b3806 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,6 +80,7 @@ jobs: echo Removing downloaded archives and unused libraries to avoid running out of disk space rm -f *.rpm *.tgz *.txz *.tar.* rm -f $(find /usr/local/cuda/ -name '*.a' -and -not -name libcudart_static.a -and -not -name libcudadevrt.a) + rm -f /usr/local/cuda/doc* /usr/local/cuda/libnvvp* /usr/local/cuda/nsight* /usr/local/cuda/samples* fi - name: Checkout repository uses: actions/checkout@v1 From 8297d39faee299e8e4acf7a0a805fd44fedd84d1 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Thu, 11 Mar 2021 12:11:05 -0500 Subject: [PATCH 22/26] Missing recursive flag in Cuda cleanup --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f20788b3806..a3bd24d9b6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,7 +80,7 @@ jobs: echo Removing downloaded archives and unused libraries to avoid running out of disk space rm -f *.rpm *.tgz *.txz *.tar.* rm -f $(find /usr/local/cuda/ -name '*.a' -and -not -name libcudart_static.a -and -not -name libcudadevrt.a) - rm -f /usr/local/cuda/doc* /usr/local/cuda/libnvvp* /usr/local/cuda/nsight* /usr/local/cuda/samples* + rm -rf /usr/local/cuda/doc* /usr/local/cuda/libnvvp* /usr/local/cuda/nsight* /usr/local/cuda/samples* fi - name: Checkout repository uses: actions/checkout@v1 From 4812db5942f1a3643ebdd7067428fd5375276863 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Thu, 11 Mar 2021 21:35:05 -0500 Subject: [PATCH 23/26] Fix archive cleanup paths --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3bd24d9b6e..210c88f01da 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,7 +78,7 @@ jobs: tar hxvf $HOME/nccl.txz --strip-components=1 -C /usr/local/cuda/ mv /usr/local/cuda/lib/* /usr/local/cuda/lib64/ echo Removing downloaded archives and unused libraries to avoid running out of disk space - rm -f *.rpm *.tgz *.txz *.tar.* + rm -f $HOME/*.rpm $HOME/*.tgz $HOME/*.txz $HOME/*.tar.* rm -f $(find /usr/local/cuda/ -name '*.a' -and -not -name libcudart_static.a -and -not -name libcudadevrt.a) rm -rf /usr/local/cuda/doc* /usr/local/cuda/libnvvp* /usr/local/cuda/nsight* /usr/local/cuda/samples* fi From 6333c752c454bdcb0dfbb0d11f3cfe7b9e28bd60 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Fri, 12 Mar 2021 08:21:57 -0500 Subject: [PATCH 24/26] Revert changes --- tensorflow-core/tensorflow-core-api/WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tensorflow-core/tensorflow-core-api/WORKSPACE b/tensorflow-core/tensorflow-core-api/WORKSPACE index cb3ff56874a..bd5ce478f66 100644 --- a/tensorflow-core/tensorflow-core-api/WORKSPACE +++ b/tensorflow-core/tensorflow-core-api/WORKSPACE @@ -10,7 +10,7 @@ http_archive( patches = [ ":tensorflow-visibility.patch", ":tensorflow-macosx.patch", - # ":tensorflow-windows.patch", +# ":tensorflow-windows.patch", # https://github.com/tensorflow/tensorflow/issues/25213 ":tensorflow-proto.patch", ], patch_tool = "patch", From 3ecee2a1d1e8860b546b182af2e64d6da3e8a492 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Fri, 12 Mar 2021 08:22:27 -0500 Subject: [PATCH 25/26] Remove bazel-cache branch triggers --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 210c88f01da..575b8c5ed26 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,7 +3,6 @@ on: push: branches: - master - - bazel-cache - r[0-9]+.* pull_request: branches: From 344e565465062f4fec7a7578d738d0f54cda0c73 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Fri, 12 Mar 2021 08:36:43 -0500 Subject: [PATCH 26/26] Include Windows in GPU platform --- tensorflow-core/tensorflow-core-platform-gpu/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tensorflow-core/tensorflow-core-platform-gpu/pom.xml b/tensorflow-core/tensorflow-core-platform-gpu/pom.xml index d675bb9cda1..ea72c5957d1 100644 --- a/tensorflow-core/tensorflow-core-platform-gpu/pom.xml +++ b/tensorflow-core/tensorflow-core-platform-gpu/pom.xml @@ -45,12 +45,12 @@ ${javacpp.version} ${javacpp.platform.linux-x86_64} - + ${project.groupId} ${javacpp.moduleId} @@ -62,12 +62,12 @@ ${project.version} ${javacpp.platform.linux-x86_64.extension} - +