From c2af257783710a424c4c5a86cbeb100fb1e8aa4a Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Sat, 28 Jan 2012 19:13:08 +0100 Subject: [PATCH 1/5] correct wrong lang detect by opsi-makeproductfile --- lib/builder-targets.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/builder-targets.sh b/lib/builder-targets.sh index cfbdbb9..8a5b81c 100644 --- a/lib/builder-targets.sh +++ b/lib/builder-targets.sh @@ -217,7 +217,7 @@ builder_package() { local opsi_file=${PN}_${VERSION}-${release_new}.opsi pushd ${OUTPUT_DIR} rm -f ${opsi_file} ${OPSI_REPOS_FILE_PATTERN}.opsi - opsi-makeproductfile -v $INST_DIR + LANG="C" opsi-makeproductfile -v $INST_DIR builder_check_error "Building OPSI-package" popd From 1caae7b13e4c065a4702f425523695e1f0634944 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Sat, 28 Jan 2012 19:17:23 +0100 Subject: [PATCH 2/5] unix2dos not dos2unix --- lib/builder-targets.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/builder-targets.sh b/lib/builder-targets.sh index 8a5b81c..0de8618 100644 --- a/lib/builder-targets.sh +++ b/lib/builder-targets.sh @@ -141,7 +141,7 @@ builder_create() { # Copy files and convert text files to dos format cp -Rv ${PRODUCT_DIR}/OPSI $INST_DIR cp -Rv ${PRODUCT_DIR}/CLIENT_DATA $INST_DIR - find $INST_DIR/CLIENT_DATA -type f | xargs -n1 -iREP sh -c 'file -i $0 | grep "text/plain" && dos2unix $0' REP + find $INST_DIR/CLIENT_DATA -type f | xargs -n1 -iREP sh -c 'file -i $0 | grep "text/plain" && unix2dos $0' REP # converting icon file local iconfile_src=${DIST_FILE[$ICON_FILE_INDEX]} From 8d6eb9c586ab9d4d59659f67a6ffbc33a7c8a7f6 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Sun, 29 Jan 2012 00:34:35 +0100 Subject: [PATCH 3/5] Add propper image convert for every possible ratio --- lib/builder-targets.sh | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/lib/builder-targets.sh b/lib/builder-targets.sh index 0de8618..65f7e5d 100644 --- a/lib/builder-targets.sh +++ b/lib/builder-targets.sh @@ -146,9 +146,45 @@ builder_create() { # converting icon file local iconfile_src=${DIST_FILE[$ICON_FILE_INDEX]} ICONFILE=$OUTPUT_DIR/$PN.png - convert -colorspace rgb $iconfile_src -transparent white -background transparent -resize 160x160 \ - -size 160x160 xc:transparent +swap -gravity center -composite $ICONFILE - builder_check_error "converting image" + HIGHT=`identify -format "%h" $iconfile_src` + WIGHT=`identify -format "%w" $iconfile_src` + identify -format "%wx%h" $iconfile_src + + 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 + # 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 + # Its scare so force 160x160 + echo "Icon Wight: $WIGHT = Hight: $HIGHT" + convert $iconfile_src -transparent white -background transparent -resize 160x160 \ + -size 160x160 xc:transparent +swap -gravity center -composite $ICONFILE + builder_check_error "converting image" + else + # Imagemagic is unable to detect the aspect ratio so just force 160x160 + # this could result in streched images + #echo "Icon Wight: $WIGHT Hight: $HIGHT" + convert $iconfile_src -transparent white -background transparent -resize 160x160 \ + xc:transparent +swap -gravity center -composite $ICONFILE + builder_check_error "converting image" + fi + identify -format "%wx%h" $ICONFILE + HIGHT=`identify -format "%h" $ICONFILE` + WIGHT=`identify -format "%w" $ICONFILE` + echo "Opsi Icon Wight: $WIGHT Hight: $HIGHT" cp -a $ICONFILE $INST_DIR/CLIENT_DATA From 2f44e3864cd68a46aa7687c13045d073315b4cc4 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Sun, 29 Jan 2012 09:11:01 +0100 Subject: [PATCH 4/5] 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" From 8790bb9eca0bcab985e01e780820be660145725f Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Sun, 29 Jan 2012 10:37:05 +0100 Subject: [PATCH 5/5] move distfile var to right location --- lib/builder-targets.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/builder-targets.sh b/lib/builder-targets.sh index aa0e4ad..8fb3ad8 100644 --- a/lib/builder-targets.sh +++ b/lib/builder-targets.sh @@ -188,8 +188,8 @@ builder_create() { # copy binaries - distfile=${DIST_FILE[$i]} for (( i = 0 ; i < ${#SOURCE[@]} ; i++ )) ; do + distfile=${DIST_FILE[$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]}