Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.2
obs-service-download_files
download_files
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File download_files of Package obs-service-download_files
#!/bin/bash # downloads files specified in spec files # config options for this host ? if [ -f /etc/obs/services/download_files ]; then . /etc/obs/services/download_files fi # config options for this user ? if [ -f "$HOME"/.obs/download_files ]; then . "$HOME"/.obs/download_files fi DORECOMPRESS="" ENFORCELOCAL="" ENFORCEUPSTREAM="" while test $# -gt 0; do case $1 in *-recompress) if [ "$2" == "yes" ]; then DORECOMPRESS="yes" fi shift ;; *-enforcelocal) if [ "$2" == "yes" ]; then ENFORCELOCAL="yes" fi shift ;; *-enforceupstream) if [ "$2" == "yes" ]; then ENFORCEUPSTREAM="yes" fi shift ;; *-outdir) MYOUTDIR="$2" shift ;; *) echo Unknown parameter $1. echo 'this service is not accepting parameters currently' exit 1 ;; esac shift done if [ ! -d "$MYOUTDIR" ]; then echo "ERROR: output directory does not exist" exit 1 fi function uncompress_file() { local input=$1 local output=$2 UNCOMPRESS="cat" BASENAME="$input" if [ "${input%.gz}" != "$input" ]; then UNCOMPRESS="gunzip -c" BASENAME="${input%.gz}" elif [ "${input%.tgz}" != "$input" ]; then UNCOMPRESS="gunzip -c" BASENAME="${input%.tgz}.tar" elif [ "${input%.bz2}" != "$input" ]; then UNCOMPRESS="bunzip2 -c" BASENAME="${input%.bz2}" elif [ "${FILE%.xz}" != "$input" ]; then UNCOMPRESS="xz -dc" BASENAME="${input%.xz}" fi $UNCOMPRESS "$input" > "$output" echo $BASENAME } WGET="/usr/bin/wget -4 --no-check-certificate -q --timeout=30 --tries=2 --no-directories" RETURN=0 for i in *.spec; do [ "$i" == "*.spec" ] && exit 0 for url in `perl -I/usr/lib/build -MBuild -e Build::show /usr/lib/build/configs/default.conf "$i" sources`; do MYCACHEDIRECTORY="$CACHEDIRECTORY" PROTOCOL="${url%%:*}" SAMEFILEAFTERCOMPRESSION= if [ "$PROTOCOL" != "http" -a "$PROTOCOL" != "https" -a "$PROTOCOL" != "ftp" ]; then continue fi # Some web sites need a special user agent if echo $url | egrep -q '^http://sourceforge.net/'; then # default wget user agent required, but /download suffix must be added : # BN=`basename $url` # WGET="$WGET -O $BN" # urlextension="/download" else # We tell the server that we are an OBS tool by default WGET="$WGET -U 'OBS-wget'" urlextension="" fi cd "$MYOUTDIR" # check local cache if configured HASH=`echo "$url" | sha256sum | cut -d\ -f 1` if [ -n "$MYCACHEDIRECTORY" -a -f "$MYCACHEDIRECTORY/file/$HASH" ]; then RECOMPRESS="" FILE=`cat "$MYCACHEDIRECTORY/filename/$HASH"` echo "INFO: Take file from local cache $FILE" cp -a "$MYCACHEDIRECTORY/file/$HASH" ./"$FILE" MYCACHEDIRECTORY="" # do not copy back elif [ -z "$DORECOMPRESS" ]; then if ! $WGET "$url$urlextension"; then echo "ERROR: Fail to download $url" exit 1 fi RECOMPRESS="" FILE="${url##*/}" else FORMAT="${url##*\.}" if $WGET "$url$urlextension"; then RECOMPRESS="" FILE="${url}" elif $WGET "${url%$FORMAT}gz$urlextension"; then RECOMPRESS="$FORMAT" FILE="${url%$FORMAT}gz" elif $WGET "${url%$FORMAT}bz2$urlextension"; then RECOMPRESS="$FORMAT" FILE="${url%$FORMAT}bz2" elif $WGET "${url%$FORMAT}xz$urlextension"; then RECOMPRESS="$FORMAT" FILE="${url%$FORMAT}xz" else echo "ERROR: Fail to download $url or any other compression format" exit 1 fi FILE="${FILE##*/}" fi # fill local cache, if configured if [ -n "$MYCACHEDIRECTORY" -a ! -f "$MYCACHEDIRECTORY/file/$HASH" ]; then cp -a "$FILE" "$MYCACHEDIRECTORY/file/$HASH" && \ echo "$FILE" > "$MYCACHEDIRECTORY/filename/$HASH" fi if [ -n "$RECOMPRESS" ]; then tempfile=`mktemp` file_name=`uncompress_file "$FILE" "$tempfile"` # uncompress the old file also to compare tempoldfile=`mktemp` uncompress_file "$OLDPWD/${url##*/}" "$tempoldfile" > /dev/null # do not create new file, if identical if ! cmp "$tempfile" "$tempoldfile"; then if [ "$RECOMPRESS" == "gz" ]; then COMPRESS="gzip -c -" SUFFIX=".gz" elif [ "$RECOMPRESS" == "bz2" ]; then COMPRESS="bzip2 -c -" SUFFIX=".bz2" elif [ "$RECOMPRESS" == "xz" ]; then COMPRESS="xz -c -" SUFFIX=".xz" elif [ "$RECOMPRESS" == "none" ]; then COMPRESS="cat -" SUFFIX="" else echo "ERROR: Unknown compression $RECOMPRESS" RETURN=1 fi # do the compression cat "$tempfile" | $COMPRESS > "$file_name$SUFFIX" || RETURN=1 rm "$FILE" # remove downloaded file FILE="$file_name$SUFFIX" else # original file name FILE="${url##*/}" SAMEFILEAFTERCOMPRESSION=1 fi # cleanup rm -f "$tempfile" "$tempoldfile" fi # remove all file files which are indentical to committed files, but not the same instance (when --outdir .) if [ -f "$OLDPWD/$FILE" ]; then if [ ! "$FILE" -ef "$OLDPWD/$FILE" ]; then if [ -z "$SAMEFILEAFTERCOMPRESSION" ]; then if cmp "$FILE" "$OLDPWD/$FILE"; then rm "$FILE" elif [ -n "$ENFORCEUPSTREAM" ]; then echo "ERROR: download_files is configured to fail when the upstream file is different then the committed file... this is the case!" exit 1 fi fi fi elif [ -n "$ENFORCELOCAL" ]; then echo "ERROR: download_files is configured to fail when the file was not committed... this is the case!" exit 1 fi cd - > /dev/null done done exit $RETURN
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor