Réglé problème de lien symboliques incorrects pour les fonts X11
[hvlinux.git] / functions / main
index ec42a71..21f8a31 100644 (file)
@@ -73,7 +73,7 @@ BRACKET="\033[1;34m"
 TAR_OPTS="-b8"
 
 # List of default archive extensions to try
-DEFAULT_ARCH_EXT_LIST="tar.bz2 tar.gz tgz tar.Z zip"
+DEFAULT_ARCH_EXT_LIST="tar.bz2 tar.gz tgz tar.Z tar.xz zip"
 
 HV_FONTS_PATH="/usr/share/fonts"
 
@@ -133,6 +133,11 @@ init_log_file()
     # Scripts directory
     export SCRDIR=$(pwd)
 
+    if [ ! -d "$(dirname $(pwd))/packages" ]; then
+        echo "Error, could not find packages directory \"$(dirname $(pwd))/packages\", aborting."
+        exit 1
+    fi
+
     export LFS_PKG_DIR="$(dirname $(pwd))/packages/${LFS_STAGE}"
     export LFS_LOG_DIR=${LFS}/var/log/hvlinux-install/${LFS_STAGE}
     export LFS_LOG_FILE=${LFS_LOG_DIR}/install.log
@@ -144,6 +149,15 @@ init_log_file()
     fi
 }
 
+# Check that we are logged in as the root user, and exit if this is not the case.
+check_for_root_user()
+{
+    if [ "x${USER}" != "xroot" ]; then
+        echo "You must be the superuser to install hvlinux."
+        exit 1
+    fi
+}
+
 # Extracting the version number from a complete package name.
 # Arg. #1: Complete package name with version (ex: firefox-3.5.5.source will output 3.5.5)
 get_pkg_ver()
@@ -157,9 +171,9 @@ get_pkg_ver()
     echo ${1} | sed "s!.*-\([0-9].*\)!\1!g"
 }
 
-# Extracting the base version number from a complete package name.
-# Arg. #1: Complete package name with version (ex: gcc-3.4.4 will output 3.4)
-get_pkg_ver_base()
+# Extracting the first digit version number from a complete package name.
+# Arg. #1: Complete package name with version (ex: gcc-3.4.4 will output 3)
+get_pkg_ver1()
 {
     # Checking for correct number of arguments
     if [ $# -ne 1 ]; then
@@ -167,13 +181,12 @@ get_pkg_ver_base()
        return 1
     fi
 
-    echo ${1} | sed "s!^.*-\([0-9]*\.[0-9]*\).*!\1!g"
+    echo ${1} | sed "s!^.*-\([0-9]*\)\..*!\1!g"
 }
 
-# Extracting the 3-digit version number from a complete package name.
-# Arg. #1: Complete package name with version
-# (ex: linux-2.6.37.1 will output 2.6.37)
-get_pkg_ver3()
+# Extracting the first 2 digits version number from a complete package name.
+# Arg. #1: Complete package name with version (ex: gcc-3.4.4 will output 3.4)
+get_pkg_ver2()
 {
     # Checking for correct number of arguments
     if [ $# -ne 1 ]; then
@@ -181,12 +194,13 @@ get_pkg_ver3()
        return 1
     fi
 
-    echo ${1} | sed "s!^.*-\([0-9]*\.[0-9]*\.[0-9]*\).*!\1!g"
+    echo ${1} | sed "s!^.*-\([0-9]*\.[0-9]*\).*!\1!g"
 }
 
-# Extracting the base version number from a complete package name.
-# Arg. #1: Complete package name with version (ex: gcc-3.4.4 will output 3)
-get_pkg_ver_major()
+# Extracting the first 3 digit version number from a complete package name.
+# Arg. #1: Complete package name with version
+# (ex: linux-2.6.37.1 will output 2.6.37)
+get_pkg_ver3()
 {
     # Checking for correct number of arguments
     if [ $# -ne 1 ]; then
@@ -194,7 +208,7 @@ get_pkg_ver_major()
        return 1
     fi
 
-    echo ${1} | sed "s!^.*-\([0-9]*\)\..*!\1!g"
+    echo ${1} | sed "s!^.*-\([0-9]*\.[0-9]*\.[0-9]*\).*!\1!g"
 }
 
 # Extracting the name from a complete package name.
@@ -653,7 +667,7 @@ static_decompressed_dirname()
        local DIRNAME=""
 
         case ${arch_ext} in
-           tar.bz2|tar.gz|tgz|tar.Z)
+           tar.bz2|tar.gz|tgz|tar.Z|tar.xz)
                 # Remove optional "./" leading component with sed
                 # and extract base directory name with awk.
                 # tar 1.23 reports an error when using pipes, so
@@ -682,6 +696,7 @@ static_decompressed_dirname()
 # Decompression of a package
 # First argument: package name
 # Second argument: directory where decompressing (optional, defaults to LFS_TMP)
+# Third argument: directory levels to strip (optional)
 decompress_package()
 {
     # Checking for correct number of arguments
@@ -689,8 +704,11 @@ decompress_package()
        local TOPDIR=${LFS_TMP}
     elif [ $# -eq 2 ]; then
        local TOPDIR=${2}
+    elif [ $# -eq 3 ]; then
+       local TOPDIR=${2}
+       local STRIP_LEVEL="--strip-components=${3}"
     else
-       echo "${FUNCNAME}(): Incorrect number of arguments (must be 1 or 2)" > /dev/stderr
+       echo "${FUNCNAME}(): Incorrect number of arguments (must be 1, 2 or 3)" > /dev/stderr
        return ${EXIT_FAILURE}
     fi
 
@@ -707,17 +725,15 @@ decompress_package()
            rm -rf ${TOPDIR}/${PACKAGE}
         fi
 
+
         # Decompressing package
         case ${arch_ext} in
-           tar.bz2)
-                tar -C ${TOPDIR} ${TAR_OPTS} -jxf \
-                    ${LFS_PKG_DIR}/${PACKAGE}.${arch_ext}
-                ;;
-           tar.gz|tgz|tar.Z)
-                tar -C ${TOPDIR} ${TAR_OPTS} -zxf \
+           tar.bz2|tar.gz|tgz|tar.Z|tar.xz)
+                tar -C ${TOPDIR} ${TAR_OPTS} ${STRIP_LEVEL} -xf \
                     ${LFS_PKG_DIR}/${PACKAGE}.${arch_ext}
                 ;;
             zip)
+                # Support STRIP_LEVEL???
                 unzip -qq -d ${TOPDIR} ${LFS_PKG_DIR}/${PACKAGE}.${arch_ext}
                 ;;
         esac