#!/bin/sh
# TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg
# convert - TazPkg module
# Toolset to convert alien package to the tazpkg format

PACKAGE_FILE="$1"
TARGET_DIR="$2"
TMP_DIR=$(mktemp -d)
TOP_DIR="$(pwd)"
. /usr/libexec/tazpkg/find-depends
. /usr/libexec/tazpkg/getenv
[ -n "$TARGET_DIR" -a -s "$TARGET_DIR/files.list.lzma" ] && TMPLOCALSTATE="$TARGET_DIR"
show_unresolved_lib() {
if [ -s "$TMP_DIR/unresolved" ]; then
echo -e "BUGS=\"$(_n 'No dependency for:')">> $1
sort < $TMP_DIR/unresolved | uniq | \
while read file; do
_ 'WARNING: unknown dependency for %s' "$lib"
echo -n " $file">> $1
done
echo "\"">> $1
fi
}
convert_upkg() {
mkdir -p "$TMP_DIR/fs"
tar -xjf "$PACKAGE_FILE" -C "$TMP_DIR/fs"
if [ -d "$TMP_DIR/fs/var/lib/upkg/packages" ]; then
cd "$TMP_DIR"
package=$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)
version=$(sed '/^Version:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)
url='http://www.paldo.org/'
file="$package-$version"
mkdir "$file"
mv fs "$file"
maintainer='nobody@slitaz.org'
descrip="$package package from paldo."
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="$descrip"
WEB_SITE="$url"
MAINTAINER="$maintainer"
DEPENDS="$(find_depends .)"
EOT
[ -s $file/var/lib/upkg/files/*.config.bz2 ] &&
cat >> "$file/receipt" <<EOT
CONFIG_FILES="$(bzcat $file/var/lib/upkg/files/*.config.bz2)"
EOT
while read ext func; do
[ -s $file/fs/var/lib/upkg/scripts/*.$ext ] || continue
cat >> "$file/receipt" <<EOT
$func()
{
$(cat $file/fs/var/lib/upkg/scripts/*.$ext)
}
EOT
done <<EOT
prerm	pre_remove
EOT
tazpkg pack "$file"
mv "$TMP_DIR/$file.tazpkg" "$TOP_DIR"
else
_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'upkg'
fi
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
}
convert_spack() {
mkdir -p "$TMP_DIR"
( cd "$TMP_DIR"; cpio -i ) < "$PACKAGE_FILE"
cd "$TMP_DIR"
package=$(sed '$!d;s/:.*//' about.txt)
version=$(basename "$PACKAGE_FILE" | sed "s/$package-\([^-]*\).*/\1/")
descrip=$(sed '$!d;s/.*: //' about.txt)
url='http://0linux.org/'
maintainer='nobody@slitaz.org'
file="$package-$version"
mkdir -p "$file/fs"
xzcat files.xz | ( cd "$file/fs"; cpio -idmu )
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="$descrip"
WEB_SITE="$url"
MAINTAINER="$maintainer"
DEPENDS="$(find_depends .)"
EOT
[ -s 'pre-install.sh' ] && cat >> "$file/receipt" <<EOT
pre_install()
{
cd /
$(sed 1d pre-install.sh)
}
EOT
[ -s 'post-install.sh' ] && cat >> "$file/receipt" <<EOT
post_install()
{
cd /
$(sed '1,/^}/d' post-install.sh)
}
EOT
tazpkg pack "$file"
cd "$TOP_DIR"
mv "$TMP_DIR/$file.tazpkg" .
rm -rf "$TMP_DIR"
}
convert_ipk() {
mkdir -p "$TMP_DIR"
tar -xOzf "$PACKAGE_FILE" ./control.tar.gz | tar -xzf - -C "$TMP_DIR"
package=$(   sed '/^Package/!d;s/.*: //'      "$TMP_DIR/control")
version=$(   sed '/^Version/!d;s/.*: //'      "$TMP_DIR/control")
maintainer=$(sed '/^Maintainer/!d;s/.*: //'   "$TMP_DIR/control")
target=$(    sed '/^Architecture/!d;s/.*: //' "$TMP_DIR/control")
descrip=$(   sed '/^Description/!d;s/.*: //'  "$TMP_DIR/control")
homepage=$(  sed '/^Homepage/!d;s/.*: //'     "$TMP_DIR/control")
url='http://openwrt.org/'
case "$target" in
i386|all)
file="$package-$version"
mkdir -p "$TMP_DIR/$file/fs"
tar -xOzf "$PACKAGE_FILE" ./data.tar.gz | tar -xzf - -C "$TMP_DIR/$file/fs"
cd "$TMP_DIR"
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="$descrip"
WEB_SITE="${homepage:-$url}"
MAINTAINER="$maintainer"
DEPENDS="$(find_depends .)"
EOT
show_unresolved_lib "$file/receipt"
[ -s 'conffiles' ] && cat >> "$file/receipt" <<EOT
CONFIG_FILES=$(cat conffiles)
EOT
show_unresolved_lib "$file/receipt"
while read script func; do
[ -s "$script" ] && cat >> "$file/receipt" <<EOT
$func()
{
$(cat "$script")
}
EOT
done <<EOT
preinst		pre_install
postinst	post_install
prerm		pre_remove
postrm		post_remove
EOT
awk '
{
if (/^ / && show)
print substr($0,2);
else
show=0;
if (/^Description/)
show=1;
}' < "$TMP_DIR/control"> "$file/description.txt"
sed -i 's/^\.$//' "$file/description.txt"
[ -s "$file/description.txt" ] || rm -f "$file/description.txt"
tazpkg pack "$file"
cd "$TOP_DIR"
mv "$TMP_DIR/$file.tazpkg" .
;;
*)
_ 'Invalid target: %s (expected i386)' "$target"
;;
esac
rm -rf "$TMP_DIR"
}
convert_nutyx() {
mkdir -p "$TMP_DIR/fs"
tar -xf "$PACKAGE_FILE" -C "$TMP_DIR/fs"
if [ -f "$TMP_DIR/fs/.META" ]; then
package=$(sed '/^N/!d;s/^.//' fs/.META)
version=$(sed '/^V/!d;s/^.//' fs/.META)
descrip=$(sed '/^D/!d;s/^.//' fs/.META)
file="$package-$version"
mkdir "$file"
mv fs "$file"
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="$descrip"
WEB_SITE="http://www.nutyx.org/"
MAINTAINER="nobody@slitaz.org"
DEPENDS="$(find_depends .)"
EOT
show_unresolved_lib "$file/receipt"
rm -f $file/fs/.[A-Z]*
tazpkg pack "$file"
mv "$file.tazpkg" "$TOP_DIR"
else
_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'NuTyX'
fi
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
}
convert_arch() {
mkdir -p "$TMP_DIR/fs"
tar -xf "$PACKAGE_FILE" -C "$TMP_DIR/fs"
if [ -f "$TMP_DIR/fs/.PKGINFO" ]; then
cd "$TMP_DIR"
package=$(   sed '/^pkgname/!d;s/.*= //'  fs/.PKGINFO)
version=$(   sed '/^pkgver/!d;s/.*= //'   fs/.PKGINFO)
descrip=$(   sed '/^pkgdesc/!d;s/.*= //'  fs/.PKGINFO)
url=$(       sed '/^url/!d;s/.*= //'      fs/.PKGINFO)
maintainer=$(sed '/^packager/!d;s/.*= //' fs/.PKGINFO)
file="$package-$version"
mkdir "$file"
mv fs "$file"
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="$descrip"
WEB_SITE="$url"
MAINTAINER="$maintainer"
DEPENDS="$(find_depends .)"
EOT
show_unresolved_lib "$file/receipt"
rm -f $file/fs/.[A-Z]*
tazpkg pack "$file"
mv "$file.tazpkg" "$TOP_DIR"
else
_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Archlinux/Alpine'
fi
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
}
parse_pkgname() {
debug "parse_pkgname('$1', '$2')"
package=$(basename "${2:-$PACKAGE_FILE}" "$1")
IFS='-'
set -- "$package"
unset IFS
package="$1"
version="$2"
if [ -z "$version" ]; then
package=${1%%-[0-9\.]*}
version=${1#$package-}
fi
file="$package-$version"
mkdir "$file"
debug "  package='$package' version='$version' file='$file'"
}
finish_convert_puppy() {
rm -f fs/*.specs
mkdir "$file"; mv fs "$file"
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="$desc"
WEB_SITE="http://puppylinux.org/"
MAINTAINER="nobody@slitaz.org"
DEPENDS="$(find_depends .)"
EOT
show_unresolved_lib "$file/receipt"
for i in install uninstall; do
if [ -f "$file/fs/p$i.sh" ]; then
SEPARATOR="EOT$RANDOM"
cat >> "$file/receipt" <<EOT
post_$i()
{
chroot \$1/ sh - <<$SEPARATOR
cd /
$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < "$file/fs/p$i.sh" ; rm -f "$file/fs/p$i.sh")
$SEPARATOR
}
EOT
fi
done
sed -i 's/post_uninstall/post_remove/' "$file/receipt"
tazpkg pack "$file"
mv "$file.tazpkg" "$TOP_DIR"
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
}
convert_sfs() {
[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/pet.specs$ ; then
_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Puppy'
return 1
fi
mkdir -p "$TMP_DIR"
cd "$TMP_DIR"
parse_pkgname .sfs
unsquashfs "$PACKAGE_FILE"
mv squashfs-root fs
set -- $(cat fs/pet.specs)
desc="$10"
finish_convert_puppy
}
convert_pet() {
debug "convert_pet()"
mkdir -p "$TMP_DIR"
cd "$TMP_DIR"
parse_pkgname .pet
busybox tar -xzf "$PACKAGE_FILE"
PET_SPECS="$(find $TMP_DIR -maxdepth 2 -type f -name 'pet.specs')"
if [ -e "$PET_SPECS" ]; then
debug "pet.specs with '|'"
desc="$(awk -F'|' '{print $10}' $PET_SPECS)"
else
PET_SPECS="$(find $TMP_DIR -maxdepth 2 -type f -name '*.pet.specs')"
if [ -e "$PET_SPECS" ]; then
desc="$(. "$PET_SPECS"; echo "$PETMENUDESCR")"
else
DESKTOP="$(find $TMP_DIR -type f -name '*.desktop' | head -n1)"
if [ -n "$DESKTOP" ]; then
desc="$(awk -F'=' '($1=="Name"){print $2}' $DESKTOP)"
fi
fi
fi
[ -z "$desc" ] && desc="$package"
debug "desc='$desc'"
mv $package*/ fs
finish_convert_puppy
}
convert_sb() {
[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/var/log/removed_scripts ; then
_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slax'
return 1
fi
mkdir -p "$TMP_DIR"
cd "$TMP_DIR"
unsquashfs "$PACKAGE_FILE"
mv squashfs-root fs
parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//')
desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')"
cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > "$file/description.txt"
mv fs "$file"
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="$desc"
WEB_SITE="http://www.slax.org/"
MAINTAINER="nobody@slitaz.org"
DEPENDS="$(find_depends .)"
EOT
show_unresolved_lib "$file/receipt"
[ -f $file/fs/var/log/scripts/$package* ] && cat >> "$file/receipt" <<EOM
post_install()
{
chroot \$1/ sh - << EOT
cd /
$(cat $file/fs/var/log/scripts/$package* | sed -e 's/\\/\\\\/g' | sed -e 's/\$/\\$/g')
EOT
}
EOM
tazpkg pack "$file"
mv "$file.tazpkg" "$TOP_DIR"
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
}
convert_tgz() {
parse_pkgname
mkdir -p "$TMP_DIR/$file/fs"
case "$PACKAGE_FILE" in
*.txz) tar -xJf "$PACKAGE_FILE" -C "$TMP_DIR/$file/fs";;
*.tgz) tar -xzf "$PACKAGE_FILE" -C "$TMP_DIR/$file/fs";;
esac
cd "$TMP_DIR"
if [ -d "$file/fs/install" ]; then
descrip=$(sed "/^$package/!d;s/.*(\\(.*\\)).*/\\1/;q" \
  "$file/fs/install/slack-desc")
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="$descrip"
WEB_SITE="http://www.slackware.com/packages/"
MAINTAINER="nobody@slitaz.org"
DEPENDS="$(find_depends .)"
EOT
show_unresolved_lib "$file/receipt"
[ -f "$file/fs/install/doinst.sh" ] && cat >> "$file/receipt" <<EOM
post_install()
{
chroot \$1/ sh - << EOT
cd /
$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < "$file/fs/install/doinst.sh")
EOT
}
EOM
sed "/^$package/:d;s/^$package://" \
"$file/fs/install/slack-desc"> "$file/description.txt"
[ -s "$file/description.txt" ] || rm -f "$file/description.txt"
rm -rf "$file/fs/install"
tazpkg pack "$file"
mv "$file.tazpkg" "$TOP_DIR"
else
_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slackware'
fi
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
}
convert_deb() {
mkdir -p "$TMP_DIR"
dpkg-deb -e "$PACKAGE_FILE" "$TMP_DIR"
package=$( sed '/^ *Package:/!d;s/.*: //'      "$TMP_DIR/control")
version=$( sed '/^ *Version:/!d;s/.*: //'      "$TMP_DIR/control")
descrip=$( sed '/^ *Description:/!d;s/.*: //'  "$TMP_DIR/control")
homepage=$(sed '/^ *Homepage:/!d;s/.*: //'     "$TMP_DIR/control")
target=$(  sed '/^ *Architecture:/!d;s/.*: //' "$TMP_DIR/control")
case "$target" in
i386|all)
file="$package-$version"
mkdir -p "$TMP_DIR/$file/fs/"
dpkg-deb -x "$PACKAGE_FILE" "$TMP_DIR/$file/fs"
cd "$TMP_DIR"
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="$descrip"
WEB_SITE="${homepage:-http://packages.debian.org/search?keywords=$package}"
MAINTAINER="nobody@slitaz.org"
EOT
LICENSE=$(grep /usr/share/common-licenses/ \
  "$PACKAGE_FILE" $TMP_DIR/$file/fs/usr/share/doc/*/copyright | \
  sed 's|.*common-licenses/\([-\.A-Za-z0-9]*\).*|\1|;s|[-\.]$||;q')
[ -n "$LICENSE" ] && echo "LICENSE=\"$LICENSE\"">> "$file/receipt"
echo "DEPENDS=\"$(find_depends .)\"">> "$file/receipt"
[ -s 'conffiles' ] && cat >> "$file/receipt" <<EOT
CONFIG_FILES="$(cat conffiles)"
EOT
show_unresolved_lib "$file/receipt"
awk '
{
if (/^ / && show)
print substr($0,2);
else
show=0;
if (/^Description/)
show=1;
}' < "$TMP_DIR/control"> "$file/description.txt"
sed -i 's/^\.$//' "$file/description.txt"
[ -s "$file/description.txt" ] || rm -f "$file/description.txt"
tazpkg pack "$file"
mv "$file.tazpkg" "$TOP_DIR"
;;
*)
_ 'Invalid target: %s (expected i386)' "$target"
;;
esac
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
}
convert_rpm() {
mkdir -p "$TMP_DIR"
cp "$PACKAGE_FILE" "$TMP_DIR"
PACKAGE_FILE="$TMP_DIR/$(basename "$PACKAGE_FILE")"
rpm -qip "$PACKAGE_FILE" | awk -v pkg="$(basename "$PACKAGE_FILE")" '
BEGIN {
goturl=0;
printf "# SliTaz package receipt.\n";
printf "# generated by tazpkg from rpm package %s\n", pkg;
}
{
if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n", $3; }
if (/^Version/) printf "VERSION=\"%s-", $3;
if (/^Release/) printf "%s\"\n", $3;
if (/^Summary/) printf "SHORT_DESC=\"%s\"\n", substr($0, 15);
if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n", $3; }
}
END {
if (goturl == 0)
printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name;
printf "CATEGORY=\"misc\"\n";
printf "MAINTAINER=\"nobody@slitaz.org\"\n";
}
' > "$TMP_DIR/receipt"
. "$TMP_DIR/receipt"
file="$PACKAGE-$VERSION"
mkdir -p "$TMP_DIR/$file/fs/"
mv "$TMP_DIR/receipt" "$TMP_DIR/$file"
rpm -qip "$PACKAGE_FILE" | awk '
BEGIN { show=0 }
{
if (show) print;
if (/^Description/) show=1;
}
' > "$TMP_DIR/$file/description.txt"
cd "$TMP_DIR/$file/fs/"
rpm2cpio "$PACKAGE_FILE" | cpio -idm --quiet
if [ $? -eq 1 ]; then
if [ ! -e "$INSTALLED/p7zip-full/receipt" ]; then
boldify "$(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')"
confirm "$(_n 'Do you want to install "%s" package? (y/N)' 'p7zip-full')"
if [ $? -eq 0 ]; then
tazpkg -gi p7zip-full
else
rm -rf "$TMP_DIR"
exit 1
fi
fi
if [ -e "$INSTALLED/p7zip-full/receipt" ]; then
7z x -so "$PACKAGE_FILE" | cpio -idm --quiet
fi
fi
cd ../..
echo "DEPENDS=\"$(find_depends .)\"">> "$TMP_DIR/$file/receipt"
show_unresolved_lib "$TMP_DIR/$file/receipt"
tazpkg pack "$file"
mv "$file.tazpkg" "$TOP_DIR"
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
}
xbpstag() {
sed "/<key>$1<\/key>/!d{n;s/.*>\\(.*\\)<.*/\\1/}" \
< fs/props.plist | sed \$!d
}
convert_xbps() {
mkdir -p "$TMP_DIR/fs"
( xzcat "$PACKAGE_FILE" || bzcat "$PACKAGE_FILE" || zcat "$PACKAGE_FILE" ) | \
tar -xf - -C "$TMP_DIR/fs"
cd "$TMP_DIR"
HOST_ARCH=$(xbpstag architecture)
case "$HOST_ARCH" in
i686)	HOST_ARCH='i486';;
*)		_ 'Arch "%s" not supported.' "$HOST_ARCH"
HOST_ARCH='';;
esac
if [ -n "$HOST_ARCH" ]; then
package=$(xbpstag pkgname)
version=$(xbpstag version)
file="$package-$version"
mkdir "$file"
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="$(xbpstag short_desc)"
WEB_SITE="$(xbpstag homepage)"
MAINTAINER="$(xbpstag maintainer | sed 's/&gt;/>/;s/&lt;/</')"
LICENSE="$(xbpstag license | sed 's/-//g')"
HOST_ARCH="$HOST_ARCH"
CONFIG_FILES="$(sed '/<key>conf_files<\/key>/,/<key>/!d;/array>/d;/<key>/d;s/.*>\(.*\)<.*/\1/' fs/props.plist)"
DEPENDS="$(find_depends .)"
EOT
while read script func ; do
[ -s "fs/$script" ] && cat >> "$file/receipt" <<EOT
xbps_$func()
{
set +e
$(cat "fs/$script")
}
pre_$func()
{
xbps_$func pre $package $version yes /etc/xbps.conf $HOST_ARCH
}
post_$func()
{
xbps_$func post $package $version yes /etc/xbps.conf $HOST_ARCH
}
EOT
rm -f "fs/$script"
done <<EOT
INSTALL		install
REMOVE		remove
EOT
rm -f fs/*.plist
mv fs "$package-$version"
tazpkg pack "$package-$version"
mv "$package-$version.tazpkg" "$TOP_DIR"
fi
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
}
finish_convert_tinycore() {
cat > "$file/receipt" <<EOT
PACKAGE="$package"
VERSION="$version"
CATEGORY="misc"
SHORT_DESC="tinycore package $(basename "$PACKAGE_FILE")"
WEB_SITE="http://tinycorelinux.net/"
MAINTAINER="nobody@slitaz.org"
DEPENDS="$(find_depends .)"
EOT
show_unresolved_lib "$file/receipt"
script="$file/fs/usr/local/tce.installed/$PACKAGE"
[ -f "$script" ] && cat >> "$file/receipt" <<EOM
post_install()
{
chroot \$1/ sh - << EOT
cd /
$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $script)
EOT
}
EOM
[ -d "$file/fs/usr/local/tce.installed" ] &&
rm -rf "$file/fs/usr/local/tce.installed"
tazpkg pack "$file"
mv "$file.tazpkg" "$TOP_DIR"
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
}
convert_tce() {
if ! tar -tzf "$PACKAGE_FILE" | grep -q ^usr/local ; then
_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
return 1
fi
mkdir -p "$TMP_DIR"
cd "$TMP_DIR"
case "$PACKAGE_FILE" in
*.tcel) parse_pkgname .tcel;;
*.tcem) parse_pkgname .tcem;;
*)      parse_pkgname .tce;;
esac
mkdir -p "$file/fs"
tar -xzf "$PACKAGE_FILE" -C "$file/fs"
finish_convert_tinycore
}
convert_tcz() {
[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/ ; then
_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
return 1
fi
mkdir -p "$TMP_DIR"
cd "$TMP_DIR"
parse_pkgname .tcz
unsquashfs "$PACKAGE_FILE"
mv squashfs-root "$file/fs"
finish_convert_tinycore
}
PACKAGE_FILE="$(realpath "$PACKAGE_FILE")"
debug "PACKAGE_FILE='$PACKAGE_FILE'"
if [ "$(dd if="$PACKAGE_FILE" bs=8 count=1 skip=1 2>/dev/null)" == 'debian-b' ]; then
convert_deb
else
case "$PACKAGE_FILE" in
*.deb|*.udeb)			convert_deb;;
*.rpm)					convert_rpm;;
*.sb)					convert_sb;;
*.sfs)					convert_sfs;;
*.pet)					convert_pet;;
*.txz|*.tgz)			convert_tgz;;
*.cards.tar.xz)			convert_nutyx;;
*.apk|*.pkg.tar.gz|*.pkg.tar.xz)	convert_arch;;
*.ipk|*.opk)			convert_ipk;;
*.spack)				convert_spack;;
*.tar.bz2)				convert_upkg;;
*.xbps)					convert_xbps;;
*.tce|*.tcel|*.tcem)	convert_tce;;
*.tcz)					convert_tcz;;
*)						_ 'Unsupported format';;
esac
fi
exit 0
