From 5168322374bbe6bbbcaaed5f19a562ebaddd939d Mon Sep 17 00:00:00 2001 From: Michael Allwright Date: Fri, 30 Aug 2024 09:13:01 +0000 Subject: [PATCH 1/7] Support location expansion and make variable substitution in CMake cache entries --- foreign_cc/cmake.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foreign_cc/cmake.bzl b/foreign_cc/cmake.bzl index 17b523917..cfe03dc19 100644 --- a/foreign_cc/cmake.bzl +++ b/foreign_cc/cmake.bzl @@ -264,7 +264,7 @@ def _create_configure_script(configureParameters): install_prefix = "$$INSTALLDIR$$", root = root, no_toolchain_file = no_toolchain_file, - user_cache = dict(ctx.attr.cache_entries), + user_cache = expand_locations_and_make_variables(ctx, ctx.attr.cache_entries, "cache_entries", data), user_env = expand_locations_and_make_variables(ctx, ctx.attr.env, "env", data), options = attrs.generate_args, cmake_commands = cmake_commands, From f56f10a8e7c465a42d6051a44b19a7a9ca0374ad Mon Sep 17 00:00:00 2001 From: Michael Allwright Date: Fri, 30 Aug 2024 11:49:36 +0000 Subject: [PATCH 2/7] Update cache entries in examples --- examples/cmake_with_bazel_transitive/BUILD.bazel | 2 +- examples/third_party/libgit2/BUILD.libgit2.bazel | 2 +- examples/third_party/libpng/BUILD.libpng.bazel | 2 +- examples/third_party/libssh2/BUILD.libssh2.bazel | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/cmake_with_bazel_transitive/BUILD.bazel b/examples/cmake_with_bazel_transitive/BUILD.bazel index 45f355d36..53da1c37e 100644 --- a/examples/cmake_with_bazel_transitive/BUILD.bazel +++ b/examples/cmake_with_bazel_transitive/BUILD.bazel @@ -10,7 +10,7 @@ cmake( "CMAKE_DISABLE_FIND_PACKAGE_LIBA": "True", # as currently we copy all libraries, built with Bazel, into $EXT_BUILD_DEPS/lib # and the headers into $EXT_BUILD_DEPS/include - "LIBA_DIR": "$EXT_BUILD_DEPS", + "LIBA_DIR": "$$EXT_BUILD_DEPS$$", }, generate_args = ["-GNinja"], lib_source = "//cmake_with_bazel_transitive/libb:b_srcs", diff --git a/examples/third_party/libgit2/BUILD.libgit2.bazel b/examples/third_party/libgit2/BUILD.libgit2.bazel index d63d80e70..c61d72935 100644 --- a/examples/third_party/libgit2/BUILD.libgit2.bazel +++ b/examples/third_party/libgit2/BUILD.libgit2.bazel @@ -13,7 +13,7 @@ _CACHE_ENTRIES = { "BUILD_EXAMPLES": "off", "BUILD_FUZZERS": "off", "BUILD_SHARED_LIBS": "off", - "CMAKE_PREFIX_PATH": "$EXT_BUILD_DEPS/pcre;$EXT_BUILD_DEPS/openssl;$EXT_BUILD_DEPS/libssh2;$EXT_BUILD_DEPS/zlib;${CMAKE_PREFIX_PATH:-}", + "CMAKE_PREFIX_PATH": "$$EXT_BUILD_DEPS$$/pcre;$$EXT_BUILD_DEPS$$/openssl;$$EXT_BUILD_DEPS$$/libssh2;$$EXT_BUILD_DEPS$$/zlib;${CMAKE_PREFIX_PATH:-}", "EMBED_SSH_PATH": "$(location @libssh2//:libssh2)", "USE_HTTPS": "on", } diff --git a/examples/third_party/libpng/BUILD.libpng.bazel b/examples/third_party/libpng/BUILD.libpng.bazel index 5d5c565f2..855485603 100644 --- a/examples/third_party/libpng/BUILD.libpng.bazel +++ b/examples/third_party/libpng/BUILD.libpng.bazel @@ -15,7 +15,7 @@ cmake( cache_entries = { "CMAKE_BUILD_TYPE": "RELEASE", "CMAKE_POLICY_DEFAULT_CMP0074": "NEW", - "ZLIB_ROOT": "$EXT_BUILD_DEPS/zlib", + "ZLIB_ROOT": "$$EXT_BUILD_DEPS$$/zlib", }, lib_source = "//:all_srcs", out_include_dir = "include/libpng16", diff --git a/examples/third_party/libssh2/BUILD.libssh2.bazel b/examples/third_party/libssh2/BUILD.libssh2.bazel index 13ad6d5b8..bc6c16756 100644 --- a/examples/third_party/libssh2/BUILD.libssh2.bazel +++ b/examples/third_party/libssh2/BUILD.libssh2.bazel @@ -13,7 +13,7 @@ _CACHE_ENTRIES = { "BUILD_SHARED_LIBS": "off", "BUILD_TESTING": "off", "CMAKE_FIND_DEBUG_MODE": "on", - "CMAKE_PREFIX_PATH": "${CMAKE_PREFIX_PATH:-};$EXT_BUILD_DEPS/openssl", + "CMAKE_PREFIX_PATH": "${CMAKE_PREFIX_PATH:-};$$EXT_BUILD_DEPS$$/openssl", } _LINUX_CACHE_ENTRIES = dict(_CACHE_ENTRIES.items() + { From fd3ad43a936ed4bbc7b1a702d8cc736e865c329c Mon Sep 17 00:00:00 2001 From: Michael Allwright Date: Fri, 30 Aug 2024 11:56:15 +0000 Subject: [PATCH 3/7] Escape $ for ${CMAKE_XXX} entries --- examples/third_party/libgit2/BUILD.libgit2.bazel | 4 ++-- examples/third_party/libssh2/BUILD.libssh2.bazel | 4 ++-- examples/third_party/pcre/BUILD.pcre.bazel | 2 +- examples/third_party/zlib/BUILD.zlib.bazel | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/third_party/libgit2/BUILD.libgit2.bazel b/examples/third_party/libgit2/BUILD.libgit2.bazel index c61d72935..df859044a 100644 --- a/examples/third_party/libgit2/BUILD.libgit2.bazel +++ b/examples/third_party/libgit2/BUILD.libgit2.bazel @@ -13,13 +13,13 @@ _CACHE_ENTRIES = { "BUILD_EXAMPLES": "off", "BUILD_FUZZERS": "off", "BUILD_SHARED_LIBS": "off", - "CMAKE_PREFIX_PATH": "$$EXT_BUILD_DEPS$$/pcre;$$EXT_BUILD_DEPS$$/openssl;$$EXT_BUILD_DEPS$$/libssh2;$$EXT_BUILD_DEPS$$/zlib;${CMAKE_PREFIX_PATH:-}", + "CMAKE_PREFIX_PATH": "$$EXT_BUILD_DEPS$$/pcre;$$EXT_BUILD_DEPS$$/openssl;$$EXT_BUILD_DEPS$$/libssh2;$$EXT_BUILD_DEPS$$/zlib;$${CMAKE_PREFIX_PATH:-}", "EMBED_SSH_PATH": "$(location @libssh2//:libssh2)", "USE_HTTPS": "on", } _LINUX_CACHE_ENTRIES = dict(_CACHE_ENTRIES.items() + { - "CMAKE_C_FLAGS": "${CMAKE_C_FLAGS:-} -fPIC", + "CMAKE_C_FLAGS": "$${CMAKE_C_FLAGS:-} -fPIC", "REGEX_BACKEND": "pcre2", }.items()) diff --git a/examples/third_party/libssh2/BUILD.libssh2.bazel b/examples/third_party/libssh2/BUILD.libssh2.bazel index bc6c16756..61c63c9e4 100644 --- a/examples/third_party/libssh2/BUILD.libssh2.bazel +++ b/examples/third_party/libssh2/BUILD.libssh2.bazel @@ -13,11 +13,11 @@ _CACHE_ENTRIES = { "BUILD_SHARED_LIBS": "off", "BUILD_TESTING": "off", "CMAKE_FIND_DEBUG_MODE": "on", - "CMAKE_PREFIX_PATH": "${CMAKE_PREFIX_PATH:-};$$EXT_BUILD_DEPS$$/openssl", + "CMAKE_PREFIX_PATH": "$${CMAKE_PREFIX_PATH:-};$$EXT_BUILD_DEPS$$/openssl", } _LINUX_CACHE_ENTRIES = dict(_CACHE_ENTRIES.items() + { - "CMAKE_C_FLAGS": "${CMAKE_C_FLAGS:-} -fPIC", + "CMAKE_C_FLAGS": "$${CMAKE_C_FLAGS:-} -fPIC", }.items()) cmake( diff --git a/examples/third_party/pcre/BUILD.pcre.bazel b/examples/third_party/pcre/BUILD.pcre.bazel index 40bf06c4d..269b4706e 100644 --- a/examples/third_party/pcre/BUILD.pcre.bazel +++ b/examples/third_party/pcre/BUILD.pcre.bazel @@ -15,7 +15,7 @@ filegroup( cmake( name = "pcre", cache_entries = { - "CMAKE_C_FLAGS": "${CMAKE_C_FLAGS:-} -fPIC", + "CMAKE_C_FLAGS": "$${CMAKE_C_FLAGS:-} -fPIC", }, lib_source = ":all_srcs", out_static_libs = select({ diff --git a/examples/third_party/zlib/BUILD.zlib.bazel b/examples/third_party/zlib/BUILD.zlib.bazel index a6a7ac057..6f7990080 100644 --- a/examples/third_party/zlib/BUILD.zlib.bazel +++ b/examples/third_party/zlib/BUILD.zlib.bazel @@ -15,7 +15,7 @@ cmake( name = "zlib", cache_entries = select({ "@platforms//os:linux": { - "CMAKE_C_FLAGS": "${CMAKE_C_FLAGS:-} -fPIC", + "CMAKE_C_FLAGS": "$${CMAKE_C_FLAGS:-} -fPIC", }, "//conditions:default": {}, }), From a3895185ec37af591ccfaa36ef8e99fccec5a44d Mon Sep 17 00:00:00 2001 From: Michael Allwright Date: Fri, 30 Aug 2024 12:09:35 +0000 Subject: [PATCH 4/7] Remove cache entry EMBED_SSH_PATH for libgit2 The entry `"EMBED_SSH_PATH": "$(location @libssh2//:libssh2)"` was never expanded until this PR and is in any case incorrect since the location expands to multiple values. Successful compilation is the past was a bug. --- examples/third_party/libgit2/BUILD.libgit2.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/third_party/libgit2/BUILD.libgit2.bazel b/examples/third_party/libgit2/BUILD.libgit2.bazel index df859044a..de9026941 100644 --- a/examples/third_party/libgit2/BUILD.libgit2.bazel +++ b/examples/third_party/libgit2/BUILD.libgit2.bazel @@ -14,7 +14,7 @@ _CACHE_ENTRIES = { "BUILD_FUZZERS": "off", "BUILD_SHARED_LIBS": "off", "CMAKE_PREFIX_PATH": "$$EXT_BUILD_DEPS$$/pcre;$$EXT_BUILD_DEPS$$/openssl;$$EXT_BUILD_DEPS$$/libssh2;$$EXT_BUILD_DEPS$$/zlib;$${CMAKE_PREFIX_PATH:-}", - "EMBED_SSH_PATH": "$(location @libssh2//:libssh2)", + #"EMBED_SSH_PATH": "$(location @libssh2//:libssh2)", "USE_HTTPS": "on", } From 0bf2b360ef22d05189fdae1672a6a2223854706f Mon Sep 17 00:00:00 2001 From: Michael Allwright Date: Fri, 30 Aug 2024 12:11:36 +0000 Subject: [PATCH 5/7] Update URL for APR --- examples/third_party/apr/apr_repositories.bzl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/examples/third_party/apr/apr_repositories.bzl b/examples/third_party/apr/apr_repositories.bzl index a04aa70ab..3037ad961 100644 --- a/examples/third_party/apr/apr_repositories.bzl +++ b/examples/third_party/apr/apr_repositories.bzl @@ -17,8 +17,6 @@ def apr_repositories(): sha256 = "", strip_prefix = "apr-1.7.4", urls = [ - "https://mirror.bazel.build/www-eu.apache.org/dist/apr/apr-1.7.4.tar.gz", - "https://dlcdn.apache.org/apr/apr-1.7.4.tar.gz", - "https://www-eu.apache.org/dist/apr/apr-1.7.4.tar.gz", + "https://archive.apache.org/dist/apr/apr-1.7.4.tar.gz", ], ) From 69ddf0aeaf4ab13a44a099fc3a5d429c4554b15d Mon Sep 17 00:00:00 2001 From: Michael Allwright Date: Fri, 30 Aug 2024 12:39:12 +0000 Subject: [PATCH 6/7] Fix EXT_BUILD_DEPS expansion --- examples/cmake_synthetic/BUILD.bazel | 4 ++-- examples/cmake_with_bazel_transitive/BUILD.bazel | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/cmake_synthetic/BUILD.bazel b/examples/cmake_synthetic/BUILD.bazel index e4999631f..97d427c1f 100644 --- a/examples/cmake_synthetic/BUILD.bazel +++ b/examples/cmake_synthetic/BUILD.bazel @@ -21,8 +21,8 @@ cmake( cmake( name = "lib_with_duplicate_transitive_bazel_deps", cache_entries = { - "LIBA_DIR": "$$EXT_BUILD_DEPS$$", - "LIBB_DIR": "$$EXT_BUILD_DEPS$$", + "LIBA_DIR": "$$EXT_BUILD_DEPS", + "LIBB_DIR": "$$EXT_BUILD_DEPS", }, generate_args = ["-GNinja"], lib_name = "libc", diff --git a/examples/cmake_with_bazel_transitive/BUILD.bazel b/examples/cmake_with_bazel_transitive/BUILD.bazel index 53da1c37e..8a5bde963 100644 --- a/examples/cmake_with_bazel_transitive/BUILD.bazel +++ b/examples/cmake_with_bazel_transitive/BUILD.bazel @@ -10,7 +10,7 @@ cmake( "CMAKE_DISABLE_FIND_PACKAGE_LIBA": "True", # as currently we copy all libraries, built with Bazel, into $EXT_BUILD_DEPS/lib # and the headers into $EXT_BUILD_DEPS/include - "LIBA_DIR": "$$EXT_BUILD_DEPS$$", + "LIBA_DIR": "$$EXT_BUILD_DEPS", }, generate_args = ["-GNinja"], lib_source = "//cmake_with_bazel_transitive/libb:b_srcs", From b4a2cb70443f818152f622a876ab75117bd59b3e Mon Sep 17 00:00:00 2001 From: Michael Allwright Date: Fri, 30 Aug 2024 12:55:39 +0000 Subject: [PATCH 7/7] Fix EXT_BUILD_DEPS expansion (continued) --- examples/third_party/curl/BUILD.curl.bazel | 4 ++-- examples/third_party/libgit2/BUILD.libgit2.bazel | 2 +- examples/third_party/libpng/BUILD.libpng.bazel | 2 +- examples/third_party/libssh2/BUILD.libssh2.bazel | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/third_party/curl/BUILD.curl.bazel b/examples/third_party/curl/BUILD.curl.bazel index 41277d311..570b06d30 100644 --- a/examples/third_party/curl/BUILD.curl.bazel +++ b/examples/third_party/curl/BUILD.curl.bazel @@ -12,11 +12,11 @@ _CACHE_ENTRIES = { "BUILD_CURL_EXE": "off", "BUILD_SHARED_LIBS": "off", "CMAKE_BUILD_TYPE": "RELEASE", - "CMAKE_PREFIX_PATH": "$$EXT_BUILD_DEPS$$/openssl", + "CMAKE_PREFIX_PATH": "$$EXT_BUILD_DEPS/openssl", "CMAKE_USE_OPENSSL": "on", # TODO: ldap should likely be enabled "CURL_DISABLE_LDAP": "on", - "OPENSSL_ROOT_DIR": "$$EXT_BUILD_DEPS$$/openssl", + "OPENSSL_ROOT_DIR": "$$EXT_BUILD_DEPS/openssl", } _MACOS_CACHE_ENTRIES = dict(_CACHE_ENTRIES.items() + { diff --git a/examples/third_party/libgit2/BUILD.libgit2.bazel b/examples/third_party/libgit2/BUILD.libgit2.bazel index de9026941..ae34aa725 100644 --- a/examples/third_party/libgit2/BUILD.libgit2.bazel +++ b/examples/third_party/libgit2/BUILD.libgit2.bazel @@ -13,7 +13,7 @@ _CACHE_ENTRIES = { "BUILD_EXAMPLES": "off", "BUILD_FUZZERS": "off", "BUILD_SHARED_LIBS": "off", - "CMAKE_PREFIX_PATH": "$$EXT_BUILD_DEPS$$/pcre;$$EXT_BUILD_DEPS$$/openssl;$$EXT_BUILD_DEPS$$/libssh2;$$EXT_BUILD_DEPS$$/zlib;$${CMAKE_PREFIX_PATH:-}", + "CMAKE_PREFIX_PATH": "$$EXT_BUILD_DEPS/pcre;$$EXT_BUILD_DEPS/openssl;$$EXT_BUILD_DEPS/libssh2;$$EXT_BUILD_DEPS/zlib;$${CMAKE_PREFIX_PATH:-}", #"EMBED_SSH_PATH": "$(location @libssh2//:libssh2)", "USE_HTTPS": "on", } diff --git a/examples/third_party/libpng/BUILD.libpng.bazel b/examples/third_party/libpng/BUILD.libpng.bazel index 855485603..aa029a7c0 100644 --- a/examples/third_party/libpng/BUILD.libpng.bazel +++ b/examples/third_party/libpng/BUILD.libpng.bazel @@ -15,7 +15,7 @@ cmake( cache_entries = { "CMAKE_BUILD_TYPE": "RELEASE", "CMAKE_POLICY_DEFAULT_CMP0074": "NEW", - "ZLIB_ROOT": "$$EXT_BUILD_DEPS$$/zlib", + "ZLIB_ROOT": "$$EXT_BUILD_DEPS/zlib", }, lib_source = "//:all_srcs", out_include_dir = "include/libpng16", diff --git a/examples/third_party/libssh2/BUILD.libssh2.bazel b/examples/third_party/libssh2/BUILD.libssh2.bazel index 61c63c9e4..4f4cdb145 100644 --- a/examples/third_party/libssh2/BUILD.libssh2.bazel +++ b/examples/third_party/libssh2/BUILD.libssh2.bazel @@ -13,7 +13,7 @@ _CACHE_ENTRIES = { "BUILD_SHARED_LIBS": "off", "BUILD_TESTING": "off", "CMAKE_FIND_DEBUG_MODE": "on", - "CMAKE_PREFIX_PATH": "$${CMAKE_PREFIX_PATH:-};$$EXT_BUILD_DEPS$$/openssl", + "CMAKE_PREFIX_PATH": "$${CMAKE_PREFIX_PATH:-};$$EXT_BUILD_DEPS/openssl", } _LINUX_CACHE_ENTRIES = dict(_CACHE_ENTRIES.items() + {