CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [2.8.0] - 2024-10-11

### Fixed

- Fix the firmware and pack commands when a dependency is using semver.

### Changed

- Renamed the grisp firmware command argument --force-bundle/-F and the grisp
  pack command argument --force-bundle/-F to --refresh/-r. [#91](https://github.com/grisp/rebar3_grisp/pull/92)

### Removed

- The utility function rebar3_grisp_util:rebar_command/4 has been removed as it
  runs app_discovery provider again and that causes issues with dependencies
  using semver. Instead rebar3:run/1 is used. [#91](https://github.com/grisp/rebar3_grisp/pull/92)

## [2.7.0] - 2024-09-06

### Added

- New `-t/--tar` option to the deploy command to save a grisp release tarball in
  the `_grisp/deploy` directory.
- New firmware command to generate GRiSP 2 binary firmwares: [#83](https://github.com/grisp/rebar3_grisp/pull/83)
- New pack command to generate GRiSP 2 software update package: [#85](https://github.com/grisp/rebar3_grisp/pull/85)

### Changed

- The deploy destination in rebar.config is now optional if the -t/--tar option
  is specified to the deploy command. To disable a copy deployment when
  configured in rebar.config, an empty destination can be specified on the
  command line: `--destination=""`.

## [2.6.1] - 2024-06-21
### Changed
- Adapation to the new format of the prompt provided by `grisp_tools_configure:settings/0`: [#81](https://github.com/grisp/rebar3_grisp/pull/81)
- User input are now asked using events for `configure` task: [#81](https://github.com/grisp/rebar3_grisp/pull/81)

## [2.6.0] - 2024-05-07

### Added

- New `rebar3 grisp configure` command to create a custom GRiSP application. It replaces the command `rebar3 new grispapp` as a new way to create a custom GRiSP application: [#78](https://github.com/grisp/rebar3_grisp/pull/78)

### Removed

- Removed the *grispapp* template: [#78](https://github.com/grisp/rebar3_grisp/pull/78)

### Fixed

- CI update to only test OTP 24 and 25: [#79](https://github.com/grisp/rebar3_grisp/pull/79)

## [2.5.0] - 2023-04-21

### Added

- New `rebar3 grisp report` command: groups and packs usefull debug information
about the current grisp project
- New rebar.config option `{docker, "grisp/grisp2-rtems-toolchain"}` is available for the grisp toolchain. Allows to use a docker image instead of a local installation.

### Changed

- Set default Erlang version to `"25.2.3"` in grispapp template

## [2.4.0] - 2022-07-18

### Added

- A `--cached` flag to `rebar3 grisp package list` to list only cached
  packages
- Support for OTP 24

### Fixed

- Crash when listing packages
- Download skipped if using OTP package cache

## [2.3.0] - 2022-06-07

### Added

- Exact OTP version selection, e.g. '=23.3'
- Toolchain validation before building

### Changed

- The OTP Git repository is more thoroughly checked for consistency

### Fixed

- Deploy and build tasks now works offline
- Extracted packages are cached globally instead of per project
- Custom builds now correctly uses OTP versions from Git
- `rebar3 package list` now sorts versions correctly

## [2.2.2] - 2022-03-01

### Fixed

- Fix processing of already downloaded OTP packages (through grisp_tools)

## [2.2.1] - 2022-03-01

### Added

- Automatically pick the highest version when only the release name is
  specified during deployment (#64)
- `rebar3 grisp package list` can now list both OTP and toolchain packages. In
  addition, it can display only certain columns.
- OTP Git cloning is now shallow (using `--dethp 1`) which more than halves the
  download time of OTP sources.

### Fixed

- Deploys no longer crash on invalid release names or versions (#68)

## [2.2.0] - 2022-02-16

### Added

- `rebar3 grisp package list` can now take a `--hash` flag that prints all hash versions of a package

### Changed

- Deploying without a custom OTP build will correctly pick a version from
  existing pre-built packages or show a proper error

## [2.1.0] - 2022-02-14

### Added

- `rebar3 grisp package list` task that lists pre-built OTP package versions

### Changed

- `deploy` task no longer requires specifying release name and version if there
  is only one release

### Fixed

- Template rendering no longer crashes when environment variables contain
  unicode (#42)

## [2.0.0] - 2022-02-01

**BREAKING CHANGE:** Require `GRISP_TC_ROOT` for all Erlang version to point
to the tool chain root folder and not the subfolder `rtems/5`. If you have
configured the setting `grisp.build.toolchain.directory` you need to remove
the `rtems/5` postfix if present.

### Changed

- Default platform is now `grisp2`

### Added

- Patch for OTP 23.3.4

### Fixed

- Don't build unused apps
- Enhanced build logging
- Use correct `system_libs` path for rebar3 3.14+

## [1.3.0] - 2020-03-09

### Changed

- Use Erlang 22 by default [\#60](https://github.com/grisp/rebar3_grisp/issues/60)

### Fixed

- Error in build phase [\#55](https://github.com/grisp/rebar3_grisp/issues/55)

## [1.2.6] - 2019-09-27

### Changed

- Update grisp\_tools dependency to 0.2.6 [\#58](https://github.com/grisp/rebar3_grisp/pull/58) ([nextl00p](https://github.com/nextl00p))

## [1.2.5] - 2019-09-27

### Changed

- Remove deprecated maintainers section [\#57](https://github.com/grisp/rebar3_grisp/pull/57) ([nextl00p](https://github.com/nextl00p))

## [1.2.4] - 2019-09-27

### Added

- Add support for OTP 22 [\#47](https://github.com/grisp/rebar3_grisp/pull/47) ([sylane](https://github.com/sylane))
- Add support for NIFs [\#46](https://github.com/grisp/rebar3_grisp/pull/46) ([nextl00p](https://github.com/nextl00p))

### Changed

- Refactor deploy logic into grisp\_tools library [\#39](https://github.com/grisp/rebar3_grisp/issues/39)

### Fixed

- Handle duplicate C source files from different apps [\#1](https://github.com/grisp/rebar3_grisp/issues/1)
- Files in grisp/grisp\_base/\*/\*.c are ignored in user applications [\#45](https://github.com/grisp/rebar3_grisp/issues/45)
- Fix OTP 21.0-rc1 patch [\#56](https://github.com/grisp/rebar3_grisp/pull/56) ([nextl00p](https://github.com/nextl00p))
- Prebuild OTP filename depends on Board now [\#52](https://github.com/grisp/rebar3_grisp/pull/52) ([nextl00p](https://github.com/nextl00p))
- Revert "Prebuild OTP filename depends on Board now" [\#54](https://github.com/grisp/rebar3_grisp/pull/54) ([nextl00p](https://github.com/nextl00p))
- Fix OTP 22 patches after adding NIF support [\#53](https://github.com/grisp/rebar3_grisp/pull/53) ([sylane](https://github.com/sylane))
- Fix patch files to support NIFs for all supported OTP versions [\#50](https://github.com/grisp/rebar3_grisp/pull/50) ([nextl00p](https://github.com/nextl00p))
- Detect GRiSP files in current project as well, add debug output, fix \#45 [\#48](https://github.com/grisp/rebar3_grisp/pull/48) ([nextl00p](https://github.com/nextl00p))
- Fix failing deploy [\#44](https://github.com/grisp/rebar3_grisp/pull/44) ([nextl00p](https://github.com/nextl00p))
- Already Patched OTP is not detected anymore [\#49](https://github.com/grisp/rebar3_grisp/issues/49)
- Deploy fails [\#43](https://github.com/grisp/rebar3_grisp/issues/43)

## [1.2.3] - 2018-08-07

### Added

- Print a proper error for missing template keys [\#37](https://github.com/grisp/rebar3_grisp/issues/37)

### Fixed

- Default GRiSP sources overwrite custom sources [\#38](https://github.com/grisp/rebar3_grisp/issues/38)

## [1.2.2] - 2018-08-01

### Fixed

- Templates do not work when deploying [\#36](https://github.com/grisp/rebar3_grisp/issues/36)

## [1.2.1] - 2018-08-01

### Fixed

- Templates do not work when building [\#35](https://github.com/grisp/rebar3_grisp/issues/35)

## [1.2.0] - 2018-07-31

### Added

- Add version task that prints version number [\#33](https://github.com/grisp/rebar3_grisp/pull/33) ([eproxus](https://github.com/eproxus))
- Include environment variables in templates [\#32](https://github.com/grisp/rebar3_grisp/pull/32) ([eproxus](https://github.com/eproxus))
- Re-introduce GRISP\_TOOLCHAIN environment variable [\#34](https://github.com/grisp/rebar3_grisp/pull/34) ([eproxus](https://github.com/eproxus))

## [1.1.5] - 2018-06-25

### Fixed

- Weird directory with name " created during deploy [\#30](https://github.com/grisp/rebar3_grisp/issues/30)

## [1.1.4] - 2018-06-21

### Changed

* Use OTP 21.0 by default for new apps ([c4274c1a](https://github.com/grisp/rebar3_grisp/commit/c4274c1a328b83ba9b3a4b16cf5cd77ce60b4110 "Use 21.0 by default for new apps"))

[Full Changelog][1.1.4]

## [1.1.3] - 2018-06-21

### Added

* Support OTP 21.0 ([9975e51d](https://github.com/grisp/rebar3_grisp/commit/9975e51d17c8f230f9edbd7bc5d843a453a3d9c0 "Add patch for OTP 21.0"))

## [1.1.2] - 2018-06-06

### Added

- deploy: added support for whitespaces in source and deployment directories [\#28](https://github.com/grisp/rebar3_grisp/pull/28) ([lwehmeier](https://github.com/lwehmeier))
- Add support for OTP 21.0-rc1 [\#25](https://github.com/grisp/rebar3_grisp/pull/25) ([sylane](https://github.com/sylane))

### Changed

- Remove references to old versions [\#27](https://github.com/grisp/rebar3_grisp/pull/27) ([nextl00p](https://github.com/nextl00p))

### Fixed

- consistency of the instructions for release name [\#26](https://github.com/grisp/rebar3_grisp/pull/26) ([CrowdHailer](https://github.com/CrowdHailer))

## [1.1.1] - 2018-05-25

### Fixed

- Freshly generated grispapp fails to deploy the first time its run [\#23](https://github.com/grisp/rebar3_grisp/issues/23)

## [1.1.0] - 2018-05-24

### Added

- Prebuilt toolchain [\#20](https://github.com/grisp/rebar3_grisp/pull/20) ([nextl00p](https://github.com/nextl00p))
- Add version to OTP xcomp files [\#18](https://github.com/grisp/rebar3_grisp/pull/18) ([sylane](https://github.com/sylane))
- Make deploy destination available via command-line flag [\#5](https://github.com/grisp/rebar3_grisp/issues/5)
- Start Erlang runtime when source dependencies are included [\#21](https://github.com/grisp/rebar3_grisp/issues/21)

### Changed

- Refactor build configuration [\#16](https://github.com/grisp/rebar3_grisp/pull/16) ([sylane](https://github.com/sylane))

### Fixed

- Confusing error message, when no toolchain root is set [\#4](https://github.com/grisp/rebar3_grisp/issues/4)
- Allow deploy without grisp runtime and fix version warning [\#17](https://github.com/grisp/rebar3_grisp/pull/17) ([sylane](https://github.com/sylane))
- Wrong warning about Erlang version mismatch [\#14](https://github.com/grisp/rebar3_grisp/issues/14)

## [1.0.1] - 2017-12-20

### Changed

* Update to Erlang 20.2 by default for new projects ([d8b48ad3](https://github.com/grisp/rebar3_grisp/commit/d8b48ad354f04ff67bda928c955399be29580ce3))

## [1.0.0] - 2017-12-19

### Added

- Document rebar3 grisp build [\#3](https://github.com/grisp/rebar3_grisp/issues/3)
- Make OTP version branch customizable [\#12](https://github.com/grisp/rebar3_grisp/pull/12) ([eproxus](https://github.com/eproxus))
- Make SMP the default and add support for OTP 20.2 [\#13](https://github.com/grisp/rebar3_grisp/pull/13) ([sylane](https://github.com/sylane))

### Fixed

- With default profile section ERTS does not get included [\#8](https://github.com/grisp/rebar3_grisp/issues/8)

## [0.1.1] - 2017-12-05

### Added

* GRiSP application template
* Deploy command
* Ensure install directory before installing
* Option to turn off running configure
* Pre- and post-script options to deploy
* Copy all files from project file section


### Changed

* Install OTP locally after build

Modify release configuration dynamically

### Fixed

* Avoid patching OTP if already patched
* Fix bug finding grisp application

## [0.1.0] - 2017-10-20

### Added

* Initial release.

[unreleased]: https://github.com/grisp/rebar3_grisp/compare/2.8.0...HEAD
[2.8.0]: https://github.com/grisp/rebar3_grisp/compare/2.7.0...2.8.0
[2.7.0]: https://github.com/grisp/rebar3_grisp/compare/2.6.1...2.7.0
[2.6.1]: https://github.com/grisp/rebar3_grisp/compare/2.6.0...2.6.1
[2.6.0]: https://github.com/grisp/rebar3_grisp/compare/2.5.0...2.6.0
[2.5.0]: https://github.com/grisp/rebar3_grisp/compare/2.4.0...2.5.0
[2.4.0]: https://github.com/grisp/rebar3_grisp/compare/2.3.0...2.4.0
[2.3.0]: https://github.com/grisp/rebar3_grisp/compare/2.2.2...2.3.0
[2.2.2]: https://github.com/grisp/rebar3_grisp/compare/2.2.1...2.2.2
[2.2.1]: https://github.com/grisp/rebar3_grisp/compare/2.2.0...2.2.1
[2.2.0]: https://github.com/grisp/rebar3_grisp/compare/2.1.0...2.2.0
[2.1.0]: https://github.com/grisp/rebar3_grisp/compare/2.0.0...2.1.0
[2.0.0]: https://github.com/grisp/rebar3_grisp/compare/1.3.0...2.0.0
[1.3.0]: https://github.com/grisp/rebar3_grisp/compare/1.2.6...1.3.0
[1.2.6]: https://github.com/grisp/rebar3_grisp/compare/1.2.5...1.2.6
[1.2.5]: https://github.com/grisp/rebar3_grisp/compare/1.2.4...1.2.5
[1.2.4]: https://github.com/grisp/rebar3_grisp/compare/1.2.3...1.2.4
[1.2.3]: https://github.com/grisp/rebar3_grisp/compare/1.2.2...1.2.3
[1.2.2]: https://github.com/grisp/rebar3_grisp/compare/1.2.1...1.2.2
[1.2.1]: https://github.com/grisp/rebar3_grisp/compare/1.2.0...1.2.1
[1.2.0]: https://github.com/grisp/rebar3_grisp/compare/1.1.5...1.2.0
[1.1.5]: https://github.com/grisp/rebar3_grisp/compare/1.1.4...1.1.5
[1.1.4]: https://github.com/grisp/rebar3_grisp/compare/1.1.3...1.1.4
[1.1.3]: https://github.com/grisp/rebar3_grisp/compare/1.1.2...1.1.3
[1.1.2]: https://github.com/grisp/rebar3_grisp/compare/1.1.1...1.1.2
[1.1.1]: https://github.com/grisp/rebar3_grisp/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/grisp/rebar3_grisp/compare/1.0.1...1.1.0
[1.0.1]: https://github.com/grisp/rebar3_grisp/compare/1.0.0...1.0.1
[1.0.0]: https://github.com/grisp/rebar3_grisp/compare/0.1.1...1.0.0
[0.1.1]: https://github.com/grisp/rebar3_grisp/compare/0.1.0...0.1.1
[0.1.0]: https://github.com/grisp/rebar3_grisp/compare/5a76a33028c2ee90ee0ebae52bb4dda94c991594...0.1.0