# ChangeLog for sys-freebsd/freebsd-usbin
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*freebsd-usbin-10.1 (09 Aug 2015)
*freebsd-usbin-9.1-r1 (09 Aug 2015)
*freebsd-usbin-8.2-r2 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org>
  +files/freebsd-usbin-10.0-bsdxml2expat.patch,
  +files/freebsd-usbin-7.0-nowrap.patch,
  +files/freebsd-usbin-8.2-newsyslog.patch,
  +files/freebsd-usbin-9.0-libarchive.patch,
  +files/freebsd-usbin-9.0-newsyslog.patch,
  +files/freebsd-usbin-9.1-bsdxml2expat.patch,
  +files/freebsd-usbin-9.1-kldxref.patch, +files/freebsd-usbin-adduser.patch,
  +files/iscsid.initd, +files/mountd.patch, +files/moused.confd,
  +files/moused.initd, +files/nfs.confd, +files/nfs.initd,
  +files/nfsmount.initd, +files/nfsuserd.confd, +files/nfsuserd.initd,
  +files/powerd.confd, +files/powerd.initd, +files/pw.conf,
  +files/rarpd.confd, +files/rarpd.initd, +files/rpc.lockd.initd,
  +files/rpc.statd.initd, +files/rpcbind.initd, +files/syscons.confd,
  +files/syscons.initd, +files/syslogd.initd, +freebsd-usbin-8.2-r2.ebuild,
  +freebsd-usbin-9.1-r1.ebuild, +freebsd-usbin-10.1.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

  09 Aug 2015; Ulrich Müller <ulm@gentoo.org> files/iscsid.initd,
  files/nfs.initd, files/nfsmount.initd, files/nfsuserd.initd,
  files/powerd.initd, files/rpc.lockd.initd, files/rpc.statd.initd,
  files/rpcbind.initd, files/syscons.initd, files/syslogd.initd:
  [QA] Remove executable bit from files, bug 550434.

*freebsd-usbin-10.2 (19 Aug 2015)

  19 Aug 2015; Yuta Satoh <nigoro@gentoo.gr.jp> +freebsd-usbin-10.2.ebuild:
  sys-freebsd: Bump to 10.2.

*freebsd-usbin-10.2-r1 (21 Aug 2015)

  21 Aug 2015; Yuta Satoh <nigoro@gentoo.gr.jp> -freebsd-usbin-10.2.ebuild,
  +freebsd-usbin-10.2-r1.ebuild:
  Fix eratta, FreeBSD-EN-15:13.vidcontrol

  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

  29 Aug 2015; Yuta Satoh <nigoro@gentoo.gr.jp> -freebsd-usbin-10.1.ebuild:
  sys-freebsd: Remove 10.1.

*freebsd-usbin-10.2-r2 (21 Sep 2015)

  21 Sep 2015; Yuta Satoh <nigoro@gentoo.gr.jp> -freebsd-usbin-10.2-r1.ebuild,
  +freebsd-usbin-10.2-r2.ebuild:
  Fix eratta, FreeBSD-EN-15:16.pw

*freebsd-usbin-10.2-r3 (02 Oct 2015)

  02 Oct 2015; Yuta Satoh <nigoro@gentoo.gr.jp> -freebsd-usbin-10.2-r2.ebuild,
  +freebsd-usbin-10.2-r3.ebuild:
  Fix FreeBSD-SA-15:24.rpcbind.

  16 Oct 2015; Yuta Satoh <nigoro@gentoo.gr.jp> freebsd-usbin-10.2-r3.ebuild:
  Fix QA warnings, missing slot dependencies.

*freebsd-usbin-10.2-r4 (16 Oct 2015)

  16 Oct 2015; Yuta Satoh <nigoro@gentoo.gr.jp> -freebsd-usbin-10.2-r3.ebuild,
  +freebsd-usbin-10.2-r4.ebuild:
  Fix FreeBSD-SA-15:24.rpcbind v1.1.

  23 Nov 2015; Yuta Satoh <nigoro@gentoo.gr.jp> freebsd-usbin-10.2-r4.ebuild:
  sys-freebsd: Move use call from global scope to pkg_setup.

  Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=566522

  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)

*freebsd-usbin-10.3 (04 Apr 2016)

  04 Apr 2016; Yuta Satoh <nigoro.dev@gmail.com>
  +files/freebsd-usbin-10.3-bsdxml2expat.patch, +freebsd-usbin-10.3.ebuild,
  metadata.xml:
  sys-freebsd: Bump to 10.3.

  18 May 2016; Austin English <wizardedit@gentoo.org> files/iscsid.initd,
  files/moused.initd, files/nfs.initd, files/nfsmount.initd,
  files/nfsuserd.initd, files/powerd.initd, files/rarpd.initd,
  files/rpc.lockd.initd, files/rpc.statd.initd, files/rpcbind.initd,
  files/syscons.initd, files/syslogd.initd:
  use #!/sbin/openrc-run instead of #!/sbin/runscript

  11 Aug 2016; Patrice Clement <monsieurp@gentoo.org>
  -freebsd-usbin-10.2-r4.ebuild:
  sys-freebsd: Remove 10.2.

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

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

*freebsd-usbin-11.0 (11 Oct 2016)

  11 Oct 2016; Alexis Ballier <aballier@gentoo.org>
  +files/freebsd-usbin-11.0-workaround.patch, +freebsd-usbin-11.0.ebuild:
  sys-freebsd: bump to 11.0

*freebsd-usbin-10.3-r1 (12 Oct 2016)

  12 Oct 2016; Alexis Ballier <aballier@gentoo.org>
  -freebsd-usbin-10.3.ebuild, +freebsd-usbin-10.3-r1.ebuild:
  fix FreeBSD-SA-16:30.portsnap

