From 9c75a2a26a2b704ee8895ae298e5bff3e78acc70 Mon Sep 17 00:00:00 2001 From: Eugene Kliuchnikov Date: Wed, 11 Oct 2017 22:26:37 +0200 Subject: Use bazel in appveyor (#612) +publish jni dll --- BUILD | 21 +++++++++++++++++++++ WORKSPACE | 40 +++++++++++++++++++++++++++++++++------- scripts/appveyor.yml | 16 ++++++++++++++-- scripts/fix-win-bazel-build.py | 31 +++++++++++++++++++++++++++++++ 4 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 scripts/fix-win-bazel-build.py diff --git a/BUILD b/BUILD index e4f24cc..6265b71 100644 --- a/BUILD +++ b/BUILD @@ -23,6 +23,24 @@ config_setting( visibility = ["//visibility:public"], ) +config_setting( + name = "windows", + values = {"cpu": "x64_windows"}, + visibility = ["//visibility:public"], +) + +config_setting( + name = "windows_msvc", + values = {"cpu": "x64_windows_msvc"}, + visibility = ["//visibility:public"], +) + +config_setting( + name = "windows_msys", + values = {"cpu": "x64_windows_msys"}, + visibility = ["//visibility:public"], +) + genrule( name = "copy_link_jni_header", srcs = ["@openjdk_linux//:jni_h"], @@ -35,6 +53,9 @@ genrule( srcs = select({ ":darwin": ["@openjdk_macos//:jni_md_h"], ":darwin_x86_64": ["@openjdk_macos//:jni_md_h"], + ":windows_msys": ["@openjdk_win//:jni_md_h"], + ":windows_msvc": ["@openjdk_win//:jni_md_h"], + ":windows": ["@openjdk_win//:jni_md_h"], "//conditions:default": ["@openjdk_linux//:jni_md_h"], }), outs = ["jni/jni_md.h"], diff --git a/WORKSPACE b/WORKSPACE index 31dc5dd..e30edc0 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -26,33 +26,59 @@ http_archive( new_http_archive( name = "openjdk_linux", - url = "https://bazel-mirror.storage.googleapis.com/openjdk/azul-zulu-8.20.0.5-jdk8.0.121/zulu8.20.0.5-jdk8.0.121-linux_x64.tar.gz", - sha256 = "7fdfb17d890406470b2303d749d3138e7f353749e67a0a22f542e1ab3e482745", + urls = [ + "https://mirror.bazel.build/openjdk/azul-zulu-8.23.0.3-jdk8.0.144/zulu8.23.0.3-jdk8.0.144-linux_x64.tar.gz", + "https://bazel-mirror.storage.googleapis.com/openjdk/azul-zulu-8.23.0.3-jdk8.0.144/zulu8.23.0.3-jdk8.0.144-linux_x64.tar.gz", + "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-linux_x64.tar.gz", + ], + sha256 = "7e6284739c0e5b7142bc7a9adc61ced70dc5bb26b130b582b18e809013bcb251", build_file_content = """ package( default_visibility = ["//visibility:public"], ) filegroup( name = "jni_h", - srcs = ["zulu8.20.0.5-jdk8.0.121-linux_x64/include/jni.h"], + srcs = ["zulu8.23.0.3-jdk8.0.144-linux_x64/include/jni.h"], ) filegroup( name = "jni_md_h", - srcs = ["zulu8.20.0.5-jdk8.0.121-linux_x64/include/linux/jni_md.h"], + srcs = ["zulu8.23.0.3-jdk8.0.144-linux_x64/include/linux/jni_md.h"], )""", ) new_http_archive( name = "openjdk_macos", - url = "https://bazel-mirror.storage.googleapis.com/openjdk/azul-zulu-8.20.0.5-jdk8.0.121/zulu8.20.0.5-jdk8.0.121-macosx_x64.zip", - sha256 = "2a58bd1d9b0cbf0b3d8d1bcdd117c407e3d5a0ec01e2f53565c9bec5cf9ea78b", + urls = [ + "https://mirror.bazel.build/openjdk/azul-zulu-8.23.0.3-jdk8.0.144/zulu8.23.0.3-jdk8.0.144-macosx_x64.zip", + "https://bazel-mirror.storage.googleapis.com/openjdk/azul-zulu-8.23.0.3-jdk8.0.144/zulu8.23.0.3-jdk8.0.144-macosx_x64.zip", + "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-macosx_x64.zip", + ], + sha256 = "ff533364c9cbd3b271ab5328efe28e2dd6d7bae5b630098a5683f742ecf0709d", + build_file_content = """ +package( + default_visibility = ["//visibility:public"], +) +filegroup( + name = "jni_md_h", + srcs = ["zulu8.23.0.3-jdk8.0.144-macosx_x64/include/darwin/jni_md.h"], +)""", +) + +new_http_archive( + name = "openjdk_win", + urls = [ + "https://mirror.bazel.build/openjdk/azul-zulu-8.23.0.3-jdk8.0.144/zulu8.23.0.3-jdk8.0.144-win_x64.zip", + "https://bazel-mirror.storage.googleapis.com/openjdk/azul-zulu-8.23.0.3-jdk8.0.144/zulu8.23.0.3-jdk8.0.144-win_x64.zip", + "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-win_x64.zip", + ], + sha256 = "f1d9d3341ef7c8c9baff3597953e99a6a7c64f8608ee62c03fdd7574b7655c02", build_file_content = """ package( default_visibility = ["//visibility:public"], ) filegroup( name = "jni_md_h", - srcs = ["zulu8.20.0.5-jdk8.0.121-macosx_x64/include/darwin/jni_md.h"], + srcs = ["zulu8.23.0.3-jdk8.0.144-win_x64/include/win32/jni_md.h"], )""", ) diff --git a/scripts/appveyor.yml b/scripts/appveyor.yml index 2c98f19..a825b22 100644 --- a/scripts/appveyor.yml +++ b/scripts/appveyor.yml @@ -26,6 +26,8 @@ environment: - BUILD_SYSTEM: make ARCH: "x86_64" + - BUILD_SYSTEM: bazel + install: - IF "%BUILD_SYSTEM%"=="Python" ( SET "PATH=%PYTHON%;%PYTHON%\Scripts;%PATH%" && @@ -39,14 +41,17 @@ install: SET "TOOLCHAIN=x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64" ) ) +- IF "%BUILD_SYSTEM%"=="bazel" ( + appveyor DownloadFile https://github.com/bazelbuild/bazel/releases/download/0.6.1/bazel-0.6.1-windows-x86_64.exe -FileName bazel.exe + ) before_build: +- FOR /f %%i in ('C:\cygwin64\bin\date.exe +%%Y-%%m-%%d') DO SET "RELEASE_DATE=%%i" - IF "%BUILD_SYSTEM%"=="CMake" ( mkdir builddir && cd builddir && cmake -G "%GENERATOR%" .. ) - IF "%BUILD_SYSTEM%"=="make" ( SET "CC=gcc" && SET "PATH=C:\mingw-w64\%TOOLCHAIN%\bin;%PATH%" && - COPY C:\msys64\usr\bin\make.exe C:\mingw-w64\%TOOLCHAIN%\bin\make.exe && - FOR /f %%i in ('C:\cygwin64\bin\date.exe +%%Y-%%m-%%d') DO SET "RELEASE_DATE=%%i" + COPY C:\msys64\usr\bin\make.exe C:\mingw-w64\%TOOLCHAIN%\bin\make.exe ) build_script: @@ -57,11 +62,18 @@ build_script: cd bin && 7z a -tzip -mx9 brotli-win-%ARCH%-%RELEASE_DATE%.zip brotli.exe && appveyor PushArtifact brotli-win-%ARCH%-%RELEASE_DATE%.zip && cd .. ) +- IF "%BUILD_SYSTEM%"=="bazel" ( + bazel --batch build -c opt java/org/brotli/wrapper/...:all && + python scripts/fix-win-bazel-build.py && + cd bazel-bin && 7z a -tzip -mx9 brotli-win-bazel-jni-%RELEASE_DATE%.zip brotli_jni.dll && + appveyor PushArtifact brotli-win-bazel-jni-%RELEASE_DATE%.zip && cd .. + ) test_script: - IF "%BUILD_SYSTEM%"=="CMake" ( ctest --output-on-failure --interactive-debug-mode 0 -C Debug ) - IF "%BUILD_SYSTEM%"=="Python" ( python setup.py test ) - IF "%BUILD_SYSTEM%"=="make" ( sh -c "make test" ) +- IF "%BUILD_SYSTEM%"=="bazel" ( bazel --batch test -c opt --test_output streamed java/org/brotli/wrapper/...:all ) deploy: - provider: BinTray diff --git a/scripts/fix-win-bazel-build.py b/scripts/fix-win-bazel-build.py new file mode 100644 index 0000000..fcba6f3 --- /dev/null +++ b/scripts/fix-win-bazel-build.py @@ -0,0 +1,31 @@ +import fnmatch +import os +import os.path +from shutil import copyfile + +matches = [] +for root, dirnames, filenames in os.walk('bazel-bin\\java\\org\\brotli'): + for filename in fnmatch.filter(filenames, '*.runfiles_manifest'): + matches.append(os.path.join(root, filename)) + +for match in matches: + runfiles = match[:-len('_manifest')] + with open(match) as manifest: + for entry in manifest: + entry = entry.strip() + if not entry.startswith("org_brotli"): + continue + if entry.startswith('org_brotli/external'): + continue + (alias, space, link) = entry.partition(' ') + if alias.endswith('.jar') or alias.endswith('.exe'): + continue + link = link.replace('/', '\\') + alias = alias.replace('/', '\\') + dst = os.path.join(runfiles, alias) + if not os.path.exists(dst): + print(link + ' -> ' + dst) + parent = os.path.dirname(dst) + if not os.path.exists(parent): + os.makedirs(parent) + copyfile(link, dst) -- cgit v1.1