commit:     0e138de8646fa2fc25c81e038f32a62d3b675bb0
Author:     Vadim A. Misbakh-Soloviov <mva <AT> mva <DOT> name>
AuthorDate: Sun Jun 22 21:41:15 2014 +0000
Commit:     Vadim A. Misbakh-Soloviov <mva <AT> mva <DOT> name>
CommitDate: Sun Jun 22 21:41:15 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/gamerlay.git;a=commit;h=0e138de8

[games-arcade/metalslug3] Added

Signed-off-by: Vadim A. Misbakh-Soloviov <mva <AT> mva.name>

---
 eclass/unpacker.eclass                             | 524 +++++++++++++++++++++
 .../worms-reloaded/worms-reloaded-20131016.ebuild  |  71 ---
 2 files changed, 524 insertions(+), 71 deletions(-)

diff --git a/eclass/unpacker.eclass b/eclass/unpacker.eclass
new file mode 100644
index 0000000..b377ae7
--- /dev/null
+++ b/eclass/unpacker.eclass
@@ -0,0 +1,524 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/eclass/unpacker.eclass,v 1.17 2014/05/01 
19:27:14 ottxor Exp $
+
+# @ECLASS: unpacker.eclass
+# @MAINTAINER:
+# base-sys...@gentoo.org
+# @BLURB: helpers for extraneous file formats and consistent behavior across 
EAPIs
+# @DESCRIPTION:
+# Some extraneous file formats are not part of PMS, or are only in certain
+# EAPIs.  Rather than worrying about that, support the crazy cruft here
+# and for all EAPI versions.
+
+# Possible todos:
+#  - merge rpm unpacking
+#  - support partial unpacks?
+
+if [[ ${___ECLASS_ONCE_UNPACKER} != "recur -_+^+_- spank" ]] ; then
+___ECLASS_ONCE_UNPACKER="recur -_+^+_- spank"
+
+# @ECLASS-VARIABLE: UNPACKER_BZ2
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Utility to use to decompress bzip2 files.  Will dynamically pick between
+# `pbzip2` and `bzip2`.  Make sure your choice accepts the "-dc" options.
+# Note: this is meant for users to set, not ebuilds.
+
+# @ECLASS-VARIABLE: UNPACKER_LZIP
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Utility to use to decompress lzip files.  Will dynamically pick between
+# `plzip`, `pdlzip` and `lzip`.  Make sure your choice accepts the "-dc" 
options.
+# Note: this is meant for users to set, not ebuilds.
+
+# for internal use only (unpack_pdv and unpack_makeself)
+find_unpackable_file() {
+       local src=$1
+       if [[ -z ${src} ]] ; then
+               src=${DISTDIR}/${A}
+       else
+               if [[ ${src} == ./* ]] ; then
+                       : # already what we want
+               elif [[ -e ${DISTDIR}/${src} ]] ; then
+                       src=${DISTDIR}/${src}
+               elif [[ -e ${PWD}/${src} ]] ; then
+                       src=${PWD}/${src}
+               elif [[ -e ${src} ]] ; then
+                       src=${src}
+               fi
+       fi
+       [[ ! -e ${src} ]] && return 1
+       echo "${src}"
+}
+
+unpack_banner() {
+       echo ">>> Unpacking ${1##*/} to ${PWD}"
+}
+
+# @FUNCTION: unpack_pdv
+# @USAGE: <file to unpack> <size of off_t>
+# @DESCRIPTION:
+# Unpack those pesky pdv generated files ...
+# They're self-unpacking programs with the binary package stuffed in
+# the middle of the archive.  Valve seems to use it a lot ... too bad
+# it seems to like to segfault a lot :(.  So lets take it apart ourselves.
+#
+# You have to specify the off_t size ... I have no idea how to extract that
+# information out of the binary executable myself.  Basically you pass in
+# the size of the off_t type (in bytes) on the machine that built the pdv
+# archive.
+#
+# One way to determine this is by running the following commands:
+#
+# @CODE
+#      strings <pdv archive> | grep lseek
+#      strace -elseek <pdv archive>
+# @CODE
+#
+# Basically look for the first lseek command (we do the strings/grep because
+# sometimes the function call is _llseek or something) and steal the 2nd
+# parameter.  Here is an example:
+#
+# @CODE
+#      $ strings hldsupdatetool.bin | grep lseek
+#      lseek
+#      $ strace -elseek ./hldsupdatetool.bin
+#      lseek(3, -4, SEEK_END)                                  = 2981250
+# @CODE
+#
+# Thus we would pass in the value of '4' as the second parameter.
+unpack_pdv() {
+       local src=$(find_unpackable_file "$1")
+       local sizeoff_t=$2
+
+       [[ -z ${src} ]] && die "Could not locate source for '$1'"
+       [[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this 
pdv :("
+
+       unpack_banner "${src}"
+
+       local metaskip=$(tail -c ${sizeoff_t} "${src}" | hexdump -e \"%i\")
+       local tailskip=$(tail -c $((${sizeoff_t}*2)) "${src}" | head -c 
${sizeoff_t} | hexdump -e \"%i\")
+
+       # grab metadata for debug reasons
+       local metafile="${T}/${FUNCNAME}.meta"
+       tail -c +$((${metaskip}+1)) "${src}" > "${metafile}"
+
+       # rip out the final file name from the metadata
+       local datafile=$(tail -c +$((${metaskip}+1)) "${src}" | strings | head 
-n 1)
+       datafile=$(basename "${datafile}")
+
+       # now lets uncompress/untar the file if need be
+       local tmpfile="${T}/${FUNCNAME}"
+       tail -c +$((${tailskip}+1)) ${src} 2>/dev/null | head -c 512 > 
"${tmpfile}"
+
+       local iscompressed=$(file -b "${tmpfile}")
+       if [[ ${iscompressed:0:8} == "compress" ]] ; then
+               iscompressed=1
+               mv "${tmpfile}"{,.Z}
+               gunzip "${tmpfile}"
+       else
+               iscompressed=0
+       fi
+       local istar=$(file -b "${tmpfile}")
+       if [[ ${istar:0:9} == "POSIX tar" ]] ; then
+               istar=1
+       else
+               istar=0
+       fi
+
+       #for some reason gzip dies with this ... dd cant provide buffer fast 
enough ?
+       #dd if=${src} ibs=${metaskip} count=1 \
+       #       | dd ibs=${tailskip} skip=1 \
+       #       | gzip -dc \
+       #       > ${datafile}
+       if [ ${iscompressed} -eq 1 ] ; then
+               if [ ${istar} -eq 1 ] ; then
+                       tail -c +$((${tailskip}+1)) "${src}" 2>/dev/null \
+                               | head -c $((${metaskip}-${tailskip})) \
+                               | tar -xzf -
+               else
+                       tail -c +$((${tailskip}+1)) "${src}" 2>/dev/null \
+                               | head -c $((${metaskip}-${tailskip})) \
+                               | gzip -dc \
+                               > ${datafile}
+               fi
+       else
+               if [ ${istar} -eq 1 ] ; then
+                       tail -c +$((${tailskip}+1)) "${src}" 2>/dev/null \
+                               | head -c $((${metaskip}-${tailskip})) \
+                               | tar --no-same-owner -xf -
+               else
+                       tail -c +$((${tailskip}+1)) "${src}" 2>/dev/null \
+                               | head -c $((${metaskip}-${tailskip})) \
+                               > ${datafile}
+               fi
+       fi
+       true
+       #[ -s "${datafile}" ] || die "failure unpacking pdv ('${metaskip}' 
'${tailskip}' '${datafile}')"
+       #assert "failure unpacking pdv ('${metaskip}' '${tailskip}' 
'${datafile}')"
+}
+
+# @FUNCTION: unpack_makeself
+# @USAGE: [file to unpack] [offset] [tail|dd]
+# @DESCRIPTION:
+# Unpack those pesky makeself generated files ...
+# They're shell scripts with the binary package tagged onto
+# the end of the archive.  Loki utilized the format as does
+# many other game companies.
+#
+# If the file is not specified, then ${A} is used.  If the
+# offset is not specified then we will attempt to extract
+# the proper offset from the script itself.
+unpack_makeself() {
+       local src_input=${1:-${A}}
+       local src=$(find_unpackable_file "${src_input}")
+       local skip=$2
+       local exe=$3
+
+       [[ -z ${src} ]] && die "Could not locate source for '${src_input}'"
+
+       unpack_banner "${src}"
+
+       if [[ -z ${skip} ]] ; then
+               local ver=$(grep -m1 -a '#.*Makeself' "${src}" | awk '{print 
$NF}')
+               local skip=0
+               exe=tail
+               case ${ver} in
+                       1.5.*|1.6.0-nv*)        # tested 1.5.{3,4,5} ... 
guessing 1.5.x series is same
+                               skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
+                               ;;
+                       2.0|2.0.1)
+                               skip=$(grep -a ^$'\t'tail "${src}" | awk 
'{print $2}' | cut -b2-)
+                               ;;
+                       2.1.1)
+                               skip=$(grep -a ^offset= "${src}" | awk '{print 
$2}' | cut -b2-)
+                               (( skip++ ))
+                               ;;
+                       2.1.2)
+                               skip=$(grep -a ^offset= "${src}" | awk '{print 
$3}' | head -n 1)
+                               (( skip++ ))
+                               ;;
+                       2.1.3)
+                               skip=`grep -a ^offset= "${src}" | awk '{print 
$3}'`
+                               (( skip++ ))
+                               ;;
+                       2.1.4|2.1.5|2.1.6|2.2.0)
+                               skip=$(grep -a offset=.*head.*wc "${src}" | awk 
'{print $3}' | head -n 1)
+                               skip=$(head -n ${skip} "${src}" | wc -c)
+                               exe="dd"
+                               ;;
+                       *)
+                               eerror "I'm sorry, but I was unable to support 
the Makeself file."
+                               eerror "The version I detected was '${ver}'."
+                               eerror "Please file a bug about the file 
${src##*/} at"
+                               eerror "http://bugs.gentoo.org/ so that support 
can be added."
+                               die "makeself version '${ver}' not supported"
+                               ;;
+               esac
+               debug-print "Detected Makeself version ${ver} ... using ${skip} 
as offset"
+       fi
+       case ${exe} in
+               tail)   exe="tail -n +${skip} '${src}'";;
+               dd)             exe="dd ibs=${skip} skip=1 if='${src}'";;
+               *)              die "makeself cant handle exe '${exe}'"
+       esac
+
+       # lets grab the first few bytes of the file to figure out what kind of 
archive it is
+       local filetype tmpfile="${T}/${FUNCNAME}"
+       eval ${exe} 2>/dev/null | head -c 512 > "${tmpfile}"
+       filetype=$(file -b "${tmpfile}") || die
+       case ${filetype} in
+               *tar\ archive*)
+                       eval ${exe} | tar --no-same-owner -xf -
+                       ;;
+               bzip2*)
+                       eval ${exe} | bzip2 -dc | tar --no-same-owner -xf -
+                       ;;
+               gzip*)
+                       eval ${exe} | tar --no-same-owner -xzf -
+                       ;;
+               compress*)
+                       eval ${exe} | gunzip | tar --no-same-owner -xf -
+                       ;;
+               XZ*)
+                       eval ${exe} | unxz | tar --no-same-owner -xf -
+                       ;;
+               *)
+                       eerror "Unknown filetype \"${filetype}\" ?"
+                       false
+                       ;;
+       esac
+       assert "failure unpacking (${filetype}) makeself ${src##*/} ('${ver}' 
+${skip})"
+}
+
+# @FUNCTION: unpack_nixstaller
+# @USAGE: [installer files to unpack]
+# @DESCRIPTION:
+# Unpack those pesky makeself+Nixstaller generated files ...
+# They're shell scripts with the binary package tagged onto
+# the end of the archive.
+#
+# If the file is not specified, then ${A} is used.  If the
+# offset is not specified then we will attempt to extract
+# the proper offset from the script itself.
+
+unpack_nixstaller() {
+       local src=$(find_unpackable_file "${1}")
+
+       mkdir tmp;
+       cd tmp;
+
+       unpack_makeself ${src}
+
+       for f in $NIXSTALLER_TARGETS ; do
+               unpack_banner "$f"
+               local unp=$(find_unpackable_file "${f}")
+               # Make sure that file exists
+               [[ -f "${unp}" ]] && (
+                       local type=$(file -b ${unp})
+                       case ${type} in
+                               data|LZMA*)
+                                       tar -xJf "${unp}" -C ..
+                                       ;;
+                               gzip*)
+                                       tar -xzf "${unp}" -C ..
+                                       ;;
+                       esac
+               ) || die "Failed to unpack ${f}"
+       done
+       cd ..;
+}
+
+# @FUNCTION: unpack_mojosetup
+# @USAGE: [file to unpack]
+# @DESCRIPTION:
+# Unpack those pesky makeself+mojosetup generated files ...
+# They're shell scripts with the binary package tagged onto
+# the end of the archive.
+#
+# (!!!)
+# Fortunately, currently, unpack_zip can handle it fine.
+#
+# If the file is not specified, then ${A} is used.  If the
+# offset is not specified then we will attempt to extract
+# the proper offset from the script itself.
+
+unpack_mojosetup() {
+       local src=$(find_unpackable_file "${1}")
+       unpack_zip ${src}
+}
+
+
+# @FUNCTION: unpack_deb
+# @USAGE: <one deb to unpack>
+# @DESCRIPTION:
+# Unpack a Debian .deb archive in style.
+unpack_deb() {
+       [[ $# -eq 1 ]] || die "Usage: ${FUNCNAME} <file>"
+
+       local deb=$(find_unpackable_file "$1")
+
+       unpack_banner "${deb}"
+
+       # on AIX ar doesn't work out as their ar used a different format
+       # from what GNU ar (and thus what .deb files) produce
+       if [[ -n ${EPREFIX} ]] ; then
+               {
+                       read # global header
+                       [[ ${REPLY} = "!<arch>" ]] || die "${deb} does not seem 
to be a deb archive"
+                       local f timestamp uid gid mode size magic
+                       while read f timestamp uid gid mode size magic ; do
+                               [[ -n ${f} && -n ${size} ]] || continue # 
ignore empty lines
+                               if [[ ${f} = "data.tar"* ]] ; then
+                                       head -c "${size}" > "${f}"
+                               else
+                                       head -c "${size}" > /dev/null # trash it
+                               fi
+                       done
+               } < "${deb}"
+       else
+               ar x "${deb}"
+       fi
+
+       unpacker ./data.tar*
+
+       # Clean things up #458658.  No one seems to actually care about
+       # these, so wait until someone requests to do something else ...
+       rm -f debian-binary {control,data}.tar*
+}
+
+# @FUNCTION: unpack_cpio
+# @USAGE: <one cpio to unpack>
+# @DESCRIPTION:
+# Unpack a cpio archive, file "-" means stdin.
+unpack_cpio() {
+       [[ $# -eq 1 ]] || die "Usage: ${FUNCNAME} <file>"
+
+       # needed as cpio always reads from stdin
+       local cpio_cmd=( cpio --make-directories --extract 
--preserve-modification-time )
+       if [[ $1 == "-" ]] ; then
+               unpack_banner "stdin"
+               "${cpio_cmd[@]}"
+       else
+               local cpio=$(find_unpackable_file "$1")
+               unpack_banner "${cpio}"
+               "${cpio_cmd[@]}" <"${cpio}"
+       fi
+}
+
+# @FUNCTION: unpack_zip
+# @USAGE: <zip file>
+# @DESCRIPTION:
+# Unpack zip archives.
+# This function ignores all non-fatal errors (i.e. warnings).
+# That is useful for zip archives with extra crap attached
+# (e.g. self-extracting archives).
+unpack_zip() {
+       [[ $# -eq 1 ]] || die "Usage: ${FUNCNAME} <file>"
+
+       local zip=$(find_unpackable_file "$1")
+       unpack_banner "${zip}"
+       unzip -qo "${zip}"
+
+       [[ $? -le 1 ]] || die "unpacking ${zip} failed (arch=unpack_zip)"
+}
+
+# @FUNCTION: _unpacker
+# @USAGE: <one archive to unpack>
+# @INTERNAL
+# @DESCRIPTION:
+# Unpack the specified archive.  We only operate on one archive here
+# to keep down on the looping logic (that is handled by `unpacker`).
+_unpacker() {
+       [[ $# -eq 1 ]] || die "Usage: ${FUNCNAME} <file>"
+
+       local a=$1
+       local m=$(echo "${a}" | tr '[:upper:]' '[:lower:]')
+       a=$(find_unpackable_file "${a}")
+
+       # first figure out the decompression method
+       case ${m} in
+       *.bz2|*.tbz|*.tbz2)
+               local bzcmd=${PORTAGE_BZIP2_COMMAND:-$(type -P pbzip2 || type 
-P bzip2)}
+               local bzuncmd=${PORTAGE_BUNZIP2_COMMAND:-${bzcmd} -d}
+               : ${UNPACKER_BZ2:=${bzuncmd}}
+               comp="${UNPACKER_BZ2} -c"
+               ;;
+       *.z|*.gz|*.tgz)
+               comp="gzip -dc" ;;
+       *.lzma|*.xz|*.txz)
+               comp="xz -dc" ;;
+       *.lz)
+               : ${UNPACKER_LZIP:=$(type -P plzip || type -P pdlzip || type -P 
lzip)}
+               comp="${UNPACKER_LZIP} -dc" ;;
+       *)      comp="" ;;
+       esac
+
+       # then figure out if there are any archiving aspects
+       arch=""
+       case ${m} in
+       *.tgz|*.tbz|*.tbz2|*.txz|*.tar.*|*.tar)
+               arch="tar --no-same-owner -xof" ;;
+       *.cpio.*|*.cpio)
+               arch="unpack_cpio" ;;
+       *.deb)
+               arch="unpack_deb" ;;
+       *.run)
+               arch="unpack_makeself" ;;
+       *.sh)
+               if head -n 5 "${a}" | grep -qs '#.*Nixstaller' ; then
+                       arch="unpack_nixstaller"
+               elif head -n 5 "${a}" | grep -qs '#.*mojosetup' ; then
+                       arch="unpack_mojosetup"
+               elif head -n 30 "${a}" | grep -qs '#.*Makeself' ; then
+                       arch="unpack_makeself"
+               fi
+               # Not all shell scripts are makeself
+               ;;
+       *.bin)
+               # Makeself archives can be annoyingly named
+               if head -c 100 "${a}" | grep -qs '#.*Makeself' ; then
+                       arch="unpack_makeself"
+               fi
+               ;;
+       *.zip)
+               arch="unpack_zip" ;;
+       esac
+
+       # finally do the unpack
+       if [[ -z ${arch}${comp} ]] ; then
+               unpack "$1"
+               return $?
+       fi
+
+       [[ ${arch} != unpack_* ]] && unpack_banner "${a}"
+
+       if [[ -z ${arch} ]] ; then
+               # Need to decompress the file into $PWD #408801
+               local _a=${a%.*}
+               ${comp} "${a}" > "${_a##*/}"
+       elif [[ -z ${comp} ]] ; then
+               ${arch} "${a}"
+       else
+               ${comp} "${a}" | ${arch} -
+       fi
+
+       assert "unpacking ${a} failed (comp=${comp} arch=${arch})"
+}
+
+# @FUNCTION: unpacker
+# @USAGE: [archives to unpack]
+# @DESCRIPTION:
+# This works in the same way that `unpack` does.  If you don't specify
+# any files, it will default to ${A}.
+unpacker() {
+       local a
+       [[ $# -eq 0 ]] && set -- ${A}
+       for a ; do _unpacker "${a}" ; done
+}
+
+# @FUNCTION: unpacker_src_unpack
+# @DESCRIPTION:
+# Run `unpacker` to unpack all our stuff.
+unpacker_src_unpack() {
+       unpacker
+}
+
+# @FUNCTION: unpacker_src_uri_depends
+# @USAGE: [archives that we will unpack]
+# @RETURN: Dependencies needed to unpack all the archives
+# @DESCRIPTION:
+# Walk all the specified files (defaults to $SRC_URI) and figure out the
+# dependencies that are needed to unpack things.
+#
+# Note: USE flags are not yet handled.
+unpacker_src_uri_depends() {
+       local uri deps d
+
+       [[ $# -eq 0 ]] && set -- ${SRC_URI}
+
+       for uri in "$@" ; do
+               case ${uri} in
+               *.cpio.*|*.cpio)
+                       d="app-arch/cpio" ;;
+               *.rar|*.RAR)
+                       d="app-arch/unrar" ;;
+               *.7z)
+                       d="app-arch/p7zip" ;;
+               *.xz)
+                       d="app-arch/xz-utils" ;;
+               *.zip)
+                       d="app-arch/unzip" ;;
+               *.lz)
+                       d="|| ( app-arch/plzip app-arch/pdlzip app-arch/lzip )" 
;;
+               esac
+               deps+=" ${d}"
+       done
+
+       echo "${deps}"
+}
+
+EXPORT_FUNCTIONS src_unpack
+
+fi

diff --git a/games-strategy/worms-reloaded/worms-reloaded-20131016.ebuild 
b/games-strategy/worms-reloaded/worms-reloaded-20131016.ebuild
deleted file mode 100644
index 8d59026..0000000
--- a/games-strategy/worms-reloaded/worms-reloaded-20131016.ebuild
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI="5"
-
-inherit eutils games unpacker
-
-TS="1381858841"
-
-DESCRIPTION="Legendary Worms™ Game. SinglePlayer-only."
-HOMEPAGE="http://www.team17.com/games/worms/worms-reloaded/";
-SRC_URI="WormsReloaded_Linux_${TS}.sh"
-
-RESTRICT="fetch strip"
-LICENSE="as-is"
-
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE=""
-
-DEPEND=""
-RDEPEND="
-       amd64? (
-               app-emulation/emul-linux-x86-baselibs
-               app-emulation/emul-linux-x86-sdl
-       )
-       x86? (
-               media-libs/openal
-               sys-libs/zlib
-       )
-"
-
-S="${WORKDIR}/data"
-
-GAMEDIR="${GAMES_PREFIX_OPT}/${PN}"
-
-pkg_nofetch() {
-       einfo ""
-       einfo "Please buy and download \"${SRC_URI}\" from"
-       einfo "HumbleIndieBundle or ${HOMEPAGE}"
-       einfo "and move/link it to \"${DISTDIR}\""
-       einfo ""
-}
-
-src_unpack() {
-       unpack_zip "${A}";
-}
-
-src_prepare() {
-       rm -r "${S}/x86/lib/libopenal.so.1"
-}
-
-src_install() {
-       # Install documentation
-       dodoc noarch/README.linux
-       rm noarch/README.linux
-
-       # Install data
-       insinto "${GAMEDIR}"
-       doins -r noarch/* x86/lib
-       exeinto "${GAMEDIR}"
-       doexe x86/WormsReloaded.bin.x86
-
-       # Install icon and desktop file
-       newicon "x86/WormsReloaded.png" "${PN}.png"
-       make_desktop_entry "${PN}" "Worms Reloaded" "${PN}"
-
-       # Setting permissions.
-       prepgamesdirs
-}
\ No newline at end of file

Reply via email to