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

*libtasn1-4.5 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +libtasn1-4.5.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; Justin Lecher <jlec@gentoo.org> libtasn1-4.5.ebuild:
  Use https for most gnu.org URLs

  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

*libtasn1-4.6 (05 Sep 2015)

  05 Sep 2015; Alon Bar-Lev <alonbl@gentoo.org> +libtasn1-4.6.ebuild:
  version bump

  Package-Manager: portage-2.2.20.1

*libtasn1-4.7 (14 Sep 2015)

  14 Sep 2015; Alon Bar-Lev <alonbl@gentoo.org> -libtasn1-4.6.ebuild,
  +libtasn1-4.7.ebuild:
  version bump

  Package-Manager: portage-2.2.20.1

  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)

*libtasn1-4.8 (11 Apr 2016)

  11 Apr 2016; Alon Bar-Lev <alonbl@gentoo.org> +libtasn1-4.8.ebuild:
  version bump

  Package-Manager: portage-2.2.26

  16 Apr 2016; Jeroen Roovers <jer@gentoo.org> libtasn1-4.8.ebuild:
  Stable for HPPA PPC64 (bug #579748).

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

  19 Apr 2016; Markus Meier <maekke@gentoo.org> libtasn1-4.8.ebuild:
  arm stable, bug #579748

  Package-Manager: portage-2.2.28
  RepoMan-Options: --include-arches="arm"

  02 May 2016; Matt Turner <mattst88@gentoo.org> libtasn1-4.8.ebuild:
  alpha stable, bug 579748.

  12 Jun 2016; Alon Bar-Lev <alonbl@gentoo.org> -libtasn1-4.7.ebuild:
  cleanup

  Package-Manager: portage-2.2.28

  27 Jun 2016; Agostino Sarubbo <ago@gentoo.org> libtasn1-4.8.ebuild:
  x86 stable wrt bug #579748

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

  08 Jul 2016; Agostino Sarubbo <ago@gentoo.org> libtasn1-4.8.ebuild:
  ppc stable wrt bug #579748

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

  08 Jul 2016; Agostino Sarubbo <ago@gentoo.org> libtasn1-4.8.ebuild:
  sparc stable wrt bug #579748

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

  08 Jul 2016; Agostino Sarubbo <ago@gentoo.org> libtasn1-4.8.ebuild:
  ia64 stable wrt bug #579748

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

*libtasn1-4.9 (26 Jul 2016)

  26 Jul 2016; Alon Bar-Lev <alonbl@gentoo.org> +libtasn1-4.9.ebuild:
  version bump

  Package-Manager: portage-2.2.28

  29 Jul 2016; Alon Bar-Lev <alonbl@gentoo.org>
  +files/libtasn1-4.9-build.patch, libtasn1-4.9.ebuild:
  remove -Werror

  Bug: 589868

  Package-Manager: portage-2.2.28

*libtasn1-4.9-r1 (24 Sep 2016)

  24 Sep 2016; Alon Bar-Lev <alonbl@gentoo.org> -libtasn1-4.9.ebuild,
  +libtasn1-4.9-r1.ebuild:
  eap6 cleanups + eautoreconf

  Bug: 595062

  Package-Manager: portage-2.2.28

