[arch-dev-public] Adding dash to core/base

Dan McGee dpmcgee at gmail.com
Tue Nov 27 22:01:33 EST 2007


One of my recent Arch goals has been to drop in a replacement shell
for /bin/sh that is not bash. Currently we have no lightweight shell
in core, and I think this should change. I'm proposing we add dash to
our core/base set of packages so people can have a lightweight,
break-proof shell on their system. For now, it does nothing to the
/bin/sh symlink to bash, but hopefully in the future we can change
this to greatly speed up the execution of a lot of shell scripts that
don't need a full blown bash to run.

Why do this? I'll go through some reasons below.

/bin/bash is 518K, not to even mention it uses shared libraries (which
bring the total to somewhere around 2625K).
/bin/dash as compiled below is 67K static (compiled with klibc). Thats
it, and it will never break due to any sort of system upgrade.

/bin/dash is static, meaning it is perfect to include as a root shell
or build into an initrd.

/bin/dash is fast. It loads faster, which is a HUGE help when it comes
to running fork-heavy things like ./configure and the makefiles that
result from it.

This package is only 121K installed, which means its not going to
break the bank on anyones system.

I've included the proposed PKGBUILD below. A few things of note: as I
mentioned above, it is compiled against klibc (compiling against glibc
statically makes it almost 10x larger). Also, this package does not
provide sh- that distinction is only for the package (bash or dash)
that actually has the /bin/sh -> respective shell link. This helps
clarify why I am making dependency switches from bash to sh when
applicable.

-Dan


# $Id$
# Maintainer: Dan McGee <dan at archlinux.org>

pkgname=dash
pkgver=0.5.4
pkgrel=3
pkgdesc="A POSIX compliant shell that aims to be as small as possible"
arch=('i686' 'x86_64')
url="http://ftp.debian.org/debian/pool/main/d/dash"
license=('BSD')
makedepends=('klibc>=1.5')
#provides=('sh')
source=("http://gondor.apana.org.au/~herbert/dash/files/dash-$pkgver.tar.gz")
md5sums=('bc457e490a589d2f87f2333616b67931')

build() {
  cd $startdir/src/$pkgname-$pkgver
  ./configure --prefix=/usr --exec-prefix="" CC=klcc LD=klcc
  make || return 1
  make DESTDIR=$startdir/pkg install || return 1

  # license
  install -m644 -D COPYING $startdir/pkg/usr/share/licenses/$pkgname/COPYING

  #static dash is our default /bin/sh
  #cd ${startdir}/pkg/bin
  #ln -s dash sh
}




More information about the arch-dev-public mailing list