#!/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 qemu-helper-native
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
