- if [ ! -f ${LFS_PKG_DIR}/${PACKAGE}.tar.bz2 ]; then
- echo "${FUNCNAME}(): Missing source package: \"${PACKAGE}.tar.bz2\"" > /dev/stderr
- return ${EXIT_FAILURE}
- fi
-
- if [ -d ${TOPDIR}/${PACKAGE} ]; then
- # Removing old source directory (if any)
- rm -v -rf ${TOPDIR}/${PACKAGE} || exit 1
- fi
+ # List of default archive extensions to try
+ local MY_ARCH_EXT="tar.bz2 tar.gz tgz tar.Z zip"
+
+ for arch_ext in ${MY_ARCH_EXT}; do
+ if [ ! -f ${LFS_PKG_DIR}/${PACKAGE}.${arch_ext} ]; then
+ # Try next archive extension.
+ continue;
+ fi
+
+ if [ -d ${TOPDIR}/${PACKAGE} ]; then
+ # Removing old source directory (if any)
+ rm -v -rf ${TOPDIR}/${PACKAGE} || exit 1
+ fi
+
+ cd ${TOPDIR}
+
+ # Decompressing package
+ case ${arch_ext} in
+ tar.bz2)
+ tar ${TAR_OPTS} -jxvf ${LFS_PKG_DIR}/${PACKAGE}.${arch_ext} || return 1
+ ;;
+ tar.gz|tgz|tar.Z)
+ tar ${TAR_OPTS} -zxvf ${LFS_PKG_DIR}/${PACKAGE}.${arch_ext} || return 1
+ ;;
+ zip)
+ echo ZIPZIPZIP
+ unzip ${LFS_PKG_DIR}/${PACKAGE}.${arch_ext} || return 1
+ ;;
+ esac
+
+ cd - 1> /dev/null 2>&1
+
+ return $?
+ done