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

*librelp-1.2.7-r1 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org>
  +files/librelp-1.2.7-prevent-segfault-with-keepalive.patch,
  +librelp-1.2.7-r1.ebuild, +metadata.xml:
  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

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

*librelp-1.2.9 (07 Mar 2016)

  07 Mar 2016; Thomas D <whissi@whissi.de> +librelp-1.2.9.ebuild:
  Bump to v1.2.9 (Fixes #562138, wrt bug #576708)

  - librelp no longer require GNUtls
  - Bumped to EAPI=6

  Bug: https://bugs.gentoo.org/show_bug.cgi?id=576708

  Package-Manager: portage-2.2.27

  12 Jun 2016; Patrice Clement <monsieurp@gentoo.org> librelp-1.2.9.ebuild:
  Add missing "die"

  Package-Manager: portage-2.3.0_rc1
  Closes: https://github.com/gentoo/gentoo/pull/1658

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

*librelp-1.2.10 (12 Jun 2016)

  12 Jun 2016; Patrice Clement <monsieurp@gentoo.org> +librelp-1.2.10.ebuild:
  Version bump to v1.2.10

  Package-Manager: portage-2.3.0_rc1
  Closes: https://github.com/gentoo/gentoo/pull/1658

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

  12 Jun 2016; Patrice Clement <monsieurp@gentoo.org> librelp-1.2.7-r1.ebuild,
  librelp-1.2.9.ebuild, librelp-1.2.10.ebuild:
  Adjusting license to GPL-3+ instead of GPL-3

  According to

    - COPYING (every version in tree)
    - src/{lib,}relp.h  (since v1.2.9)

  > * Librelp is free software: you can redistribute it and/or modify
  > * it under the terms of the GNU General Public License as published by
  > * the Free Software Foundation, either version 3 of the License, or
  > * (at your option) any later version.

  Reported-by: Gokturk Yuksek <gokturk@gentoo.org>

  Package-Manager: portage-2.3.0_rc1
  Closes: https://github.com/gentoo/gentoo/pull/1658

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

*librelp-1.2.12 (17 Aug 2016)

  17 Aug 2016; Thomas Deutschmann <whissi@gentoo.org> +librelp-1.2.12.ebuild:
  Bump to v1.2.12

  Package-Manager: portage-2.3.0

  17 Aug 2016; Thomas Deutschmann <whissi@gentoo.org> -librelp-1.2.9.ebuild:
  Dropping old version

  Package-Manager: portage-2.3.0

  17 Aug 2016; Thomas Deutschmann <whissi@gentoo.org> librelp-1.2.10.ebuild,
  librelp-1.2.12.ebuild:
  arm64 keyword added (#587688)

  Gentoo-Bug: https://bugs.gentoo.org/587688

  Package-Manager: portage-2.3.0

  17 Aug 2016; Thomas Deutschmann <whissi@gentoo.org> metadata.xml:
  Add myself as maintainer

  Package-Manager: portage-2.3.0

  26 Sep 2016; Agostino Sarubbo <ago@gentoo.org> librelp-1.2.12.ebuild:
  amd64 stable wrt bug #593812

  Package-Manager: portage-2.2.28
  RepoMan-Options: --include-arches="amd64"
  Signed-off-by: Agostino Sarubbo <ago@gentoo.org>

  01 Oct 2016; Jeroen Roovers <jer@gentoo.org> librelp-1.2.12.ebuild:
  Stable for HPPA (bug #593812).

  Package-Manager: portage-2.3.1
  RepoMan-Options: --ignore-arches

