X-Git-Url: http://gitweb/?a=blobdiff_plain;f=pkgmk.in;h=b8e3e4e1957086b9b255e31973dfdb64f8a5206d;hb=780862a6ece30840523d91328f1945cf3edf2cfe;hp=1cc40d60d274cb3a31e7896f3ad3ce4e2864673c;hpb=92dbaab6a7ea34dc55308d12578453ec7e498295;p=pkgutils-cross.git diff --git a/pkgmk.in b/pkgmk.in index 1cc40d6..b8e3e4e 100755 --- a/pkgmk.in +++ b/pkgmk.in @@ -34,13 +34,11 @@ error() { } get_filename() { - local FILE="`echo $1 | sed 's|^.*://.*/||g'`" - - if [ "$FILE" != "$1" ]; then - FILE="$PKGMK_SOURCE_DIR/$FILE" + if [[ $1 =~ ^(http|https|ftp|file)://.*/(.+) ]]; then + echo "$PKGMK_SOURCE_DIR/${BASH_REMATCH[2]}" + else + echo $1 fi - - echo $FILE } get_basename() { @@ -77,6 +75,13 @@ check_directory() { fi } +check_file() { + if [ -e $1 ] && [ ! -w $1 ]; then + error "File '$1' is not writable." + exit 1 + fi +} + download_file() { info "Downloading '$1'." @@ -101,7 +106,7 @@ download_file() { BASENAME=`get_basename $1` for REPO in ${PKGMK_SOURCE_MIRRORS[@]}; do REPO="`echo $REPO | sed 's|/$||'`" - wget $RESUME_CMD $DOWNLOAD_OPTS $REPO/$BASENAME + wget $RESUME_CMD $DOWNLOAD_OPTS $PKGMK_WGET_OPTS $REPO/$BASENAME error=$? if [ $error == 0 ]; then break @@ -110,7 +115,7 @@ download_file() { if [ $error != 0 ]; then while true; do - wget $RESUME_CMD $DOWNLOAD_OPTS $1 + wget $RESUME_CMD $DOWNLOAD_OPTS $PKGMK_WGET_OPTS $1 error=$? if [ $error != 0 ] && [ "$RESUME_CMD" ]; then info "Partial download failed, restarting" @@ -157,12 +162,8 @@ unpack_source() { for FILE in ${source[@]}; do LOCAL_FILENAME=`get_filename $FILE` case $LOCAL_FILENAME in - *.tar.gz|*.tar.Z|*.tgz) - COMMAND="tar -C $SRC --use-compress-program=gzip -xf $LOCAL_FILENAME" ;; - *.tar.bz2) - COMMAND="tar -C $SRC --use-compress-program=bzip2 -xf $LOCAL_FILENAME" ;; - *.zip) - COMMAND="unzip -qq -o -d $SRC $LOCAL_FILENAME" ;; + *.tar.gz|*.tar.Z|*.tgz|*.tar.bz2|*.tbz2|*.tar.xz|*.txz|*.tar.lzma|*.zip|*.rpm) + COMMAND="bsdtar -p -o -C $SRC -xf $LOCAL_FILENAME" ;; *) COMMAND="cp $LOCAL_FILENAME $SRC" ;; esac @@ -353,6 +354,7 @@ remove_work_dir() { build_package() { local BUILD_SUCCESSFUL="no" + check_file "$TARGET" make_work_dir if [ "$UID" != "0" ]; then @@ -464,6 +466,7 @@ update_footprint() { exit 1 fi + check_file "$PKGMK_FOOTPRINT" make_footprint > $PKGMK_FOOTPRINT touch $TARGET @@ -618,6 +621,7 @@ main() { if [ "$PKGMK_UPDATE_MD5SUM" = "yes" ]; then download_source + check_file "$PKGMK_MD5SUM" make_md5sum > $PKGMK_MD5SUM info "Md5sum updated." exit 0