From 3debc17d85e0fa545c2b4a6bb717d242817361ce Mon Sep 17 00:00:00 2001 From: Tom Birch Date: Fri, 2 Aug 2024 18:03:59 +1000 Subject: [PATCH 1/6] Apply expand_locations_and_make_variables to cache_entries (#1240) --- 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 d781dcdc..281ce8b6 100644 --- a/foreign_cc/cmake.bzl +++ b/foreign_cc/cmake.bzl @@ -263,7 +263,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 122d83cd7d6bd39dfe115d3cc9174922cf7e2772 Mon Sep 17 00:00:00 2001 From: James Sharpe Date: Wed, 7 Aug 2024 23:04:24 +0100 Subject: [PATCH 2/6] Revert "Apply expand_locations_and_make_variables to cache_entries" (#1250) --- 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 281ce8b6..d781dcdc 100644 --- a/foreign_cc/cmake.bzl +++ b/foreign_cc/cmake.bzl @@ -263,7 +263,7 @@ def _create_configure_script(configureParameters): install_prefix = "$$INSTALLDIR$$", root = root, no_toolchain_file = no_toolchain_file, - user_cache = expand_locations_and_make_variables(ctx, ctx.attr.cache_entries, "cache_entries", data), + user_cache = dict(ctx.attr.cache_entries), user_env = expand_locations_and_make_variables(ctx, ctx.attr.env, "env", data), options = attrs.generate_args, cmake_commands = cmake_commands, From 35bf65674e2412ba33a728bacc1ae3a45922bf73 Mon Sep 17 00:00:00 2001 From: James Sharpe Date: Thu, 8 Aug 2024 10:06:50 +0100 Subject: [PATCH 3/6] Fix macOS CI (#1251) Relates to error seen in #1244 --- examples/third_party/BUILD.bazel | 6 +- examples/third_party/apr/BUILD.apr.bazel | 4 + examples/third_party/apr/apr_repositories.bzl | 11 +-- examples/third_party/apr/macos_iovec.patch | 97 ------------------- .../third_party/bison/bison_repositories.bzl | 8 +- 5 files changed, 17 insertions(+), 109 deletions(-) delete mode 100644 examples/third_party/apr/macos_iovec.patch diff --git a/examples/third_party/BUILD.bazel b/examples/third_party/BUILD.bazel index a91a89fb..42400d9f 100644 --- a/examples/third_party/BUILD.bazel +++ b/examples/third_party/BUILD.bazel @@ -86,7 +86,8 @@ test_suite( "//cares:test_c_ares", "//cares:test_c_ares_ios", "//curl:curl_test_suite", - "//glib:glib_build_test", + # Fails due to linker error in ffi (https://github.com/mesonbuild/meson/issues/12282) + # "//glib:glib_build_test", "//gn:gn_launch_test", "//gperftools:test", "//iconv:iconv_macos_build_test", @@ -95,7 +96,8 @@ test_suite( "//libpng:test_libpng", "//libssh2:libssh2_build_test", "//log4cxx:log4cxx_build_test", - "//mesa:mesa_build_test", + # Fails due to linker argument error (https://github.com/mesonbuild/meson/issues/12282) + # "//mesa:mesa_build_test", "//openssl:openssl_test_suite", "//pcre:pcre_build_test", "//python:python_tests", diff --git a/examples/third_party/apr/BUILD.apr.bazel b/examples/third_party/apr/BUILD.apr.bazel index 3d4a6eaf..4c0c3fbf 100644 --- a/examples/third_party/apr/BUILD.apr.bazel +++ b/examples/third_party/apr/BUILD.apr.bazel @@ -50,6 +50,10 @@ configure_make( configure_options = [ "--disable-shared", ], + configure_prefix = select({ + "@platforms//os:macos": "CPPFLAGS=-DAPR_IOVEC_DEFINED ", + "//conditions:default": "", + }), env = select({ "@platforms//os:macos": {"AR": ""}, "//conditions:default": {}, diff --git a/examples/third_party/apr/apr_repositories.bzl b/examples/third_party/apr/apr_repositories.bzl index 4b06c541..a04aa70a 100644 --- a/examples/third_party/apr/apr_repositories.bzl +++ b/examples/third_party/apr/apr_repositories.bzl @@ -9,17 +9,16 @@ def apr_repositories(): name = "apr", build_file = Label("//apr:BUILD.apr.bazel"), patches = [ - # https://bz.apache.org/bugzilla/show_bug.cgi?id=50146 - Label("//apr:macos_iovec.patch"), # https://bz.apache.org/bugzilla/show_bug.cgi?id=64753 Label("//apr:macos_pid_t.patch"), # https://apachelounge.com/viewtopic.php?t=8260 Label("//apr:windows_winnt.patch"), ], - sha256 = "48e9dbf45ae3fdc7b491259ffb6ccf7d63049ffacbc1c0977cced095e4c2d5a2", - strip_prefix = "apr-1.7.0", + sha256 = "", + strip_prefix = "apr-1.7.4", urls = [ - "https://mirror.bazel.build/www-eu.apache.org/dist/apr/apr-1.7.0.tar.gz", - "https://www-eu.apache.org/dist/apr/apr-1.7.0.tar.gz", + "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", ], ) diff --git a/examples/third_party/apr/macos_iovec.patch b/examples/third_party/apr/macos_iovec.patch deleted file mode 100644 index 31ef073a..00000000 --- a/examples/third_party/apr/macos_iovec.patch +++ /dev/null @@ -1,97 +0,0 @@ -diff -ruN configure configure ---- configure 2019-04-01 19:56:23.000000000 +0200 -+++ configure 2019-04-01 19:56:23.000000000 +0200 -@@ -24475,6 +24475,7 @@ - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include -+$ac_includes_default - #include - #ifdef WIN32 - #define binmode "b" -@@ -24485,7 +24486,7 @@ - { - FILE *f=fopen("conftestval", "w" binmode); - if (!f) exit(1); -- fprintf(f, "%d\n", sizeof(pid_t)); -+ fprintf(f, "%zd\n", sizeof(pid_t)); - exit(0); - } - _ACEOF -@@ -24800,6 +24801,7 @@ - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include -+$ac_includes_default - #include - #ifdef WIN32 - #define binmode "b" -@@ -24810,7 +24812,7 @@ - { - FILE *f=fopen("conftestval", "w" binmode); - if (!f) exit(1); -- fprintf(f, "%d\n", sizeof(ssize_t)); -+ fprintf(f, "%zd\n", sizeof(ssize_t)); - exit(0); - } - _ACEOF -@@ -24863,6 +24865,7 @@ - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include -+$ac_includes_default - #include - #ifdef WIN32 - #define binmode "b" -@@ -24873,7 +24876,7 @@ - { - FILE *f=fopen("conftestval", "w" binmode); - if (!f) exit(1); -- fprintf(f, "%d\n", sizeof(size_t)); -+ fprintf(f, "%zd\n", sizeof(size_t)); - exit(0); - } - _ACEOF -@@ -24927,6 +24930,7 @@ - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include -+$ac_includes_default - #include - #ifdef WIN32 - #define binmode "b" -@@ -24937,7 +24941,7 @@ - { - FILE *f=fopen("conftestval", "w" binmode); - if (!f) exit(1); -- fprintf(f, "%d\n", sizeof(off_t)); -+ fprintf(f, "%zd\n", sizeof(off_t)); - exit(0); - } - _ACEOF -@@ -25308,7 +25312,7 @@ - { - FILE *f=fopen("conftestval", "w" binmode); - if (!f) exit(1); -- fprintf(f, "%d\n", sizeof(ino_t)); -+ fprintf(f, "%zd\n", sizeof(ino_t)); - exit(0); - } - _ACEOF -@@ -25584,6 +25588,7 @@ - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include -+$ac_includes_default - #include - #include - #ifdef WIN32 -@@ -25595,7 +25600,7 @@ - { - FILE *f=fopen("conftestval", "w" binmode); - if (!f) exit(1); -- fprintf(f, "%d\n", sizeof(struct iovec)); -+ fprintf(f, "%zd\n", sizeof(struct iovec)); - exit(0); - } - _ACEOF diff --git a/examples/third_party/bison/bison_repositories.bzl b/examples/third_party/bison/bison_repositories.bzl index 4d92b762..75920c29 100644 --- a/examples/third_party/bison/bison_repositories.bzl +++ b/examples/third_party/bison/bison_repositories.bzl @@ -9,10 +9,10 @@ def bison_repositories(): http_archive, name = "bison", build_file = Label("//bison:BUILD.bison.bazel"), - strip_prefix = "bison-3.3", + strip_prefix = "bison-3.8.2", urls = [ - "https://mirror.bazel.build/ftp.gnu.org/gnu/bison/bison-3.3.tar.gz", - "http://ftp.gnu.org/gnu/bison/bison-3.3.tar.gz", + "https://mirror.bazel.build/ftp.gnu.org/gnu/bison/bison-3.8.2.tar.gz", + "https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.gz", ], - sha256 = "fdeafb7fffade05604a61e66b8c040af4b2b5cbb1021dcfe498ed657ac970efd", + sha256 = "", ) From d58cdf65cd53f7ef4324e524b822184a167f8573 Mon Sep 17 00:00:00 2001 From: James Sharpe Date: Thu, 8 Aug 2024 10:51:41 +0100 Subject: [PATCH 4/6] Upgrade default ninja version to 1.12.1 (#1248) --- MODULE.bazel | 4 ++-- foreign_cc/extensions.bzl | 2 +- foreign_cc/repositories.bzl | 2 +- toolchains/built_toolchains.bzl | 13 +++++++++++++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 2b9a0b17..b9da6314 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -30,7 +30,7 @@ use_repo( "glib_src", "gnumake_src", "meson_src", - "ninja_1.12.0_toolchains", + "ninja_1.12.1_toolchains", "ninja_build_src", "pkgconfig_src", "rules_foreign_cc_framework_toolchains", @@ -39,7 +39,7 @@ use_repo( register_toolchains( "@rules_foreign_cc_framework_toolchains//:all", "@cmake_3.23.2_toolchains//:all", - "@ninja_1.12.0_toolchains//:all", + "@ninja_1.12.1_toolchains//:all", "@python_3_9//:all", "@rules_foreign_cc//toolchains:all", ) diff --git a/foreign_cc/extensions.bzl b/foreign_cc/extensions.bzl index ca239241..f195d3af 100644 --- a/foreign_cc/extensions.bzl +++ b/foreign_cc/extensions.bzl @@ -4,7 +4,7 @@ load("//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies") load("//toolchains:prebuilt_toolchains.bzl", "prebuilt_toolchains") _DEFAULT_CMAKE_VERSION = "3.23.2" -_DEFAULT_NINJA_VERSION = "1.12.0" +_DEFAULT_NINJA_VERSION = "1.12.1" cmake_toolchain_version = tag_class(attrs = { "version": attr.string(doc = "The cmake version", default = _DEFAULT_CMAKE_VERSION), diff --git a/foreign_cc/repositories.bzl b/foreign_cc/repositories.bzl index 3350993a..b62df75a 100644 --- a/foreign_cc/repositories.bzl +++ b/foreign_cc/repositories.bzl @@ -11,7 +11,7 @@ def rules_foreign_cc_dependencies( register_default_tools = True, cmake_version = "3.23.2", make_version = "4.4.1", - ninja_version = "1.12.0", + ninja_version = "1.12.1", meson_version = "1.1.1", pkgconfig_version = "0.29.2", register_preinstalled_tools = True, diff --git a/toolchains/built_toolchains.bzl b/toolchains/built_toolchains.bzl index a7d0c5f5..8889b6ea 100644 --- a/toolchains/built_toolchains.bzl +++ b/toolchains/built_toolchains.bzl @@ -135,6 +135,19 @@ def _ninja_toolchain(version, register_toolchains): native.register_toolchains( "@rules_foreign_cc//toolchains:built_ninja_toolchain", ) + if version == "1.12.1": + maybe( + http_archive, + name = "ninja_build_src", + build_file_content = _ALL_CONTENT, + integrity = "sha256-ghvf9Io/aDvEuztvC1/nstZHz2XVKutjMoyRpsbfKFo=", + strip_prefix = "ninja-1.12.1", + urls = [ + "https://mirror.bazel.build/github.com/ninja-build/ninja/archive/v1.12.1.tar.gz", + "https://github.com/ninja-build/ninja/archive/v1.12.1.tar.gz", + ], + ) + return if version == "1.12.0": maybe( http_archive, From af66969246d19992872d24e51a7a8c136a8e4bef Mon Sep 17 00:00:00 2001 From: Michael Allwright Date: Thu, 8 Aug 2024 12:19:19 +0200 Subject: [PATCH 5/6] Add setup_args and run `meson setup` explictly (#1223) Co-authored-by: James Sharpe --- foreign_cc/meson.bzl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/foreign_cc/meson.bzl b/foreign_cc/meson.bzl index 33f38a35..804a0ff5 100644 --- a/foreign_cc/meson.bzl +++ b/foreign_cc/meson.bzl @@ -110,10 +110,13 @@ def _create_meson_script(configureParameters): prefix = "{} ".format(expand_locations_and_make_variables(ctx, attrs.tool_prefix, "tool_prefix", data)) if attrs.tool_prefix else "" - script.append("{prefix}{meson} --prefix={install_dir} {options} {source_dir}".format( + setup_args_str = " ".join(expand_locations_and_make_variables(ctx, ctx.attr.setup_args, "setup_args", data)) + + script.append("{prefix}{meson} setup --prefix={install_dir} {setup_args} {options} {source_dir}".format( prefix = prefix, meson = attrs.meson_path, install_dir = "$$INSTALLDIR$$", + setup_args = setup_args_str, options = options_str, source_dir = "$$EXT_BUILD_ROOT$$/" + root, )) @@ -171,6 +174,10 @@ def _attrs(): mandatory = False, default = {}, ), + "setup_args": attr.string_list( + doc = "Arguments for the Meson setup command", + mandatory = False, + ), }) return attrs From 509b5aa6d655b7ca9a19db57aa82e0aee53ee4ed Mon Sep 17 00:00:00 2001 From: Thomas Lam Date: Thu, 8 Aug 2024 19:22:40 +0800 Subject: [PATCH 6/6] Portable copy_dir_contents_to_dir (#1246) Co-authored-by: James Sharpe --- foreign_cc/private/framework/toolchains/freebsd_commands.bzl | 4 ++-- foreign_cc/private/framework/toolchains/macos_commands.bzl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/foreign_cc/private/framework/toolchains/freebsd_commands.bzl b/foreign_cc/private/framework/toolchains/freebsd_commands.bzl index ccc6e58b..9fb552f5 100644 --- a/foreign_cc/private/framework/toolchains/freebsd_commands.bzl +++ b/foreign_cc/private/framework/toolchains/freebsd_commands.bzl @@ -95,11 +95,11 @@ fi ) def copy_dir_contents_to_dir(source, target): - # Beause FreeBSD `cp` doesn't have `--no-copy-directory`, we have to + # Beause FreeBSD `cp` doesn't have `--no-target-directory`, we have to # do something more complex for this environment. return """\ if [[ -d "{source}" ]]; then - cp -L -R "{source}"/* "{target}" + cp -L -R "{source}"/. "{target}" else cp -L -R "{source}" "{target}" fi diff --git a/foreign_cc/private/framework/toolchains/macos_commands.bzl b/foreign_cc/private/framework/toolchains/macos_commands.bzl index c088a967..ed04f241 100644 --- a/foreign_cc/private/framework/toolchains/macos_commands.bzl +++ b/foreign_cc/private/framework/toolchains/macos_commands.bzl @@ -86,11 +86,11 @@ fi ) def copy_dir_contents_to_dir(source, target): - # Beause macos `cp` doesn't have `--no-copy-directory`, we have to + # Beause macos `cp` doesn't have `--no-target-directory`, we have to # do something more complext for this environment. return """\ if [[ -d "{source}" ]]; then - cp -L -R "{source}"/ "{target}" + cp -L -R "{source}"/. "{target}" else cp -L -R "{source}" "{target}" fi