busybox-cvs (0.60.99.cvs20030819-2) unstable; urgency=low

  * Fix configure permisions
  * Set source Section to embedded 

 -- Glenn McGrath <bug1@debian.org>  Mon, 25 Aug 2003 06:33:19 +0000

busybox-cvs (0.60.99.cvs20030819-1) unstable; urgency=low

  * new cvs version

 -- Bastian Blank <waldi@debian.org>  Tue, 19 Aug 2003 13:18:54 +0200

busybox-cvs (0.60.99.cvs20030426-10) unstable; urgency=low

  * archival/libunarchive/*
    - add hardlink support (pending)
  * debian/config-*udeb*
    - add support for oldgnu tar format

 -- Bastian Blank <waldi@debian.org>  Tue, 10 Jun 2003 12:06:41 +0200

busybox-cvs (0.60.99.cvs20030426-9) unstable; urgency=low

  * modutils/depmod.c
    - fix base_dir for modules.dep 

 -- Bastian Blank <waldi@debian.org>  Sat, 07 Jun 2003 14:52:54 +0200

busybox-cvs (0.60.99.cvs20030426-8) unstable; urgency=low

  * util-linux/fdisk.c
    - fix syscalls. (pending)
  * libpwd/*
    - don't build setgroups.o

 -- Bastian Blank <waldi@debian.org>  Tue, 03 Jun 2003 11:26:28 +0200

busybox-cvs (0.60.99.cvs20030426-7) unstable; urgency=low

  * libbb/*syscallc.c
    - fix syscalls. (upstream) (closes: #194631)
  * modutils/*
    - update complete objects code from upstream. (pending)
  * debian/config-*udeb*
    - update to busybox-applets.txt:1.14

 -- Bastian Blank <waldi@debian.org>  Thu, 29 May 2003 16:17:14 +0200

busybox-cvs (0.60.99.cvs20030426-6) unstable; urgency=low

  * modutils/Makefile.in
    - don't build anything if deactivated

 -- Bastian Blank <waldi@debian.org>  Sat, 24 May 2003 18:57:14 +0200

busybox-cvs (0.60.99.cvs20030426-5) unstable; urgency=low

  * debian/config-*udeb*
    - revert changes (closes: #192717, #192753)
    - readd initrd support (workaround)
    - make init quiet
  * archival/tar.c
    - fix usage of tar -O (upstream) (closes: #193788)

 -- Bastian Blank <waldi@debian.org>  Sat, 24 May 2003 13:25:36 +0200

busybox-cvs (0.60.99.cvs20030426-4) unstable; urgency=low

  * debian/config-*udeb*
    - update to busybox-applets.txt:1.12
  * debian/rules
    - use system instead of arch to determine which config file to use

 -- Bastian Blank <waldi@debian.org>  Fri, 09 May 2003 11:21:13 +0200

busybox-cvs (0.60.99.cvs20030426-3) unstable; urgency=low

  * debian/config-udeb*
    - update to busybox-applets.txt:1.11

 -- Bastian Blank <waldi@debian.org>  Wed, 07 May 2003 10:37:40 +0200

busybox-cvs (0.60.99.cvs20030426-2) unstable; urgency=low

  * modutils/*
    - modprobe failes gracefully if the module is already loaded. (pending)
    - implement depmod. (pending)
  * debian/config*
    - update

 -- Bastian Blank <waldi@debian.org>  Wed, 30 Apr 2003 14:12:36 +0200

busybox-cvs (0.60.99.cvs20030426-1) unstable; urgency=low

  * new cvs version

 -- Bastian Blank <waldi@debian.org>  Sat, 26 Apr 2003 18:33:17 +0200

busybox-cvs (0.60.99.cvs20030420-4) unstable; urgency=low

  * network/libiproute/iproute.c
    - fix usage of ip route flush (upstream)

 -- Bastian Blank <waldi@debian.org>  Fri, 25 Apr 2003 16:48:43 +0200

busybox-cvs (0.60.99.cvs20030420-3) unstable; urgency=low

  * debian/config-*udeb*
    - update to busybox-applets.txt:1.10

 -- Bastian Blank <waldi@debian.org>  Fri, 25 Apr 2003 14:03:23 +0200

busybox-cvs (0.60.99.cvs20030420-2) unstable; urgency=low

  * archival/tar.c, archival/libunarchive/data_extract_all.c
    - unlink files first (upstream patch)

 -- Bastian Blank <waldi@debian.org>  Mon, 21 Apr 2003 12:42:06 +0200

busybox-cvs (0.60.99.cvs20030420-1) unstable; urgency=low

  * new cvs version
  * debian/config*-udeb*
    - add ifconfig/route for easier transition
  * debian/config-net-udeb-i386
    - add logger
  * debian/config-udeb*
    - add uniq

 -- Bastian Blank <waldi@debian.org>  Sun, 20 Apr 2003 21:02:58 +0200

busybox-cvs (0.60.99.cvs20030405-1) unstable; urgency=low

  * new cvs version
  * debian/control
    - add busybox-cvs-net-udeb
  * debian/rules
    - arch depend debs
    - new net-udeb
  * debian/config*
    - cleanup applet list

 -- Bastian Blank <waldi@debian.org>  Sat, 05 Apr 2003 11:44:50 +0200

busybox-cvs (0.60.99.cvs20030221-1) unstable; urgency=low

  * new cvs version
  * enable new applets in udeb

 -- Bastian Blank <waldi@debian.org>  Fri, 21 Feb 2003 23:15:16 +0100

busybox-cvs (0.60.99.cvs20030114-1) unstable; urgency=low

  * new cvs version

 -- Bastian Blank <waldi@debian.org>  Tue, 14 Jan 2003 17:06:43 +0000

busybox-cvs (0.60.99.cvs20030105-1) unstable; urgency=low

  * Fix ip command build failure on ia64 (Closes: #172580
  * Dont build with BSD partition table support in fdisk, fails on m68k 

 -- Glenn McGrath <bug1@home>  Sun,  5 Jan 2003 12:48:05 +1100

busybox-cvs (0.60.99.cvs20030104-2) unstable; urgency=low

  * floppy-retriever needs the cut command in the udeb 

 -- Glenn McGrath <bug1@debian.org>  Sat,  4 Jan 2003 17:13:05 +1100

busybox-cvs (0.60.99.cvs20030104-1) unstable; urgency=low

  * new cvs version
  * Include new applets in the static package
  * Include ash in the udeb

 -- Glenn McGrath <bug1@debian.org>  Sat,  4 Jan 2003 13:39:04 +1100

busybox-cvs (0.60.99.cvs20021214-1) unstable; urgency=low

  * new cvs version
    - udhcp merge.
  * fix location of ip link.

 -- Bastian Blank <waldi@debian.org>  Sat, 14 Dec 2002 13:52:15 +0100

busybox-cvs (0.60.99.cvs20021210-1) unstable; urgency=low

  * new cvs version
    - various upstream fixes found in the last version.
  * busybox-cvs-udeb
    - include readlink and realpath.

 -- Bastian Blank <waldi@debian.org>  Tue, 10 Dec 2002 21:23:40 +0100

busybox-cvs (0.60.99.cvs20021209-2) unstable; urgency=low

  * cleanup scripts/config/ within make clean (closes: #172413)
  * busybox-cvs-udeb
    - include readlink
  * include manpages within busybox-cvs and busybox-cvs-static

 -- Bastian Blank <waldi@debian.org>  Mon, 09 Dec 2002 22:09:52 +0100

busybox-cvs (0.60.99.cvs20021209-1) unstable; urgency=low

  * New cvs version.
    - fix udhcpc for use with ip.
    - klogd supports -c.
  * busybox-cvs-udeb
    - set priority to extra. (closes: #172302)
    - don't longer provide busybox-udeb.

 -- Bastian Blank <waldi@debian.org>  Mon, 09 Dec 2002 16:22:03 +0100

busybox-cvs (0.60.99.cvs20021203-1) unstable; urgency=low

  * New packages based on busybox cvs.
  * changes for the udeb
    - enable ip applet with address, link and route part.
    - enable udhcpc.
    - disable ifconfig and route applet.
    - disable ls color.

 -- Bastian Blank <waldi@debian.org>  Tue, 03 Dec 2002 18:51:00 +0100

busybox (1:0.60.0-1) unstable; urgency=low

  * New version released.  See changelog for details.

 -- Erik Andersen <andersee@debian.org>  Thu,  2 Aug 2001 12:12:37 -0600

busybox (1:0.52-1.1) unstable; urgency=high

  * Non-maintainer upload
  * Fixed wget -P handling (closes: #106223).

 -- Matt Kraai <kraai@debian.org>  Wed, 25 Jul 2001 11:01:38 -0600

busybox (1:0.52-1) unstable; urgency=high

  * New version released.  See changelog for details.

 -- Erik Andersen <andersee@debian.org>  Sat,  7 Jul 2001 01:23:45 -0600

busybox (1:0.51-10) unstable; urgency=high

  * Fix a compile problem with gcc 3.0 on hppa (closes: #102045)

 -- Erik Andersen <andersee@debian.org>  Sat, 23 Jun 2001 23:55:57 -0600

busybox (1:0.51-9) unstable; urgency=high

  * tar was creating leading directories with 0777 permissions as
    as reult of faulty umask handling.  This fixes it, repairing
    a grave security problem in the woody the boot floppies.
    (closes: #101169)

 -- Erik Andersen <andersee@debian.org>  Wed, 20 Jun 2001 16:17:38 -0600

busybox (1:0.51-8) unstable; urgency=high

  * Fix cp from /proc, where size=0 (closes: #100369)
  * Add some padding to struct sysinfo for m68k.
  * Apparently some bugs failed to be closed when master choked
    (closes: #99627, #99637, #98571)
  * Disable the busybox shell for the .deb, since it is not needed
    for the boot floppies.

 -- Erik Andersen <andersee@debian.org>  Mon, 11 Jun 2001 13:26:07 -0600

busybox (1:0.51-7) unstable; urgency=high

  * Fix tar permission setting for existing directories (closes: #99627)
  * Do not remove the .cvsignore files on 'make release' (closes: #99637)

 -- Erik Andersen <andersee@debian.org>  Mon,  4 Jun 2001 10:55:19 -0600

busybox (1:0.51-6) testing unstable; urgency=high

  * Update the version in testing so DHCP in the woody boot-floppies will work.
  * Enable expr for the boot-floppies (closes: #98433)
  * It builds on arm just fine now (closes: #97510)

 -- Erik Andersen <andersee@debian.org>  Wed, 23 May 2001 14:50:13 -0600

busybox (1:0.51-5) unstable; urgency=low

  * Backport a sed fix from 0.52pre
  * Backport chroot fix from 0.52pre

 -- Erik Andersen <andersee@debian.org>  Wed, 16 May 2001 23:50:33 -0600

busybox (1:0.51-4) unstable; urgency=low

  * Backport from 0.52pre an endianness bugfix for md5sum
  * Backport some updates to grep and sed
  * Fix 'wget -O -' so it sets the quiet flag

 -- Erik Andersen <andersee@debian.org>  Mon, 14 May 2001 14:17:36 -0600

busybox (1:0.51-3) unstable; urgency=low

  * This is the "I am an idiot" release.
  * Make cp and mv work again (closes: #97290) 
  * Fix the version number.

 -- Erik Andersen <andersee@debian.org>  Sat, 12 May 2001 17:35:58 -0600

busybox (0.51-2) unstable; urgency=low

  * Backport several release critical fixes into the 0.51 codebase
    so the boot-floppies will work again.
  * Fix a link ordering problem. (closes: #93362)
  * Fixed gunzip (closes: #94331)
  * Fixed cp permission setting (closes: #94580)

 -- Erik Andersen <andersee@debian.org>  Sat, 12 May 2001 11:22:35 -0600

busybox (0.51-1) unstable; urgency=low

  * Fixes several critical bugs (see the busybox changelog
    for complete details)
  * Force USE_SYSTEM_PWD_GRP=false, so busybox bypasses
    the glibc NSS libraries. (closes: #93362)
  * Fixed a bug in sed's address range handling (closes: #91758) 
  * Removed irrelevant cruft from the bottem of debian/changelog

 -- Erik Andersen <andersee@debian.org>  Tue, 10 Apr 2001 14:07:29 -0600

busybox (0.50-2) unstable; urgency=low
  
  * Enabled freeramdisk and pivot_root in the udeb (closes: #91336)
  * Disabled lash (the busybox shell) in the udeb (closes: #91337)
  * fixed a bug in syslog, a problem with rebooting when booted as
    an initrd, and a few other minor problems.

 -- Erik Andersen <andersee@debian.org>  Sun, 25 Mar 2001 20:59:44 -0700


busybox (0.50-2) unstable; urgency=low
  
  * Enabled freeramdisk and pivot_root in the udeb (closes: #91336)
  * Disabled lash (the busybox shell) in the udeb (closes: #91337)
  * fixed a bug in syslog, a problem with rebooting when booted as
    an initrd, and a few other minor problems.

 -- Erik Andersen <andersee@debian.org>  Sun, 25 Mar 2001 20:59:44 -0700

busybox (0.50-1) unstable; urgency=low

  * Tons on improvements all around -- See changelog for details.
  * Fix malformed Build-Depends (closes: #86930)
  * grep has worked for some time now (closes: #81084)
  * init compiles with DEBUG_INIT enabled (closes: #85794)
  * md5sum no longer displays filename when reading stdin (closes: #81283)
  * lsmod, rmmod, and insmod are no longer enabled (closes: #85642)
  * busybox and buxybox-static now conflict/replace each other (closes: #80421)

 -- Erik Andersen <andersee@debian.org>  Thu, 15 Mar 2001 14:45:00 -0700

busybox (0.49-1) unstable; urgency=low

  * Lots more source updates and bug fixes.  See changelog for details.

 -- Erik Andersen <andersee@debian.org>  Sat, 27 Jan 2001 01:45:53 -0700

busybox (0.48-1) unstable; urgency=low

  * Lots more source updates and bug fixes.  See changelog for details.
  * Now includes .udeb support for the debian-installer.  The .udeb 
    probably needs some more work, but this should be a good start.

 -- Erik Andersen <andersee@debian.org>  Wed, 13 Dec 2000 08:36:07 -0700

busybox (0.47-1) unstable; urgency=low

  * New version released.  See changelog for details.

 -- Erik Andersen <andersee@debian.org>  Mon, 25 Sep 2000 23:00:56 -0600

busybox (0.46-1) unstable; urgency=low

  * New version released.  See changelog for details.

 -- Erik Andersen <andersee@debian.org>  Tue, 11 Jul 2000 12:15:44 -0600

busybox (0.45-1) unstable; urgency=low

  * First attempt at packaging BusyBox as a .deb.  This has been in 
    in the Debian boot-floppies CVS tree forever.  Hopefully, having it as a
    standalone app will make life easier for me, the debian-installer team, and
    everyone else as well...
  * I have created a busybox-static that can be used as a rescue shell when you 
    hose your system.  Just invoke "busybox sh" to fir up the shell.  This has
    every app provided by busybox staically linked in.  There have been several
    times in the past that I would have loved to have this sitting on my system
    (i.e. when libc gets screwed up.)

 -- Erik Andersen <andersee@debian.org>  Tue, 27 Jun 2000 12:26:41 -0600

