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
ipkg_src_byname() {
local src="$1"
- ipkg_srcs $src | head -1
+ ipkg_srcs $src | head -n 1
}
ipkg_dests() {
}
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() {
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
- IPKG_TMP=$IPKG_ROOT/tmp/ipkg
+ 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
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() {
proxyoption="--proxy=on"
fi
- echo "Downloading $src ..."
rm -f $IPKG_TMP/$src_file
case "$src" in
http://* | ftp://*)
;;
esac
- echo "Done."
return 0
}
local new_deps="$*"
pkg="`ipkg_safe_pkg_name $pkg`"
## setvar ${pkg}_depends "$new_deps"
- echo $new_deps > /tmp/ipkg/${pkg}.depends
+ echo $new_deps > $IPKG_TMP/${pkg}.depends
}
ipkg_get_depends() {
local pkg=$1
pkg="`ipkg_safe_pkg_name $pkg`"
- cat /tmp/ipkg/${pkg}.depends
+ cat $IPKG_TMP/${pkg}.depends
## eval "echo \$${pkg}_depends"
}
ipkg_set_installed() {
local pkg=$1
pkg="`ipkg_safe_pkg_name $pkg`"
- echo installed > /tmp/ipkg/${pkg}.installed
+ echo installed > $IPKG_TMP/${pkg}.installed
## setvar ${pkg}_installed "installed"
}
local pkg=$1
pkg="`ipkg_safe_pkg_name $pkg`"
### echo ipkg_set_uninstalled $pkg > /dev/console
- echo uninstalled > /tmp/ipkg/${pkg}.installed
+ echo uninstalled > $IPKG_TMP/${pkg}.installed
## setvar ${pkg}_installed "uninstalled"
}
ipkg_get_installed() {
local pkg=$1
pkg="`ipkg_safe_pkg_name $pkg`"
- if [ -f /tmp/ipkg/${pkg}.installed ]; then
- cat /tmp/ipkg/${pkg}.installed
+ if [ -f $IPKG_TMP/${pkg}.installed ]; then
+ cat $IPKG_TMP/${pkg}.installed
fi
## eval "echo \$${pkg}_installed"
}
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.
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
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
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'?"
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
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
fi
- echo -n "Unpacking $pkg..."
+ printf "Unpacking $pkg..."
set +o noglob
for file in $IPKG_TMP/$pkg/control/*; do
local base_file="`ipkg_file_part $file`"
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
echo "Done."
- echo -n "Configuring $pkg..."
+ printf "Configuring $pkg..."
export PKG_ROOT=$dest
if [ -x "$info_dir/$pkg.preinst" ]; then
if ! $info_dir/$pkg.preinst install; then
local use_maintainers_conffile=
if [ -z "$FORCE_DEFAULTS" ]; then
while true; do
- echo -n "Configuration file \`$conffile'
+ printf "Configuration file \`$conffile'
==> File on system created by you or by a script.
==> File also in package provided by package maintainer.
What would you like to do about it ? Your options are:
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
}
ipkg_install() {
-
while [ $# -gt 0 ]; do
local pkg="$1"
shift
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
if [ -n "$FORCE_DEFAULTS" ]; then
echo "Installing them now."
else
- echo -n "Install them now [Y/n] ? "
+ printf "Install them now [Y/n] ? "
read response
case "$response" in
[Nn] | [Nn][Oo])
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