# ChangeLog for dev-ros/filters
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*filters-9999 (22 Sep 2015)
*filters-1.7.4 (22 Sep 2015)

  22 Sep 2015; Alexis Ballier <aballier@gentoo.org> +files/tests.patch,
  +filters-1.7.4.ebuild, +filters-9999.ebuild, +metadata.xml:
  Initial import. Ebuild by me.

  Package-Manager: portage-2.2.21

  07 Oct 2015; Alexis Ballier <aballier@gentoo.org> +files/rostest.patch,
  filters-1.7.4.ebuild:
  Backport upstream fix to build without rostest when tests are not enabled.
  Bug #562466.

  Package-Manager: portage-2.2.22

  16 Oct 2015; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Update remote-ids

  Signed-off-by: Justin Lecher <jlec@gentoo.org>

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Unify quoting in metadata.xml files for machine processing

  Force unified quoting in all metadata.xml files since lxml does not
  preserve original use of single and double quotes. Ensuring unified
  quoting before the process allows distinguishing the GLEP 67-related
  metadata.xml changes from unrelated quoting changes.

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Replace all herds with appropriate projects (GLEP 67)

  Replace all uses of herd with appropriate project maintainers, or no
  maintainers in case of herds requested to be disbanded.

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Set appropriate maintainer types in metadata.xml (GLEP 67)

*filters-1.7.4-r1 (07 Oct 2016)

  07 Oct 2016; Alexis Ballier <aballier@gentoo.org> -filters-1.7.4.ebuild,
  +filters-1.7.4-r1.ebuild, filters-9999.ebuild:
  add missing dep on boost

  Package-Manager: portage-2.3.1

