From 2f44e3864cd68a46aa7687c13045d073315b4cc4 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Sun, 29 Jan 2012 09:11:01 +0100 Subject: [PATCH] add support for source packages in archives --- lib/builder-targets.sh | 51 +++++++++++++++++++++++--------------- lib/builder-utils.sh | 23 +++++++++++++++++ sample/builder-product.cfg | 30 ++++++++++++++++++++++ 3 files changed, 84 insertions(+), 20 deletions(-) diff --git a/lib/builder-targets.sh b/lib/builder-targets.sh index 65f7e5d..aa0e4ad 100644 --- a/lib/builder-targets.sh +++ b/lib/builder-targets.sh @@ -82,20 +82,22 @@ builder_retrieve() { local urls=${SOURCE[$i]} local arch=${ARCH[$i]} local downloaded=0 - - # Add private repos to the urls + + # Add private repos to the urls if [ ! -z ${DIST_PRIVATE_REPOS} ]; then urls="${DIST_PRIVATE_REPOS}/$basename;$urls" fi - - # check existence of CRC file - if [ ! -e ${PRODUCT_DIR}/${basename}.sha1sum ] ; then - echo "You need to create the checksums with: sha1sum ${DIST_CACHE_DIR}/${basename} > ${PRODUCT_DIR}/${basename}.sha1sum" - exit 1 + + # check existence of CRC file only in non devel mode + if [ ! -z "${DEVEL}" ] ; then + if [ ! -e ${PRODUCT_DIR}/${basename}.sha1sum ] ; then + echo "You need to create the checksums with: sha1sum ${DIST_CACHE_DIR}/${basename} > ${PRODUCT_DIR}/${basename}.sha1sum" + exit 1 + fi fi - + echo "Downloading $basename" - # check downloading from the defined URLs + # check downloading from the defined URLs for src in `echo $urls | sed -e 's/;/\n/g'` ; do if [ $downloaded == 1 ]; then continue; fi @@ -150,24 +152,21 @@ builder_create() { WIGHT=`identify -format "%w" $iconfile_src` identify -format "%wx%h" $iconfile_src - if [ $WIGHT -lt $HIGHT ] - then + if [ $WIGHT -lt $HIGHT ] ; then # Its higher so force x160 and let imagemagic decide the right wight # then add transparency to the rest of the image to fit 160x160 echo "Icon Wight: $WIGHT < Hight: $HIGHT" convert $iconfile_src -transparent white -background transparent -resize x160 \ -size 160x160 xc:transparent +swap -gravity center -composite $ICONFILE builder_check_error "converting image" - elif [ $WIGHT -gt $HIGHT ] - then + elif [ $WIGHT -gt $HIGHT ] ; then # Its wider so force 160x and let imagemagic decide the right hight # then add transparency to the rest of the image to fit 160x160 echo "Icon Wight: $WIGHT > Hight: $HIGHT" convert $iconfile_src -transparent white -background transparent -resize 160x \ -size 160x160 xc:transparent +swap -gravity center -composite $ICONFILE builder_check_error "converting image" - elif [ $WIGHT -eq $HIGHT ] - then + elif [ $WIGHT -eq $HIGHT ] ; then # Its scare so force 160x160 echo "Icon Wight: $WIGHT = Hight: $HIGHT" convert $iconfile_src -transparent white -background transparent -resize 160x160 \ @@ -189,10 +188,15 @@ builder_create() { # copy binaries + distfile=${DIST_FILE[$i]} for (( i = 0 ; i < ${#SOURCE[@]} ; i++ )) ; do - distfile=${DIST_FILE[$i]} - mkdir -p $INST_DIR/CLIENT_DATA/${ARCH[$i]} - cp ${DIST_FILE[$i]} $INST_DIR/CLIENT_DATA/${ARCH[$i]} + if [ ! -z "${INSTALL[$i]}" ] ; then + mkdir -p $INST_DIR/CLIENT_DATA/${ARCH[$i]}/${EXTRACTTO[$i]} + extract_file ${DIST_FILE[$i]} $INST_DIR/CLIENT_DATA/${ARCH[$i]}/${EXTRACTTO[$i]} + else + mkdir -p $INST_DIR/CLIENT_DATA/${ARCH[$i]} + cp ${DIST_FILE[$i]} $INST_DIR/CLIENT_DATA/${ARCH[$i]} + fi done # create variables @@ -201,8 +205,15 @@ builder_create() { for (( i = 0 ; i < ${#SOURCE[@]} ; i++ )) ; do if [ -z ${WINST[$i]} ] ; then continue ; fi if [ ! -z "${ARCH[$i]}" ] ; then arch_str="${ARCH[$i]}\\" ; fi - echo "DefVar \$${WINST[$i]}\$" >>$var_file - echo "Set \$${WINST[$i]}\$ = \"%ScriptPath%\\$arch_str${FILE[$i]}\"" >>$var_file + if [ ! -z "${EXTRACTTO[$i]}" ] ; then extractto_str="${EXTRACTTO[$i]}\\" ; fi + if [ ! $i -eq $ICON_FILE_INDEX ] ; then + echo "DefVar \$${WINST[$i]}\$" >>$var_file + if [ ! -z "${INSTALL[$i]}" ] ; then + echo "Set \$${WINST[$i]}\$ = \"%ScriptPath%\\$arch_str$extractto_str${INSTALL[$i]}\"" >>$var_file + else + echo "Set \$${WINST[$i]}\$ = \"%ScriptPath%\\$arch_str${FILE[$i]}\"" >>$var_file + fi + fi done # publish some other variables diff --git a/lib/builder-utils.sh b/lib/builder-utils.sh index 4cf2c71..b29afae 100644 --- a/lib/builder-utils.sh +++ b/lib/builder-utils.sh @@ -24,6 +24,29 @@ function retrieve_file() { fi } +############################################# +# void extract_file (src, dst) +# +# Description: Extract a file +# +# Parameter +# src: source file to be used +# dst: path to extract the file +# +############################################# +function extract_file() { + local src=$1 + local dst=$2 + + if [ "${EXTRACTWITH}" = "7zip" ]; then + 7z x -o$dst $src + elif [ "${EXTRACTWITH}" = "unzip" ]; then + unzip $src -d $dst + else + 7z x -o$dst $src + fi +} + ############################################# # check if method is available and call it diff --git a/sample/builder-product.cfg b/sample/builder-product.cfg index 833b068..5c632d2 100644 --- a/sample/builder-product.cfg +++ b/sample/builder-product.cfg @@ -12,6 +12,19 @@ ADVICE="" # Valid value: restrict | public TYPE="public" +# EXTRACTWITH - defines the used programm for decompression +# Valid values: 7zip | unzip +# Default value: 7zip +# This Value is only usefull in combinnation with Variable INSTALL[INDEX] +# EXTRACTWITH="7zip" + +# Begin Not Implemented --- +# DOWNLOADWITH - defines the used programm for download +# Valid values: wget | plowdown +# Default value: wget +# DOWNLOADWITH="wget" +# End Not Implemented --- + ################# # File object array @@ -50,6 +63,23 @@ TYPE="public" # This parameter is ptional, default value: , # WINST[index]=itWESS # +################# +# Optional Array Elements +################ +# +# - INSTALL Variabels: +# If you specify the INSTALL Array Element Builder expects that the specified FILE is a +# compressed archive and extract it. +# INSTALL[index]="libreoffice34.msi" +# +# - EXTRACTTO Variabels: +# This Variable only works in combination with INSTALL and forces the extraction +# to be done into the specified directory. +# This will result in the files to be extracted to ARCH/EXTRACTTO. +# This feature is mostly needed if a package includes more setup programms that are nemed the +# same. This way you place the setups into diffent dirs +# EXTRACTTO[index]="office" +# FILE[0]="itWatchLogo.jpg" SOURCE[0]="http://www.itwatch.de/logos/itWatchLogo.jpg"