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

