#!@@SH@@ # # opkhelper # src/oh-unpacksource # Unpack native or upstream source. # # Copyright (C) 2012 Patrick "P. J." McDermott # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . . @@LIBDIR@@/messages . @@LIBDIR@@/locale # Global parameters: UPSTREAM_ARCHIVE_BASE= UPSTREAM_ARCHIVE= UPSTREAM_ARCHIVE_Z= UPSTREAM_ARCHIVE_DIR= main() { oh_locale_set oh_set_source_dir .. if [ "${#}" -ne 0 ]; then oh_usage exit 1 fi if [ -d ../src ]; then unpack_native else unpack_upstream fi } unpack_native() { oh_info "${oh_str_unpacking_native}" cp -Rp ../src src || oh_error "${oh_str_cant_unpack_native}" } unpack_upstream() { get_upstream_archive get_upstream_compression get_upstream_dir extract_upstream } get_upstream_archive() { UPSTREAM_ARCHIVE_BASE="${OH_SOURCE}-${OH_SOURCE_VERSION_UPSTREAM}.orig.tar." UPSTREAM_ARCHIVE=$(find .. -name "${UPSTREAM_ARCHIVE_BASE}*") case "$(echo "${UPSTREAM_ARCHIVE}" | grep -v '^$' | wc -l)" in 0) oh_error "${oh_str_no_sources}" ;; 1) ;; *) oh_error "${oh_str_multiple_upstream_sources}" ;; esac } get_upstream_compression() { z_ext="${UPSTREAM_ARCHIVE#../${UPSTREAM_ARCHIVE_BASE}}" case "${z_ext}" in gz) UPSTREAM_ARCHIVE_Z=z ;; bz2) UPSTREAM_ARCHIVE_Z=j ;; lz) UPSTREAM_ARCHIVE_Z=a ;; Z) UPSTREAM_ARCHIVE_Z=Z ;; *) oh_error "${oh_str_unsupported_archive_compression}" "${z_ext}" ;; esac } get_upstream_dir() { UPSTREAM_ARCHIVE_DIR=$(tar "-t${UPSTREAM_ARCHIVE_Z}f" \ "${UPSTREAM_ARCHIVE}" | sed -n 's@^\./\([^/]*\)$@\1@p') case "$(echo "${UPSTREAM_ARCHIVE_DIR}" | grep -v '^$' | wc -l)" in 0) oh_error "${oh_str_no_upstream_dirs}" ;; 1) ;; *) oh_error "${oh_str_multiple_top_upstream_dirs}" esac } extract_upstream() { oh_info "${oh_str_unpacking_upstream}" tar "-x${UPSTREAM_ARCHIVE_Z}f" "${UPSTREAM_ARCHIVE}" || \ oh_error "${oh_str_cant_unpack_upstream}" mv "${UPSTREAM_ARCHIVE_DIR}" src || oh_error "${oh_str_cant_move_native}" } main "${@}"