X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=functions%2Ffpkg;h=ee290c5d60f34655547dde689adfcaa9c6eb05c4;hb=3a7d016a0246156de63a6f98bbf5be2e95230060;hp=dfbafae4e5305c11de1e2728b337ec45351802ab;hpb=14ad1e23484d4394eea4a8d0386995190a05039d;p=hvlinux.git diff --git a/functions/fpkg b/functions/fpkg index dfbafae..ee290c5 100644 --- a/functions/fpkg +++ b/functions/fpkg @@ -90,6 +90,7 @@ wget_wrapper() local URL=${1} local SOURCE=${2} local DESTDIR=${LFS_PKG_DIR} + local wget_status if [ ${#} -eq 3 ]; then DESTDIR=${3} @@ -154,17 +155,24 @@ wget_wrapper() # Arg. #2: Destination filename. static_fetch_patches_list() { + local wget_status + PATCHES_URL=${1} PATCHES_LIST_FILENAME=${2} # Appending a slash (/) will download the directory content as a file named # index.html - ${WGETCMD} "${PATCHES_URL}/" && + ${WGETCMD} "${PATCHES_URL}/" + wget_status=$? # Append log to global log file - cat ${WGET_LOG_FILE} >> ${LFS_LOG_FILE} && + cat ${WGET_LOG_FILE} >> ${LFS_LOG_FILE} - mv ${LFS_PKG_DIR}/index.html ${PATCHES_LIST_FILENAME} + if [ ${wget_status} -eq 0 ]; then + mv ${LFS_PKG_DIR}/index.html ${PATCHES_LIST_FILENAME} + else + return 1 + fi } # Arg. #1: If "test" is specified, set TEST_INTEGRITY to 1 @@ -208,23 +216,23 @@ update_packages_init() return 1 fi - if [ -n "${USE_LFS_PATCHES}" ]; then - # Getting list of all patches from LFS server. - rcmd "Fetching LFS patches list" static_fetch_patches_list \ - ${LFS_PATCHES_URL} ${LFS_PATCHES_LIST} - fi + # Temporary deactivate error checking. + set +e - if [ -n "${USE_BLFS_PATCHES}" ]; then - # Getting list of all patches from BLFS server. - rcmd "Fetching BLFS patches list" static_fetch_patches_list \ - ${BLFS_PATCHES_URL} ${BLFS_PATCHES_LIST} - fi + # Getting list of all patches from LFS server. + rcmd "Fetching LFS patches list" static_fetch_patches_list \ + ${LFS_PATCHES_URL} ${LFS_PATCHES_LIST} - if [ -n "${USE_CLFS_PATCHES}" ]; then - # Getting list of all patches from CLFS server. - rcmd "Fetching CLFS patches list" static_fetch_patches_list \ - ${CLFS_PATCHES_URL} ${CLFS_PATCHES_LIST} - fi + # Getting list of all patches from BLFS server. + rcmd "Fetching BLFS patches list" static_fetch_patches_list \ + ${BLFS_PATCHES_URL} ${BLFS_PATCHES_LIST} + + # Getting list of all patches from CLFS server. + rcmd "Fetching CLFS patches list" static_fetch_patches_list \ + ${CLFS_PATCHES_URL} ${CLFS_PATCHES_LIST} + + # Reactivate error checking. + set -e } # Get patch for package if it is not in the repository @@ -237,6 +245,11 @@ static_checkpatch() local PATCHES_LIST=${2} local PATCHES_URL=${3} + # Make sure patch list file exists + if [ ! -f ${PATCHES_LIST} ]; then + return + fi + # Remplace les "+" par "%2B" local PACK_URL=$(echo $PACK | sed s!\+!%2B!g) @@ -276,20 +289,14 @@ static_getpatch() return 1 fi - if [ -n "${USE_LFS_PATCHES}" ]; then - # Checking if patch is available from LFS. - static_checkpatch ${PACK} ${LFS_PATCHES_LIST} ${LFS_PATCHES_URL} - fi + # Checking if patch is available from LFS. + static_checkpatch ${PACK} ${LFS_PATCHES_LIST} ${LFS_PATCHES_URL} - if [ -n "${USE_BLFS_PATCHES}" ]; then - # Checking if patch is available from BLFS. - static_checkpatch ${PACK} ${BLFS_PATCHES_LIST} ${BLFS_PATCHES_URL} - fi + # Checking if patch is available from BLFS. + static_checkpatch ${PACK} ${BLFS_PATCHES_LIST} ${BLFS_PATCHES_URL} - if [ -n "${USE_CLFS_PATCHES}" ]; then - # Checking if patch is available from CLFS. - static_checkpatch ${PACK} ${CLFS_PATCHES_LIST} ${CLFS_PATCHES_URL} - fi + # Checking if patch is available from CLFS. + static_checkpatch ${PACK} ${CLFS_PATCHES_LIST} ${CLFS_PATCHES_URL} } detect_file_not_found() @@ -331,35 +338,50 @@ static_getpkg() PREFERRED_EXT="${DEFAULT_ARCH_EXT_LIST}" fi - for arch_ext in ${PREFERRED_EXT}; do - wget_wrapper ${URL} ${PACK}.${arch_ext} - wget_wrapper_status=$? + wget_wrapper_status= + url_list="${URL}" - if [ ${wget_wrapper_status} -eq 1 ]; then - return 1; - fi + if [ x"${URL}" != x"${HV_PACKAGES_URL}" ]; then + url_list+=" ${HV_PACKAGES_URL}" + fi - if [ ${wget_wrapper_status} -eq 2 ]; then - continue; - fi + for url in ${url_list}; do + for arch_ext in ${PREFERRED_EXT}; do + wget_wrapper ${url} ${PACK}.${arch_ext} + wget_wrapper_status=$? - # If we are here, it means the file was successfully downloaded. - FINAL_EXT=${arch_ext} + #if [ ${wget_wrapper_status} -eq 1 ]; then + # return 1; + #fi - # Convert to bzip2 format if requested and if it is a tar/gz archive - if [ -n "${PREFER_BZIP2_ARCHIVE}" ]; then - if is_extension_tar_gzip "${arch_ext}" ; then - rcmd "Converting ${PACK}.${arch_ext} to bzip2 format" \ - gztobz2 ${LFS_PKG_DIR}/${PACK}.${arch_ext} - FINAL_EXT="tar.bz2" + if [ ${wget_wrapper_status} -eq 0 ]; then + break; fi - fi + done - return $? + if [ ${wget_wrapper_status} -eq 0 ]; then + break; + fi done # Failure or file not found - return 1 + if [ ${wget_wrapper_status} -gt 0 ]; then + return 1; + fi + + # If we are here, it means the file was successfully downloaded. + FINAL_EXT=${arch_ext} + + # Convert to bzip2 format if requested and if it is a tar/gz archive + if [ -n "${PREFER_BZIP2_ARCHIVE}" ]; then + if is_extension_tar_gzip "${arch_ext}" ; then + rcmd "Converting ${PACK}.${arch_ext} to bzip2 format" \ + gztobz2 ${LFS_PKG_DIR}/${PACK}.${arch_ext} + FINAL_EXT="tar.bz2" + fi + fi + + return 0 } # Test integrity of archive @@ -418,7 +440,14 @@ test_archive_integrity() # pm (Perl module via CPAN) # fd (freedesktop.org) # -o Option specific to mode -# -s Subdirectory on server +# -s DIR Subdirectory on server +# -v NUM Subdirectory on server is equal to package version. If -s option is specified, then +# append version number to value of -s argument: +# NUM= Full version number +# NUM=1 First number of package version +# NUM=2 First two numbers of package version +# Ex: fpkg -s "v" -v 2 mypkg-1.2.3 http://mypkg.com would fetch from url: +# http://mypkg.com/v1.2/mypkg-1.2.3.tar.bz2 # -w First erase destination file if it exists (except in test mode) fpkg() { @@ -430,9 +459,11 @@ fpkg() local MODE_OPT="" local SRC_DIR="" local FD_SUBDIR_FINAL="" + local VARG="" + unset VOPTION unset ERASE_FIRST - while getopts "d:e:f:m:o:s:w" flag ;do + while getopts "d:e:f:m:o:s:v:w" flag ;do case ${flag} in d) # Fetch directory (where to put file) @@ -455,6 +486,10 @@ fpkg() s) SRC_DIR=${OPTARG} ;; + v) + VOPTION="y" + VARG=${OPTARG} + ;; w) ERASE_FIRST="y" ;; @@ -482,6 +517,29 @@ fpkg() local URL=${2} fi + if [ -n "${VOPTION}" ]; then + # Append version number to SRC_DIR (if specified) + case ${VARG} in + 0) + # Full version number + SRC_DIR+="$(get_pkg_ver ${PACK})" + ;; + 1) + SRC_DIR+="$(get_pkg_ver1 ${PACK})" + ;; + 2) + SRC_DIR+="$(get_pkg_ver2 ${PACK})" + ;; + 3) + SRC_DIR+="$(get_pkg_ver3 ${PACK})" + ;; + *) + echo "${FUNCNAME}(), invalid -v argument: ${VARG}" + return 1 + ;; + esac + fi + if [ -n "${MODE}" ]; then case ${MODE} in gnu) @@ -633,10 +691,15 @@ fpkg() rm ${DEST_FILE} fi - if [ ! -f ${DEST_FILE} ]; then + if [ ! -f ${DEST_FILE} ]; then # Fetch package set +e static_getpkg ${SRC_FILENAME} ${URL} ${FILE_EXT} + rc=$? + + if [ ${rc} -ne 0 ]; then + return ${rc}; + fi set -e # Move file if source filename is not equal to package name and/or