tazpkg rev 296

Add convert ipk
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Sep 12 22:39:30 2009 +0200 (2009-09-12)
parents 3814100d92c5
children 14cd3fec0297
files tazpkg
line diff
     1.1 --- a/tazpkg	Sat Aug 29 15:27:00 2009 +0200
     1.2 +++ b/tazpkg	Sat Sep 12 22:39:30 2009 +0200
     1.3 @@ -1003,6 +1003,72 @@
     1.4  	fi
     1.5  }
     1.6  
     1.7 +# convert a .ipk package to .tazpkg
     1.8 +convert_ipk()
     1.9 +{
    1.10 +	mkdir -p $TMP_DIR
    1.11 +	tar xOzf $PACKAGE_FILE ./control.tar.gz | tar xzf - -C $TMP_DIR
    1.12 +	package="$(grep ^Package $TMP_DIR/control | sed 's/.*: //')"
    1.13 +	version="$(grep ^Version $TMP_DIR/control | sed 's/.*: //')"
    1.14 +	maintainer="$(grep ^Maintainer $TMP_DIR/control | sed 's/.*: //')"
    1.15 +	target="$(grep ^Architecture $TMP_DIR/control | sed 's/.*: //')"
    1.16 +	descrip="$(grep ^Description $TMP_DIR/control | sed 's/.*: //')"
    1.17 +	url="http://openwrt.org/"
    1.18 +	case "$target" in
    1.19 +	i386|all)
    1.20 +		file=$package-$version
    1.21 +		mkdir -p $TMP_DIR/$file/fs
    1.22 +		tar xOzf $PACKAGE_FILE ./data.tar.gz | \
    1.23 +			tar xzf - -C $TMP_DIR/$file/fs
    1.24 +		cd $TMP_DIR
    1.25 +		cat > $file/receipt <<EOT
    1.26 +# SliTaz package receipt.
    1.27 +# generated by tazpkg from package $(basename $PACKAGE_FILE)
    1.28 +PACKAGE="$package"
    1.29 +VERSION="$version"
    1.30 +CATEGORY="misc"
    1.31 +SHORT_DESC="$descrip"
    1.32 +WEB_SITE="$url"
    1.33 +MAINTAINER="$maintainer"
    1.34 +DEPENDS="$(find_depends)"
    1.35 +EOT
    1.36 +		[ -s conffiles ] && cat >> $file/receipt <<EOT
    1.37 +CONFIG_FILES="$(cat conffiles)"
    1.38 +EOT
    1.39 +		show_unresolved_lib $file/receipt
    1.40 +		while read script func; do
    1.41 +			[ -s $script ] && cat >> $file/receipt <<EOT
    1.42 +
    1.43 +$func()
    1.44 +{
    1.45 +$(cat $script)
    1.46 +}
    1.47 +EOT
    1.48 +		done <<EOT
    1.49 +preinst		pre_install
    1.50 +postinst	post_install
    1.51 +prerm		pre_remove
    1.52 +postrm		post_remove
    1.53 +EOT
    1.54 +		awk '
    1.55 +{
    1.56 +   if (/^ / && show) print substr($0,2);
    1.57 +   else show=0;
    1.58 +   if (/^Description/) show=1;
    1.59 +}' < $TMP_DIR/control > $file/description.txt
    1.60 +		sed -i 's/^\.$//' $file/description.txt
    1.61 +		[ -s $file/description.txt ] || rm -f $file/description.txt
    1.62 +		tazpkg pack $file
    1.63 +		cd $TOP_DIR
    1.64 +		mv $TMP_DIR/$file.tazpkg .
    1.65 +		;;
    1.66 +	*)
    1.67 +		echo "Invalid target: $target (expected i386)"
    1.68 +		;;
    1.69 +	esac
    1.70 +	rm -rf $TMP_DIR
    1.71 +}
    1.72 +
    1.73  # convert a .pkg.tar.gz package to .tazpkg
    1.74  convert_arch()
    1.75  {
    1.76 @@ -1080,6 +1146,7 @@
    1.77  EOM
    1.78  		grep ^$package $file/fs/install/slack-desc | \
    1.79  			sed "s/^$package://" > $file/description.txt
    1.80 +		[ -s $file/description.txt ] || rm -f $file/description.txt
    1.81  		rm -rf $file/fs/install
    1.82  		tazpkg pack $file
    1.83  		mv $file.tazpkg $TOP_DIR
    1.84 @@ -1101,11 +1168,14 @@
    1.85  	version=$(echo ${version##*:})
    1.86  	descrip=$(grep '^ *Description' $TMP_DIR/control)
    1.87  	descrip=$(echo ${descrip##*:})
    1.88 -	file="$package-$version"
    1.89 -	mkdir -p $TMP_DIR/$file/fs/
    1.90 -	dpkg-deb -x $PACKAGE_FILE $TMP_DIR/$file/fs
    1.91 -	cd $TMP_DIR
    1.92 -	cat > $file/receipt <<EOT
    1.93 +	target="$(grep ^Architecture $TMP_DIR/control | sed 's/.*: //')"
    1.94 +	case "$target" in
    1.95 +	i386|all)
    1.96 +		file="$package-$version"
    1.97 +		mkdir -p $TMP_DIR/$file/fs/
    1.98 +		dpkg-deb -x $PACKAGE_FILE $TMP_DIR/$file/fs
    1.99 +		cd $TMP_DIR
   1.100 +		cat > $file/receipt <<EOT
   1.101  # SliTaz package receipt.
   1.102  # generated by tazpkg from debian package $(basename $PACKAGE_FILE)
   1.103  PACKAGE="$package"
   1.104 @@ -1116,16 +1186,25 @@
   1.105  MAINTAINER="nobody@slitaz.org"
   1.106  DEPENDS="$(find_depends)"
   1.107  EOT
   1.108 -	show_unresolved_lib $file/receipt
   1.109 -	awk '
   1.110 +		[ -s conffiles ] && cat >> $file/receipt <<EOT
   1.111 +CONFIG_FILES="$(cat conffiles)"
   1.112 +EOT
   1.113 +		show_unresolved_lib $file/receipt
   1.114 +		awk '
   1.115  {
   1.116     if (/^ / && show) print substr($0,2);
   1.117     else show=0;
   1.118     if (/^Description/) show=1;
   1.119  }' < $TMP_DIR/control > $file/description.txt
   1.120 -	sed -i 's/^\.$//' $file/description.txt
   1.121 -	tazpkg pack $file
   1.122 -	mv $file.tazpkg $TOP_DIR
   1.123 +		sed -i 's/^\.$//' $file/description.txt
   1.124 +		[ -s $file/description.txt ] || rm -f $file/description.txt
   1.125 +		tazpkg pack $file
   1.126 +		mv $file.tazpkg $TOP_DIR
   1.127 +		;;
   1.128 +	*)
   1.129 +		echo "Invalid target: $target (expected i386)"
   1.130 +		;;
   1.131 +	esac
   1.132  	cd $TOP_DIR
   1.133  	rm -rf $TMP_DIR
   1.134  }
   1.135 @@ -2492,6 +2571,8 @@
   1.136  			convert_tgz;;
   1.137  		*.pkg.tar.gz)
   1.138  			convert_arch;;
   1.139 +		*.ipk|*.opk)
   1.140 +			convert_ipk;;
   1.141  		*)
   1.142  			echo "Unsupported format";;
   1.143  		esac