diff --git a/devel/bazel/Makefile b/devel/bazel/Makefile index 4c28f2a03c49..834f332f1f40 100644 --- a/devel/bazel/Makefile +++ b/devel/bazel/Makefile @@ -1,89 +1,94 @@ # Created by: Klaus Aehlig PORTNAME= bazel DISTVERSION= 4.2.1 CATEGORIES= devel java MASTER_SITES= https://storage.googleapis.com/bazel/${PORTVERSION}/rc${FINALRC}/ DISTNAME= bazel-${PORTVERSION}rc${FINALRC}-dist MAINTAINER= aehlig@linta.de COMMENT= Fast and correct build system LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE BROKEN_aarch64= fails to build: java.lang.OutOfMemoryError: Java heap space BROKEN_armv6= fails to package: cp: bazel: No such file or directory BROKEN_armv7= fails to package: cp: bazel: No such file or directory BROKEN_FreeBSD_12_powerpc64= fails to compile: Action failed to execute: java.io.IOException: Cannot run program /usr/bin/clang BUILD_DEPENDS= bash:shells/bash \ zip:archivers/zip USES= cpe python:3.3+ shebangfix zip:infozip SHEBANG_REGEX= .*(sh|txt|_stub|stub_.*|bazel|get_workspace_status|protobuf_support|_so) CPE_VENDOR= google USE_JAVA= yes JAVA_VERSION= 1.8 JAVA_VENDOR= openjdk JAVA_BUILD= yes JAVA_RUN= yes CONFLICTS_INSTALL= bazel029 # The bazel binary is also a zip archive (extracted by the elf part), it must not be stripped STRIP= NO_WRKSUBDIR= YES # In bazel, a release is always code-wise identical to the final release candidate. # Hence we can also download that one and so have a simple way to also test earlier release # candidates. FINALRC= 2 .include .if ${ARCH} == "i386" EXTRA_PATCHES+= ${FILESDIR}/extra-i386_tools_cpp_BUILD.static.bsd .endif +pre-patch: + @${CP} ${FILESDIR}/extra-patch-absl_base_internal_unscaledcycleclock.cc \ + ${FILESDIR}/extra-patch-bazel_grpc__deps.bzl \ + ${WRKSRC}/third_party/grpc/ + # Have the location of the system-wide rc file reside ${ETCDIR}. # Also adapt the sample file to disable persistent java workers as they # do not work reliably on FreeBSD. post-patch: @${REINPLACE_CMD} \ -e "s|/etc/bazel.bazelrc|${ETCDIR}/bazel.bazelrc|" \ ${WRKSRC}/src/main/cpp/BUILD @${ECHO_CMD} build --strategy=Javac=standalone >> ${WRKSRC}/scripts/packages/bazel.bazelrc @${ECHO_CMD} build --host_javabase=@local_jdk//:jdk >> ${WRKSRC}/scripts/packages/bazel.bazelrc @${ECHO_CMD} build --action_env=PATH=/bin:/usr/bin/:${LOCALBASE}/bin >> ${WRKSRC}/scripts/packages/bazel.bazelrc @${REINPLACE_CMD} \ -e 's|^\(PYTHON_BIN=.*\)|if [ "%VERSION%" = "3" ] ; then PYTHON_BIN=${PYTHON_CMD}; else \1 ; fi|' \ ${WRKSRC}/tools/python/pywrapper_template.txt @${REINPLACE_CMD} \ -e 's|%%PYTHON_CMD%%|${PYTHON_CMD}|' \ ${WRKSRC}/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java do-build: @${MKDIR} ${WRKDIR}/bazel_tmp (if [ -z "$${SOURCE_DATE_EPOCH}" ] ; \ then SOURCE_DATE_EPOCH=`grep TIMESTAMP ${DISTINFO_FILE} \ | ${SED} -e 's/[^0-9]//g'`; \ fi ; \ cd ${WRKSRC} && \ ${SETENV} BAZEL_SH=${LOCALBASE}/bin/bash \ TMPDIR=${WRKDIR}/bazel_tmp \ EMBED_LABEL='${PORTVERSION}' \ PATH=${LOCALBASE}/bin:$$PATH \ SOURCE_DATE_EPOCH=$${SOURCE_DATE_EPOCH} \ EXTRA_BAZEL_ARGS=--host_javabase=@local_jdk//:jdk \ ${LOCALBASE}/bin/bash ./compile.sh) do-install: ${INSTALL_PROGRAM} ${WRKSRC}/output/bazel ${STAGEDIR}${PREFIX}/bin @${MKDIR} ${STAGEDIR}${ETCDIR} ${INSTALL_DATA} ${WRKSRC}/scripts/packages/bazel.bazelrc ${STAGEDIR}${ETCDIR}/bazel.bazelrc.sample .include diff --git a/devel/bazel/files/extra-patch-absl_base_internal_unscaledcycleclock.cc b/devel/bazel/files/extra-patch-absl_base_internal_unscaledcycleclock.cc new file mode 100644 index 000000000000..d13abc1bd9de --- /dev/null +++ b/devel/bazel/files/extra-patch-absl_base_internal_unscaledcycleclock.cc @@ -0,0 +1,14 @@ +--- absl/base/internal/unscaledcycleclock.cc.orig 2020-08-09 20:09:49 UTC ++++ absl/base/internal/unscaledcycleclock.cc +@@ -24,8 +24,10 @@ + #ifdef __GLIBC__ + #include + #elif defined(__FreeBSD__) +-#include ++#include "absl/base/call_once.h" + #include ++#include ++#include + #endif + #endif + diff --git a/devel/bazel/files/extra-patch-bazel_grpc__deps.bzl b/devel/bazel/files/extra-patch-bazel_grpc__deps.bzl new file mode 100644 index 000000000000..b3a648e5ff2c --- /dev/null +++ b/devel/bazel/files/extra-patch-bazel_grpc__deps.bzl @@ -0,0 +1,10 @@ +--- a/bazel/grpc_deps.bzl.orig 2021-10-11 15:54:07.083144000 +0200 ++++ b/bazel/grpc_deps.bzl 2021-10-11 16:02:48.722952000 +0200 +@@ -239,6 +239,7 @@ + if "com_google_absl" not in native.existing_rules(): + http_archive( + name = "com_google_absl", ++ patches = ["//third_party/grpc:extra-patch-absl_base_internal_unscaledcycleclock.cc"], + sha256 = "f368a8476f4e2e0eccf8a7318b98dafbe30b2600f4e3cf52636e5eb145aba06a", + strip_prefix = "abseil-cpp-df3ea785d8c30a9503321a3d35ee7d35808f190d", + urls = [ diff --git a/devel/bazel/files/patch-WORKSPACE b/devel/bazel/files/patch-WORKSPACE new file mode 100644 index 000000000000..314316c3579d --- /dev/null +++ b/devel/bazel/files/patch-WORKSPACE @@ -0,0 +1,14 @@ +--- WORKSPACE.orig 2021-10-11 09:54:26 UTC ++++ WORKSPACE +@@ -1232,7 +1232,10 @@ register_toolchains("//src/main/res:empty_rc_toolchain + http_archive( + name = "com_github_grpc_grpc", + patch_args = ["-p1"], +- patches = ["//third_party/grpc:grpc_1.33.1.patch"], ++ patches = [ ++ "//third_party/grpc:grpc_1.33.1.patch", ++ "//third_party/grpc:extra-patch-bazel_grpc__deps.bzl", ++ ], + sha256 = "58eaee5c0f1bd0b92ebe1fa0606ec8f14798500620e7444726afcaf65041cb63", + strip_prefix = "grpc-1.33.1", + urls = [