le script à jour avec README.linux dans le bon dossier et les dépendances :
#!/bin/sh -e
###
# Copyright (c) 2015, Antoine Le Gonidec
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###
###
# conversion script for the Metal Slug 3 installer sold on HumbleBundle.com
# build a .deb package from the MojoSetup .sh installer
# tested on Debian, should work on any .deb-based distribution
#
# script version 20140609
#
# send your bug reports to vv221@dotslashplay.it
# start the e-mail subject by "./play.it" to avoid it being flagged as spam
###
# Set game-specific variables
GAME_ID='metalslug3'
GAME_ID_SHORT='ms3'
GENERIC_NAME='Metal Slug 3'
GENERIC_NAME_PKG='Metal Slug 3'
GAME_ARCHIVE1='MetalSlug3-Linux-2014-06-09.sh'
GAME_ARCHIVE1_MD5='a8a3aee4e3438d2d6d5bab23236e43a3'
GAME_ARCHIVE_FULLSIZE='82720'
PKG_ORIGIN='humble'
PKG_REVISION='140609'
APP1_ID="${GAME_ID}"
APP1_EXE_ARCH1='MetalSlug3.bin.x86'
APP1_EXE_ARCH2='MetalSlug3.bin.x86_64'
APP1_ICON='icon.png'
APP1_ICON_RES='256x256'
APP1_NAME="${GENERIC_NAME}"
APP1_NAME_FR="${GENERIC_NAME}"
APP1_CAT='Game'
PKG1_ID="${GAME_ID}"
PKG1_ARCH='i386'
PKG1_VERSION='1'
PKG1_DEPS='libasound2-plugins, libglib2.0-0, libgl1-mesa-glx | libgl1, libsdl2-mixer-2.0-0, libxcursor1, libxrandr2'
PKG1_RECS=''
PKG1_DESC="${GENERIC_NAME_PKG}"
PKG2_ID="${GAME_ID}"
PKG2_ARCH='amd64'
PKG2_VERSION='1'
PKG1_DEPS='libasound2-plugins, libglib2.0-0, libgl1-mesa-glx | libgl1, libsdl2-mixer-2.0-0, libxcursor1, libxrandr2'
PKG2_RECS=''
PKG2_DESC="${GENERIC_NAME_PKG}"
PKG1_CONFLICTS="${PKG2_ID}:${PKG2_ARCH}"
PKG2_CONFLICTS="${PKG1_ID}:${PKG1_ARCH}"
# Load common functions
TARGET_LIB_VERSION='1.13'
if [ -z "${PLAYIT_LIB}" ]; then
PLAYIT_LIB='./play-anything.sh'
fi
if ! [ -e "${PLAYIT_LIB}" ]; then
printf '\n\033[1;31mError:\033[0m\n'
printf 'play-anything.sh not found.\n'
printf 'It must be placed in the same directory than this script.\n\n'
exit 1
fi
LIB_VERSION="$(grep '^# library version' "${PLAYIT_LIB}" | cut -d' ' -f4 | cut -d'.' -f1,2)"
if [ ${LIB_VERSION%.*} -ne ${TARGET_LIB_VERSION%.*} ] || [ ${LIB_VERSION#*.} -lt ${TARGET_LIB_VERSION#*.} ]; then
printf '\n\033[1;31mError:\033[0m\n'
printf 'Wrong version of play-anything.\n'
printf 'It must be at least %s ' "${TARGET_LIB_VERSION}"
printf 'but lower than %s.\n\n' "$((${TARGET_LIB_VERSION%.*}+1)).0"
exit 1
fi
. "${PLAYIT_LIB}"
# Set extra variables
PKG_PREFIX_DEFAULT='/usr/local'
PKG_COMPRESSION_DEFAULT='none'
GAME_ARCHIVE_CHECKSUM_DEFAULT='md5sum'
GAME_LANG_DEFAULT=''
WITH_MOVIES_DEFAULT=''
printf '\n'
game_mkdir 'PKG_TMPDIR' "$(mktemp -u ${GAME_ID_SHORT}.XXXXX)" "$((${GAME_ARCHIVE_FULLSIZE}*2))"
game_mkdir 'PKG1_DIR' "${PKG1_ID}_${PKG1_VERSION}-${PKG_ORIGIN}${PKG_REVISION}_${PKG1_ARCH}" "$((${GAME_ARCHIVE_FULLSIZE}*2))"
game_mkdir 'PKG2_DIR' "${PKG2_ID}_${PKG2_VERSION}-${PKG_ORIGIN}${PKG_REVISION}_${PKG2_ARCH}" "$((${GAME_ARCHIVE_FULLSIZE}*2))"
fetch_args "$@"
check_deps 'unzip fakeroot'
printf '\n'
set_checksum
set_compression
set_prefix
PATH_BIN="${PKG_PREFIX}/games"
PATH_DESK='/usr/local/share/applications'
PATH_DOC="${PKG_PREFIX}/share/doc/${GAME_ID}"
PATH_GAME="${PKG_PREFIX}/share/games/${GAME_ID}"
PATH_ICON="/usr/local/share/icons/hicolor/${APP1_ICON_RES}/apps"
printf '\n'
set_target '1' 'humblebundle.com'
printf '\n'
# Check target files integrity
if [ "${GAME_ARCHIVE_CHECKSUM}" = 'md5sum' ]; then
checksum "${GAME_ARCHIVE}" 'defaults' "${GAME_ARCHIVE1_MD5}"
fi
# Extract game data
build_pkg_dirs '2' "${PATH_BIN}" "${PATH_DESK}" "${PATH_DOC}" "${PATH_GAME}" "${PATH_ICON}"
print_wait
extract_data 'mojo' "${GAME_ARCHIVE}" "${PKG_TMPDIR}" 'quiet'
for file in 'ARPHICPL.TXT' 'LICENSES.txt' 'README.linux'; do
cp -rl "${PKG_TMPDIR}/data/noarch"/${file} "${PKG1_DIR}${PATH_DOC}"
cp -rl "${PKG_TMPDIR}/data/noarch"/${file} "${PKG2_DIR}${PATH_DOC}"
rm -r "${PKG_TMPDIR}/data/noarch"/${file}
done
mv "${PKG_TMPDIR}/data/x86"/* "${PKG1_DIR}${PATH_GAME}"
mv "${PKG_TMPDIR}/data/x86_64"/* "${PKG2_DIR}${PATH_GAME}"
cp -rl "${PKG_TMPDIR}/data/noarch"/* "${PKG1_DIR}${PATH_GAME}"
cp -rl "${PKG_TMPDIR}/data/noarch"/* "${PKG2_DIR}${PATH_GAME}"
ln -s "${PATH_GAME}/${APP1_ICON}" "${PKG1_DIR}${PATH_ICON}/${GAME_ID}.png"
ln -s "${PATH_GAME}/${APP1_ICON}" "${PKG2_DIR}${PATH_ICON}/${GAME_ID}.png"
rm -rf "${PKG_TMPDIR}"
print_done
# Write launchers
write_bin_native "${PKG1_DIR}${PATH_BIN}/${APP1_ID}" "${APP1_EXE_ARCH1}" '' '' '' "${APP1_NAME} (${PKG1_ARCH})"
write_bin_native "${PKG2_DIR}${PATH_BIN}/${APP1_ID}" "${APP1_EXE_ARCH2}" '' '' '' "${APP1_NAME} (${PKG2_ARCH})"
write_desktop "${APP1_ID}" "${APP1_NAME}" "${APP1_NAME_FR}" "${PKG1_DIR}${PATH_DESK}/${APP1_ID}.desktop" "${APP1_CAT}" ''
cp -l "${PKG1_DIR}${PATH_DESK}/${APP1_ID}.desktop" "${PKG2_DIR}${PATH_DESK}/${APP1_ID}.desktop"
printf '\n'
# Build packages
printf '%s…\n' "$(l10n 'build_pkgs')"
print_wait
write_pkg_debian "${PKG1_DIR}" "${PKG1_ID}" "${PKG1_VERSION}-${PKG_ORIGIN}${PKG_REVISION}" "${PKG1_ARCH}" "${PKG1_CONFLICTS}" "${PKG1_DEPS}" "${PKG1_RECS}" "${PKG1_DESC}" 'arch'
write_pkg_debian "${PKG2_DIR}" "${PKG2_ID}" "${PKG2_VERSION}-${PKG_ORIGIN}${PKG_REVISION}" "${PKG2_ARCH}" "${PKG2_CONFLICTS}" "${PKG2_DEPS}" "${PKG2_RECS}" "${PKG2_DESC}" 'arch'
build_pkg "${PKG1_DIR}" "${PKG1_DESC}" "${PKG_COMPRESSION}" 'quiet' "${PKG1_ARCH}"
build_pkg "${PKG2_DIR}" "${PKG2_DESC}" "${PKG_COMPRESSION}" 'quiet' "${PKG2_ARCH}"
print_done
print_instructions "${PKG1_DESC} (${PKG1_ARCH})" "${PKG1_DIR}"
printf '\n'
print_instructions "${PKG2_DESC} (${PKG2_ARCH})" "${PKG2_DIR}"
printf '\n%s ;)\n\n' "$(l10n 'have_fun')"
exit 0