2013-07-19 02:35:52 +02:00
|
|
|
#!/bin/bash
|
2011-01-09 23:32:01 +01:00
|
|
|
|
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)
|
2018-11-02 18:25:59 +00:00
|
|
|
# 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
|
|
|
|
2021-03-26 06:57:04 +00:00
|
|
|
if [[ "${PKG_URL}" =~ ^file:// ]]; then
|
2019-06-16 02:45:52 +01:00
|
|
|
FULL_SOURCE_PATH="${PKG_SOURCE_NAME}"
|
2018-02-27 01:35:36 +00:00
|
|
|
else
|
2019-06-16 02:45:52 +01:00
|
|
|
FULL_SOURCE_PATH="${SOURCES}/${1}/${PKG_SOURCE_NAME}"
|
2018-02-27 01:35:36 +00:00
|
|
|
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}"
|
2021-03-26 06:57:04 +00:00
|
|
|
echo "Have you called scripts/extract before scripts/get?"
|
2018-11-02 18:25:59 +00:00
|
|
|
die
|
2018-02-27 01:35:36 +00:00
|
|
|
fi
|
|
|
|
|
|
2018-08-26 20:43:47 +02:00
|
|
|
# The build system expects packages to be extracted to
|
2021-03-26 06:57:04 +00:00
|
|
|
# ${PKG_BUILD}.
|
2018-08-26 20:43:47 +02:00
|
|
|
# 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.
|
2021-05-25 16:10:25 +02:00
|
|
|
# If the archive does not contain a top level folder the strip components
|
|
|
|
|
# can be disabled by PKG_TAR_STRIP_COMPONENTS="no" in package.mk
|
|
|
|
|
TAR_OPTS=""
|
2019-06-16 02:45:52 +01:00
|
|
|
if [ -z "${PKG_SOURCE_DIR}" ]; then
|
2021-03-26 06:57:04 +00:00
|
|
|
[ -z "${PKG_TAR_STRIP_COMPONENTS}" ] && TAR_OPTS="--strip-components=1" || :
|
2019-06-16 02:45:52 +01:00
|
|
|
DESTDIR="${2}/${PKG_NAME}-${PKG_VERSION}"
|
2018-08-26 20:43:47 +02:00
|
|
|
else
|
2019-06-16 02:45:52 +01:00
|
|
|
DESTDIR="${2}"
|
2018-08-26 20:43:47 +02:00
|
|
|
fi
|
|
|
|
|
|
2021-03-26 06:57:04 +00:00
|
|
|
case "${PKG_SOURCE_NAME}" in
|
2018-08-26 20:43:47 +02:00
|
|
|
*.tar | *.tar.bz2 | *.tbz | *.tar.gz | *.tgz | *.tar.xz | *.txz)
|
2019-06-16 02:45:52 +01:00
|
|
|
mkdir -p "${DESTDIR}"
|
2021-08-12 16:53:39 +00:00
|
|
|
tar xf "${FULL_SOURCE_PATH}" ${TAR_OPTS} -C "${DESTDIR}"
|
2018-02-27 01:35:36 +00:00
|
|
|
;;
|
2021-01-11 01:17:52 +00:00
|
|
|
*.tar.zst | *.tzst)
|
|
|
|
|
mkdir -p "${DESTDIR}"
|
2021-08-12 16:53:39 +00:00
|
|
|
zstdcat "${FULL_SOURCE_PATH}" | tar xf - ${TAR_OPTS} -C "${DESTDIR}"
|
2021-01-11 01:17:52 +00:00
|
|
|
;;
|
2018-02-27 01:35:36 +00:00
|
|
|
*.7z)
|
2021-03-26 06:57:04 +00:00
|
|
|
mkdir -p "${2}/${1}"
|
|
|
|
|
7z x -o"${2}/${1}" "${FULL_SOURCE_PATH}"
|
2018-02-27 01:35:36 +00:00
|
|
|
;;
|
|
|
|
|
*.zip)
|
2022-09-21 21:06:25 +08:00
|
|
|
unzip -o -q "${FULL_SOURCE_PATH}" -d "${2}"
|
2018-02-27 01:35:36 +00:00
|
|
|
;;
|
|
|
|
|
*.diff | *.patch)
|
2024-07-06 11:17:12 +02:00
|
|
|
patch -d "${2}" -p1 <"${FULL_SOURCE_PATH}"
|
2018-02-27 01:35:36 +00:00
|
|
|
;;
|
|
|
|
|
*.diff.bz2 | *.patch.bz2 | patch-*.bz2)
|
2021-03-26 06:57:04 +00:00
|
|
|
bzcat "${FULL_SOURCE_PATH}" | patch -d "${2}" -p1
|
2018-02-27 01:35:36 +00:00
|
|
|
;;
|
|
|
|
|
*.diff.gz | *.patch.gz | patch-*.gz)
|
2021-03-26 06:57:04 +00:00
|
|
|
zcat "${FULL_SOURCE_PATH}" | patch -d "${2}" -p1
|
2018-02-27 01:35:36 +00:00
|
|
|
;;
|
2025-07-13 18:50:23 +01:00
|
|
|
*.AppImage)
|
|
|
|
|
FULL_DEST_PATH="${2}/${PKG_NAME}-${PKG_VERSION}"
|
|
|
|
|
mkdir -p "${DESTDIR}"
|
|
|
|
|
cp -f "${FULL_SOURCE_PATH}" "${DESTDIR}"
|
|
|
|
|
;;
|
2018-02-27 01:35:36 +00:00
|
|
|
*)
|
2019-06-16 02:45:52 +01:00
|
|
|
FULL_DEST_PATH="${2}/${PKG_NAME}-${PKG_VERSION}"
|
2021-03-26 06:57:04 +00:00
|
|
|
mkdir "${FULL_DEST_PATH}"
|
2021-08-12 16:53:39 +00:00
|
|
|
tar cf - -C "${FULL_SOURCE_PATH}" ${PKG_TAR_COPY_OPTS} . | tar xf - -C "${FULL_DEST_PATH}"
|
2018-02-27 01:35:36 +00:00
|
|
|
;;
|
|
|
|
|
esac
|