# ChangeLog for net-misc/ptpd
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*ptpd-2.3.1 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +files/ptpd2.confd,
  +files/ptpd2.rc, +files/ptpd2.service, +metadata.xml, +ptpd-2.3.1.ebuild:
  proj/gentoo: Initial commit

  This commit represents a new era for Gentoo:
  Storing the gentoo-x86 tree in Git, as converted from CVS.

  This commit is the start of the NEW history.
  Any historical data is intended to be grafted onto this point.

  Creation process:
  1. Take final CVS checkout snapshot
  2. Remove ALL ChangeLog* files
  3. Transform all Manifests to thin
  4. Remove empty Manifests
  5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
  5.1. Do not touch files with -kb/-ko keyword flags.

  Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
  X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration
  tests
  X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this
  project
  X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo
  developer, wrote Git features for the migration
  X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve
  cvs2svn
  X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
  X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014
  work in migration
  X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
  X-Thanks: All of other Gentoo developers - many ideas and lots of paint on
  the bikeshed

  24 Aug 2015; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Use https by default

  Convert all URLs for sites supporting encrypted connections from http to
  https

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

  24 Aug 2015; Mike Gilbert <floppym@gentoo.org> metadata.xml:
  Revert DOCTYPE SYSTEM https changes in metadata.xml

  repoman does not yet accept the https version.
  This partially reverts eaaface92ee81f30a6ac66fe7acbcc42c00dc450.

  Bug: https://bugs.gentoo.org/552720

  31 Oct 2015; Ian Delaney <idella4@gentoo.org> metadata.xml:
  metadata.xml: update maintainer's email address

  Package-Manager: portage-2.2.23

  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)

  18 May 2016; Austin English <wizardedit@gentoo.org> files/ptpd2.rc:
  use #!/sbin/openrc-run instead of #!/sbin/runscript

  08 Aug 2016; Patrice Clement <monsieurp@gentoo.org> ptpd-2.3.1.ebuild:
  update homepage and source

  Closes: https://github.com/gentoo/gentoo/pull/1878

  Signed-off-by: Patrice Clement <monsieurp@gentoo.org>

*ptpd-2.3.1-r1 (08 Aug 2016)

  08 Aug 2016; Patrice Clement <monsieurp@gentoo.org> +ptpd-2.3.1-r1.ebuild:
  fix bug #587328 dep/snmp.c:224:9: error: unknown type name ‘U64’

  Closes: https://github.com/gentoo/gentoo/pull/1878

  Signed-off-by: Patrice Clement <monsieurp@gentoo.org>

  08 Aug 2016; Patrice Clement <monsieurp@gentoo.org> metadata.xml:
  correct metadata.xml to contain correct upstream source

  Closes: https://github.com/gentoo/gentoo/pull/1878

  Signed-off-by: Patrice Clement <monsieurp@gentoo.org>

  08 Aug 2016; Patrice Clement <monsieurp@gentoo.org> ptpd-2.3.1-r1.ebuild:
  fix EROOT, remove redundant eutils inheritance

  Closes: https://github.com/gentoo/gentoo/pull/1878

  Signed-off-by: Patrice Clement <monsieurp@gentoo.org>

