#!/bin/bash 

# aaa_elflibs.SlackBuild
# by Stuart Winter <stuart@armedslack.org> for ARMedslack
# 28-Aug-2006

# Wow! This build script is cool - some times I even surprise myself! ;-)

# Paths to skeleton port's source & real Slackware source tree:
export CWD=$SLACKSOURCE/$PKGSERIES/$PACKAGE
export PORTCWD=$PWD

# Temporary build locations:
export TMPBUILD=$TMP/build-$PACKAGE
export PKG=$TMP/package-$PACKAGE
mkpkgdirs # Delete and re-create temporary directories

# The basic package framework:
mkdir -p $PKG/{lib,usr/lib}

# Populate the packages list with the file created by 'find_aaaelflibpkgs'
PACKAGES="$( awk -F- '{print $1"-[0-9]*-*.tgz"}' <  $PORTCWD/x86_slackware_aaa_elflibs_pkg_list.txt | uniq )"

# Iterate through the list and extract them into the temporary dir:
for i in ${PACKAGES}; do
  if [ -s $PKGSTORE/$i ]; then
     echo "Extracting package $PKGSTORE/$i"
     tar zxvvf $PKGSTORE/$i lib usr/lib install
     echo -n "Please wait - running install script"
     ( bash install/doinst.sh ) > /dev/null 2>&1 # we want the symlinks too
     echo " ... done"
   else
     echo "** WARNING: $PKGSTORE/$i not found **"
     sleep 5
 fi
done

# Grab the .sos and symlinks.
# We don't want to copy *everything* out of the packages - only
# a few select things.
# Deal with /lib:
# 
# Trick - Grab them from the package list:
# cat x86_slackware_aaa_elflibs_pkg_list.txt | grep :lib/
( cd lib

  # a/acl:
  cp -favv libacl*.so* $PKG/lib/

  # a/attr:
  cp -favv libattr*.so* $PKG/lib/
  
  # a/bzip2:
  cp -favv libbz2*.so* $PKG/lib/

  # a/gpm:
  cp -favv libgpm*.so* $PKG/lib/

  # a/sysfsutils:
  cp -favv libsysfs*.so* $PKG/lib/

  # ap/dmapi:
  cp -favv libdm*.so* $PKG/lib/

  # l/db*:
  cp -favv libdb*.so* $PKG/lib

  # l/libtermcap:
  cp -favv libtermcap*.so* $PKG/lib

  # l/ncurses:
  cp -favv libncurses*.so* $PKG/lib

)

# Trick - grab them from the package list:
# cat x86_slackware_aaa_elflibs_pkg_list.txt | grep :usr/lib/
# 
# /usr/lib
( cd usr/lib

  # a/cups
  cp -favv libcups*.so* $PKG/usr/lib/

  # d/gcc #  & testing/packages-gcc-3.3.x: - no because the libgcc names are identical
  cp -favv libgcc_s*.so* $PKG/usr/lib
 
  # l/alsa-lib:
  cp -favv libasound*.so* $PKG/usr/lib

  # l/expat:
  cp -favv libexpat*.so* $PKG/usr/lib

  # l/freetype:
  cp -favv libfreetype*.so* $PKG/usr/lib

  # l/gdbm:
  cp -favv libgdbm*.so* $PKG/usr/lib

  # l/glib2:
  cp -favv libglib*.so* \
           libgmodule*.so* \
           libgobject*.so* \
           libgthread*.so* \
           $PKG/usr/lib

  # l/gmp:
  cp -favv libgmp*.so* \
           libmp*.so* \
           $PKG/usr/lib

  # l/libjpeg:
  cp -favv libjpeg*.so* $PKG/usr/lib

  # l/libpng:
  cp -favv libpng*.so* $PKG/usr/lib

  # l/libtiff:
  cp -favv libtiff*.so* $PKG/usr/lib

  # l/mm:
  cp -favv libmm*.so* $PKG/usr/lib

  # l/ncurses:
  cp -favv libform*.so* \
           libmenu*.so* \
           libpanel*.so* \
           $PKG/usr/lib

  # l/libusb:
  cp -favv libusb*.so* $PKG/usr/lib

  # l/pcre:
  cp -favv libpcre*.so* $PKG/usr/lib

  # l/popt:
  cp -favv libpopt*.so* $PKG/usr/lib

  # l/readline:
  cp -favv libhistory*.so* \
           libreadline*.so* \
           $PKG/usr/lib

  # l/svgalib:
  cp -favv libvga*.so* $PKG/usr/lib

  # l/slang:
  cp -favv libslang*.so* $PKG/usr/lib

  # l/zlib:
  cp -favv libz*.so* $PKG/usr/lib

  # n/curl:
  cp -favv libcurl*.so* $PKG/usr/lib

)

# For Oracle 10g RAC support:
( cd $PKG/lib
  for i in ../usr/lib/libgcc* ; do
        ln -vvfs $i .
  done )

# If necessary, start the fakeroot server so we can set file/dir ownerships:
start_fakeroot

# Slackware policies:
cd $PKG
slackslack      # set all files to root.root, chmod -R og-w, slackchown, slack644docs
slackdesc       # install slack-desc and doinst.sh

# Build the package:
if [ $PORTARCH = arm ]; then
   slackmp # run makepkg
  else
   makepkg -l y -c n $PKGSTORE/$PKGSERIES/$PACKAGE-$VERSION-$ARCH-$BUILD.tgz
fi

# Perform any final checks on the package:
cd $PKG
slackhlinks     # search for any hard links

echo "Now run a pkgdiff against Slackware's & ARMedslack's package"

