busybox-cvs (20031212-3) unstable; urgency=low

  * debian/config-udeb-linux:
    - Enable freeramdisk. (closes: #225360)

 -- Bastian Blank <waldi@debian.org>  Tue, 30 Dec 2003 22:36:50 +0100

busybox-cvs (20031212-2) unstable; urgency=low

  * debian/config-udeb:
    - Enable freeramdisk
  * archival/libunarchive/data_extract_to_stdout.c:
    - Don't extract to much (upstream).
  * archival/libunarchive/data_extract_all.c:
    - Don't set permissions on symlinks (upstream).
  * editors/sed.c:
    - Fix (upstream). (closes: #224676)

 -- Bastian Blank <waldi@debian.org>  Tue, 23 Dec 2003 16:59:13 +0100

busybox-cvs (20031212-1) unstable; urgency=low

  * new cvs version
    - fixes IOR in fdisk. (closes: #223773)
  * debian/config*
    - update
    - remove mtab support from mount in busybox-static. (closes: #222386)
    - enable progress bar for wget. (closes: #223770)
  * modutils/obj/obj_s390{,x}.c
    - fix abi change, R_390_GOTOFF -> R_390_GOTOFF32. (closes: #216528)
  * acknowledge nmu. (closes: #216950, #216756, #215169, #215613)

 -- Bastian Blank <waldi@debian.org>  Fri, 12 Dec 2003 21:19:41 +0100

busybox-cvs (20030926-2.1) unstable; urgency=low

  * NMU
  * Remove /sbin/init from the udebs, while still leaving init support
    compiled in. rootskel takes over providing init, but then calls bb init.
    Remove linuxrc support from the udebs entirely. Closes: #216756
  * config-floppy-udeb-linux: add minimal find, grep. Closes: #215169
  * net-udeb-linux-i386: add loopback mount support. Closes: #215613

 -- Joey Hess <joeyh@debian.org>  Tue, 21 Oct 2003 12:47:52 -0400

busybox-cvs (20030926-2) unstable; urgency=low

  * debian/config-floppy-udeb-linux
    - update for new floppy images (closes: #212986, #214102)

 -- Bastian Blank <waldi@debian.org>  Thu, 09 Oct 2003 12:25:49 +0200

busybox-cvs (20030926-1) unstable; urgency=low

  * new cvs version
  * Makefile
    - fix libpwdgrp link (upstream) (closes: #211675)
  * Rules.mak.in
    - fix optimization (closes: #212485)
  * debian/config*
    - update
  * debian/config*udeb*
    - move linux-i386 to linux (enable modutils on any linux arch)
    - rename net to floppy
    - enable wget status bar (closes: #211457)
  * init/init.c
    - workaround race conditions (closes: #212764)

 -- Bastian Blank <waldi@debian.org>  Fri, 26 Sep 2003 15:10:14 +0200

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

  * shell/ash.c
    - fix signal handling (upstream)

 -- Bastian Blank <waldi@debian.org>  Mon, 15 Sep 2003 18:12:09 +0200

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

