From f723b8b878a3c4a4687b9e337a875500bebb39b1 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Thu, 4 Jul 2019 11:18:12 +0100 Subject: feat(third_party/bazel): Check in rules_haskell from Tweag --- third_party/bazel/rules_haskell/CHANGELOG.md | 461 +++++++++++++++++++++++++++ 1 file changed, 461 insertions(+) create mode 100644 third_party/bazel/rules_haskell/CHANGELOG.md (limited to 'third_party/bazel/rules_haskell/CHANGELOG.md') diff --git a/third_party/bazel/rules_haskell/CHANGELOG.md b/third_party/bazel/rules_haskell/CHANGELOG.md new file mode 100644 index 000000000000..af0fe7ddc581 --- /dev/null +++ b/third_party/bazel/rules_haskell/CHANGELOG.md @@ -0,0 +1,461 @@ +# Change Log + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/). + +## [0.9.1] - 2019-06-03 + +### Fixed + +- Bindists were broken on MacOS. + See [884](https://github.com/tweag/rules_haskell/issues/884). + +## [0.9] - 2019-05-07 + +### Highlights + +* The minimum supported Bazel version is now v0.24. + + The version is available from [`nixpkgs + unstable`](https://github.com/NixOS/nixpkgs/pull/58147) and via + [`official + releases`](https://docs.bazel.build/versions/master/install.html). + +* Initial Windows support + + A non-trivial subset of `rules_haskell` is now working on Windows. + See the [`project + tracker`](https://github.com/tweag/rules_haskell/issues?q=is%3Aopen+is%3Aissue+project%3Atweag%2Frules_haskell%2F2) + for finished and ongoing work. + +* Improved OSX support + + Due to the `mach-o` header size limit, we took extra measures to + make sure generated library paths are as short as possible, so + linking haskell binaries works even for large dependency graphs. + +* Better Bindist support + + The default [`start` script](http://haskell.build/start) sets up a + bindist-based project by default. + + `rules_nixpkgs` is no longer a required dependency of + `rules_haskell` (but can still be used as backend). + +* Full Haskell–C–Haskell Sandwich + + A `haskell_library` can be now be used nearly anywhere a + `cc_library` can. + + The old `cc_haskell_import` and `haskell_cc_import` wrapper rules + are no longer necessary and have been deprecated. + +* Greatly improved REPL support + + A new `haskell_repl` rule allows to load multiple source targets by + source, or compiled, as needed. Example usage: + + ``` + haskell_repl( + name = "my-repl", + # Collect all transitive Haskell dependencies from these targets. + deps = [ + "//package-a:target-1", + "//package-b:target-2", + ], + # Load targets by source that match these patterns. + include = [ + "//package-a/...", + "//packaga-b/...", + "//common/...", + ], + # Don't load targets by source that match these patterns. + exclude = [ + "//package-a/vendored/...", + ], + ) + ``` + +* Support for GHC plugins + + Each `haskell_*` rule now has a `plugins` attribute. It takes a + list of bazel targets, which should be `haskell_library`s that + implement the [GHC plugin + specification](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/extending_ghc.html#compiler-plugins). + +* Initial Code Coverage support + + Measure coverage of your Haskell code. See the [“Checking Code + Coverage”](https://rules-haskell.readthedocs.io/en/latest/haskell-use-cases.html#checking-code-coverage) + section in the manual. + +### Compatibility Notice + +[`hazel`](https://github.com/FormationAI/hazel) was [merged into +`rules_haskell`](https://github.com/tweag/rules_haskell/pull/733), but +we are not yet certain about the exact interface we want to expose. +`hazel` is therefore not included in this release, and we can’t +guarantee the original, unmerged version is compatible with this +release. If you depend on `hazel`, please use a recent `master` commit +of `rules_haskell`. + +### Changed + +* `haskell_register_ghc_bindists` is no longer re-exported from + `//haskell/haskell.bzl`. + You must now load that macro from `//haskell:nixpkgs.bzl`. + +* `rules_nixpkgs` is no longer a dependency of `rules_haskell`. + +* `haskell_import` has been renamed to `haskell_toolchain_library`. + This is a substantial breaking change. But adapting to it should be + as simple as + + ``` + sed -i 's/^haskell_import/haskell_toolchain_library/' **/BUILD{,.bazel} + sed -i 's/"haskell_import"/"haskell_toolchain_library"/' **/BUILD{,.bazel} + ``` + + See [#843](https://github.com/tweag/rules_haskell/pull/843). + +* `haskell_toolchain`’s tools attribute is now a list of labels. + Earlier entries take precendence. To migrate, add `[]` around your + argument. + See [#854](https://github.com/tweag/rules_haskell/pull/854). + +* The default outputs of `haskell_library` are now the static and/or + shared library files, not the package database config and cache + files. + +### Added + +* `haskell_repl` rule that constructs a ghci wrapper that loads + multiple targets by source. + See [#736](https://github.com/tweag/rules_haskell/pull/736). +* `plugins` attribute to `haskell_*` rules to load GHC plugins. + See [#799](https://github.com/tweag/rules_haskell/pull/799). +* The `HaskellInfo` and `HaskellLibraryInfo` providers are now + exported and thus accessible by downstream rules. + See [#844](https://github.com/tweag/rules_haskell/pull/844). +* Generate version macros for preprocessors (`c2hs`, `hsc2hs`). + See [#847](https://github.com/tweag/rules_haskell/pull/847). +* `bindist_toolchain` rule gets `haddock_flags` and `repl_ghci_args` + attributes. +* `@repl` targets write json file with build information, usable by + IDE tools. + See [#695](https://github.com/tweag/rules_haskell/pull/695). + +### Deprecated + +* `haskell_cc_import`; use `cc_library` instead. + See [#831](https://github.com/tweag/rules_haskell/pull/831). +* `cc_haskell_import`; just use `haskell_library` like a `cc_library`. + See [#831](https://github.com/tweag/rules_haskell/pull/831). + +### Fixed + +* Support protobuf roots in `haskell_proto_library`. + See [#722](https://github.com/tweag/rules_haskell/pull/722). +* Made GHC bindist relocatable on *nix. + See [#853](https://github.com/tweag/rules_haskell/pull/853). +* Various other fixes + +## [0.8] - 2019-01-28 + +* The minimum supported Bazel version is now v0.21. + +### Added + +* `haskell_register_toolchains`, `haskell_register_ghc_bindists` and + `haskell_register_ghc_nixpkgs` to register multiple toolchains for + multiple platforms at once. Toolchains from binary distributions can + now coexist with toolchains from Nixpkgs, even on the same platform. + On nixpkgs you need to provide a toolchain. See + [the `README`](./README.md#Nixpkgs) for instructions. + See [#597](https://github.com/tweag/rules_haskell/pull/597) + and [#610](https://github.com/tweag/rules_haskell/pull/610). +* Instructions on how to reference a local checkout of `rules_haskell`. +* `rules_haskell` is forward-compatible with the next breaking changes + in `bazel` versions, via the `--all_incompatible_changes` flag. + See [#613](https://github.com/tweag/rules_haskell/pull/613). + +### Removed + +* The `generate_so` attribute of `haskell_binary` and `haskell_test` + has been completely superseded by `linkstatic` in the last release + and became a no-op, so it is removed. +* The `main_file` attribute of `haskell_binary` and `haskell_test` + had been deprecated because it was a no-op, so it is removed. +* The `prebuilt_dependencies` attribute of all haskell rules + had been deprecated two versions ago and is removed. + Use `haskell_import` instead (see docs for usage). +* The `extra_binaries` field is now no longer supported. + +### Changed + +* `ghc_bindist` now requires a `target` argument. Use + `haskell_register_ghc_nixpkgs` to call `ghc_bindist` once per known + target. + See [#610](https://github.com/tweag/rules_haskell/pull/610). +* `ghc_bindist` now registers itself as a toolchain. We no longer + require a separate toolchain definition and registration in addition + to `ghc_bindist`. + See [#610](https://github.com/tweag/rules_haskell/pull/610). +* `c2hs` support is now provided in a separate toolchain called + `c2hs_toolchain`, rather than an optional extra to the + `haskell_toolchain`. + See [#590](https://github.com/tweag/rules_haskell/pull/590). +* Rename bindist arch names so they are the same as in + `rules_go/nodejs`. + +### Fixed + +* Prevent duplicate installs of bazel_skylib + See [#536](https://github.com/tweag/rules_haskell/pull/536). +* Test suite now executes all binaries, various runtime errors were + uncovered. + See [#551](https://github.com/tweag/rules_haskell/pull/551). +* Repl targets that have indirect cc_library dependencies. + See [#576](https://github.com/tweag/rules_haskell/pull/576). +* `linkstatic` for haskell binaries that have an indirect dependency + on a prebuilt haskell package. + See [#569](https://github.com/tweag/rules_haskell/pull/569). +* … and an indirect dependency on a C library. + See [#567](https://github.com/tweag/rules_haskell/pull/567). +* Prefer linking agains static C libraries with `linkstatic`. + See [#587](https://github.com/tweag/rules_haskell/pull/587). +* Haddock flags take precedence over GHC compiler flags. + See [#572](https://github.com/tweag/rules_haskell/pull/572). +* User-defined GHC flags now override default flags. + See [#607](https://github.com/tweag/rules_haskell/pull/607). +* Dynamic transitive C(++) libraries work. + See [#627](https://github.com/tweag/rules_haskell/pull/627). + +## [0.7] - 2018-12-24 + +### Added + +* Support for Bazel 0.20.0. This is now also the lower bound for the + supported version. +* Supported reexported modules, via the + new + [`exports` attribute](http://api.haskell.build/haskell/haskell.html#haskell_library.exports). + See [#357](https://github.com/tweag/rules_haskell/issues/357). +* Support `linkstatic` attribute, for building mostly static binaries. + This is now the default for binaries, to match the C/C++ rules + defaults. + See [#378](https://github.com/tweag/rules_haskell/issues/378). +* It is now possible to set default Haddock flags in the toolchain + definition. + See [#425](https://github.com/tweag/rules_haskell/pull/425). +* Support wrapping Haskell libraries as shared objects callable from + Python. + See [#370](https://github.com/tweag/rules_haskell/issues/370). + +### Changed + +* REPL targets have changed name. If you have a library target `foo`, + then the corresponding REPL target is now called `foo@repl`. It was + previously called `foo-repl`. The old name is still supported but is + deprecated. +* Don't set a default version number anymore in libraries and + binaries. Version numbers, and CPP version macros, are now only used + for packages imported from Hackage. Don't use them otherwise. + See + [#386](https://github.com/tweag/rules_haskell/pull/386), + [#414](https://github.com/tweag/rules_haskell/pull/414) + and [#446](https://github.com/tweag/rules_haskell/pull/446). +* On macOS, we use `ar` for linking, not Libtool. + See [#392](https://github.com/tweag/rules_haskell/pull/392). +* The `runfiles` Haskell library has been broken out into a Cabal + library and published on Hackage. + +### Fixed + +* Make REPL force building of dependencies. + See [#363](https://github.com/tweag/rules_haskell/pull/363). +* Don’t crash on inputs missing `.haddock` interface files. See + [#362](https://github.com/tweag/rules_haskell/pull/362) +* Fix handling of non-unique package names. + See [#403](https://github.com/tweag/rules_haskell/pull/403). + +## [0.6] - 2018-07-21 + +### Added + +* Protocol buffers integration using `proto-lens`. See + [#239](https://github.com/tweag/rules_haskell/pull/239). + +* `strip_include_prefix` attribute to the `haskell_cc_import` rule. See + [#241](https://github.com/tweag/rules_haskell/pull/241). + +* Support for `c2hs` files. See + [#351](https://github.com/tweag/rules_haskell/pull/351). + +* The `extra_srcs` attribute that allows to list non-Haskell source files + that should be visible during compilation and linking (usually useful with + TH). See [#292](https://github.com/tweag/rules_haskell/pull/292). + +* The `extra_binaries` attribute to the `haskell_toolchain` rule. See + [#282](https://github.com/tweag/rules_haskell/issues/282). + +* A Haskell library for looking up runfiles. See + [#302](https://github.com/tweag/rules_haskell/pull/302). + +* A separate toolchain for `doctest`—`haskell_doctest_toolchain`. See + [#310](https://github.com/tweag/rules_haskell/pull/310). + +* The `compiler_flags` attribute to the `haskell_toolchain` rule allowing to + specify default compiler flags. See + [#315](https://github.com/tweag/rules_haskell/issues/315). + +* The ability to set locale to be used during compilation by adding the + `locale` and `locale_archive` attributes to `haskell_toolchain`. See + [#328](https://github.com/tweag/rules_haskell/pull/328). + +* Proper support for profiling. See + [#332](https://github.com/tweag/rules_haskell/pull/332). + +* The `repl_ghci_args` attribute to the `haskell_toolchain` rule. See + [#334](https://github.com/tweag/rules_haskell/pull/334). + +* The `haskell_import` rule allowing us to make specifying dependencies more + uniform and to deprecate the `prebuilt_dependencies` attribute. See + [#337](https://github.com/tweag/rules_haskell/pull/337). + +### Fixed + +* Template Haskell linking against `cc_library`. See + [#218](https://github.com/tweag/rules_haskell/pull/218). + +* Linking issues on MacOS. See + [#221](https://github.com/tweag/rules_haskell/pull/221). + +* GHC packages that correspond to targets with the same name but in + different Bazel packages no longer clash. See + [#219](https://github.com/tweag/rules_haskell/issues/219). + +* Build breakage on MacOS when XCode is not installed. See + [#223](https://github.com/tweag/rules_haskell/pull/223). + +* Bug preventing Haddock generation because of missing dynamic shared + libraries when targets have TH in them. See + [#226](https://github.com/tweag/rules_haskell/pull/226). + +* Hyperlinks between targets contained in different Bazel packages + (Haddocks). See [#231](https://github.com/tweag/rules_haskell/issues/231). + +* Generated source files do not cause issues now. See + [#211](https://github.com/tweag/rules_haskell/pull/211). + +* `data` attributes now allow files in them. See + [#236](https://github.com/tweag/rules_haskell/issues/236). + +* Bug when headers and hsc2hs-produced files were not visible to Haddock. + See [#254](https://github.com/tweag/rules_haskell/pull/254). + +* Bug preventing using genrule-produced headers via `haskell_cc_import`. See + [#268](https://github.com/tweag/rules_haskell/pull/268). + +* Bug that allowed us avoid specifying certain `prebuilt_dependencies` if + they were already specified for transitive dependencies. See + [#286](https://github.com/tweag/rules_haskell/issues/286). + +* Bug that was making modules generated from `.hsc` and `.chs` files and + generated modules in general not available in the REPLs. See + [#323](https://github.com/tweag/rules_haskell/pull/323). + +### Changed + +* Added `-Wnoncanonical-monad-instances` to default warnings in + `haskell_lint`. + +* How REPLs work. Now there is an optional output per binary/library. Its + name is the name of target with `-repl` added. Users can then build and + run such a REPL for any defined target. See + [#220](https://github.com/tweag/rules_haskell/issues/220) and + [#225](https://github.com/tweag/rules_haskell/pull/225). + +* The `haskell_doc` rule now produces self-contained documentation bundle + with unified index. See + [#249](https://github.com/tweag/rules_haskell/pull/249). + +* `haskell_lint` now only lints direct dependencies. See + [#293](https://github.com/tweag/rules_haskell/pull/293). + +* `haskell_doctest` has been re-designed. It's now a normal rule that works + only on direct dependencies and allows to specify modules which should be + tested, pass custom flags to `doctest` executable. See + [#342](https://github.com/tweag/rules_haskell/pull/342). + +* The `prebuilt_dependencies` attribute of `haskell_binary` and + `haskell_library` has been deprecated. See + [#355](https://github.com/tweag/rules_haskell/pull/355). + +## [0.5] - 2018-04-15 + +### Added + +* Support for MacOS, courtesy of Judah Jacobson. See + [#165](https://github.com/tweag/rules_haskell/issues/165). + +* Support for `data` attributes in `haskell_binary` and `haskell_library` + rules. See [#167](https://github.com/tweag/rules_haskell/issues/167). + +* Output on building of GHC bindists so it's clearer what went wrong in case + of a failure. + +* `haskell_repl` rule allowing to interact with GHCi. See + [#82](https://github.com/tweag/rules_haskell/issues/82). + +* Support for GHC 8.4.1 bindist. See + [#175](https://github.com/tweag/rules_haskell/issues/175). + +* `haskell_lint` rule. See + [#181](https://github.com/tweag/rules_haskell/issues/181). + +* `haskell_doctest` rule. See + [#194](https://github.com/tweag/rules_haskell/issues/194). + +### Changed + +* Improved hermeticity of builds. See + [#180](https://github.com/tweag/rules_haskell/pull/180). + +* `cc_haskell_import` now works with `haskell_binary` targets as well. See + [#179](https://github.com/tweag/rules_haskell/issues/179). + +## [0.4] - 2018-02-27 + +### Added + +* `hidden_modules` attribute of the `haskell_library` rule. This allows to + selectively hide modules in a library. See + [#152](https://github.com/tweag/rules_haskell/issues/152). + +### Fixed + +* Test executables now find shared libraries correctly at runtime. See + [#151](https://github.com/tweag/rules_haskell/issues/151). + +* Building of certain modules does not fail with the “file name does not + match module name” message anymore. See + [#139](https://github.com/tweag/rules_haskell/issues/139). + +* Linking issues that resulted in unresolved symbols due to incorrect order + in which static libraries are passed to linker are not resolved. See + [#140](https://github.com/tweag/rules_haskell/issues/140). + +* The “grep not found” error is fixed. See + [#141](https://github.com/tweag/rules_haskell/pull/141). + +* System-level shared libraries introduced by `haskell_cc_import` are now + found correctly during compilation. See + [#142](https://github.com/tweag/rules_haskell/issues/142). + +## [0.3] - 2018-02-13 + +## [0.2] - 2018-01-07 + +## [0.1] - 2018-01-02 -- cgit 1.4.1