devel/bazel5: split from devel/bazel

Major versions harbour some incompatibilities. Main port to be
updated to 6.

Event: Kitchener-Waterloo Hackathon 202305
This commit is contained in:
Charlie Li
2023-05-25 20:50:15 -04:00
parent a3def2cf30
commit abc5ed39ba
18 changed files with 416 additions and 0 deletions
+1
View File
@@ -272,6 +272,7 @@
SUBDIR += bazel
SUBDIR += bazel-buildtools
SUBDIR += bazel029
SUBDIR += bazel5
SUBDIR += bbparse
SUBDIR += bcc
SUBDIR += bcpp
+104
View File
@@ -0,0 +1,104 @@
PORTNAME= bazel
DISTVERSION= 5.4.1 # please make sure that science/py-tensorflow builds before updating
CATEGORIES= devel java
MASTER_SITES= https://github.com/bazelbuild/${PORTNAME}/releases/download/${DISTVERSION}/
DISTNAME= bazel-${DISTVERSION}-dist
PKGNAMESUFFIX= 5
MAINTAINER= vishwin@FreeBSD.org
COMMENT= Fast and correct build system
WWW= https://bazel.build/
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE
NOT_FOR_ARCHS= i386
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 shebangfix zip
CPE_VENDOR= google
USE_JAVA= yes
JAVA_VERSION= 11
JAVA_VENDOR= openjdk
JAVA_BUILD= yes
JAVA_RUN= yes
SHEBANG_REGEX= .*(sh|txt|_stub|stub_.*|bazel|get_workspace_status|protobuf_support|_so)
CONFLICTS_INSTALL= bazel[0-9]*
# 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 <bsd.port.pre.mk>
.if ${ARCH} == "aarch64"
BAZEL_JAVAC_OPTS+= "-J-Xmx1g -J-Xms128m"
.endif
pre-patch:
@${CP} ${FILESDIR}/extra-patch-abseil-cpp_absl_base_internal_unscaledcycleclock.cc \
${FILESDIR}/extra-patch-abseil-cpp-cfe27e79cfcbefb2b4479e04f80cbb299bc46965 \
${WRKSRC}/third_party/py/abseil/
@${CP} ${FILESDIR}/extra-patch-grpc_bazel_grpc__deps.bzl \
${FILESDIR}/extra-patch-upb_bazel_build__defs.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 --java_runtime_version=${JAVA_VERSION} >> ${WRKSRC}/scripts/packages/bazel.bazelrc
@${ECHO_CMD} build --tool_java_runtime_version=${JAVA_VERSION} >> ${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
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|' \
${WRKSRC}/src/main/java/com/google/devtools/build/lib/bazel/rules/python/python_stub_template.txt
@${REINPLACE_CMD} -e 's|%%JAVA_HOME%%|${JAVA_HOME}|' \
${WRKSRC}/src/main/cpp/blaze_util_bsd.cc
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 \
JAVA_HOME=${JAVA_HOME} \
JAVA_VERSION=${JAVA_VERSION} \
TMPDIR=${WRKDIR}/bazel_tmp \
EMBED_LABEL='${PORTVERSION}' \
PATH=${LOCALBASE}/bin:$$PATH \
SOURCE_DATE_EPOCH=$${SOURCE_DATE_EPOCH} \
BAZEL_JAVAC_OPTS=${BAZEL_JAVAC_OPTS} \
EXTRA_BAZEL_ARGS='--host_javabase=@local_jdk//:jdk --tool_java_runtime_version=local_jdk --java_language_version=${JAVA_VERSION} --tool_java_language_version=${JAVA_VERSION}' \
${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 <bsd.port.post.mk>
+3
View File
@@ -0,0 +1,3 @@
TIMESTAMP = 1685049229
SHA256 (bazel-5.4.1-dist.zip) = dcff6935756aa7aca4fc569bb2bd26e1537f0b1f6d1bda5f2b200fa835cc507f
SIZE (bazel-5.4.1-dist.zip) = 235399305
@@ -0,0 +1,140 @@
From 1a6044c0ec33ea394c1258ae4e934f1fef3a710f Mon Sep 17 00:00:00 2001
From: Abseil Team <absl-team@google.com>
Date: Fri, 5 Aug 2022 06:56:05 -0700
Subject: [PATCH] Map the absl::is_trivially_* functions to their std impl
There's no point redefining these functions if they are supported by the compiler and the version of libstdc++. Also, some of the builtins used by the absl implementation of these functions (e.g. __has_trivial_destructor) have been deprecated in Clang 15.
PiperOrigin-RevId: 465554125
Change-Id: I8674c3a5270ce3c654cdf58ae7dbd9d2bda8faa5
---
absl/base/config.h | 18 ++++++++----------
absl/meta/type_traits.h | 22 ++++++++++++++++++++++
absl/meta/type_traits_test.cc | 1 +
3 files changed, 31 insertions(+), 10 deletions(-)
diff --git absl/base/config.h absl/base/config.h
index 585485c3..ab5791a5 100644
--- absl/base/config.h
+++ absl/base/config.h
@@ -259,17 +259,15 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
#define ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE 1
#endif
-// ABSL_HAVE_SOURCE_LOCATION_CURRENT
+// ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE
//
-// Indicates whether `absl::SourceLocation::current()` will return useful
-// information in some contexts.
-#ifndef ABSL_HAVE_SOURCE_LOCATION_CURRENT
-#if ABSL_INTERNAL_HAS_KEYWORD(__builtin_LINE) && \
- ABSL_INTERNAL_HAS_KEYWORD(__builtin_FILE)
-#define ABSL_HAVE_SOURCE_LOCATION_CURRENT 1
-#elif ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(5, 0)
-#define ABSL_HAVE_SOURCE_LOCATION_CURRENT 1
-#endif
+// Checks whether `std::is_trivially_copyable<T>` is supported.
+//
+// Notes: Clang 15+ with libc++ supports these features, GCC hasn't been tested.
+#if defined(ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE)
+#error ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE cannot be directly set
+#elif defined(__clang__) && (__clang_major__ >= 15)
+#define ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE 1
#endif
// ABSL_HAVE_THREAD_LOCAL
diff --git absl/meta/type_traits.h absl/meta/type_traits.h
index d886cb30..46b76906 100644
--- absl/meta/type_traits.h
+++ absl/meta/type_traits.h
@@ -298,8 +298,12 @@ struct is_function
// https://gcc.gnu.org/onlinedocs/gcc/Type-Traits.html#Type-Traits.
template <typename T>
struct is_trivially_destructible
+#ifdef ABSL_HAVE_STD_IS_TRIVIALLY_DESTRUCTIBLE
+ : std::is_trivially_destructible<T> {
+#else
: std::integral_constant<bool, __has_trivial_destructor(T) &&
std::is_destructible<T>::value> {
+#endif
#ifdef ABSL_HAVE_STD_IS_TRIVIALLY_DESTRUCTIBLE
private:
static constexpr bool compliant = std::is_trivially_destructible<T>::value ==
@@ -347,9 +351,13 @@ struct is_trivially_destructible
// Nontrivially destructible types will cause the expression to be nontrivial.
template <typename T>
struct is_trivially_default_constructible
+#if defined(ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE)
+ : std::is_trivially_default_constructible<T> {
+#else
: std::integral_constant<bool, __has_trivial_constructor(T) &&
std::is_default_constructible<T>::value &&
is_trivially_destructible<T>::value> {
+#endif
#if defined(ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE) && \
!defined( \
ABSL_META_INTERNAL_STD_CONSTRUCTION_TRAITS_DONT_CHECK_DESTRUCTION)
@@ -381,10 +389,14 @@ struct is_trivially_default_constructible
// expression to be nontrivial.
template <typename T>
struct is_trivially_move_constructible
+#if defined(ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE)
+ : std::is_trivially_move_constructible<T> {
+#else
: std::conditional<
std::is_object<T>::value && !std::is_array<T>::value,
type_traits_internal::IsTriviallyMoveConstructibleObject<T>,
std::is_reference<T>>::type::type {
+#endif
#if defined(ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE) && \
!defined( \
ABSL_META_INTERNAL_STD_CONSTRUCTION_TRAITS_DONT_CHECK_DESTRUCTION)
@@ -490,9 +502,13 @@ struct is_trivially_move_assignable
// `is_trivially_assignable<T&, const T&>`.
template <typename T>
struct is_trivially_copy_assignable
+#ifdef ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE
+ : std::is_trivially_copy_assignable<T> {
+#else
: std::integral_constant<
bool, __has_trivial_assign(typename std::remove_reference<T>::type) &&
absl::is_copy_assignable<T>::value> {
+#endif
#ifdef ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE
private:
static constexpr bool compliant =
@@ -544,6 +560,11 @@ namespace type_traits_internal {
// destructible. Arrays of trivially copyable types are trivially copyable.
//
// We expose this metafunction only for internal use within absl.
+
+#if defined(ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE)
+template <typename T>
+struct is_trivially_copyable : std::is_trivially_copyable<T> {};
+#else
template <typename T>
class is_trivially_copyable_impl {
using ExtentsRemoved = typename std::remove_all_extents<T>::type;
@@ -569,6 +590,7 @@ template <typename T>
struct is_trivially_copyable
: std::integral_constant<
bool, type_traits_internal::is_trivially_copyable_impl<T>::kValue> {};
+#endif
} // namespace type_traits_internal
// -----------------------------------------------------------------------------
diff --git absl/meta/type_traits_test.cc absl/meta/type_traits_test.cc
index 0ef5b665..fe96554d 100644
--- absl/meta/type_traits_test.cc
+++ absl/meta/type_traits_test.cc
@@ -336,6 +336,7 @@ struct MovableNonCopyable {
struct NonCopyableOrMovable {
NonCopyableOrMovable() = default;
+ virtual ~NonCopyableOrMovable() = default;
NonCopyableOrMovable(const NonCopyableOrMovable&) = delete;
NonCopyableOrMovable(NonCopyableOrMovable&&) = delete;
NonCopyableOrMovable& operator=(const NonCopyableOrMovable&) = delete;
--
2.40.1
@@ -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 <sys/platform/ppc.h>
#elif defined(__FreeBSD__)
-#include <sys/sysctl.h>
+#include "absl/base/call_once.h"
#include <sys/types.h>
+#include <sys/sysctl.h>
+#include <threads.h>
#endif
#endif
@@ -0,0 +1,21 @@
--- a/bazel/grpc_deps.bzl.orig 2021-09-25 02:33:41 UTC
+++ b/bazel/grpc_deps.bzl
@@ -284,6 +284,10 @@ def grpc_deps():
http_archive(
name = "com_google_absl",
sha256 = "35f22ef5cb286f09954b7cc4c85b5a3f6221c9d4df6b8c4a1e9d399555b366ee",
+ patches = [
+ "//third_party/grpc:extra-patch-abseil-cpp_absl_base_internal_unscaledcycleclock.cc",
+ "//third_party/grpc:extra-patch-abseil-cpp-cfe27e79cfcbefb2b4479e04f80cbb299bc46965",
+ ],
strip_prefix = "abseil-cpp-997aaf3a28308eba1b9156aa35ab7bca9688e9f6",
urls = [
"https://storage.googleapis.com/grpc-bazel-mirror/github.com/abseil/abseil-cpp/archive/997aaf3a28308eba1b9156aa35ab7bca9688e9f6.tar.gz",
@@ -339,6 +343,7 @@ def grpc_deps():
http_archive(
name = "upb",
sha256 = "6a5f67874af66b239b709c572ac1a5a00fdb1b29beaf13c3e6f79b1ba10dc7c4",
+ patches = ["//third_party/grpc:extra-patch-upb_bazel_build__defs.bzl"],
strip_prefix = "upb-2de300726a1ba2de9a468468dc5ff9ed17a3215f",
urls = [
"https://storage.googleapis.com/grpc-bazel-mirror/github.com/protocolbuffers/upb/archive/2de300726a1ba2de9a468468dc5ff9ed17a3215f.tar.gz",
@@ -0,0 +1,10 @@
--- bazel/build_defs.bzl.orig 2022-01-20 13:04:32.306692000 +0100
+++ bazel/build_defs.bzl 2022-01-20 13:05:02.002057000 +0100
@@ -35,6 +35,7 @@
# "-Wshorten-64-to-32", # not in GCC (and my Kokoro images doesn't have Clang)
"-Werror",
"-Wno-long-long",
+ "-Wno-deprecated-copy",
# copybara:strip_end
],
})
+21
View File
@@ -0,0 +1,21 @@
--- distdir_deps.bzl.orig 1980-01-01 05:00:00 UTC
+++ distdir_deps.bzl
@@ -130,6 +130,7 @@ DIST_DEPS = {
"patch_args": ["-p1"],
"patches": [
"//third_party/grpc:grpc_1.41.0.patch",
+ "//third_party/grpc:extra-patch-grpc_bazel_grpc__deps.bzl",
"//third_party/grpc:grpc_1.41.0.win_arm64.patch",
],
"used_in": [
@@ -167,6 +168,10 @@ DIST_DEPS = {
"urls": [
"https://mirror.bazel.build/github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.tar.gz",
"https://github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.tar.gz",
+ ],
+ "patches": [
+ "//third_party/py/abseil:extra-patch-abseil-cpp_absl_base_internal_unscaledcycleclock.cc",
+ "//third_party/py/abseil:extra-patch-abseil-cpp-cfe27e79cfcbefb2b4479e04f80cbb299bc46965",
],
"used_in": [
"additional_distfiles",
@@ -0,0 +1,13 @@
--- scripts/bootstrap/BUILD.bootstrap.orig 1979-12-31 23:00:00 UTC
+++ scripts/bootstrap/BUILD.bootstrap
@@ -16,8 +16,8 @@ default_java_toolchain(
"-XX:TieredStopAtLevel=1",
],
singlejar = ["//src/tools/singlejar:singlejar"],
- source_version = "8",
+ source_version = "11",
tags = ["manual"],
- target_version = "8",
+ target_version = "11",
visibility = ["//visibility:public"],
)
@@ -0,0 +1,11 @@
--- scripts/bootstrap/bootstrap.sh.orig 2020-10-07 21:26:37 UTC
+++ scripts/bootstrap/bootstrap.sh
@@ -33,7 +33,7 @@ fi
_BAZEL_ARGS="--spawn_strategy=standalone \
--nojava_header_compilation \
- --strategy=Javac=worker --worker_quit_after_build --ignore_unsupported_sandboxing \
+ --strategy=Javac=standalone --ignore_unsupported_sandboxing --curses=no \
--compilation_mode=opt \
--distdir=derived/distdir \
--java_toolchain=//src/java_tools/buildjar:bootstrap_toolchain \
@@ -0,0 +1,11 @@
--- scripts/bootstrap/buildenv.sh.orig 2020-10-07 21:26:37 UTC
+++ scripts/bootstrap/buildenv.sh
@@ -230,7 +230,7 @@ function clear_log() {
rm -f ${phasefile}
}
-LEAVES="\xF0\x9F\x8D\x83"
+LEAVES="[LEAVES]"
INFO="\033[32mINFO\033[0m:"
WARNING="\033[31mWARN\033[0m:"
@@ -0,0 +1,11 @@
--- src/main/cpp/blaze_util_bsd.cc.orig 1979-12-31 23:00:00 UTC
+++ src/main/cpp/blaze_util_bsd.cc
@@ -14,7 +14,7 @@
#if defined(__FreeBSD__)
# define HAVE_PROCSTAT
-# define STANDARD_JAVABASE "/usr/local/openjdk8"
+# define STANDARD_JAVABASE "%%JAVA_HOME%%"
#elif defined(__OpenBSD__)
# define STANDARD_JAVABASE "/usr/local/jdk-1.8.0"
#else
@@ -0,0 +1,14 @@
--- src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java.orig 1979-12-31 23:00:00 UTC
+++ src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java
@@ -238,9 +238,8 @@
if (OS.getCurrent() != OS.WINDOWS) {
PathFragment shExecutable = ShToolchain.getPathOrError(ruleContext);
- String pythonExecutableName = "python3";
- // NOTE: keep the following line intact to support nix builds
- String pythonShebang = "#!/usr/bin/env " + pythonExecutableName;
+ String pythonExecutableName = "%%PYTHON_CMD%%";
+ String pythonShebang = "#!" + pythonExecutableName;
ruleContext.registerAction(
new SpawnAction.Builder()
.addInput(zipFile)
@@ -0,0 +1,11 @@
--- src/main/java/com/google/devtools/build/lib/bazel/rules/python/python_stub_template.txt.orig 1980-01-01 05:00:00 UTC
+++ src/main/java/com/google/devtools/build/lib/bazel/rules/python/python_stub_template.txt
@@ -76,7 +76,7 @@ def SearchPath(name):
def SearchPath(name):
"""Finds a file in a given search path."""
- search_path = os.getenv('PATH', os.defpath).split(os.pathsep)
+ search_path = os.getenv('PATH', os.defpath + ':%%PREFIX%%/bin').split(os.pathsep)
for directory in search_path:
if directory:
path = os.path.join(directory, name)
@@ -0,0 +1,10 @@
--- src/main/tools/process-tools-linux.cc.orig 1979-12-31 23:00:00 UTC
+++ src/main/tools/process-tools-linux.cc
@@ -17,6 +17,7 @@
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
+#include <signal.h>
#include "src/main/tools/process-tools.h"
@@ -0,0 +1,14 @@
--- src/tools/singlejar/port.h.orig 1979-12-31 23:00:00 UTC
+++ src/tools/singlejar/port.h
@@ -28,6 +28,11 @@
#include <sys/types.h>
#include <time.h>
+#ifndef _OFF64_T_DECLARED
+typedef off_t off64_t;
+#define _OFF64_T_DECLARED
+#endif
+
#if defined(__APPLE__)
typedef off_t off64_t;
#elif defined(_WIN32)
+5
View File
@@ -0,0 +1,5 @@
Bazel is Google's own build tool, now publicly available in Beta.
Bazel has built-in support for building both client and server
software, including client applications for both Android and iOS
platforms. It also provides an extensible framework that you can
use to develop your own build rules.
+2
View File
@@ -0,0 +1,2 @@
bin/bazel
@sample %%ETCDIR%%/bazel.bazelrc.sample