diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..be7c39d --- /dev/null +++ b/NEWS.md @@ -0,0 +1,57 @@ +# News + +**March 2021:** + +These rules are now maintained by the community. + +_Note_: After this release we will be bumping the minimum tested version to _4.0.0_. + +- Added repository rules for downloading prebuilt versions of cmake and ninja + rather than relying on system installed tools. + +- Added native ninja build rule + +- Now builds under the Bazel sandbox rather than in `/tmp` + +- Tidied up the structure of the examples directory + +- Deprecated the old rules `install_ws_dependency` and `cc_configure_make` + +- Autogenerated documentation was added + +**March 2019:** + +- Support for versions earlier than 0.22 was removed. + +- Tests on Bazel CI are running in the nested workspace + +**January 2019:** + +- Bazel 0.22.0 is released, no flags are needed for this version, but it does not work on Windows (Bazel C++ API is broken). + +- Support for versions earlier than 0.20 was removed. + +- [rules_foreign_cc take-aways](https://docs.google.com/document/d/1ZVvzvkUVTkPCzI-2z4S4VrSNu4kdaBknz7UnK8vaoZU/edit?usp=sharing) describing the recent work has been published. + +- Examples package became the separate workspace. + This also allows to illustrate how to initialize rules_foreign_cc. + +- Native tools (cmake, ninja) toolchains were introduced. + Though the user code does not have to be changed (default toolchains are registered, they call the preinstalled binaries by name.), + you may simplify usage of ninja with the cmake_external rule and call it just by name. + Please see examples/cmake_nghttp2 for ninja usage, and WORKSPACE and BUILD files in examples for the native tools toolchains usage + (the locally preinstalled tools are registered by default, the build as part of the build tools are used in examples). + Also, in examples/with_prebuilt_ninja_artefact you can see how to download and use prebuilt artifact. + +- Shell script parts were extracted into a separate toolchain. + Shell script inside framework.bzl is first created with special notations: + - `export var_name=var_value` for defining the environment variable + - `$$var_name$$` for referencing environment variable + - `` `shell_command ` `` for calling shell fragment + + The created script is further processed to get the real shell script with shell parts either + replaced with actual fragments or with shell function calls (functions are added into the beginning of the script). + Extracted shell fragments are described in commands.bzl. + + Further planned steps in this direction: testing with RBE, shell script fragments for running on Windows without msys/mingw, + tests for shell fragments. diff --git a/README.md b/README.md index 2c6627e..1441b99 100644 --- a/README.md +++ b/README.md @@ -20,62 +20,8 @@ in future changes as these older versions are not tested. ## News -**March 2021:** - -These rules are now maintained by the community. - -*Note*: After this release we will be bumping the minimum tested version to *4.0.0*. - -- Added repository rules for downloading prebuilt versions of cmake and ninja - rather than relying on system installed tools. - -- Added native ninja build rule - -- Now builds under the Bazel sandbox rather than in `/tmp` - -- Tidied up the structure of the examples directory - -- Deprecated the old rules `install_ws_dependency` and `cc_configure_make` - -- Autogenerated documentation was added - -**March 2019:** - -- Support for versions earlier than 0.22 was removed. - -- Tests on Bazel CI are running in the nested workspace - -**January 2019:** - -- Bazel 0.22.0 is released, no flags are needed for this version, but it does not work on Windows (Bazel C++ API is broken). - -- Support for versions earlier than 0.20 was removed. - -- [rules_foreign_cc take-aways](https://docs.google.com/document/d/1ZVvzvkUVTkPCzI-2z4S4VrSNu4kdaBknz7UnK8vaoZU/edit?usp=sharing) describing the recent work has been published. - -- Examples package became the separate workspace. - This also allows to illustrate how to initialize rules_foreign_cc. - -- Native tools (cmake, ninja) toolchains were introduced. - Though the user code does not have to be changed (default toolchains are registered, they call the preinstalled binaries by name.), - you may simplify usage of ninja with the cmake_external rule and call it just by name. - Please see examples/cmake_nghttp2 for ninja usage, and WORKSPACE and BUILD files in examples for the native tools toolchains usage - (the locally preinstalled tools are registered by default, the build as part of the build tools are used in examples). - Also, in examples/with_prebuilt_ninja_artefact you can see how to download and use prebuilt artifact. - -- Shell script parts were extracted into a separate toolchain. - Shell script inside framework.bzl is first created with special notations: - - - `export var_name=var_value` for defining the environment variable - - `$$var_name$$` for referencing environment variable - - `shell_command ` for calling shell fragment - - The created script is further processed to get the real shell script with shell parts either - replaced with actual fragments or with shell function calls (functions are added into the beginning of the script). - Extracted shell fragments are described in commands.bzl. - - Further planned steps in this direction: testing with RBE, shell script fragments for running on Windows without msys/mingw, - tests for shell fragments. +For more generalized updates, please see [NEWS.md](./NEWS.md) or checkout the +[release notes](https://github.com/bazelbuild/rules_foreign_cc/releases) of current or previous releases ## Building CMake projects