tazpkg diff tazpkg @ rev 268

tazpkg convert: add DEPENDS support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue May 26 18:54:06 2009 +0200 (2009-05-26)
parents 193102ec5cd6
children 41a374a7bfc4
line diff
     1.1 --- a/tazpkg	Mon May 25 20:07:00 2009 +0200
     1.2 +++ b/tazpkg	Tue May 26 18:54:06 2009 +0200
     1.3 @@ -895,6 +895,53 @@
     1.4  '
     1.5  }
     1.6  
     1.7 +# Check for ELF file
     1.8 +is_elf()
     1.9 +{
    1.10 +	[ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" = "ELF" ]
    1.11 +}
    1.12 +
    1.13 +# Print shared library dependencies
    1.14 +ldd()
    1.15 +{
    1.16 +	LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so $1 2> /dev/null
    1.17 +}
    1.18 +
    1.19 +# search dependencies for files in $TMP_DIR/$file/fs
    1.20 +find_depends()
    1.21 +{
    1.22 +	DEFAULT_DEPENDS="glibc-base gcc-lib-base"
    1.23 +
    1.24 +	[ -f /var/lib/tazpkg/files.list.lzma ] || tazpkg recharge
    1.25 +	for i in /var/lib/tazpkg/files.list.lzma \
    1.26 + 		/var/lib/tazpkg/undigest/*/files.list.lzma ; do
    1.27 + 		[ -f $i ] && lzma d $i -so >> $TMP_DIR/files.list
    1.28 +	done
    1.29 +	find $TMP_DIR/$file/fs -type f | while read file ; do
    1.30 +		is_elf $file || continue
    1.31 +		case "$file" in
    1.32 +		*.o|*.ko|*.ko.gz) continue;;
    1.33 +		esac
    1.34 +		ldd $file | while read lib rem; do
    1.35 +			case "$lib" in
    1.36 +			statically|linux-gate.so*|ld-*.so|*/ld-*.so)
    1.37 +				continue;;
    1.38 +			esac
    1.39 +			for dep in $(grep $lib files.list | cut -d: -f1); do
    1.40 +				case " $DEFAULT_DEPENDS $ALL_DEPENDS " in
    1.41 +				*\ $dep\ *) continue 2;;
    1.42 +				esac
    1.43 +			done
    1.44 +			ALL_DEPENDS="$ALL_DEPENDS $dep"
    1.45 +			if [ -n "$dep" ]; then
    1.46 +				echo -n " $dep"
    1.47 +			else
    1.48 +				echo "$WARNING: unknown dependency for $lib" 1>&2
    1.49 +			fi
    1.50 +		done
    1.51 +	done
    1.52 +}
    1.53 +
    1.54  # convert a .deb package to .tazpkg
    1.55  convert_deb()
    1.56  {
    1.57 @@ -919,8 +966,14 @@
    1.58  SHORT_DESC="$descrip"
    1.59  WEB_SITE="http://packages.debian.org/search?keywords=$package"
    1.60  MAINTAINER="nobody@slitaz.org" 
    1.61 -DEPENDS=""
    1.62 +DEPENDS="$(find_depends)"
    1.63  EOT
    1.64 +	awk '
    1.65 +{
    1.66 +   if (/^ / && show) print substr($0,2);
    1.67 +   else show=0;
    1.68 +   if (/^Description/) show=1;
    1.69 +}' < $TMP_DIR/control > $file/description.txt
    1.70  	tazpkg pack $file
    1.71  	mv $file.tazpkg $TOP_DIR
    1.72  	cd $TOP_DIR
    1.73 @@ -967,6 +1020,7 @@
    1.74  	cd $TMP_DIR/$file/fs/
    1.75  	rpm2cpio $PACKAGE_FILE | cpio -idm
    1.76  	cd ../..
    1.77 +	echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/receipt
    1.78  	tazpkg pack $file
    1.79  	mv $file.tazpkg $TOP_DIR
    1.80  	cd $TOP_DIR