[arch-dev-public] Adding dash to core/base
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@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 }
participants (1)
-
Dan McGee