#!/bin/bash
#
# This utility extracts an SDK image tarball using pseudo, and stores
# the pseudo database in var/pseudo within the rootfs. If you want to
# boot QEMU using an nfsroot, you *must* use this script to create the
# rootfs to ensure it is done correctly with pseudo.
#
# Copyright (c) 2010 Intel Corp.
#
# SPDX-License-Identifier: GPL-2.0-only
#

function usage() {
	echo "Usage: $0 <image-tarball> <extract-dir>"
}

if [ $# -ne 2 ]; then
	usage
	exit 1
fi

SYSROOT_SETUP_SCRIPT=`which oe-find-native-sysroot 2> /dev/null`
if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
	echo "Error: Unable to find the oe-find-native-sysroot script"
	echo "Did you forget to source your build system environment setup script?"
	exit 1
fi
. $SYSROOT_SETUP_SCRIPT meta-ide-support
PSEUDO_OPTS="-P $OECORE_NATIVE_SYSROOT/usr"

ROOTFS_TARBALL=$1
SDK_ROOTFS_DIR=$2

if [ ! -e "$ROOTFS_TARBALL" ]; then
	echo "Error: sdk tarball '$ROOTFS_TARBALL' does not exist"
	usage
	exit 1
fi

# Convert SDK_ROOTFS_DIR to a full pathname
if [[ ${SDK_ROOTFS_DIR:0:1} != "/" ]]; then
	SDK_ROOTFS_DIR=$(readlink -f $(pwd)/$SDK_ROOTFS_DIR)
fi

TAR_OPTS=""
if [[ "$ROOTFS_TARBALL" =~ tar\.xz$ ]]; then
	TAR_OPTS="--numeric-owner -xJf"
fi
if [[ "$ROOTFS_TARBALL" =~ tar\.bz2$ ]]; then
	TAR_OPTS="--numeric-owner -xjf"
fi
if [[ "$ROOTFS_TARBALL" =~ tar\.gz$ ]]; then
	TAR_OPTS="--numeric-owner -xzf"
fi
if [[ "$ROOTFS_TARBALL" =~ \.tar$ ]]; then
	TAR_OPTS="--numeric-owner -xf"
fi
if [ -z "$TAR_OPTS" ]; then
	echo "Error: Unable to determine sdk tarball format"
	echo "Accepted types: .tar / .tar.gz / .tar.bz2 / .tar.xz"
	exit 1
fi

if [ ! -d "$SDK_ROOTFS_DIR" ]; then
	echo "Creating directory $SDK_ROOTFS_DIR"
	mkdir -p "$SDK_ROOTFS_DIR"
fi

pseudo_state_dir="$SDK_ROOTFS_DIR/../$(basename "$SDK_ROOTFS_DIR").pseudo_state"
pseudo_state_dir="$(readlink -f $pseudo_state_dir)"

debug_image="`echo $ROOTFS_TARBALL | grep '\-dbg\.rootfs\.tar'`"

if [ -e "$pseudo_state_dir" -a -z "$debug_image" ]; then
	echo "Error: $pseudo_state_dir already exists!"
	echo "Please delete the rootfs tree and pseudo directory manually"
	echo "if this is really what you want."
	exit 1
fi

mkdir -p "$pseudo_state_dir"
touch "$pseudo_state_dir/pseudo.pid"
PSEUDO_LOCALSTATEDIR="$pseudo_state_dir"
export PSEUDO_LOCALSTATEDIR

echo "Extracting rootfs tarball using pseudo..."
echo "$PSEUDO $PSEUDO_OPTS tar -C \"$SDK_ROOTFS_DIR\" $TAR_OPTS \"$ROOTFS_TARBALL\""
$PSEUDO $PSEUDO_OPTS tar -C "$SDK_ROOTFS_DIR" $TAR_OPTS "$ROOTFS_TARBALL"

DIRCHECK=`ls -l "$SDK_ROOTFS_DIR" | wc -l`
if [ "$DIRCHECK" -lt 5 ]; then
	echo "Warning: I don't see many files in $SDK_ROOTFS_DIR"
	echo "Please double-check the extraction worked as intended"
	exit 0
fi

echo "SDK image successfully extracted to $SDK_ROOTFS_DIR"

exit 0
