X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/76ed58d705e7f3892a1259abcd92882a527e7b53..713c08cb30a8586b70fbc454fac345d633276a04:/scripts/ipkg?ds=sidebyside

diff --git a/scripts/ipkg b/scripts/ipkg
index efbeb7dd5..554521a81 100755
--- a/scripts/ipkg
+++ b/scripts/ipkg
@@ -32,6 +32,8 @@ ipkg_is_upgrade () {
   return 1
 }         
 
+which md5sum 2>&1 >/dev/null || alias md5sum=md5
+
 ipkg_srcs() {
 	local srcre="$1"
 	sed -ne "s/^src[[:space:]]\+$srcre[[:space:]]\+//p" < $IPKG_CONF
@@ -43,7 +45,7 @@ ipkg_src_names() {
 
 ipkg_src_byname() {
 	local src="$1"
-	ipkg_srcs $src | head -1
+	ipkg_srcs $src | head -n 1
 }
 
 ipkg_dests() {
@@ -68,16 +70,16 @@ ipkg_state_dirs() {
 }
 
 ipkg_dest_default() {
-	ipkg_dests_all | head -1
+	ipkg_dests_all | head -n 1
 }
 
 ipkg_dest_default_name() {
-	ipkg_dest_names | head -1
+	ipkg_dest_names | head -n 1
 }
 
 ipkg_dest_byname() {
 	local dest="$1"
-	ipkg_dests $dest | head -1
+	ipkg_dests $dest | head -n 1
 }
 
 ipkg_option() {
@@ -114,13 +116,15 @@ Valid destinations are directories or one of the dest names from $IPKG_CONF:" >&
 	fi
 
 	# Global ipkg state directories
-	IPKG_DIR_PREFIX=usr/lib/ipkg
+	IPKG_DIR_PREFIX=usr/lib/opkg
 	IPKG_LISTS_DIR=$IPKG_OFFLINE_ROOT/$IPKG_DIR_PREFIX/lists
 	IPKG_PENDING_DIR=$IPKG_OFFLINE_ROOT/$IPKG_DIR_PREFIX/pending
 	if [ -z "$IPKG_TMP" ]; then
 		IPKG_TMP=$IPKG_ROOT/tmp/ipkg
 	fi
 
+	[ -e "$IPKG_TMP" ] || mkdir -p $IPKG_TMP
+
 	# Destination specific ipkg meta-data directory
 	IPKG_STATE_DIR=$IPKG_ROOT/$IPKG_DIR_PREFIX
 
@@ -142,7 +146,7 @@ Valid destinations are directories or one of the dest names from $IPKG_CONF:" >&
 		export no_proxy="$IPKG_NO_PROXY"
 	fi
 
-	IPKG_STATUS_FIELDS='\(Package\|Status\|Essential\|Version\|Conffiles\|Root\)'
+	IPKG_STATUS_FIELDS='\(Package\|Status\|Essential\|Version\|Conffiles\|Root\|Architecture\)'
 }
 
 ipkg_usage() {
@@ -230,7 +234,6 @@ ipkg_download() {
 		proxyoption="--proxy=on"
 	fi
 
-	echo "Downloading $src ..."
 	rm -f $IPKG_TMP/$src_file
 	case "$src" in
 	http://* | ftp://*)
@@ -248,7 +251,6 @@ ipkg_download() {
 		;;
 	esac
 
-	echo "Done."
 	return 0
 }
 
@@ -593,8 +595,8 @@ ipkg_depends() {
 		all_deps="$all_deps $new_pkgs"
 		local new_deps=
 		for pkg in $new_pkgs; do
-			if echo $pkg | grep -q '[^a-z0-9.+-]'; then
-				echo "ipkg_depends: ERROR: Package name $pkg contains illegal characters (should be [a-z0-9.+-])" >&2
+			if echo $pkg | grep -q '[^A-Za-z0-9.+-]'; then
+				echo "ipkg_depends: ERROR: Package name $pkg contains illegal characters (should be [A-Za-z0-9.+-])" >&2
 				return 1
 			fi
 			# TODO: Fix this. For now I am ignoring versions and alternations in dependencies.
@@ -605,8 +607,7 @@ s/ \+/ /g'`
 			ipkg_set_depends $pkg $new_deps
 		done
 
-		new_deps=`echo $new_deps | sed -e 's/[[:space:]]\+/\\
-/g' | sort | uniq`
+		new_deps=`echo $new_deps | sed -e 's/[[:space:]]\+/\n/g' | sort | uniq`
 
 		local maybe_new_pkgs=
 		for pkg in $new_deps; do
@@ -662,7 +663,7 @@ Status: install ok not-installed" | ipkg_status_update_sd $sd $pkg
 			curcheck="`expr $curcheck + 1`"
 			local is_installed="`ipkg_get_installed $pkg`"
 			if [ "$is_installed" = "installed" ]; then
-				echo "$pkg is installed" > /dev/console
+				echo "$pkg is installed"
 				continue
 			fi
 
@@ -690,9 +691,6 @@ Status: install ok not-installed" | ipkg_status_update_sd $sd $pkg
 				return 1;
 			fi
 
-			[ -e "$IPKG_TMP" ] || mkdir -p $IPKG_TMP
-
-			echo ""
 			local tmp_pkg_file="$IPKG_TMP/"`ipkg_file_part $filename`
 			if ! ipkg_download `ipkg_src_byname $src`/$filename $tmp_pkg_file; then
 				echo "ipkg_get_install: Perhaps you need to run \`ipkg update'?"
@@ -775,7 +773,7 @@ ipkg_install_file_dest() {
 	mkdir -p $IPKG_TMP/$pkg/data
 	mkdir -p $info_dir
 
-	if ! $pkg_extract_stdout $filename ./control.tar.gz | (cd $IPKG_TMP/$pkg/control; tar -xzf - ) ; then
+	if ! $pkg_extract_stdout $filename ./control.tar.gz | (cd $IPKG_TMP/$pkg/control; zcat | tar -xf - ) ; then
 		echo "ipkg_install_file: ERROR unpacking control.tar.gz from $filename"
 		return 1
 	fi
@@ -787,7 +785,7 @@ ipkg_install_file_dest() {
 			echo "Package: $pkg
 Status: install ok pending" | ipkg_status_update_sd $sd $pkg
 			mkdir -p $IPKG_PENDING_DIR
-			cp $filename $IPKG_PENDING_DIR
+			cp -f $filename $IPKG_PENDING_DIR
 			rm -r $IPKG_TMP/$pkg/control
 			rm -r $IPKG_TMP/$pkg/data
 			rmdir $IPKG_TMP/$pkg
@@ -805,7 +803,7 @@ Status: install ok pending" | ipkg_status_update_sd $sd $pkg
 	set -o noglob
 	rm -r $IPKG_TMP/$pkg/control
 
-	if ! $pkg_extract_stdout $filename ./data.tar.gz | (cd $IPKG_TMP/$pkg/data; tar -xzf - ) ; then
+	if ! $pkg_extract_stdout $filename ./data.tar.gz | (cd $IPKG_TMP/$pkg/data; zcat | tar -xf - ) ; then
 		echo "ipkg_install_file: ERROR unpacking data.tar.gz from $filename"
 		return 1
 	fi
@@ -877,7 +875,7 @@ diff -u $dest/$conffile $IPKG_TMP/$pkg/data/$conffile"
 	rm -rf $IPKG_TMP/$pkg/data
 	rmdir $IPKG_TMP/$pkg
 	rm -f $info_dir/$pkg.list
-	$pkg_extract_stdout $filename ./data.tar.gz | tar tzf - | sed -e 's/^\.//' > $info_dir/$pkg.list
+	$pkg_extract_stdout $filename ./data.tar.gz | zcat | tar tf - | sed -e 's/^\.//' > $info_dir/$pkg.list
 
 	if [ -x "$info_dir/$pkg.postinst" ]; then
 		$info_dir/$pkg.postinst configure
@@ -906,7 +904,6 @@ ipkg_install_file() {
 }
 
 ipkg_install() {
-
 	while [ $# -gt 0 ]; do
 		local pkg="$1"
 		shift
@@ -924,11 +921,7 @@ ipkg_install() {
 				ipkg_install_file $ipkg_filename
 			;;
 		*.ipk  | *.deb)
-			if [ -f "$pkg" ]; then
 				ipkg_install_file $pkg
-			else
-				echo "File not found $pkg" >&2
-			fi
 			;;
 		*)
 			ipkg_get_install $pkg || true
@@ -984,7 +977,7 @@ ipkg_install_wanted() {
 
 ipkg_upgrade_pkg() {
 	local pkg="$1"
-	local avail_ver="`ipkg_info $pkg Version | ipkg_extract_value | head -1`"
+	local avail_ver="`ipkg_info $pkg Version | ipkg_extract_value | head -n 1`"
 
 	is_installed=
 	for dest_name in `ipkg_dest_names`; do