package: add generic support for lz archives

This commit teaches the generic package handling code how to extract .tar.lz
archives. When lzip is not installed on the host, host-lzip gets built
automatically.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Reviewed-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Baruch Siach 2017-02-12 22:15:39 +02:00 committed by Thomas Petazzoni
parent dc7fcbe494
commit f165032e4f
5 changed files with 28 additions and 0 deletions

View File

@ -158,6 +158,13 @@ config BR2_XZCAT
Command to be used to extract a xz'ed file to stdout.
Default is "xzcat"
config BR2_LZCAT
string "lzcat command"
default "lzip -d -c"
help
Command to be used to extract a lzip'ed file to stdout.
Default is "lzip -d -c"
config BR2_TAR_OPTIONS
string "Tar options"
default ""

View File

@ -432,6 +432,7 @@ KERNEL_ARCH := $(shell echo "$(ARCH)" | sed -e "s/-.*//" \
ZCAT := $(call qstrip,$(BR2_ZCAT))
BZCAT := $(call qstrip,$(BR2_BZCAT))
XZCAT := $(call qstrip,$(BR2_XZCAT))
LZCAT := $(call qstrip,$(BR2_LZCAT))
TAR_OPTIONS = $(call qstrip,$(BR2_TAR_OPTIONS)) -xf
# packages compiled for the host go here

View File

@ -36,6 +36,7 @@ pkgname = $(lastword $(subst /, ,$(pkgdir)))
# Define extractors for different archive suffixes
INFLATE.bz2 = $(BZCAT)
INFLATE.gz = $(ZCAT)
INFLATE.lz = $(LZCAT)
INFLATE.lzma = $(XZCAT)
INFLATE.tbz = $(BZCAT)
INFLATE.tbz2 = $(BZCAT)

View File

@ -0,0 +1,5 @@
ifeq (,$(call suitable-host-package,lzip,$(LZCAT)))
DEPENDENCIES_HOST_PREREQ += host-lzip
EXTRACTOR_DEPENDENCY_PRECHECKED_EXTENSIONS += .lz
LZCAT = $(HOST_DIR)/usr/bin/lzip -d -c
endif

View File

@ -0,0 +1,14 @@
#!/bin/sh
candidate="$1"
lzip=`which $candidate 2>/dev/null`
if [ ! -x "$lzip" ]; then
lzip=`which lzip 2>/dev/null`
if [ ! -x "$lzip" ]; then
# echo nothing: no suitable lzip found
exit 1
fi
fi
echo $lzip