# ChangeLog for net-dns/pdnsd
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/net-dns/pdnsd/ChangeLog,v 1.93 2010/03/09 15:43:22 flameeyes Exp $

  09 Mar 2010; Diego E. Pettenò <flameeyes@gentoo.org> metadata.xml:
  Update metadata.

*pdnsd-1.2.8 (09 Mar 2010)

  09 Mar 2010; Diego E. Pettenò <flameeyes@gentoo.org> +pdnsd-1.2.8.ebuild,
  +files/pdnsd.rc6.1:
  Version bump, with a few changes: init script is no longer totally quiet
  (you'd miss on the errors) and will create the cache directory if missing;
  the configuration file for pdnsd does no longer contain the whole help
  text (saves from etc-update and fixes cross-compilation); the test
  function should work even if no network is available (and will no longer
  happen “automagically”, as it depends on dig being present now); ipv6
  is enabled automatically on the build rather than by parameter, with the
  USE flag set; drop underscores USE flag (obsoleted, upstream no longer
  supports it), enable urandom by default (avoids sapping entropy by
  default, most users will be comfortable with that default); drop nptl USE
  flag (leave it to be auto-configured, which is good). To do for the next
  revision: install the dhcp2pdnsd script properly, and write an init script
  for that.

  09 May 2009; Alin Năstac <mrness@gentoo.org> -files/pdnsd.resolvconf,
  -pdnsd-1.2.6.ebuild, -pdnsd-1.2.6-r1.ebuild, pdnsd-1.2.7-r1.ebuild:
  Migrate to EAPI 2.

  05 Jan 2009; Raúl Porcel <armin76@gentoo.org> pdnsd-1.2.7-r1.ebuild:
  arm/s390 stable wrt #231285

*pdnsd-1.2.7-r1 (13 Dec 2008)

  13 Dec 2008; Alin Năstac <mrness@gentoo.org> files/pdnsd.online,
  -pdnsd-1.2.7.ebuild, +pdnsd-1.2.7-r1.ebuild:
  Solve startup error of the pdnsd-online service (#249981).

  19 Sep 2008; Tobias Scherbaum <dertobi123@gentoo.org> pdnsd-1.2.7.ebuild:
  ppc stable, bug #231285

  13 Sep 2008; Friedrich Oslage <bluebird@gentoo.org> pdnsd-1.2.7.ebuild:
  Stable on sparc, bug #231285

  09 Sep 2008; Raúl Porcel <armin76@gentoo.org> pdnsd-1.2.7.ebuild:
  alpha stable wrt #231285

  07 Sep 2008; Markus Meier <maekke@gentoo.org> pdnsd-1.2.7.ebuild:
  amd64/x86 stable, bug #231285

*pdnsd-1.2.7 (07 Sep 2008)

  07 Sep 2008; Alin Năstac <mrness@gentoo.org> +pdnsd-1.2.7.ebuild:
  Version bump wrt security bug 231285.

  22 Aug 2008; Markus Meier <maekke@gentoo.org> pdnsd-1.2.6-r1.ebuild:
  amd64 stable, bug #231321

  17 Aug 2008; Doug Goldstein <cardoe@gentoo.org> metadata.xml:
  add GLEP 56 USE flag desc from use.local.desc

  14 Jul 2008; nixnut <nixnut@gentoo.org> pdnsd-1.2.6-r1.ebuild:
  Stable on ppc wrt bug 231321

  10 Jul 2008; Raúl Porcel <armin76@gentoo.org> pdnsd-1.2.6-r1.ebuild:
  alpha stable wrt #231321

  10 Jul 2008; Christian Faulhammer <opfer@gentoo.org>
  pdnsd-1.2.6-r1.ebuild:
  stable x86, bug 231321

  09 Jul 2008; Friedrich Oslage <bluebird@gentoo.org> pdnsd-1.2.6-r1.ebuild:
  Stable on sparc, bug #231321

*pdnsd-1.2.6-r1 (20 Apr 2008)

  20 Apr 2008; Alin Năstac <mrness@gentoo.org> +files/pdnsd.resolvconf-r1,
  -pdnsd-1.2.5-r1.ebuild, +pdnsd-1.2.6-r1.ebuild:
  Make resolvconf script compatible with baselayout-2 (#218031).

  14 Jan 2008; Christoph Mende <angelos@gentoo.org> pdnsd-1.2.6.ebuild:
  Stable on amd64 wrt bug #203769

  05 Jan 2008; nixnut <nixnut@gentoo.org> pdnsd-1.2.6.ebuild:
  Stable on ppc wrt bug 203769

  31 Dec 2007; Raúl Porcel <armin76@gentoo.org> pdnsd-1.2.6.ebuild:
  alpha/sparc/x86 stable wrt #203769, add ~ia64

*pdnsd-1.2.6 (05 Nov 2007)

  05 Nov 2007; Alin Năstac <mrness@gentoo.org> pdnsd-1.2.5-r1.ebuild,
  +pdnsd-1.2.6.ebuild:
  Version bumped under new GPL-3 license. Add urandom USE flag.

*pdnsd-1.2.5-r1 (13 Jul 2007)

  13 Jul 2007; Alin Năstac <mrness@gentoo.org>
  -files/pdnsd-1.2.4-dbg_file.patch, files/pdnsd.rc6,
  -pdnsd-1.2.4-r1.ebuild, -pdnsd-1.2.4-r3.ebuild, -pdnsd-1.2.5.ebuild,
  +pdnsd-1.2.5-r1.ebuild:
  Add reload option to pdnsd init script (#184871).

  06 May 2007; Marius Mauch <genone@gentoo.org> pdnsd-1.2.4-r1.ebuild,
  pdnsd-1.2.4-r3.ebuild, pdnsd-1.2.5.ebuild:
  Replacing einfo with elog

  22 Apr 2007; Tobias Scherbaum <dertobi123@gentoo.org> pdnsd-1.2.5.ebuild:
  ppc stable, bug #174559

  22 Apr 2007; Bryan Østergaard <kloeri@gentoo.org> pdnsd-1.2.5.ebuild:
  Stable on Alpha, bug 174559.

  10 Mar 2007; Alin Năstac <mrness@gentoo.org> pdnsd-1.2.4-r1.ebuild,
  pdnsd-1.2.4-r3.ebuild, pdnsd-1.2.5.ebuild:
  Remove references to $ROOT from src_* functions (#168039).

  16 Jan 2007; Alin Năstac <mrness@gentoo.org> pdnsd-1.2.5.ebuild:
  Stable on amd64.

  20 Nov 2006; Gustavo Zacarias <gustavoz@gentoo.org> pdnsd-1.2.5.ebuild:
  Stable on sparc

  17 Nov 2006; Alin Nastac <mrness@gentoo.org> -pdnsd-1.2.4.ebuild,
  pdnsd-1.2.5.ebuild:
  Remove old version. Stable on x86.

  24 Sep 2006; Michael Hanselmann <hansmi@gentoo.org> pdnsd-1.2.4-r3.ebuild:
  Stable on ppc.

  21 Sep 2006; Gustavo Zacarias <gustavoz@gentoo.org> pdnsd-1.2.4-r3.ebuild:
  Stable on sparc

*pdnsd-1.2.5 (21 Sep 2006)

  21 Sep 2006; Alin Nastac <mrness@gentoo.org> pdnsd-1.2.4-r3.ebuild,
  +pdnsd-1.2.5.ebuild:
  Stable on x86. Add new version with a brand new USE flag (underscores).

*pdnsd-1.2.4-r3 (25 Jun 2006)

  25 Jun 2006; Alin Nastac <mrness@gentoo.org> files/pdnsd.resolvconf,
  -pdnsd-1.2.4-r2.ebuild, +pdnsd-1.2.4-r3.ebuild:
  Update support for resolvconf-gentoo (#134254).

*pdnsd-1.2.4-r2 (11 Jun 2006)

  11 Jun 2006; Alin Nastac <mrness@gentoo.org> +files/pdnsd.resolvconf,
  -pdnsd-1.2.3.ebuild, +pdnsd-1.2.4-r2.ebuild:
  Add support for resolvconf-gentoo, thanks to Oldrich Jedlicka
  <oldium.pro@seznam.cz> (#134254).

  29 Apr 2006; Tobias Scherbaum <dertobi123@gentoo.org>
  pdnsd-1.2.4-r1.ebuild:
  ppc stable, bug #131341

  27 Apr 2006; Gustavo Zacarias <gustavoz@gentoo.org> pdnsd-1.2.4-r1.ebuild:
  Stable on sparc wrt security #131341

  27 Apr 2006; <tcort@gentoo.org> pdnsd-1.2.4-r1.ebuild:
  Stable on alpha and amd64 wrt security Bug #131341.

*pdnsd-1.2.4-r1 (27 Apr 2006)

  27 Apr 2006; Alin Nastac <mrness@gentoo.org>
  +files/pdnsd-1.2.4-dbg_file.patch, +pdnsd-1.2.4-r1.ebuild:
  Fix segfault when build with debug USE flag enabled, thanks to Thomas Cort
  <tcort@gentoo.org>. Submitted as stable on x86 wrt security bug #131341.

  26 Apr 2006; <tcort@gentoo.org> pdnsd-1.2.4.ebuild:
  Stable on amd64 wrt security Bug #131341.

  26 Apr 2006; Alin Nastac <mrness@gentoo.org> pdnsd-1.2.4.ebuild:
  Fix src_test by inserting yet another sleep (#131341).

  13 Mar 2006; Gustavo Zacarias <gustavoz@gentoo.org> pdnsd-1.2.4.ebuild:
  Stable on sparc

  10 Mar 2006; Michael Hanselmann <hansmi@gentoo.org> pdnsd-1.2.4.ebuild:
  Stable on ppc.

  08 Mar 2006; Alin Nastac <mrness@gentoo.org> metadata.xml,
  -pdnsd-1.1.10.ebuild, -pdnsd-1.2.2.ebuild, pdnsd-1.2.4.ebuild:
  Remove obsolete versions. Update package description. Sanitize the ebuild
  code, mostly by quoting strings containing env vars. Mark as stable on x86.

  07 Feb 2006; Simon Stelling <blubb@gentoo.org> pdnsd-1.2.3.ebuild:
  stable on amd64

*pdnsd-1.2.4 (01 Feb 2006)

  01 Feb 2006; Alin Nastac <mrness@gentoo.org> +pdnsd-1.2.4.ebuild:
  Version bump (#121201), with clean dependencies - all previous dependencies
  are in the system class.

  15 Nov 2005; Gustavo Zacarias <gustavoz@gentoo.org> pdnsd-1.2.3.ebuild:
  Stable on sparc - selftests fail miserably so disable them

  18 Oct 2005; Aron Griffis <agriffis@gentoo.org> pdnsd-1.2.3.ebuild:
  Mark 1.2.3 stable on alpha

  06 Oct 2005; Michael Hanselmann <hansmi@gentoo.org> pdnsd-1.2.3.ebuild:
  Stable on ppc.

  04 Oct 2005; Alin Nastac <mrness@gentoo.org> pdnsd-1.1.10.ebuild,
  pdnsd-1.2.2.ebuild, pdnsd-1.2.3.ebuild:
  Remove COPYING* from docs. Mark stable on x86.

  16 Sep 2005; Alin Nastac <mrness@gentoo.org> pdnsd-1.1.10.ebuild,
  pdnsd-1.2.2.ebuild, pdnsd-1.2.3.ebuild:
  Set enewuser's shell argument to -1 in pkg_preinst (#103421).

*pdnsd-1.2.3 (08 Sep 2005)

  08 Sep 2005; Alin Nastac <mrness@gentoo.org> pdnsd-1.1.10.ebuild,
  pdnsd-1.2.2.ebuild, +pdnsd-1.2.3.ebuild:
  Set enewuser's shell argument to -1, for compatibility with BSD (#103421).
  Version bump.

  17 Jun 2005; Michael Hanselmann <hansmi@gentoo.org> pdnsd-1.2.2.ebuild:
  Stable on ppc.

  12 Jun 2005; Bryan Østergaard <kloeri@gentoo.org> pdnsd-1.2.2.ebuild:
  Stable on alpha.

  05 Jun 2005; Alin Nastac <mrness@gentoo.org> metadata.xml,
  -pdnsd-1.1.11.ebuild, -pdnsd-1.1.12_pre3.ebuild, -pdnsd-1.2.1.ebuild,
  pdnsd-1.2.2.ebuild:
  Mark ver 1.2.2 stable on x86. Remove old test versions.

*pdnsd-1.2.2 (20 Apr 2005)

  20 Apr 2005; Alin Nastac <mrness@gentoo.org> +pdnsd-1.2.2.ebuild:
  Version bump

  29 Dec 2004; Ciaran McCreesh <ciaranm@gentoo.org> :
  Change encoding to UTF-8 for GLEP 31 compliance

*pdnsd-1.2.1 (01 Dec 2004)

  01 Dec 2004; Daniel Black <dragonheart@gentoo.org> -pdnsd-1.1.9.ebuild,
  +pdnsd-1.2.1.ebuild:
  version bump and old version clean as per bug #72941. Thanks to Davin Boling
  <davin@postmark.net>

*pdnsd-1.1.12_pre3 (04 Oct 2004)

  04 Oct 2004; Daniel Black <dragonheart@gentoo.org> +files/pdnsd.conf.test,
  pdnsd-1.1.11.ebuild, +pdnsd-1.1.12_pre3.ebuild:
  version bump as per bug #66219. -fbsd masked 1.1.11 due to upstream notice -
  fixed in later versions. Thanks for the notification Daniel Webert
  <rockoo@rockoo.homelinux.org>

  27 Jul 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.10.ebuild,
  pdnsd-1.1.11.ebuild, pdnsd-1.1.9.ebuild, -pdnsd-1.1.7a.ebuild:
  enew{user,group} copied to pkg_preinst to fix binary packages (bug #58526).
  Thanks to Thomas Matthijs <axxo@gentoo.org>. Removed old version

  18 Jul 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.10.ebuild,
  pdnsd-1.1.11.ebuild:
  Fix for bug #55901. Add user pdnsd in pkg_setup. Thanks to Daniel Webert.

  01 Jul 2004; Jeremy Huddleston <eradicator@gentoo.org> pdnsd-1.1.10.ebuild,
  pdnsd-1.1.11.ebuild, pdnsd-1.1.7a.ebuild, pdnsd-1.1.9.ebuild:
  virtual/glibc -> virtual/libc

  09 Jun 2004; Aron Griffis <agriffis@gentoo.org> pdnsd-1.1.7a.ebuild,
  pdnsd-1.1.9.ebuild:
  Fix use invocation

  07 Jun 2004; Michael Sterrett <mr_bones_@gentoo.org> pdnsd-1.1.10.ebuild,
  pdnsd-1.1.11.ebuild:
  src_preinst() -> pkg_preinst()

  05 Jun 2004; Bryan Østergaard <kloeri@gentoo.org> pdnsd-1.1.10.ebuild:
  Stable on alpha.

*pdnsd-1.1.11 (05 Jun 2004)

  05 Jun 2004; Daniel Black <dragonheart@gentoo.org> files/pdnsd.online,
  files/pdnsd.rc6, pdnsd-1.1.10.ebuild, +pdnsd-1.1.11.ebuild:
  version bump with a few dependancy/documentation fixes to version 1.1.10

  06 May 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.10.ebuild:
  Added ~s390 keyword

  30 Apr 2004; Bryan Østergaard <kloeri@gentoo.org> pdnsd-1.1.10.ebuild:
  Keyworded ~alpha.

  26 Apr 2004; Michael McCabe <randy@gentoo.org> pdnsd-1.1.9.ebuild:
  Added s390 keywords

  09 Apr 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.10.ebuild:
  Changed to add user/group pdnsd before the make install

  03 Apr 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.10.ebuild:
  Stable on x86, ppc, sparc. Changed version 1.1.10 to use $ROOT when 
  checking on the existing installation. Warning again - from version 
  1.1.10 the cache is stored in /var/cache rather the /var/lib. If you
  do an etc-update it should be smooth.

  28 Mar 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.6-r7.ebuild,
  pdnsd-1.1.9.ebuild:
  Stable on sparc & ppc - 1.1.9. Removed old versions

  21 Mar 2004; Daniel Black <dragonheart@gentoo.org> :
  Fixed digest - bug #45224 thanks to bugs.gentoo.org@tux.tmfweb.nl

  16 Mar 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.10.ebuild,
  pdnsd-1.1.9.ebuild:
  Added inherit eutils. Thanks to <aliz@gentoo.org>'s script for finding it

  24 Feb 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.10.ebuild:
  As cachedir has changed to /var/cache, change the user's config ready for
  etc-update.

*pdnsd-1.1.10 (23 Feb 2004)

  23 Feb 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.10.ebuild,
  files/pdnsd.rc6:
  ebuild cleanup.

  22 Feb 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.10.ebuild:
  version bump. Avoid clobbering previous cache. Cache moved to /var/cache from
  /var/lib.

  22 Feb 2004; Daniel Black <dragonheart@gentoo.org> files/pdnsd.rc6:
  Improved doco in init script

  21 Feb 2004; Daniel Black <dragonheart@gentoo.org> files/pdnsd.rc6:
  Added -s to files/pdnsd.rc6 to enable socket usage. Thanks to Eric Harney
  <eharney@clemson.edu> bug #42149

  19 Feb 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.9.ebuild:
  Bump to stable on x86. Few other small ebuild cleanups too.

  03 Feb 2004; Daniel Black <dragonheart@gentoo.org> pdnsd-1.1.9.ebuild:
  Added ~ppc and ~sparc. Should support alpha arm hppa i386 ia64 m68k mips
  mipsel powerpc s390 sparc according to debian documentation

*pdnsd-1.1.9 (03 Feb 2004)

  03 Feb 2004; Daniel Black <dragonheart@gentoo.org> metadata.xml,
  pdnsd-1.1.6-r7.ebuild, pdnsd-1.1.7a.ebuild, pdnsd-1.1.9.ebuild,
  files/pdnsd.online:
  Version bump to include many patches. Adds pdnsd-online init-script too.
  Fixes bug #20450.

  09 Mar 2003; Daniel Ahlberg <aliz@gentoo.org> files/pdnsd.rc6 : 
  Fixed typo in init file. Closes #16881.

  27 Feb 2003; Daniel Ahlberg <aliz@gentoo.org> pdnsd-1.1.7a.ebuild files/pdnsd.rc6 :
  Add --tcp to daemon startup, closes #15657. Small fixes in 1.1.7a ebuild.

  06 Dec 2002; Rodney Rees <manson@gentoo.org> : changed sparc ~sparc keywords
 
*pdnsd-1.1.7a (05 Aug 2002)

  17 Oct 2002; Daniel Ahlberg <aliz@gentoo.org> files/pdnsd.rc6 :
  Closes #8758.

  30 Aug 2002; Sascha Schwabbauer <cybersystem@gentoo.org> :
  Added ppc to keywords.

  05 Aug 2002; Daniel Ahlberg <aliz@gentoo.org> pdnsd-1.1.7a.ebuild:
  Version bump that includes security fix, ebuild submitted 
  by tuxisuau <tuxisuau@7a69ezine.org>.




*pdnsd-1.1.6-r7 (1 Feb 2002)

  1 Feb 2002; G.Bevin <gbevin@gentoo.org> ChangeLog :
  
  Added initial ChangeLog which should be updated whenever the package is
  updated in any way. This changelog is targetted to users. This means that the
  comments should well explained and written in clean English. The details about
  writing correct changelogs are explained in the skel.ChangeLog file which you
  can find in the root directory of the portage repository.
