Files
Arch-R/scripts/extract

75 lines
2.3 KiB
Plaintext
Raw Normal View History

#!/bin/bash
2018-07-16 20:45:36 +02:00
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
2009-03-18 13:02:53 +01:00
2019-06-16 02:45:52 +01:00
. config/options "${1}"
2009-03-18 13:02:53 +01:00
2019-06-16 02:45:52 +01:00
if [ -z "${2}" ]; then
die "usage: ${0} package_name target_dir"
2009-03-18 13:02:53 +01:00
fi
2019-06-16 02:45:52 +01:00
[ -z "${PKG_URL}" -o -z "${PKG_SOURCE_NAME}" ] && die "${PKG_NAME}: PKG_URL or PKG_SOURCE_NAME undefined"
[ ! -d "${SOURCES}/${1}" ] && die "${PKG_NAME}: ${SOURCES}/${1} not found"
[ ! -d "${2}" ] && die "${PKG_NAME}: target ${2} not found"
2009-03-18 13:02:53 +01:00
if [[ ${PKG_URL} =~ ^file:// ]]; then
2019-06-16 02:45:52 +01:00
FULL_SOURCE_PATH="${PKG_SOURCE_NAME}"
else
2019-06-16 02:45:52 +01:00
FULL_SOURCE_PATH="${SOURCES}/${1}/${PKG_SOURCE_NAME}"
fi
2019-06-16 02:45:52 +01:00
if [ ! -f "${FULL_SOURCE_PATH}" -a ! -d "${FULL_SOURCE_PATH}" ]; then
echo "error: File ${PKG_SOURCE_NAME} doesn't exist for package ${1}"
echo "Have you called scripts/extract before scripts/get ?"
die
fi
# The build system expects packages to be extracted to
2019-06-16 02:45:52 +01:00
# ${PKG_BUILD.}
# Try to strip the top level dir from the archive and extract to
# the correct directory if possible so packages don't need to
# set PKG_SOURCE_DIR and scripts/unpack doesn't need to rename
# the directory.
# Currently this is only supported for tar archives.
# If PKG_SOURCE_DIR is set don't apply any directory mangling
# so advanced renaming (eg stripping more than one directory level)
# can be performed by scripts/unpack.
2019-06-16 02:45:52 +01:00
if [ -z "${PKG_SOURCE_DIR}" ]; then
TAR_OPTS="--strip-components=1"
2019-06-16 02:45:52 +01:00
DESTDIR="${2}/${PKG_NAME}-${PKG_VERSION}"
else
TAR_OPTS=""
2019-06-16 02:45:52 +01:00
DESTDIR="${2}"
fi
2019-06-16 02:45:52 +01:00
case ${PKG_SOURCE_NAME} in
*.tar | *.tar.bz2 | *.tbz | *.tar.gz | *.tgz | *.tar.xz | *.txz)
2019-06-16 02:45:52 +01:00
mkdir -p "${DESTDIR}"
tar xf ${FULL_SOURCE_PATH} ${TAR_OPTS} -C "${DESTDIR}"
;;
*.7z)
2019-06-16 02:45:52 +01:00
mkdir -p ${2}/${1}
7z x -o${2}/${1} ${FULL_SOURCE_PATH}
;;
*.zip)
2019-06-16 02:45:52 +01:00
unzip -q ${FULL_SOURCE_PATH} -d ${2}
;;
*.diff | *.patch)
2019-06-16 02:45:52 +01:00
cat ${FULL_SOURCE_PATH} | patch -d ${2} -p1
;;
*.diff.bz2 | *.patch.bz2 | patch-*.bz2)
2019-06-16 02:45:52 +01:00
bzcat ${FULL_SOURCE_PATH} | patch -d ${2} -p1
;;
*.diff.gz | *.patch.gz | patch-*.gz)
2019-06-16 02:45:52 +01:00
zcat ${FULL_SOURCE_PATH} | patch -d ${2} -p1
;;
*)
2019-06-16 02:45:52 +01:00
FULL_DEST_PATH="${2}/${PKG_NAME}-${PKG_VERSION}"
mkdir ${FULL_DEST_PATH}
tar cf - -C ${FULL_SOURCE_PATH} ${PKG_TAR_COPY_OPTS} . | \
tar xf - -C ${FULL_DEST_PATH}
;;
esac