sg3-utils (1.42-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Wed, 17 Feb 2016 15:00:00 -0500

sg3-utils (1.41-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Tue, 28 Apr 2015 11:00:00 -0400

sg3-utils (1.40-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Mon, 10 Nov 2014 23:00:00 -0500

sg3-utils (1.39-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Thu, 12 Jun 2014 09:00:00 -0400

sg3-utils (1.38-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Tue, 01 Apr 2014 15:00:00 -0400

sg3-utils (1.37-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Mon, 14 Oct 2013 15:00:00 -0400

sg3-utils (1.36-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Fri, 31 May 2013 10:00:00 -0400

sg3-utils (1.35-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Thu, 17 Jan 2013 19:00:00 -0500

sg3-utils (1.34-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Sat, 13 Oct 2012 19:00:00 -0400

sg3-utils (1.33-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Wed, 18 Jan 2012 14:00:00 -0500

sg3-utils (1.32-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Wed, 22 Jun 2011 16:00:00 -0400

sg3-utils (1.31-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Wed, 16 Feb 2011 16:00:00 -0500

sg3-utils (1.30-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Fri, 05 Nov 2010 10:30:00 -0400

sg3-utils (1.29-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Wed, 31 Mar 2010 23:00:00 -0400

sg3-utils (1.28-0.1) unstable; urgency=low

  * New upstream version

 -- Douglas Gilbert <dgilbert@interlog.com>  Fri, 02 Oct 2009 00:20:00 -0400

sg3-utils (1.27-0.1) unstable; urgency=low

  [ Martin Pitt ]
  * Non-maintainer upload; this package blocks DeviceKit, and maintainer is
    apparently not active any more. Also clean up and modernize the package
    somewhat while we are at it.
  * New upstream release (required for current devicekit-disks).
    (Closes: #532546). Upstream original tarball repacked to not contain
    debian/ directory.
  * Rename libsgutils1{,-dev} to libsgutils2-2{,-dev}, upstream bumped SONAME.
    Also call the library libgsutils2-2 to match SONAME. Add
    Conflicts/Replaces for "libsgutils2" to provide a clean upgrade from the
    packages as provided by Upstream and Ubuntu.
  * debian/rules: Update build rules for upstream Makefile → autotools switch.
  * debian/rules: Fix cleaning a clean source package.
  * Demote Recommends to Suggests; the library doesn't actually call the
    binaries in sg3-utils. (Closes: #532547)
  * Drop debian/*.dirs, unnecessary with dh_install.
  * Drop sg3-utils.preinst, not necessary to deal with kernel 2.4 any more.
  * Drop libsgutils2-0.install, libsgutils2-0-dev.install, these packages
    don't exist.
  * Drop libsgutils2.post{inst,rm}: Basically empty, debhelper will create its
    own.
  * libsgutils2-dev.install: Drop *.lo.
  * debian/compat: 4 -> 7. Bump debhelper build-depends accordingly.
  * debian/control: Bump Standards-Version to 3.8.2.
  * debian/control: Modernize package description for Linux 2.6.
    (Closes: #506578)
  * debian/rules: Drop -k argument from dh_clean (thanks lintian).

  [ Frank Lichtenheld ]
  * debian/control, debian/rules: Add dependency of libsgutils-dev on
    libcam-dev on kfreebsd-*. (Closes: #519460)

 -- Martin Pitt <mpitt@debian.org>  Mon, 22 Jun 2009 12:04:20 +0200

sg3-utils (1.24-2) unstable; urgency=low

  * Cleaned up package description (Closes: #445920).
  * Don't make libtool think rpath is necessary (Closes: #451153)
  * Capitalized Linux in extended description (Closes: #457526).
  * Completed sentence in libsgutils1 long description (Closes: #421391).
  * Added patch from Aurelian Jarno to build on kfreebsd-* (Closes: #455430).
  * Symlinks in examples directory cleaned up (Closes: #372610).

 -- Eric Schwartz (Skif) <emschwar@debian.org>  Sun, 30 Dec 2007 11:52:58 -0700

sg3-utils (1.24-1) unstable; urgency=low

  * New upstream release
  * Conflicts with upstream libsgutils package libsgutils-1-0 (closes: #391077)

 -- Eric Schwartz (Skif) <emschwar@debian.org>  Tue,  5 Jun 2007 17:04:21 -0600

sg3-utils (1.21-2.1) unstable; urgency=medium

  * Non-maintainer upload.
  * Fix FTBFS due to old syscall usage (Closes: #395512).

 -- Luk Claes <luk@debian.org>  Sun,  5 Nov 2006 17:23:29 +0100

sg3-utils (1.21-2) unstable; urgency=low

  * Added Depends on libsgutils1 to libsgutils1-dev (closes: #387798)

 -- Eric Schwartz (Skif) <emschwar@debian.org>  Fri, 22 Sep 2006 00:20:28 -0600

sg3-utils (1.21-1) unstable; urgency=low

  * New upstream release

 -- Eric Schwartz (Skif) <emschwar@debian.org>  Wed, 13 Sep 2006 21:54:30 -0600

sg3-utils (1.20-1) unstable; urgency=low

  * New upstream release

 -- Eric Schwartz (Skif) <emschwar@debian.org>  Wed, 26 Apr 2006 22:31:15 -0600

sg3-utils (1.17-3) unstable; urgency=low

  * Cleaned up sg_read(8) manpage (Closes: #294521)

 -- Eric Schwartz (Skif) <emschwar@debian.org>  Mon, 13 Feb 2006 17:59:46 -0700

sg3-utils (1.17-2) unstable; urgency=low

  * Add libtool to build-depends

 -- Eric Schwartz (Skif) <emschwar@debian.org>  Tue,  4 Oct 2005 19:40:00 -0600

sg3-utils (1.17-1) unstable; urgency=low

  * New upstream version

 -- Eric Schwartz (Skif) <emschwar@debian.org>  Sat,  1 Oct 2005 13:26:16 -0600

sg3-utils (1.08-2) unstable; urgency=low

  * Fix packaging bug that accidentally left off binaries.  Sigh.
    (closes: #271906)

 -- Eric Schwartz (Skif) <emschwar@debian.org>  Wed, 15 Sep 2004 22:40:06 -0600

sg3-utils (1.08-1) unstable; urgency=low

  * New upstream version
  * Unified package description with list of tools actually installed
    (closes: #271093)

 -- Eric Schwartz (Skif) <emschwar@debian.org>  Sun, 12 Sep 2004 21:22:42 -0600

sg3-utils (1.05-1) unstable; urgency=low

  * New upstream release
  * updated description to match tools in package (closes: #221143)

 -- Eric Schwartz <emschwar@debian.org>  Tue, 18 Nov 2003 22:22:29 -0700

sg3-utils (1.03-1) unstable; urgency=low

  * New upstream release (closes: #181999)

 -- Eric Schwartz <emschwar@debian.org>  Tue, 29 Apr 2003 20:18:30 -0600

sg3-utils (0.95-4) unstable; urgency=low

  * Only warns if installed on a kernel version < 2.4 (closes: #136434)
      
 -- Eric Schwartz <emschwar@debian.org>  Tue, 28 May 2002 22:55:29 -0600

sg3-utils (0.95-3) unstable; urgency=low

  * Extended description to include descriptions of all tools included in
    the package. (closes: #121968)

 -- Eric Schwartz <emschwar@debian.org>  Sun, 13 Jan 2002 17:09:27 -0700

sg3-utils (0.95-2) unstable; urgency=low

  * Packaging manpages (closes: #122692)
  * Conflicts with cdwrite (closes: #123779)

 -- Eric Schwartz <emschwar@debian.org>  Wed,  2 Jan 2002 01:05:08 -0700

sg3-utils (0.95-1) unstable; urgency=low

  * Initial Release.
  * Adjusted Makefile to include $DESTDIR

 -- Eric Schwartz <emschwar@debian.org>  Wed, 14 Nov 2001 17:05:56 -0700

