void-packages

Void Source Packages
git clone git://ezup.dev/void-packages.git
Log | Files | Refs | README | LICENSE

00-distfiles.sh (4562B)


      1# This hook extracts $distfiles into $XBPS_BUILDDIR if $distfiles and $checksum
      2# variables are set.
      3
      4hook() {
      5	local srcdir="$XBPS_SRCDISTDIR/$pkgname-$version"
      6	local f j curfile found extractdir
      7	local TAR_CMD
      8
      9	if [ -z "$distfiles" -a -z "$checksum" ]; then
     10		mkdir -p "$wrksrc"
     11		return 0
     12	fi
     13
     14	# Check that distfiles are there before anything else.
     15	for f in ${distfiles}; do
     16		curfile="${f#*>}"
     17		curfile="${curfile##*/}"
     18		if [ ! -f $srcdir/$curfile ]; then
     19			msg_error "$pkgver: cannot find ${curfile}, use 'xbps-src fetch' first.\n"
     20		fi
     21	done
     22
     23	if [ -n "$create_wrksrc" ]; then
     24		mkdir -p "${wrksrc}" || msg_error "$pkgver: failed to create wrksrc.\n"
     25	fi
     26
     27	# Disable trap on ERR; the code is smart enough to report errors and abort.
     28	trap - ERR
     29
     30	TAR_CMD="$(command -v bsdtar)"
     31	[ -z "$TAR_CMD" ] && TAR_CMD="$(command -v tar)"
     32	[ -z "$TAR_CMD" ] && msg_error "xbps-src: no suitable tar cmd (bsdtar, tar)\n"
     33
     34	msg_normal "$pkgver: extracting distfile(s), please wait...\n"
     35
     36	for f in ${distfiles}; do
     37		curfile="${f#*>}"
     38		curfile="${curfile##*/}"
     39		for j in ${skip_extraction}; do
     40			if [ "$curfile" = "$j" ]; then
     41				found=1
     42				break
     43			fi
     44		done
     45		if [ -n "$found" ]; then
     46			unset found
     47			continue
     48		fi
     49
     50		case $curfile in
     51		*.tar.lzma)   cursufx="txz";;
     52		*.tar.lz)     cursufx="tlz";;
     53		*.tlz)        cursufx="tlz";;
     54		*.tar.xz)     cursufx="txz";;
     55		*.txz)        cursufx="txz";;
     56		*.tar.bz2)    cursufx="tbz";;
     57		*.tbz)        cursufx="tbz";;
     58		*.tar.gz)     cursufx="tgz";;
     59		*.tgz)        cursufx="tgz";;
     60		*.gz)         cursufx="gz";;
     61		*.xz)         cursufx="xz";;
     62		*.bz2)        cursufx="bz2";;
     63		*.tar)        cursufx="tar";;
     64		*.zip)        cursufx="zip";;
     65		*.rpm)        cursufx="rpm";;
     66		*.patch)      cursufx="txt";;
     67		*.diff)       cursufx="txt";;
     68		*.txt)        cursufx="txt";;
     69		*.sh)         cursufx="txt";;
     70		*.7z)	      cursufx="7z";;
     71		*.gem)	      cursufx="gem";;
     72		*.crate)      cursufx="crate";;
     73		*) msg_error "$pkgver: unknown distfile suffix for $curfile.\n";;
     74		esac
     75
     76		if [ -n "$create_wrksrc" ]; then
     77			extractdir="$wrksrc"
     78		else
     79			extractdir="$XBPS_BUILDDIR"
     80		fi
     81
     82		case ${cursufx} in
     83		tar|txz|tbz|tlz|tgz|crate)
     84			$TAR_CMD -x --no-same-permissions --no-same-owner -f $srcdir/$curfile -C "$extractdir"
     85			if [ $? -ne 0 ]; then
     86				msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
     87			fi
     88			;;
     89		gz|bz2|xz)
     90			cp -f $srcdir/$curfile "$extractdir"
     91			cd "$extractdir"
     92			case ${cursufx} in
     93			gz)
     94				 gunzip -f $curfile
     95				;;
     96			bz2)
     97				bunzip2 -f $curfile
     98				;;
     99			*)
    100				unxz -f $curfile
    101				;;
    102			esac
    103			;;
    104		zip)
    105			if command -v unzip &>/dev/null; then
    106				unzip -o -q $srcdir/$curfile -d "$extractdir"
    107				if [ $? -ne 0 ]; then
    108					msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
    109				fi
    110			elif command -v bsdtar &>/dev/null; then
    111				bsdtar -xf $srcdir/$curfile -C "$extractdir"
    112				if [ $? -ne 0 ]; then
    113					msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
    114				fi
    115			else
    116				msg_error "$pkgver: cannot find unzip or bsdtar bin for extraction.\n"
    117			fi
    118			;;
    119		rpm)
    120			if command -v rpmextract &>/dev/null; then
    121				cd "$extractdir"
    122				rpmextract $srcdir/$curfile
    123				if [ $? -ne 0 ]; then
    124					msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
    125				fi
    126			else
    127				msg_error "$pkgver: cannot find rpmextract for extraction.\n"
    128			fi
    129			;;
    130		txt)
    131			if [ "$create_wrksrc" ]; then
    132				cp -f $srcdir/$curfile "$extractdir"
    133			else
    134				msg_error "$pkgname: ${curfile##*.} files can only be extracted when create_wrksrc is set\n"
    135			fi
    136			;;
    137		7z)
    138			if command -v 7z &>/dev/null; then
    139				7z x $srcdir/$curfile -o"$extractdir"
    140				if [ $? -ne 0 ]; then
    141					msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
    142				fi
    143			elif command -v bsdtar &>/dev/null; then
    144				bsdtar -xf $srcdir/$curfile -C "$extractdir"
    145				if [ $? -ne 0 ]; then
    146					msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
    147				fi
    148			else
    149				msg_error "$pkgver: cannot find 7z or bsdtar bin for extraction.\n"
    150			fi
    151			;;
    152		gem)
    153			case "$TAR_CMD" in
    154				*bsdtar)
    155					$TAR_CMD -xOf $srcdir/$curfile data.tar.gz | \
    156						$TAR_CMD -xz -C "$extractdir" -s ",^,${wrksrc##*/}/," -f -
    157					;;
    158				*)
    159					$TAR_CMD -xOf $srcdir/$curfile data.tar.gz | \
    160						$TAR_CMD -xz -C "$extractdir" --transform="s,^,${wrksrc##*/}/,"
    161					;;
    162			esac
    163			if [ $? -ne 0 ]; then
    164				msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
    165			fi
    166			;;
    167		*)
    168			msg_error "$pkgver: cannot guess $curfile extract suffix. ($cursufx)\n"
    169			;;
    170		esac
    171	done
    172}