#! /bin/sh # Heavily based on the Slackware 12.2 SlackBuild NAME=cgdb VERSION=${VERSION:-0.6.4} URL=http://$NAME.sourceforge.net # DEPENDENCIES: gdb ncurses SRC_TAR=$NAME-$VERSION.tar.gz SRC_URL=http://downloads.sourceforge.net/$NAME/$SRC_TAR ARCH=${ARCH:-i486} BUILD=${BUILD:-1} TAG=${TAG:-_tmonjalo} CWD=$(pwd) TMP=${TMP:-/tmp/$NAME} PKG=$TMP/package-$NAME-$VERSION PKG_TAR=$NAME-$VERSION-$ARCH-$BUILD$TAG.tgz OUT=${OUT:-$CWD} PREFIX_DIR=/usr CONF_DIR=/etc STATE_DIR=/var BIN_DIR=$PREFIX_DIR/bin SBIN_DIR=$PREFIX_DIR/sbin MAN_DIR=$PREFIX_DIR/man INFO_DIR=$PREFIX_DIR/info DOC_DIR=$PREFIX_DIR/doc/$NAME-$VERSION set -e # get source if [ ! -r $CWD/$SRC_TAR ] ; then wget -P $CWD $SRC_URL fi mkdir -p $TMP SRC=$TMP/$(tar tf $CWD/$SRC_TAR | head -n1 | sed 's%/*$%%') rm -rf $SRC tar x -C $TMP -f $CWD/$SRC_TAR # set build options case "$ARCH" in i?86 ) SLKCFLAGS="-O2 -march=$ARCH -mtune=i686" SLKLDFLAGS="" ; LIBDIRSUFFIX="" ;; s390 | powerpc ) SLKCFLAGS="-O2" SLKLDFLAGS="" ; LIBDIRSUFFIX="" ;; x86_64 ) SLKCFLAGS="-O2 -fPIC" SLKLDFLAGS="-L/usr/lib64" ; LIBDIRSUFFIX="64" ;; esac # configure ( cd $SRC CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ $SRC/configure \ --prefix=$PREFIX_DIR \ --bindir=$BIN_DIR \ --sbindir=$SBIN_DIR \ --sysconfdir=$CONF_DIR \ --localstatedir=$STATE_DIR \ --datarootdir=$PREFIX_DIR \ --mandir=$MAN_DIR \ --infodir=$INFO_DIR \ --docdir=$DOC_DIR \ --build=$ARCH-slackware-linux ) # build make -C $SRC # install rm -rf $PKG mkdir -p $PKG/install make -C $SRC install DESTDIR=$PKG # strip binaries find $PKG -exec file '{}' \; | grep 'ELF .* \(executable\|shared object\)' | cut -d':' -f1 | xargs strip --strip-unneeded 2>/dev/null || true # gzip man pages if [ -d $PKG$MAN_DIR ] ; then for MAN_LINK in $(find $PKG$MAN_DIR -type l) ; do MAN_LINK_TARGET=$(readlink $MAN_LINK) if ! file $MAN_LINK_TARGET | fgrep -q gzip ; then ln -s $MAN_LINK_TARGET.gz $MAN_LINK.gz rm $MAN_LINK fi done find $PKG$MAN_DIR -type f -exec gzip -9 '{}' \; 2>/dev/null fi # gzip info pages and remove dir file if [ -d $PKG$INFO_DIR ] ; then rm -f $PKG$INFO_DIR/dir find $PKG$INFO_DIR -type f -exec gzip -9 '{}' \; 2>/dev/null fi # add docs mkdir -p $PKG$DOC_DIR mv $PKG$PREFIX_DIR/cgdb/cgdb.txt $PKG$DOC_DIR rm -rf $PKG$PREFIX_DIR/cgdb cp -p \ $SRC/AUTHORS \ $SRC/COPYING \ $SRC/README \ $SRC/NEWS \ $SRC/ChangeLog \ $PKG$DOC_DIR cat $0 > $PKG$DOC_DIR/$NAME.SlackBuild find $PKG$DOC_DIR -type f -exec chmod 0644 '{}' \; # add slack-desc cat > $PKG/install/slack-desc <<- EOF # HOW TO EDIT THIS FILE: # The "handy ruler" below makes it easier to edit a package description. Line # up the first '|' above the ':' following the base package name, and the '|' # on the right side marks the last column you can put a character in. You must # make exactly 11 lines for the formatting to be correct. It's also # customary to leave one space after the ':'. |----handy-ruler------------------------------------------------------| $NAME: CGDB $NAME: $NAME: CGDB is a curses-based interface to the GNU Debugger (GDB). The goal $NAME: of CGDB is to be lightweight and responsive; not encumbered with $NAME: unnecessary features. $NAME: The splitted screen shows the familiar GDB text interface and the $NAME: source as it executes. The UI is modeled on the text editor vi. $NAME: Some features: syntax-highlighted source, visual breakpoint, keyboard $NAME: shortcuts, searching using regexp, tab completion. $NAME: $NAME: $URL EOF # package ( cd $PKG requiredbuilder -v -y -s $CWD $PKG mkdir -p $OUT PACKAGE_CMD=$(cat <<- EOF chown -R root:root . chmod -R u+w,go+r-w,a-s . /sbin/makepkg -c n -l y -p $OUT/$PKG_TAR chown -R $(id -u):$(id -g) . $OUT/$PKG_TAR EOF) if [ $(id -u) -eq 0 ] ; then eval "$PACKAGE_CMD" elif type fakeroot >/dev/null ; then echo ROOT by fakeroot... echo "$PACKAGE_CMD" | fakeroot else echo ROOT by su... su -c "$PACKAGE_CMD" fi ) # cleanup rm -rf $PKG rm -rf $SRC rm -rf $TMP