From: Khem Raj <raj.khem@gmail.com>
To: openembedded-devel@lists.openembedded.org
Subject: [PATCH 8/9] stage-manager: Use opkg utilities
Date: Mon, 24 Jan 2011 22:25:44 -0800 [thread overview]
Message-ID: <1295936745-718-9-git-send-email-raj.khem@gmail.com> (raw)
In-Reply-To: <1295936745-718-1-git-send-email-raj.khem@gmail.com>
* Rename stage-manager-ipkg -> stage-manager-opkg
* Rename stage-manager-ipkg-build -> stage-manager-opkg-build
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
recipes/stage-manager/files/stage-manager-ipkg | 1209 --------------------
.../stage-manager/files/stage-manager-ipkg-build | 246 ----
recipes/stage-manager/files/stage-manager-opkg | 1209 ++++++++++++++++++++
.../stage-manager/files/stage-manager-opkg-build | 246 ++++
recipes/stage-manager/stagemanager-native_0.0.1.bb | 8 +-
5 files changed, 1459 insertions(+), 1459 deletions(-)
delete mode 100755 recipes/stage-manager/files/stage-manager-ipkg
delete mode 100755 recipes/stage-manager/files/stage-manager-ipkg-build
create mode 100755 recipes/stage-manager/files/stage-manager-opkg
create mode 100755 recipes/stage-manager/files/stage-manager-opkg-build
diff --git a/recipes/stage-manager/files/stage-manager-ipkg b/recipes/stage-manager/files/stage-manager-ipkg
deleted file mode 100755
index 105ea54..0000000
--- a/recipes/stage-manager/files/stage-manager-ipkg
+++ /dev/null
@@ -1,1209 +0,0 @@
-#!/bin/sh
-# ipkg - the itsy package management system
-#
-# Copyright (C) 2001 Carl D. Worth
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-set -e
-
-# Uncomment for debugging
-#set -x
-
-# By default do not do globbing. Any command wanting globbing should
-# explicitly enable it first and disable it afterwards.
-set -o noglob
-
-ipkg_srcs() {
- local srcre="$1"
- sed -ne "s/^src[[:space:]]\+$srcre[[:space:]]\+//p" < $IPKG_CONF
-}
-
-ipkg_src_names() {
- sed -ne "s/^src[[:space:]]\+\([^[:space:]]\+\).*/\1/p" < $IPKG_CONF
-}
-
-ipkg_src_byname() {
- local src="$1"
- ipkg_srcs $src | head -n1
-}
-
-ipkg_dests() {
- local destre=`echo $1 | ipkg_protect_slashes`
- sed -ne "/^dest[[:space:]]\+$destre/{
-s/^dest[[:space:]]\+[^[:space:]]\+[[:space:]]\+//
-s/^/`echo $IPKG_OFFLINE_ROOT | ipkg_protect_slashes`/
-p
-}" < $IPKG_CONF
-}
-
-ipkg_dest_names() {
- sed -ne "s/^dest[[:space:]]\+\([^[:space:]]\+\).*/\1/p" < $IPKG_CONF
-}
-
-ipkg_dests_all() {
- ipkg_dests '.*'
-}
-
-ipkg_state_dirs() {
- ipkg_dests_all | sed "s|\$|/$IPKG_DIR_PREFIX|"
-}
-
-ipkg_dest_default() {
- ipkg_dests_all | head -n1
-}
-
-ipkg_dest_default_name() {
- ipkg_dest_names | head -n1
-}
-
-ipkg_dest_byname() {
- local dest="$1"
- ipkg_dests $dest | head -n1
-}
-
-ipkg_option() {
- local option="$1"
- sed -ne "s/^option[[:space:]]\+$option[[:space:]]\+//p" < $IPKG_CONF
-}
-
-ipkg_load_configuration() {
- if [ -z "$IPKG_CONF_DIR" ]; then
- IPKG_CONF_DIR=/etc
- fi
-
- if [ -z "$IPKG_CONF" ]; then
- IPKG_CONF=$IPKG_CONF_DIR/ipkg.conf
- fi
-
- if [ -z "$IPKG_OFFLINE_ROOT" ]; then
- IPKG_OFFLINE_ROOT=`ipkg_option offline_root`
- fi
- # Export IPKG_OFFLINE_ROOT for use by update-alternatives
- export IPKG_OFFLINE_ROOT
- if [ -n "$DEST_NAME" ]; then
- IPKG_ROOT=`ipkg_dest_byname $DEST_NAME`
- if [ -z "$IPKG_ROOT" ]; then
- if [ -d "$IPKG_OFFLINE_ROOT$DEST_NAME" ]; then
- IPKG_ROOT="$IPKG_OFFLINE_ROOT$DEST_NAME";
- else
- echo "ipkg: invalid destination specification: $DEST_NAME
-Valid destinations are directories or one of the dest names from $IPKG_CONF:" >&2
- ipkg_dest_names >&2
- return 1
- fi
- fi
- else
- IPKG_ROOT=`ipkg_dest_default`
- fi
-
- # Global ipkg state directories
- IPKG_DIR_PREFIX=usr/lib/ipkg
- IPKG_LISTS_DIR=$IPKG_OFFLINE_ROOT/$IPKG_DIR_PREFIX/lists
- IPKG_PENDING_DIR=$IPKG_OFFLINE_ROOT/$IPKG_DIR_PREFIX/pending
-
- # test for bsd mktemp and pass -t <prefix> when needed
- if (mktemp -V) ; then
- IPKG_TMP=`mktemp -d`
- else
- IPKG_TMP=`mktemp -d -t ipkg`
- fi
-
- if [ ! -d "$IPKG_TMP" ]; then
- echo "Error, could not create a temp directory"
- return 1
- fi
-
- # Destination specific ipkg meta-data directory
- IPKG_STATE_DIR=$IPKG_ROOT/$IPKG_DIR_PREFIX
-
- # Proxy Support
- IPKG_PROXY_USERNAME=`ipkg_option proxy_username`
- IPKG_PROXY_PASSWORD=`ipkg_option proxy_password`
- IPKG_HTTP_PROXY=`ipkg_option http_proxy`
- IPKG_FTP_PROXY=`ipkg_option ftp_proxy`
- IPKG_NO_PROXY=`ipkg_option no_proxy`
- if [ -n "$IPKG_HTTP_PROXY" ]; then
- export http_proxy="$IPKG_HTTP_PROXY"
- fi
-
- if [ -n "$IPKG_FTP_PROXY" ]; then
- export ftp_proxy="$IPKG_FTP_PROXY"
- fi
-
- if [ -n "$IPKG_NO_PROXY" ]; then
- export no_proxy="$IPKG_NO_PROXY"
- fi
-
- IPKG_STATUS_FIELDS='\(Package\|Status\|Essential\|Version\|Conffiles\|Root\)'
-}
-
-ipkg_usage() {
- [ $# -gt 0 ] && echo "ipkg: $*"
- echo "
-usage: ipkg [options...] sub-command [arguments...]
-where sub-command is one of:
-
-Package Manipulation:
- update Update list of available packages
- upgrade Upgrade all installed packages to latest version
- install <pkg> Download and install <pkg> (and dependencies)
- install <file.ipk> Install package <file.ipk>
- install <file.deb> Install package <file.deb>
- remove <pkg> Remove package <pkg>
-
-Informational Commands:
- list List available packages and descriptions
- files <pkg> List all files belonging to <pkg>
- search <file> Search for a packaging providing <file>
- info [pkg [<field>]] Display all/some info fields for <pkg> or all
- status [pkg [<field>]] Display all/some status fields for <pkg> or all
- depends <pkg> Print uninstalled package dependencies for <pkg>
-
-Options:
- -d <dest_name> Use <dest_name> as the the root directory for
- -dest <dest_name> package installation, removal, upgrading.
- <dest_name> should be a defined dest name from the
- configuration file, (but can also be a directory
- name in a pinch).
- -o <offline_root> Use <offline_root> as the root for offline installation.
- -offline <offline_root>
-
-Force Options (use when ipkg is too smart for its own good):
- -force-depends Make dependency checks warnings instead of errors
- -force-defaults Use default options for questions asked by ipkg.
- (no prompts). Note that this will not prevent
- package installation scripts from prompting.
-" >&2
- exit 1
-}
-
-ipkg_dir_part() {
- local dir=`echo $1 | sed -ne 's/\(.*\/\).*/\1/p'`
- if [ -z "$dir" ]; then
- dir="./"
- fi
- echo $dir
-}
-
-ipkg_file_part() {
- echo $1 | sed 's/.*\///'
-}
-
-ipkg_protect_slashes() {
- sed -e 's/\//\\\//g'
-}
-
-ipkg_download() {
- local src="$1"
- local dest="$2"
-
- local src_file=`ipkg_file_part $src`
- local dest_dir=`ipkg_dir_part $dest`
- if [ -z "$dest_dir" ]; then
- dest_dir="$IPKG_TMP"
- fi
-
- local dest_file=`ipkg_file_part $dest`
- if [ -z "$dest_file" ]; then
- dest_file="$src_file"
- fi
-
- # Proxy support
- local proxyuser=""
- local proxypassword=""
- local proxyoption=""
-
- if [ -n "$IPKG_PROXY_USERNAME" ]; then
- proxyuser="--proxy-user=\"$IPKG_PROXY_USERNAME\""
- proxypassword="--proxy-passwd=\"$IPKG_PROXY_PASSWORD\""
- fi
-
- if [ -n "$IPKG_PROXY_HTTP" -o -n "$IPKG_PROXY_FTP" ]; then
- proxyoption="--proxy=on"
- fi
-
- echo "Downloading $src ..."
- rm -f $IPKG_TMP/$src_file
- case "$src" in
- http://* | ftp://*)
- if ! wget --passive-ftp -nd $proxyoption $proxyuser $proxypassword -P $IPKG_TMP $src; then
- echo "ipkg_download: ERROR: Failed to retrieve $src, returning $err"
- return 1
- fi
- mv $IPKG_TMP/$src_file $dest_dir/$dest_file 2>/dev/null
- ;;
- file:/* )
- ln -s `echo $src | sed 's/^file://'` $dest_dir/$dest_file 2>/dev/null
- ;;
- *)
- echo "DEBUG: $src"
- ;;
- esac
-
- echo "Done."
- return 0
-}
-
-ipkg_update() {
- if [ ! -e "$IPKG_LISTS_DIR" ]; then
- mkdir -p $IPKG_LISTS_DIR
- fi
-
- local err=
- for src_name in `ipkg_src_names`; do
- local src=`ipkg_src_byname $src_name`
- if ! ipkg_download $src/Packages $IPKG_LISTS_DIR/$src_name; then
- echo "ipkg_update: Error downloading $src/Packages to $IPKG_LISTS_DIR/$src_name" >&2
- err=t
- else
- echo "Updated list of available packages in $IPKG_LISTS_DIR/$src_name"
- fi
- done
-
- [ -n "$err" ] && return 1
-
- return 0
-}
-
-ipkg_list() {
- for src in `ipkg_src_names`; do
- if ipkg_require_list $src; then
-# black magic...
-sed -ne "
-/^Package:/{
-s/^Package:[[:space:]]*\<\([a-z0-9.+-]*$1[a-z0-9.+-]*\).*/\1/
-h
-}
-/^Description:/{
-s/^Description:[[:space:]]*\(.*\)/\1/
-H
-g
-s/\\
-/ - /
-p
-}
-" $IPKG_LISTS_DIR/$src
- fi
- done
-}
-
-ipkg_extract_paragraph() {
- local pkg="$1"
- sed -ne "/Package:[[:space:]]*$pkg[[:space:]]*\$/,/^\$/p"
-}
-
-ipkg_extract_field() {
- local field="$1"
-# blacker magic...
- sed -ne "
-: TOP
-/^$field:/{
-p
-n
-b FIELD
-}
-d
-: FIELD
-/^$/b TOP
-/^[^[:space:]]/b TOP
-p
-n
-b FIELD
-"
-}
-
-ipkg_extract_value() {
- sed -e "s/^[^:]*:[[:space:]]*//"
-}
-
-ipkg_require_list() {
- [ $# -lt 1 ] && return 1
- local src="$1"
- if [ ! -f "$IPKG_LISTS_DIR/$src" ]; then
- echo "ERROR: File not found: $IPKG_LISTS_DIR/$src" >&2
- echo " You probably want to run \`ipkg update'" >&2
- return 1
- fi
- return 0
-}
-
-ipkg_info() {
- for src in `ipkg_src_names`; do
- if ipkg_require_list $src; then
- case $# in
- 0)
- cat $IPKG_LISTS_DIR/$src
- ;;
- 1)
- ipkg_extract_paragraph $1 < $IPKG_LISTS_DIR/$src
- ;;
- *)
- ipkg_extract_paragraph $1 < $IPKG_LISTS_DIR/$src | ipkg_extract_field $2
- ;;
- esac
- fi
- done
-}
-
-ipkg_status_sd() {
- [ $# -lt 1 ] && return 0
- sd="$1"
- shift
- if [ -f $sd/status ]; then
- case $# in
- 0)
- cat $sd/status
- ;;
- 1)
- ipkg_extract_paragraph $1 < $sd/status
- ;;
- *)
- ipkg_extract_paragraph $1 < $sd/status | ipkg_extract_field $2
- ;;
- esac
- fi
- return 0
-}
-
-ipkg_status_all() {
- for sd in `ipkg_state_dirs`; do
- ipkg_status_sd $sd $*
- done
-}
-
-ipkg_status() {
- if [ -n "$DEST_NAME" ]; then
- ipkg_status_sd $IPKG_STATE_DIR $*
- else
- ipkg_status_all $*
- fi
-}
-
-ipkg_status_matching_sd() {
- local sd="$1"
- local re="$2"
- if [ -f $sd/status ]; then
- sed -ne "
-: TOP
-/^Package:/{
-s/^Package:[[:space:]]*//
-s/[[:space:]]*$//
-h
-}
-/$re/{
-g
-p
-b NEXT
-}
-d
-: NEXT
-/^$/b TOP
-n
-b NEXT
-" < $sd/status
- fi
- return 0
-}
-
-ipkg_status_matching_all() {
- for sd in `ipkg_state_dirs`; do
- ipkg_status_matching_sd $sd $*
- done
-}
-
-ipkg_status_matching() {
- if [ -n "$DEST_NAME" ]; then
- ipkg_status_matching_sd $IPKG_STATE_DIR $*
- else
- ipkg_status_matching_all $*
- fi
-}
-
-ipkg_status_installed_sd() {
- local sd="$1"
- local pkg="$2"
- ipkg_status_sd $sd $pkg Status | grep -q "Status: install user installed"
-}
-
-ipkg_status_installed_all() {
- local ret=1
- for sd in `ipkg_state_dirs`; do
- if `ipkg_status_installed_sd $sd $*`; then
- ret=0
- fi
- done
- return $ret
-}
-
-ipkg_status_mentioned_sd() {
- local sd="$1"
- local pkg="$2"
- [ -n "`ipkg_status_sd $sd $pkg Status`" ]
-}
-
-ipkg_files() {
- local pkg="$1"
- if [ -n "$DEST_NAME" ]; then
- dests=$IPKG_ROOT
- else
- dests=`ipkg_dests_all`
- fi
- for dest in $dests; do
- if [ -f $dest/$IPKG_DIR_PREFIX/info/$pkg.list ]; then
- dest_sed=`echo $dest | ipkg_protect_slashes`
- sed -e "s/^/$dest_sed/" < $dest/$IPKG_DIR_PREFIX/info/$pkg.list
- fi
- done
-}
-
-ipkg_search() {
- local pattern="$1"
-
- for dest_name in `ipkg_dest_names`; do
- dest=`ipkg_dest_byname $dest_name`
- dest_sed=`echo $dest | ipkg_protect_slashes`
-
- set +o noglob
- local list_files=`ls -1 $dest/$IPKG_DIR_PREFIX/info/*.list 2>/dev/null`
- set -o noglob
- for file in $list_files; do
- if sed "s/^/$dest_sed/" $file | grep -q $pattern; then
- local pkg=`echo $file | sed "s/^.*\/\(.*\)\.list/\1/"`
- [ "$dest_name" != `ipkg_dest_default_name` ] && pkg="$pkg ($dest_name)"
- sed "s/^/$dest_sed/" $file | grep $pattern | sed "s/^/$pkg: /"
- fi
- done
- done
-}
-
-ipkg_status_remove_sd() {
- local sd="$1"
- local pkg="$2"
-
- if [ ! -f $sd/status ]; then
- mkdir -p $sd
- touch $sd/status
- fi
- sed -ne "/Package:[[:space:]]*$pkg[[:space:]]*\$/,/^\$/!p" < $sd/status > $sd/status.new
- mv $sd/status.new $sd/status
-}
-
-ipkg_status_remove_all() {
- for sd in `ipkg_state_dirs`; do
- ipkg_status_remove_sd $sd $*
- done
-}
-
-ipkg_status_remove() {
- if [ -n "$DEST_NAME" ]; then
- ipkg_status_remove_sd $IPKG_STATE_DIR $*
- else
- ipkg_status_remove_all $*
- fi
-}
-
-ipkg_status_update_sd() {
- local sd="$1"
- local pkg="$2"
-
- ipkg_status_remove_sd $sd $pkg
- ipkg_extract_field "$IPKG_STATUS_FIELDS" >> $sd/status
- echo "" >> $sd/status
-}
-
-ipkg_status_update() {
- ipkg_status_update_sd $IPKG_STATE_DIR $*
-}
-
-ipkg_unsatisfied_dependences() {
- local pkg=$1
- local deps=`ipkg_get_depends $pkg`
- local remaining_deps=
- for dep in $deps; do
- local installed=`ipkg_get_installed $dep`
- if [ "$installed" != "installed" ] ; then
- remaining_deps="$remaining_deps $dep"
- fi
- done
- ## echo "ipkg_unsatisfied_dependences pkg=$pkg $remaining_deps" > /dev/console
- echo $remaining_deps
-}
-
-ipkg_safe_pkg_name() {
- local pkg=$1
- local spkg=`echo pkg_$pkg | sed -e y/-+./___/`
- echo $spkg
-}
-
-ipkg_set_depends() {
- local pkg=$1; shift
- local new_deps="$*"
- pkg=`ipkg_safe_pkg_name $pkg`
- ## setvar ${pkg}_depends "$new_deps"
- echo $new_deps > $IPKG_TMP/${pkg}.depends
-}
-
-ipkg_get_depends() {
- local pkg=$1
- pkg=`ipkg_safe_pkg_name $pkg`
- cat $IPKG_TMP/${pkg}.depends
- ## eval "echo \$${pkg}_depends"
-}
-
-ipkg_set_installed() {
- local pkg=$1
- pkg=`ipkg_safe_pkg_name $pkg`
- echo installed > $IPKG_TMP/${pkg}.installed
- ## setvar ${pkg}_installed "installed"
-}
-
-ipkg_set_uninstalled() {
- local pkg=$1
- pkg=`ipkg_safe_pkg_name $pkg`
- ### echo ipkg_set_uninstalled $pkg > /dev/console
- echo uninstalled > $IPKG_TMP/${pkg}.installed
- ## setvar ${pkg}_installed "uninstalled"
-}
-
-ipkg_get_installed() {
- local pkg=$1
- pkg=`ipkg_safe_pkg_name $pkg`
- if [ -f $IPKG_TMP/${pkg}.installed ]; then
- cat $IPKG_TMP/${pkg}.installed
- fi
- ## eval "echo \$${pkg}_installed"
-}
-
-ipkg_depends() {
- local new_pkgs="$*"
- local all_deps=
- local installed_pkgs=`ipkg_status_matching_all 'Status:.*[[:space:]]installed'`
- for pkg in $installed_pkgs; do
- ipkg_set_installed $pkg
- done
- while [ -n "$new_pkgs" ]; do
- 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
- return 1
- fi
- # TODO: Fix this. For now I am ignoring versions and alternations in dependencies.
- new_deps="$new_deps "`ipkg_info $pkg '\(Pre-\)\?Depends' | ipkg_extract_value | sed -e 's/([^)]*)//g
-s/\(|[[:space:]]*[a-z0-9.+-]\+[[:space:]]*\)\+//g
-s/,/ /g
-s/ \+/ /g'`
- ipkg_set_depends $pkg $new_deps
- done
-
- new_deps=`echo $new_deps | sed -e 's/[[:space:]]\+/\\
-/g' | sort | uniq`
-
- local maybe_new_pkgs=
- for pkg in $new_deps; do
- if ! echo $installed_pkgs | grep -q "\<$pkg\>"; then
- maybe_new_pkgs="$maybe_new_pkgs $pkg"
- fi
- done
-
- new_pkgs=
- for pkg in $maybe_new_pkgs; do
- if ! echo $all_deps | grep -q "\<$pkg\>"; then
- if [ -z "`ipkg_info $pkg`" ]; then
- echo "ipkg_depends: Warning: $pkg mentioned in dependency but no package found in $IPKG_LISTS_DIR" >&2
- ipkg_set_installed $pkg
- else
- new_pkgs="$new_pkgs $pkg"
- ipkg_set_uninstalled $pkg
- fi
- else
- ipkg_set_uninstalled $pkg
- fi
- done
- done
-
- echo $all_deps
-}
-
-ipkg_get_install_dest() {
- local dest="$1"
- shift
- local sd=$dest/$IPKG_DIR_PREFIX
- local info_dir=$sd/info
-
- local requested_pkgs="$*"
- local pkgs=`ipkg_depends $*`
-
- mkdir -p $info_dir
- for pkg in $pkgs; do
- if ! ipkg_status_mentioned_sd $sd $pkg; then
- echo "Package: $pkg
-Status: install ok not-installed" | ipkg_status_update_sd $sd $pkg
- fi
- done
- ## mark the packages that we were directly requested to install as uninstalled
- for pkg in $requested_pkgs; do ipkg_set_uninstalled $pkg; done
-
- local new_pkgs=
- local pkgs_installed=0
- while [ -n "pkgs" ]; do
- curcheck=0
- ## echo "pkgs to install: {$pkgs}" > /dev/console
- for pkg in $pkgs; do
- curcheck=`expr $curcheck + 1`
- local is_installed=`ipkg_get_installed $pkg`
- if [ "$is_installed" = "installed" ]; then
- echo "$pkg is installed" > /dev/console
- continue
- fi
-
- local remaining_deps=`ipkg_unsatisfied_dependences $pkg`
- if [ -n "$remaining_deps" ]; then
- new_pkgs="$new_pkgs $pkg"
- ### echo "Dependences not satisfied for $pkg: $remaining_deps"
- if [ $curcheck -ne `echo $pkgs|wc -w` ]; then
- continue
- fi
- fi
-
- local filename=
- for src in `ipkg_src_names`; do
- if ipkg_require_list $src; then
- filename=`ipkg_extract_paragraph $pkg < $IPKG_LISTS_DIR/$src | ipkg_extract_field Filename | ipkg_extract_value`
- [ -n "$filename" ] && break
- fi
- done
-
- if [ -z "$filename" ]; then
- echo "ipkg_get_install: ERROR: Cannot find package $pkg in $IPKG_LISTS_DIR"
- echo "ipkg_get_install: Check the spelling and maybe run \`ipkg update'."
- ipkg_status_remove_sd $sd $pkg
- return 1;
- fi
-
- 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'?"
- return 1
- fi
-
- if ! ipkg_install_file_dest $dest $tmp_pkg_file; then
- echo "ipkg_get_install: ERROR: Failed to install $tmp_pkg_file"
- echo "ipkg_get_install: I'll leave it there for you to try a manual installation"
- return 1
- fi
-
- ipkg_set_installed $pkg
- pkgs_installed=`expr $pkgs_installed + 1`
- rm $tmp_pkg_file
- done
- ### echo "Installed $pkgs_installed package(s) this round"
- if [ $pkgs_installed -eq 0 ]; then
- if [ -z "$new_pkgs" ]; then
- break
- fi
- fi
- pkgs_installed=0
- pkgs="$new_pkgs"
- new_pkgs=
- curcheck=0
- done
-}
-
-ipkg_get_install() {
- ipkg_get_install_dest $IPKG_ROOT $*
-}
-
-ipkg_install_file_dest() {
- local dest="$1"
- local filename="$2"
- local sd=$dest/$IPKG_DIR_PREFIX
- local info_dir=$sd/info
-
- if [ ! -f "$filename" ]; then
- echo "ipkg_install_file: ERROR: File $filename not found"
- return 1
- fi
-
- local pkg=`ipkg_file_part $filename | sed 's/\([a-z0-9.+-]\+\)_.*/\1/'`
- local ext=`echo $filename | sed 's/.*\.//'`
- local pkg_extract_stdout
- #if [ "$ext" = "ipk" ]; then
- # pkg_extract_stdout="tar -xzOf"
- #elif [ "$ext" = "deb" ]; then
- pkg_extract_stdout="ar p"
- #else
- # echo "ipkg_install_file: ERROR: File $filename has unknown extension $ext (not .ipk or .deb)"
- # return 1
- #fi
-
- # Check dependencies
- local depends=`ipkg_depends $pkg | sed -e "s/\<$pkg\>//"`
-
- # Don't worry about deps that are scheduled for installation
- local missing_deps=
- for dep in $depends; do
- if ! ipkg_status_all $dep | grep -q 'Status:[[:space:]]install'; then
- missing_deps="$missing_deps $dep"
- fi
- done
-
- if [ ! -z "$missing_deps" ]; then
- if [ -n "$FORCE_DEPENDS" ]; then
- echo "ipkg_install_file: Warning: $pkg depends on the following uninstalled programs: $missing_deps"
- else
- echo "ipkg_install_file: ERROR: $pkg depends on the following uninstalled programs:
- $missing_deps"
- echo "ipkg_install_file: You may want to use \`ipkg install' to install these."
- return 1
- fi
- fi
-
- mkdir -p $IPKG_TMP/$pkg/control
- mkdir -p $IPKG_TMP/$pkg/data
- mkdir -p $info_dir
-
-# In certain some versions of Ubuntu, or at least Ubuntu 9.10, tar has some
-# signal handling problems. The symptom is a sigpipe signal to gzip when
-# using the -z option on tar. Here and in subsequent sections, we get around
-# this by using temp files instead of the tar -z option or piping straight
-# from gzip.
-
- rm -f $IPKG_TMP/control.tar.gz $IPKG_TMP/control.tar
- if ! { $pkg_extract_stdout $filename control.tar.gz > $IPKG_TMP/control.tar.gz &&
- gzip -d $IPKG_TMP/control.tar.gz &&
- tar -C $IPKG_TMP/$pkg/control -xf $IPKG_TMP/control.tar ; } ; then
- echo "ipkg_install_file: ERROR unpacking control.tar.gz from $filename"
- return 1
- fi
- rm -f $IPKG_TMP/control.tar.gz $IPKG_TMP/control.tar
-
- if [ -n "$IPKG_OFFLINE_ROOT" ]; then
- if grep -q '^InstallsOffline:[[:space:]]*no' $IPKG_TMP/$pkg/control/control; then
- echo "*** Warning: Package $pkg may not be installed in offline mode"
- echo "*** Warning: Scheduling $filename for pending installation (installing into $IPKG_PENDING_DIR)"
- echo "Package: $pkg
-Status: install ok pending" | ipkg_status_update_sd $sd $pkg
- mkdir -p $IPKG_PENDING_DIR
- cp $filename $IPKG_PENDING_DIR
- rm -r $IPKG_TMP/$pkg/control
- rm -r $IPKG_TMP/$pkg/data
- rmdir $IPKG_TMP/$pkg
- return 0
- fi
- fi
-
-
- echo -n "Unpacking $pkg..."
- set +o noglob
- for file in $IPKG_TMP/$pkg/control/*; do
- local base_file=`ipkg_file_part $file`
- mv $file $info_dir/$pkg.$base_file
- done
- set -o noglob
- rm -r $IPKG_TMP/$pkg/control
-
- rm -f $IPKG_TMP/data.tar.gz $IPKG_TMP/data.tar
- if ! { $pkg_extract_stdout $filename ./data.tar.gz > $IPKG_TMP/data.tar.gz &&
- gzip -d $IPKG_TMP/data.tar.gz &&
- tar -C $IPKG_TMP/$pkg/data -xf $IPKG_TMP/data.tar ; } ; then
- echo "ipkg_install_file: ERROR unpacking data.tar.gz from $filename"
- return 1
- fi
- rm -f $IPKG_TMP/data.tar.gz $IPKG_TMP/data.tar
- echo "Done."
-
- echo -n "Configuring $pkg..."
- export PKG_ROOT=$dest
- if [ -x "$info_dir/$pkg.preinst" ]; then
- if ! $info_dir/$pkg.preinst install; then
- echo "$info_dir/$pkg.preinst failed. Aborting installation of $pkg"
- rm -rf $IPKG_TMP/$pkg/data
- rmdir $IPKG_TMP/$pkg
- return 1
- fi
- fi
-
- local old_conffiles=`ipkg_status_sd $sd $pkg Conffiles | ipkg_extract_value`
- local new_conffiles=
- if [ -f "$info_dir/$pkg.conffiles" ]; then
- for conffile in `cat $info_dir/$pkg.conffiles`; do
- if [ -f "$dest/$conffile" ] && ! echo " $old_conffiles " | grep -q " $conffile "`md5sum $dest/$conffile | sed 's/ .*//'`; then
- local use_maintainers_conffile=
- if [ -z "$FORCE_DEFAULTS" ]; then
- while true; do
- echo -n "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:
- Y or I : install the package maintainer's version
- N or O : keep your currently-installed version
- D : show the differences between the versions (if diff is installed)
- The default action is to keep your current version.
-*** `ipkg_file_part $conffile` (Y/I/N/O/D) [default=N] ? "
- read response
- case "$response" in
- [YyIi] | [Yy][Ee][Ss])
- use_maintainers_conffile=t
- break
- ;;
- [Dd])
- echo "
-diff -u $dest/$conffile $IPKG_TMP/$pkg/data/$conffile"
- diff -u $dest/$conffile $IPKG_TMP/$pkg/data/$conffile || true
- echo "[Press ENTER to continue]"
- read junk
- ;;
- *)
- break
- ;;
- esac
- done
- fi
- if [ -n "$use_maintainers_conffile" ]; then
- local md5sum=`md5sum $IPKG_TMP/$pkg/data/$conffile | sed 's/ .*//'`
- new_conffiles="$new_conffiles $conffile $md5sum"
- else
- new_conffiles="$new_conffiles $conffile <custom>"
- rm $IPKG_TMP/$pkg/data/$conffile
- fi
- else
- md5sum=`md5sum $IPKG_TMP/$pkg/data/$conffile | sed 's/ .*//'`
- new_conffiles="$new_conffiles $conffile $md5sum"
- fi
- done
- fi
-
- local owd=`pwd`
- (cd $IPKG_TMP/$pkg/data/; tar cf - . | (cd $owd; cd $dest; tar xf -))
- rm -rf $IPKG_TMP/$pkg/data
- rmdir $IPKG_TMP/$pkg
- rm -f $IPKG_TMP/data.tar.gz $IPKG_TMP/data.tar
- $pkg_extract_stdout $filename ./data.tar.gz > $IPKG_TMP/data.tar.gz
- tar tzf $IPKG_TMP/data.tar.gz | sed -e 's/^\.//' > $info_dir/$pkg.list
- rm -f $IPKG_TMP/data.tar.gz $IPKG_TMP/data.tar
-
- if [ -x "$info_dir/$pkg.postinst" ]; then
- $info_dir/$pkg.postinst configure
- fi
-
- if [ -n "$new_conffiles" ]; then
- new_conffiles='Conffiles: '`echo $new_conffiles | ipkg_protect_slashes`
- fi
- local sed_safe_root=`echo $dest | sed -e "s#^${IPKG_OFFLINE_ROOT}##" | ipkg_protect_slashes`
- sed -e "s/\(Package:.*\)/\1\\
-Status: install ok installed\\
-Root: ${sed_safe_root}\\
-${new_conffiles}/" $info_dir/$pkg.control | ipkg_status_update_sd $sd $pkg
-
- rm -f $info_dir/$pkg.control
- rm -f $info_dir/$pkg.conffiles
- rm -f $info_dir/$pkg.preinst
- rm -f $info_dir/$pkg.postinst
-
- echo "Done."
-}
-
-ipkg_install_file() {
- ipkg_install_file_dest $IPKG_ROOT $*
-}
-
-ipkg_install() {
-
- while [ $# -gt 0 ]; do
- local pkg="$1"
- shift
-
- case "$pkg" in
- http://* | ftp://*)
- local tmp_pkg_file="$IPKG_TMP/"`ipkg_file_part $pkg`
- if ipkg_download $pkg $tmp_pkg_file; then
- ipkg_install_file $tmp_pkg_file
- rm $tmp_pkg_file
- fi
- ;;
- file:/*.ipk | file://*.deb)
- local ipkg_filename="`echo $pkg|sed 's/^file://'`"
- 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
- ;;
- esac
- done
-}
-
-ipkg_install_pending() {
- [ -n "$IPKG_OFFLINE_ROOT" ] && return 0
-
- if [ -d "$IPKG_PENDING_DIR" ]; then
- set +o noglob
- local pending=`ls -1d $IPKG_PENDING_DIR/*.ipk 2> /dev/null` || true
- set -o noglob
- if [ -n "$pending" ]; then
- echo "The following packages in $IPKG_PENDING_DIR will now be installed:"
- echo $pending
- for filename in $pending; do
- if ipkg_install_file $filename; then
- rm $filename
- fi
- done
- fi
- fi
- return 0
-}
-
-ipkg_install_wanted() {
- local wanted=`ipkg_status_matching 'Status:[[:space:]]*install.*not-installed'`
-
- if [ -n "$wanted" ]; then
- echo "The following package were previously requested but have not been installed:"
- echo $wanted
-
- if [ -n "$FORCE_DEFAULTS" ]; then
- echo "Installing them now."
- else
- echo -n "Install them now [Y/n] ? "
- read response
- case "$response" in
- [Nn] | [Nn][Oo])
- return 0
- ;;
- esac
- fi
-
- ipkg_install $wanted
- fi
-
- return 0
-}
-
-ipkg_upgrade_pkg() {
- local pkg="$1"
- local avail_ver=`ipkg_info $pkg Version | ipkg_extract_value | head -n1`
-
- is_installed=
- for dest_name in `ipkg_dest_names`; do
- local dest=`ipkg_dest_byname $dest_name`
- local sd=$dest/$IPKG_DIR_PREFIX
- local inst_ver=`ipkg_status_sd $sd $pkg Version | ipkg_extract_value`
- if [ -n "$inst_ver" ]; then
- is_installed=t
-
- if [ -z "$avail_ver" ]; then
- echo "Assuming locally installed package $pkg ($inst_ver) is up to date"
- return 0
- fi
-
- if [ "$avail_ver" = "$inst_ver" ]; then
- echo "Package $pkg ($inst_ver) installed in $dest_name is up to date"
- elif ipkg-compare-versions $avail_ver '>>' $inst_ver; then
- echo "Upgrading $pkg ($dest_name) from $inst_ver to $avail_ver"
- ipkg_get_install_dest $dest $pkg
- else
- echo "Not downgrading package $pkg from $inst_ver to $avail_ver"
- fi
- fi
- done
-
- if [ -z "$is_installed" ]; then
- echo "Package $pkg does not appear to be installed"
- return 0
- fi
-
-}
-
-ipkg_upgrade() {
- if [ $# -lt 1 ]; then
- local pkgs=`ipkg_status_matching 'Status:.*[[:space:]]installed'`
- else
- pkgs="$*"
- fi
-
- for pkg in $pkgs; do
- ipkg_upgrade_pkg $pkg
- done
-}
-
-ipkg_remove_pkg_dest() {
- local dest="$1"
- local pkg="$2"
- local sd=$dest/$IPKG_DIR_PREFIX
- local info_dir=$sd/info
-
- if ! ipkg_status_installed_sd $sd $pkg; then
- echo "ipkg_remove: Package $pkg does not appear to be installed in $dest"
- if ipkg_status_mentioned_sd $sd $pkg; then
- echo "Purging mention of $pkg from the ipkg database"
- ipkg_status_remove_sd $sd $pkg
- fi
- return 1
- fi
-
- echo "ipkg_remove: Removing $pkg... "
-
- local files=`cat $info_dir/$pkg.list`
-
- export PKG_ROOT=$dest
- if [ -x "$info_dir/$pkg.prerm" ]; then
- $info_dir/$pkg.prerm remove
- fi
-
- local conffiles=`ipkg_status_sd $sd $pkg Conffiles | ipkg_extract_value`
-
- local dirs_to_remove=
- for file in $files; do
- if [ -d "$dest/$file" ]; then
- dirs_to_remove="$dirs_to_remove $dest/$file"
- else
- if echo " $conffiles " | grep -q " $file "; then
- if echo " $conffiles " | grep -q " $file "`md5sum $dest/$file | sed 's/ .*//'`; then
- rm -f $dest/$file
- fi
- else
- rm -f $dest/$file
- fi
- fi
- done
-
- local removed_a_dir=t
- while [ -n "$removed_a_dir" ]; do
- removed_a_dir=
- local new_dirs_to_remove=
- for dir in $dirs_to_remove; do
- if rmdir $dir >/dev/null 2>&1; then
- removed_a_dir=t
- else
- new_dirs_to_remove="$new_dirs_to_remove $dir"
- fi
- done
- dirs_to_remove="$new_dirs_to_remove"
- done
-
- if [ -n "$dirs_to_remove" ]; then
- echo "ipkg_remove: Warning: Not removing the following directories since they are not empty:" >&2
- echo "$dirs_to_remove" | sed -e 's/\/[/]\+/\//g' >&2
- fi
-
- if [ -x "$info_dir/$pkg.postrm" ]; then
- $info_dir/$pkg.postrm remove
- fi
-
- ipkg_status_remove_sd $sd $pkg
- set +o noglob
- rm -f $info_dir/$pkg.*
- set -o noglob
-
- echo "Done."
-}
-
-ipkg_remove_pkg() {
- local pkg="$1"
- for dest in `ipkg_dests_all`; do
- local sd=$dest/$IPKG_DIR_PREFIX
- if ipkg_status_mentioned_sd $sd $pkg; then
- ipkg_remove_pkg_dest $dest $pkg
- fi
- done
-}
-
-ipkg_remove() {
- while [ $# -gt 0 ]; do
- local pkg="$1"
- shift
- if [ -n "$DEST_NAME" ]; then
- ipkg_remove_pkg_dest $IPKG_ROOT $pkg
- else
- ipkg_remove_pkg $pkg
- fi
- done
-}
-
-ipkg_list_installed() {
- echo `ipkg_status_matching 'Status:.*[[:space:]]installed'`
-}
-###########
-# ipkg main
-###########
-
-# Parse options
-while [ $# -gt 0 ]; do
- arg="$1"
- case $arg in
- -d | -dest)
- [ $# -gt 1 ] || ipkg_usage "option $arg requires an argument"
- DEST_NAME="$2"
- shift
- ;;
- -o | -offline)
- [ $# -gt 1 ] || ipkg_usage "option $arg requires an argument"
- IPKG_OFFLINE_ROOT="$2"
- shift
- ;;
- -force-depends)
- FORCE_DEPENDS=t
- ;;
- -force-defaults)
- FORCE_DEFAULTS=t
- ;;
- -f)
- [ $# -gt 1 ] || ipkg_usage "option $arg requires an argument"
- IPKG_CONF="$2"
- shift
- ;;
- -*)
- ipkg_usage "unknown option $arg"
- ;;
- *)
- break
- ;;
- esac
- shift
-done
-
-[ $# -lt 1 ] && ipkg_usage "ipkg must have one sub-command argument"
-cmd="$1"
-shift
-
-ipkg_load_configuration
-
-case "$cmd" in
-update|upgrade|list|info|status|install_pending|list_installed)
- ;;
-install|depends|remove|files|search)
- [ $# -lt 1 ] && ipkg_usage "ERROR: the \`\`$cmd'' command requires an argument"
- ;;
-*)
- echo "ERROR: unknown sub-command \`$cmd'"
- ipkg_usage
- ;;
-esac
-
-# Only install pending if we have an interactive sub-command
-case "$cmd" in
-upgrade|install)
- ipkg_install_pending
- ipkg_install_wanted
- ;;
-esac
-
-ipkg_$cmd $*
-rm -rf $IPKG_TMP
diff --git a/recipes/stage-manager/files/stage-manager-ipkg-build b/recipes/stage-manager/files/stage-manager-ipkg-build
deleted file mode 100755
index 77367ac..0000000
--- a/recipes/stage-manager/files/stage-manager-ipkg-build
+++ /dev/null
@@ -1,246 +0,0 @@
-#!/bin/sh
-
-# ipkg-build -- construct a .ipk from a directory
-# Carl Worth <cworth@east.isi.edu>
-# based on a script by Steve Redler IV, steve@sr-tech.com 5-21-2001
-# 2003-04-25 rea@sr.unh.edu
-# Updated to work on Familiar Pre0.7rc1, with busybox tar.
-# Note it Requires: binutils-ar (since the busybox ar can't create)
-# For UID debugging it needs a better "find".
-set -e
-
-version=1.0
-
-ipkg_extract_value() {
- sed -e "s/^[^:]*:[[:space:]]*//"
-}
-
-required_field() {
- field=$1
-
- value=`grep "^$field:" < $CONTROL/control | ipkg_extract_value`
- if [ -z "$value" ]; then
- echo "*** Error: $CONTROL/control is missing field $field" >&2
- return 1
- fi
- echo $value
- return 0
-}
-
-disallowed_field() {
- field=$1
-
- value=`grep "^$field:" < $CONTROL/control | ipkg_extract_value`
- if [ -n "$value" ]; then
- echo "*** Error: $CONTROL/control contains disallowed field $field" >&2
- return 1
- fi
- echo $value
- return 0
-}
-
-pkg_appears_sane() {
- local pkg_dir=$1
-
- local owd=`pwd`
- cd $pkg_dir
-
- PKG_ERROR=0
-
- tilde_files=`find . -name '*~'`
- if [ -n "$tilde_files" ]; then
- if [ "$noclean" = "1" ]; then
- echo "*** Warning: The following files have names ending in '~'.
-You probably want to remove them: " >&2
- ls -ld $tilde_files
- echo >&2
- else
- echo "*** Removing the following files: $tilde_files"
- rm -f "$tilde_files"
- fi
- fi
-
- large_uid_files=`find . -uid +99 || true`
-
- if [ "$ogargs" = "" ] && [ -n "$large_uid_files" ]; then
- echo "*** Warning: The following files have a UID greater than 99.
-You probably want to chown these to a system user: " >&2
- ls -ld $large_uid_files
- echo >&2
- fi
-
-
- if [ ! -f "$CONTROL/control" ]; then
- echo "*** Error: Control file $pkg_dir/$CONTROL/control not found." >&2
- cd $owd
- return 1
- fi
-
- pkg=`required_field Package`
- [ "$?" -ne 0 ] && PKG_ERROR=1
-
- version=`required_field Version | sed 's/Version://; s/^.://g;'`
- [ "$?" -ne 0 ] && PKG_ERROR=1
-
- arch=`required_field Architecture`
- [ "$?" -ne 0 ] && PKG_ERROR=1
-
- required_field Maintainer >/dev/null
- [ "$?" -ne 0 ] && PKG_ERROR=1
-
- required_field Description >/dev/null
- [ "$?" -ne 0 ] && PKG_ERROR=1
-
- section=`required_field Section`
- [ "$?" -ne 0 ] && PKG_ERROR=1
- if [ -z "$section" ]; then
- echo "The Section field should have one of the following values:" >&2
- echo "admin, base, comm, editors, extras, games, graphics, kernel, libs, misc, net, text, web, x11" >&2
- fi
-
- priority=`required_field Priority`
- [ "$?" -ne 0 ] && PKG_ERROR=1
- if [ -z "$priority" ]; then
- echo "The Priority field should have one of the following values:" >&2
- echo "required, important, standard, optional, extra." >&2
- echo "If you don't know which priority value you should be using, then use \`optional'" >&2
- fi
-
- source=`required_field Source`
- [ "$?" -ne 0 ] && PKG_ERROR=1
- if [ -z "$source" ]; then
- echo "The Source field contain the URL's or filenames of the source code and any patches"
- echo "used to build this package. Either gnu-style tarballs or Debian source packages "
- echo "are acceptable. Relative filenames may be used if they are distributed in the same"
- echo "directory as the .ipk file."
- fi
-
- disallowed_filename=`disallowed_field Filename`
- [ "$?" -ne 0 ] && PKG_ERROR=1
-
- if echo $pkg | grep '[^a-z0-9.+-]'; then
- echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2
- PKG_ERROR=1;
- fi
-
- local bad_fields=`sed -ne 's/^\([^[:space:]][^:[:space:]]\+[[:space:]]\+\)[^:].*/\1/p' < $CONTROL/control | sed -e 's/\\n//'`
- if [ -n "$bad_fields" ]; then
- bad_fields=`echo $bad_fields`
- echo "*** Error: The following fields in $CONTROL/control are missing a ':'" >&2
- echo " $bad_fields" >&2
- echo "ipkg-build: This may be due to a missing initial space for a multi-line field value" >&2
- PKG_ERROR=1
- fi
-
- for script in $CONTROL/preinst $CONTROL/postinst $CONTROL/prerm $CONTROL/postrm; do
- if [ -f $script -a ! -x $script ]; then
- echo "*** Error: package script $script is not executable" >&2
- PKG_ERROR=1
- fi
- done
-
- if [ -f $CONTROL/conffiles ]; then
- for cf in `cat $CONTROL/conffiles`; do
- if [ ! -f ./$cf ]; then
- echo "*** Error: $CONTROL/conffiles mentions conffile $cf which does not exist" >&2
- PKG_ERROR=1
- fi
- done
- fi
-
- cd $owd
- return $PKG_ERROR
-}
-
-###
-# ipkg-build "main"
-###
-ogargs=""
-outer=ar
-noclean=0
-usage="Usage: $0 [-c] [-C] [-o owner] [-g group] <pkg_directory> [<destination_directory>]"
-while getopts "cg:ho:v" opt; do
- case $opt in
- o ) owner=$OPTARG
- ogargs="--owner=$owner"
- ;;
- g ) group=$OPTARG
- ogargs="$ogargs --group=$group"
- ;;
- c ) outer=tar
- ;;
- C ) noclean=1
- ;;
- v ) echo $version
- exit 0
- ;;
- h ) echo $usage >&2 ;;
- \? ) echo $usage >&2
- esac
-done
-
-
-shift $(($OPTIND - 1))
-
-# continue on to process additional arguments
-
-case $# in
-1)
- dest_dir=$PWD
- ;;
-2)
- dest_dir=$2
- if [ "$dest_dir" = "." -o "$dest_dir" = "./" ] ; then
- dest_dir=$PWD
- fi
- ;;
-*)
- echo $usage >&2
- exit 1
- ;;
-esac
-
-pkg_dir=$1
-
-if [ ! -d $pkg_dir ]; then
- echo "*** Error: Directory $pkg_dir does not exist" >&2
- exit 1
-fi
-
-# CONTROL is second so that it takes precedence
-CONTROL=
-[ -d $pkg_dir/DEBIAN ] && CONTROL=DEBIAN
-[ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL
-if [ -z "$CONTROL" ]; then
- echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2
- exit 1
-fi
-
-if ! pkg_appears_sane $pkg_dir; then
- echo >&2
- echo "ipkg-build: Please fix the above errors and try again." >&2
- exit 1
-fi
-
-tmp_dir=$dest_dir/IPKG_BUILD.$$
-mkdir $tmp_dir
-
-echo $CONTROL > $tmp_dir/tarX
-( cd $pkg_dir && tar $ogargs -X $tmp_dir/tarX -czf $tmp_dir/data.tar.gz . )
-( cd $pkg_dir/$CONTROL && tar $ogargs -czf $tmp_dir/control.tar.gz . )
-rm $tmp_dir/tarX
-
-echo "2.0" > $tmp_dir/debian-binary
-
-pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk
-rm -f $pkg_file
-if [ "$outer" = "ar" ] ; then
- ( cd $tmp_dir && ar -crf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz )
-else
- ( cd $tmp_dir && tar -zcf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz )
-fi
-
-rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz
-rmdir $tmp_dir
-
-echo "Packaged contents of $pkg_dir into $pkg_file"
diff --git a/recipes/stage-manager/files/stage-manager-opkg b/recipes/stage-manager/files/stage-manager-opkg
new file mode 100755
index 0000000..5a2347a
--- /dev/null
+++ b/recipes/stage-manager/files/stage-manager-opkg
@@ -0,0 +1,1209 @@
+#!/bin/sh
+# ipkg - the itsy package management system
+#
+# Copyright (C) 2001 Carl D. Worth
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+set -e
+
+# Uncomment for debugging
+#set -x
+
+# By default do not do globbing. Any command wanting globbing should
+# explicitly enable it first and disable it afterwards.
+set -o noglob
+
+ipkg_srcs() {
+ local srcre="$1"
+ sed -ne "s/^src[[:space:]]\+$srcre[[:space:]]\+//p" < $IPKG_CONF
+}
+
+ipkg_src_names() {
+ sed -ne "s/^src[[:space:]]\+\([^[:space:]]\+\).*/\1/p" < $IPKG_CONF
+}
+
+ipkg_src_byname() {
+ local src="$1"
+ ipkg_srcs $src | head -n1
+}
+
+ipkg_dests() {
+ local destre=`echo $1 | ipkg_protect_slashes`
+ sed -ne "/^dest[[:space:]]\+$destre/{
+s/^dest[[:space:]]\+[^[:space:]]\+[[:space:]]\+//
+s/^/`echo $IPKG_OFFLINE_ROOT | ipkg_protect_slashes`/
+p
+}" < $IPKG_CONF
+}
+
+ipkg_dest_names() {
+ sed -ne "s/^dest[[:space:]]\+\([^[:space:]]\+\).*/\1/p" < $IPKG_CONF
+}
+
+ipkg_dests_all() {
+ ipkg_dests '.*'
+}
+
+ipkg_state_dirs() {
+ ipkg_dests_all | sed "s|\$|/$IPKG_DIR_PREFIX|"
+}
+
+ipkg_dest_default() {
+ ipkg_dests_all | head -n1
+}
+
+ipkg_dest_default_name() {
+ ipkg_dest_names | head -n1
+}
+
+ipkg_dest_byname() {
+ local dest="$1"
+ ipkg_dests $dest | head -n1
+}
+
+ipkg_option() {
+ local option="$1"
+ sed -ne "s/^option[[:space:]]\+$option[[:space:]]\+//p" < $IPKG_CONF
+}
+
+ipkg_load_configuration() {
+ if [ -z "$IPKG_CONF_DIR" ]; then
+ IPKG_CONF_DIR=/etc
+ fi
+
+ if [ -z "$IPKG_CONF" ]; then
+ IPKG_CONF=$IPKG_CONF_DIR/ipkg.conf
+ fi
+
+ if [ -z "$IPKG_OFFLINE_ROOT" ]; then
+ IPKG_OFFLINE_ROOT=`ipkg_option offline_root`
+ fi
+ # Export IPKG_OFFLINE_ROOT for use by update-alternatives
+ export IPKG_OFFLINE_ROOT
+ if [ -n "$DEST_NAME" ]; then
+ IPKG_ROOT=`ipkg_dest_byname $DEST_NAME`
+ if [ -z "$IPKG_ROOT" ]; then
+ if [ -d "$IPKG_OFFLINE_ROOT$DEST_NAME" ]; then
+ IPKG_ROOT="$IPKG_OFFLINE_ROOT$DEST_NAME";
+ else
+ echo "ipkg: invalid destination specification: $DEST_NAME
+Valid destinations are directories or one of the dest names from $IPKG_CONF:" >&2
+ ipkg_dest_names >&2
+ return 1
+ fi
+ fi
+ else
+ IPKG_ROOT=`ipkg_dest_default`
+ fi
+
+ # Global ipkg state directories
+ IPKG_DIR_PREFIX=usr/lib/ipkg
+ IPKG_LISTS_DIR=$IPKG_OFFLINE_ROOT/$IPKG_DIR_PREFIX/lists
+ IPKG_PENDING_DIR=$IPKG_OFFLINE_ROOT/$IPKG_DIR_PREFIX/pending
+
+ # test for bsd mktemp and pass -t <prefix> when needed
+ if (mktemp -V) ; then
+ IPKG_TMP=`mktemp -d`
+ else
+ IPKG_TMP=`mktemp -d -t ipkg`
+ fi
+
+ if [ ! -d "$IPKG_TMP" ]; then
+ echo "Error, could not create a temp directory"
+ return 1
+ fi
+
+ # Destination specific ipkg meta-data directory
+ IPKG_STATE_DIR=$IPKG_ROOT/$IPKG_DIR_PREFIX
+
+ # Proxy Support
+ IPKG_PROXY_USERNAME=`ipkg_option proxy_username`
+ IPKG_PROXY_PASSWORD=`ipkg_option proxy_password`
+ IPKG_HTTP_PROXY=`ipkg_option http_proxy`
+ IPKG_FTP_PROXY=`ipkg_option ftp_proxy`
+ IPKG_NO_PROXY=`ipkg_option no_proxy`
+ if [ -n "$IPKG_HTTP_PROXY" ]; then
+ export http_proxy="$IPKG_HTTP_PROXY"
+ fi
+
+ if [ -n "$IPKG_FTP_PROXY" ]; then
+ export ftp_proxy="$IPKG_FTP_PROXY"
+ fi
+
+ if [ -n "$IPKG_NO_PROXY" ]; then
+ export no_proxy="$IPKG_NO_PROXY"
+ fi
+
+ IPKG_STATUS_FIELDS='\(Package\|Status\|Essential\|Version\|Conffiles\|Root\)'
+}
+
+ipkg_usage() {
+ [ $# -gt 0 ] && echo "ipkg: $*"
+ echo "
+usage: ipkg [options...] sub-command [arguments...]
+where sub-command is one of:
+
+Package Manipulation:
+ update Update list of available packages
+ upgrade Upgrade all installed packages to latest version
+ install <pkg> Download and install <pkg> (and dependencies)
+ install <file.ipk> Install package <file.ipk>
+ install <file.deb> Install package <file.deb>
+ remove <pkg> Remove package <pkg>
+
+Informational Commands:
+ list List available packages and descriptions
+ files <pkg> List all files belonging to <pkg>
+ search <file> Search for a packaging providing <file>
+ info [pkg [<field>]] Display all/some info fields for <pkg> or all
+ status [pkg [<field>]] Display all/some status fields for <pkg> or all
+ depends <pkg> Print uninstalled package dependencies for <pkg>
+
+Options:
+ -d <dest_name> Use <dest_name> as the the root directory for
+ -dest <dest_name> package installation, removal, upgrading.
+ <dest_name> should be a defined dest name from the
+ configuration file, (but can also be a directory
+ name in a pinch).
+ -o <offline_root> Use <offline_root> as the root for offline installation.
+ -offline <offline_root>
+
+Force Options (use when ipkg is too smart for its own good):
+ -force-depends Make dependency checks warnings instead of errors
+ -force-defaults Use default options for questions asked by ipkg.
+ (no prompts). Note that this will not prevent
+ package installation scripts from prompting.
+" >&2
+ exit 1
+}
+
+ipkg_dir_part() {
+ local dir=`echo $1 | sed -ne 's/\(.*\/\).*/\1/p'`
+ if [ -z "$dir" ]; then
+ dir="./"
+ fi
+ echo $dir
+}
+
+ipkg_file_part() {
+ echo $1 | sed 's/.*\///'
+}
+
+ipkg_protect_slashes() {
+ sed -e 's/\//\\\//g'
+}
+
+ipkg_download() {
+ local src="$1"
+ local dest="$2"
+
+ local src_file=`ipkg_file_part $src`
+ local dest_dir=`ipkg_dir_part $dest`
+ if [ -z "$dest_dir" ]; then
+ dest_dir="$IPKG_TMP"
+ fi
+
+ local dest_file=`ipkg_file_part $dest`
+ if [ -z "$dest_file" ]; then
+ dest_file="$src_file"
+ fi
+
+ # Proxy support
+ local proxyuser=""
+ local proxypassword=""
+ local proxyoption=""
+
+ if [ -n "$IPKG_PROXY_USERNAME" ]; then
+ proxyuser="--proxy-user=\"$IPKG_PROXY_USERNAME\""
+ proxypassword="--proxy-passwd=\"$IPKG_PROXY_PASSWORD\""
+ fi
+
+ if [ -n "$IPKG_PROXY_HTTP" -o -n "$IPKG_PROXY_FTP" ]; then
+ proxyoption="--proxy=on"
+ fi
+
+ echo "Downloading $src ..."
+ rm -f $IPKG_TMP/$src_file
+ case "$src" in
+ http://* | ftp://*)
+ if ! wget --passive-ftp -nd $proxyoption $proxyuser $proxypassword -P $IPKG_TMP $src; then
+ echo "ipkg_download: ERROR: Failed to retrieve $src, returning $err"
+ return 1
+ fi
+ mv $IPKG_TMP/$src_file $dest_dir/$dest_file 2>/dev/null
+ ;;
+ file:/* )
+ ln -s `echo $src | sed 's/^file://'` $dest_dir/$dest_file 2>/dev/null
+ ;;
+ *)
+ echo "DEBUG: $src"
+ ;;
+ esac
+
+ echo "Done."
+ return 0
+}
+
+ipkg_update() {
+ if [ ! -e "$IPKG_LISTS_DIR" ]; then
+ mkdir -p $IPKG_LISTS_DIR
+ fi
+
+ local err=
+ for src_name in `ipkg_src_names`; do
+ local src=`ipkg_src_byname $src_name`
+ if ! ipkg_download $src/Packages $IPKG_LISTS_DIR/$src_name; then
+ echo "ipkg_update: Error downloading $src/Packages to $IPKG_LISTS_DIR/$src_name" >&2
+ err=t
+ else
+ echo "Updated list of available packages in $IPKG_LISTS_DIR/$src_name"
+ fi
+ done
+
+ [ -n "$err" ] && return 1
+
+ return 0
+}
+
+ipkg_list() {
+ for src in `ipkg_src_names`; do
+ if ipkg_require_list $src; then
+# black magic...
+sed -ne "
+/^Package:/{
+s/^Package:[[:space:]]*\<\([a-z0-9.+-]*$1[a-z0-9.+-]*\).*/\1/
+h
+}
+/^Description:/{
+s/^Description:[[:space:]]*\(.*\)/\1/
+H
+g
+s/\\
+/ - /
+p
+}
+" $IPKG_LISTS_DIR/$src
+ fi
+ done
+}
+
+ipkg_extract_paragraph() {
+ local pkg="$1"
+ sed -ne "/Package:[[:space:]]*$pkg[[:space:]]*\$/,/^\$/p"
+}
+
+ipkg_extract_field() {
+ local field="$1"
+# blacker magic...
+ sed -ne "
+: TOP
+/^$field:/{
+p
+n
+b FIELD
+}
+d
+: FIELD
+/^$/b TOP
+/^[^[:space:]]/b TOP
+p
+n
+b FIELD
+"
+}
+
+ipkg_extract_value() {
+ sed -e "s/^[^:]*:[[:space:]]*//"
+}
+
+ipkg_require_list() {
+ [ $# -lt 1 ] && return 1
+ local src="$1"
+ if [ ! -f "$IPKG_LISTS_DIR/$src" ]; then
+ echo "ERROR: File not found: $IPKG_LISTS_DIR/$src" >&2
+ echo " You probably want to run \`ipkg update'" >&2
+ return 1
+ fi
+ return 0
+}
+
+ipkg_info() {
+ for src in `ipkg_src_names`; do
+ if ipkg_require_list $src; then
+ case $# in
+ 0)
+ cat $IPKG_LISTS_DIR/$src
+ ;;
+ 1)
+ ipkg_extract_paragraph $1 < $IPKG_LISTS_DIR/$src
+ ;;
+ *)
+ ipkg_extract_paragraph $1 < $IPKG_LISTS_DIR/$src | ipkg_extract_field $2
+ ;;
+ esac
+ fi
+ done
+}
+
+ipkg_status_sd() {
+ [ $# -lt 1 ] && return 0
+ sd="$1"
+ shift
+ if [ -f $sd/status ]; then
+ case $# in
+ 0)
+ cat $sd/status
+ ;;
+ 1)
+ ipkg_extract_paragraph $1 < $sd/status
+ ;;
+ *)
+ ipkg_extract_paragraph $1 < $sd/status | ipkg_extract_field $2
+ ;;
+ esac
+ fi
+ return 0
+}
+
+ipkg_status_all() {
+ for sd in `ipkg_state_dirs`; do
+ ipkg_status_sd $sd $*
+ done
+}
+
+ipkg_status() {
+ if [ -n "$DEST_NAME" ]; then
+ ipkg_status_sd $IPKG_STATE_DIR $*
+ else
+ ipkg_status_all $*
+ fi
+}
+
+ipkg_status_matching_sd() {
+ local sd="$1"
+ local re="$2"
+ if [ -f $sd/status ]; then
+ sed -ne "
+: TOP
+/^Package:/{
+s/^Package:[[:space:]]*//
+s/[[:space:]]*$//
+h
+}
+/$re/{
+g
+p
+b NEXT
+}
+d
+: NEXT
+/^$/b TOP
+n
+b NEXT
+" < $sd/status
+ fi
+ return 0
+}
+
+ipkg_status_matching_all() {
+ for sd in `ipkg_state_dirs`; do
+ ipkg_status_matching_sd $sd $*
+ done
+}
+
+ipkg_status_matching() {
+ if [ -n "$DEST_NAME" ]; then
+ ipkg_status_matching_sd $IPKG_STATE_DIR $*
+ else
+ ipkg_status_matching_all $*
+ fi
+}
+
+ipkg_status_installed_sd() {
+ local sd="$1"
+ local pkg="$2"
+ ipkg_status_sd $sd $pkg Status | grep -q "Status: install user installed"
+}
+
+ipkg_status_installed_all() {
+ local ret=1
+ for sd in `ipkg_state_dirs`; do
+ if `ipkg_status_installed_sd $sd $*`; then
+ ret=0
+ fi
+ done
+ return $ret
+}
+
+ipkg_status_mentioned_sd() {
+ local sd="$1"
+ local pkg="$2"
+ [ -n "`ipkg_status_sd $sd $pkg Status`" ]
+}
+
+ipkg_files() {
+ local pkg="$1"
+ if [ -n "$DEST_NAME" ]; then
+ dests=$IPKG_ROOT
+ else
+ dests=`ipkg_dests_all`
+ fi
+ for dest in $dests; do
+ if [ -f $dest/$IPKG_DIR_PREFIX/info/$pkg.list ]; then
+ dest_sed=`echo $dest | ipkg_protect_slashes`
+ sed -e "s/^/$dest_sed/" < $dest/$IPKG_DIR_PREFIX/info/$pkg.list
+ fi
+ done
+}
+
+ipkg_search() {
+ local pattern="$1"
+
+ for dest_name in `ipkg_dest_names`; do
+ dest=`ipkg_dest_byname $dest_name`
+ dest_sed=`echo $dest | ipkg_protect_slashes`
+
+ set +o noglob
+ local list_files=`ls -1 $dest/$IPKG_DIR_PREFIX/info/*.list 2>/dev/null`
+ set -o noglob
+ for file in $list_files; do
+ if sed "s/^/$dest_sed/" $file | grep -q $pattern; then
+ local pkg=`echo $file | sed "s/^.*\/\(.*\)\.list/\1/"`
+ [ "$dest_name" != `ipkg_dest_default_name` ] && pkg="$pkg ($dest_name)"
+ sed "s/^/$dest_sed/" $file | grep $pattern | sed "s/^/$pkg: /"
+ fi
+ done
+ done
+}
+
+ipkg_status_remove_sd() {
+ local sd="$1"
+ local pkg="$2"
+
+ if [ ! -f $sd/status ]; then
+ mkdir -p $sd
+ touch $sd/status
+ fi
+ sed -ne "/Package:[[:space:]]*$pkg[[:space:]]*\$/,/^\$/!p" < $sd/status > $sd/status.new
+ mv $sd/status.new $sd/status
+}
+
+ipkg_status_remove_all() {
+ for sd in `ipkg_state_dirs`; do
+ ipkg_status_remove_sd $sd $*
+ done
+}
+
+ipkg_status_remove() {
+ if [ -n "$DEST_NAME" ]; then
+ ipkg_status_remove_sd $IPKG_STATE_DIR $*
+ else
+ ipkg_status_remove_all $*
+ fi
+}
+
+ipkg_status_update_sd() {
+ local sd="$1"
+ local pkg="$2"
+
+ ipkg_status_remove_sd $sd $pkg
+ ipkg_extract_field "$IPKG_STATUS_FIELDS" >> $sd/status
+ echo "" >> $sd/status
+}
+
+ipkg_status_update() {
+ ipkg_status_update_sd $IPKG_STATE_DIR $*
+}
+
+ipkg_unsatisfied_dependences() {
+ local pkg=$1
+ local deps=`ipkg_get_depends $pkg`
+ local remaining_deps=
+ for dep in $deps; do
+ local installed=`ipkg_get_installed $dep`
+ if [ "$installed" != "installed" ] ; then
+ remaining_deps="$remaining_deps $dep"
+ fi
+ done
+ ## echo "ipkg_unsatisfied_dependences pkg=$pkg $remaining_deps" > /dev/console
+ echo $remaining_deps
+}
+
+ipkg_safe_pkg_name() {
+ local pkg=$1
+ local spkg=`echo pkg_$pkg | sed -e y/-+./___/`
+ echo $spkg
+}
+
+ipkg_set_depends() {
+ local pkg=$1; shift
+ local new_deps="$*"
+ pkg=`ipkg_safe_pkg_name $pkg`
+ ## setvar ${pkg}_depends "$new_deps"
+ echo $new_deps > $IPKG_TMP/${pkg}.depends
+}
+
+ipkg_get_depends() {
+ local pkg=$1
+ pkg=`ipkg_safe_pkg_name $pkg`
+ cat $IPKG_TMP/${pkg}.depends
+ ## eval "echo \$${pkg}_depends"
+}
+
+ipkg_set_installed() {
+ local pkg=$1
+ pkg=`ipkg_safe_pkg_name $pkg`
+ echo installed > $IPKG_TMP/${pkg}.installed
+ ## setvar ${pkg}_installed "installed"
+}
+
+ipkg_set_uninstalled() {
+ local pkg=$1
+ pkg=`ipkg_safe_pkg_name $pkg`
+ ### echo ipkg_set_uninstalled $pkg > /dev/console
+ echo uninstalled > $IPKG_TMP/${pkg}.installed
+ ## setvar ${pkg}_installed "uninstalled"
+}
+
+ipkg_get_installed() {
+ local pkg=$1
+ pkg=`ipkg_safe_pkg_name $pkg`
+ if [ -f $IPKG_TMP/${pkg}.installed ]; then
+ cat $IPKG_TMP/${pkg}.installed
+ fi
+ ## eval "echo \$${pkg}_installed"
+}
+
+ipkg_depends() {
+ local new_pkgs="$*"
+ local all_deps=
+ local installed_pkgs=`ipkg_status_matching_all 'Status:.*[[:space:]]installed'`
+ for pkg in $installed_pkgs; do
+ ipkg_set_installed $pkg
+ done
+ while [ -n "$new_pkgs" ]; do
+ 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
+ return 1
+ fi
+ # TODO: Fix this. For now I am ignoring versions and alternations in dependencies.
+ new_deps="$new_deps "`ipkg_info $pkg '\(Pre-\)\?Depends' | ipkg_extract_value | sed -e 's/([^)]*)//g
+s/\(|[[:space:]]*[a-z0-9.+-]\+[[:space:]]*\)\+//g
+s/,/ /g
+s/ \+/ /g'`
+ ipkg_set_depends $pkg $new_deps
+ done
+
+ new_deps=`echo $new_deps | sed -e 's/[[:space:]]\+/\\
+/g' | sort | uniq`
+
+ local maybe_new_pkgs=
+ for pkg in $new_deps; do
+ if ! echo $installed_pkgs | grep -q "\<$pkg\>"; then
+ maybe_new_pkgs="$maybe_new_pkgs $pkg"
+ fi
+ done
+
+ new_pkgs=
+ for pkg in $maybe_new_pkgs; do
+ if ! echo $all_deps | grep -q "\<$pkg\>"; then
+ if [ -z "`ipkg_info $pkg`" ]; then
+ echo "ipkg_depends: Warning: $pkg mentioned in dependency but no package found in $IPKG_LISTS_DIR" >&2
+ ipkg_set_installed $pkg
+ else
+ new_pkgs="$new_pkgs $pkg"
+ ipkg_set_uninstalled $pkg
+ fi
+ else
+ ipkg_set_uninstalled $pkg
+ fi
+ done
+ done
+
+ echo $all_deps
+}
+
+ipkg_get_install_dest() {
+ local dest="$1"
+ shift
+ local sd=$dest/$IPKG_DIR_PREFIX
+ local info_dir=$sd/info
+
+ local requested_pkgs="$*"
+ local pkgs=`ipkg_depends $*`
+
+ mkdir -p $info_dir
+ for pkg in $pkgs; do
+ if ! ipkg_status_mentioned_sd $sd $pkg; then
+ echo "Package: $pkg
+Status: install ok not-installed" | ipkg_status_update_sd $sd $pkg
+ fi
+ done
+ ## mark the packages that we were directly requested to install as uninstalled
+ for pkg in $requested_pkgs; do ipkg_set_uninstalled $pkg; done
+
+ local new_pkgs=
+ local pkgs_installed=0
+ while [ -n "pkgs" ]; do
+ curcheck=0
+ ## echo "pkgs to install: {$pkgs}" > /dev/console
+ for pkg in $pkgs; do
+ curcheck=`expr $curcheck + 1`
+ local is_installed=`ipkg_get_installed $pkg`
+ if [ "$is_installed" = "installed" ]; then
+ echo "$pkg is installed" > /dev/console
+ continue
+ fi
+
+ local remaining_deps=`ipkg_unsatisfied_dependences $pkg`
+ if [ -n "$remaining_deps" ]; then
+ new_pkgs="$new_pkgs $pkg"
+ ### echo "Dependences not satisfied for $pkg: $remaining_deps"
+ if [ $curcheck -ne `echo $pkgs|wc -w` ]; then
+ continue
+ fi
+ fi
+
+ local filename=
+ for src in `ipkg_src_names`; do
+ if ipkg_require_list $src; then
+ filename=`ipkg_extract_paragraph $pkg < $IPKG_LISTS_DIR/$src | ipkg_extract_field Filename | ipkg_extract_value`
+ [ -n "$filename" ] && break
+ fi
+ done
+
+ if [ -z "$filename" ]; then
+ echo "ipkg_get_install: ERROR: Cannot find package $pkg in $IPKG_LISTS_DIR"
+ echo "ipkg_get_install: Check the spelling and maybe run \`ipkg update'."
+ ipkg_status_remove_sd $sd $pkg
+ return 1;
+ fi
+
+ 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'?"
+ return 1
+ fi
+
+ if ! ipkg_install_file_dest $dest $tmp_pkg_file; then
+ echo "ipkg_get_install: ERROR: Failed to install $tmp_pkg_file"
+ echo "ipkg_get_install: I'll leave it there for you to try a manual installation"
+ return 1
+ fi
+
+ ipkg_set_installed $pkg
+ pkgs_installed=`expr $pkgs_installed + 1`
+ rm $tmp_pkg_file
+ done
+ ### echo "Installed $pkgs_installed package(s) this round"
+ if [ $pkgs_installed -eq 0 ]; then
+ if [ -z "$new_pkgs" ]; then
+ break
+ fi
+ fi
+ pkgs_installed=0
+ pkgs="$new_pkgs"
+ new_pkgs=
+ curcheck=0
+ done
+}
+
+ipkg_get_install() {
+ ipkg_get_install_dest $IPKG_ROOT $*
+}
+
+ipkg_install_file_dest() {
+ local dest="$1"
+ local filename="$2"
+ local sd=$dest/$IPKG_DIR_PREFIX
+ local info_dir=$sd/info
+
+ if [ ! -f "$filename" ]; then
+ echo "ipkg_install_file: ERROR: File $filename not found"
+ return 1
+ fi
+
+ local pkg=`ipkg_file_part $filename | sed 's/\([a-z0-9.+-]\+\)_.*/\1/'`
+ local ext=`echo $filename | sed 's/.*\.//'`
+ local pkg_extract_stdout
+ #if [ "$ext" = "ipk" ]; then
+ # pkg_extract_stdout="tar -xzOf"
+ #elif [ "$ext" = "deb" ]; then
+ pkg_extract_stdout="ar p"
+ #else
+ # echo "ipkg_install_file: ERROR: File $filename has unknown extension $ext (not .ipk or .deb)"
+ # return 1
+ #fi
+
+ # Check dependencies
+ local depends=`ipkg_depends $pkg | sed -e "s/\<$pkg\>//"`
+
+ # Don't worry about deps that are scheduled for installation
+ local missing_deps=
+ for dep in $depends; do
+ if ! ipkg_status_all $dep | grep -q 'Status:[[:space:]]install'; then
+ missing_deps="$missing_deps $dep"
+ fi
+ done
+
+ if [ ! -z "$missing_deps" ]; then
+ if [ -n "$FORCE_DEPENDS" ]; then
+ echo "ipkg_install_file: Warning: $pkg depends on the following uninstalled programs: $missing_deps"
+ else
+ echo "ipkg_install_file: ERROR: $pkg depends on the following uninstalled programs:
+ $missing_deps"
+ echo "ipkg_install_file: You may want to use \`ipkg install' to install these."
+ return 1
+ fi
+ fi
+
+ mkdir -p $IPKG_TMP/$pkg/control
+ mkdir -p $IPKG_TMP/$pkg/data
+ mkdir -p $info_dir
+
+# In certain some versions of Ubuntu, or at least Ubuntu 9.10, tar has some
+# signal handling problems. The symptom is a sigpipe signal to gzip when
+# using the -z option on tar. Here and in subsequent sections, we get around
+# this by using temp files instead of the tar -z option or piping straight
+# from gzip.
+
+ rm -f $IPKG_TMP/control.tar.gz $IPKG_TMP/control.tar
+ if ! { $pkg_extract_stdout $filename control.tar.gz > $IPKG_TMP/control.tar.gz &&
+ gzip -d $IPKG_TMP/control.tar.gz &&
+ tar -C $IPKG_TMP/$pkg/control -xf $IPKG_TMP/control.tar ; } ; then
+ echo "ipkg_install_file: ERROR unpacking control.tar.gz from $filename"
+ return 1
+ fi
+ rm -f $IPKG_TMP/control.tar.gz $IPKG_TMP/control.tar
+
+ if [ -n "$IPKG_OFFLINE_ROOT" ]; then
+ if grep -q '^InstallsOffline:[[:space:]]*no' $IPKG_TMP/$pkg/control/control; then
+ echo "*** Warning: Package $pkg may not be installed in offline mode"
+ echo "*** Warning: Scheduling $filename for pending installation (installing into $IPKG_PENDING_DIR)"
+ echo "Package: $pkg
+Status: install ok pending" | ipkg_status_update_sd $sd $pkg
+ mkdir -p $IPKG_PENDING_DIR
+ cp $filename $IPKG_PENDING_DIR
+ rm -r $IPKG_TMP/$pkg/control
+ rm -r $IPKG_TMP/$pkg/data
+ rmdir $IPKG_TMP/$pkg
+ return 0
+ fi
+ fi
+
+
+ echo -n "Unpacking $pkg..."
+ set +o noglob
+ for file in $IPKG_TMP/$pkg/control/*; do
+ local base_file=`ipkg_file_part $file`
+ mv $file $info_dir/$pkg.$base_file
+ done
+ set -o noglob
+ rm -r $IPKG_TMP/$pkg/control
+
+ rm -f $IPKG_TMP/data.tar.gz $IPKG_TMP/data.tar
+ if ! { $pkg_extract_stdout $filename ./data.tar.gz > $IPKG_TMP/data.tar.gz &&
+ gzip -d $IPKG_TMP/data.tar.gz &&
+ tar -C $IPKG_TMP/$pkg/data -xf $IPKG_TMP/data.tar ; } ; then
+ echo "ipkg_install_file: ERROR unpacking data.tar.gz from $filename"
+ return 1
+ fi
+ rm -f $IPKG_TMP/data.tar.gz $IPKG_TMP/data.tar
+ echo "Done."
+
+ echo -n "Configuring $pkg..."
+ export PKG_ROOT=$dest
+ if [ -x "$info_dir/$pkg.preinst" ]; then
+ if ! $info_dir/$pkg.preinst install; then
+ echo "$info_dir/$pkg.preinst failed. Aborting installation of $pkg"
+ rm -rf $IPKG_TMP/$pkg/data
+ rmdir $IPKG_TMP/$pkg
+ return 1
+ fi
+ fi
+
+ local old_conffiles=`ipkg_status_sd $sd $pkg Conffiles | ipkg_extract_value`
+ local new_conffiles=
+ if [ -f "$info_dir/$pkg.conffiles" ]; then
+ for conffile in `cat $info_dir/$pkg.conffiles`; do
+ if [ -f "$dest/$conffile" ] && ! echo " $old_conffiles " | grep -q " $conffile "`md5sum $dest/$conffile | sed 's/ .*//'`; then
+ local use_maintainers_conffile=
+ if [ -z "$FORCE_DEFAULTS" ]; then
+ while true; do
+ echo -n "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:
+ Y or I : install the package maintainer's version
+ N or O : keep your currently-installed version
+ D : show the differences between the versions (if diff is installed)
+ The default action is to keep your current version.
+*** `ipkg_file_part $conffile` (Y/I/N/O/D) [default=N] ? "
+ read response
+ case "$response" in
+ [YyIi] | [Yy][Ee][Ss])
+ use_maintainers_conffile=t
+ break
+ ;;
+ [Dd])
+ echo "
+diff -u $dest/$conffile $IPKG_TMP/$pkg/data/$conffile"
+ diff -u $dest/$conffile $IPKG_TMP/$pkg/data/$conffile || true
+ echo "[Press ENTER to continue]"
+ read junk
+ ;;
+ *)
+ break
+ ;;
+ esac
+ done
+ fi
+ if [ -n "$use_maintainers_conffile" ]; then
+ local md5sum=`md5sum $IPKG_TMP/$pkg/data/$conffile | sed 's/ .*//'`
+ new_conffiles="$new_conffiles $conffile $md5sum"
+ else
+ new_conffiles="$new_conffiles $conffile <custom>"
+ rm $IPKG_TMP/$pkg/data/$conffile
+ fi
+ else
+ md5sum=`md5sum $IPKG_TMP/$pkg/data/$conffile | sed 's/ .*//'`
+ new_conffiles="$new_conffiles $conffile $md5sum"
+ fi
+ done
+ fi
+
+ local owd=`pwd`
+ (cd $IPKG_TMP/$pkg/data/; tar cf - . | (cd $owd; cd $dest; tar xf -))
+ rm -rf $IPKG_TMP/$pkg/data
+ rmdir $IPKG_TMP/$pkg
+ rm -f $IPKG_TMP/data.tar.gz $IPKG_TMP/data.tar
+ $pkg_extract_stdout $filename ./data.tar.gz > $IPKG_TMP/data.tar.gz
+ tar tzf $IPKG_TMP/data.tar.gz | sed -e 's/^\.//' > $info_dir/$pkg.list
+ rm -f $IPKG_TMP/data.tar.gz $IPKG_TMP/data.tar
+
+ if [ -x "$info_dir/$pkg.postinst" ]; then
+ $info_dir/$pkg.postinst configure
+ fi
+
+ if [ -n "$new_conffiles" ]; then
+ new_conffiles='Conffiles: '`echo $new_conffiles | ipkg_protect_slashes`
+ fi
+ local sed_safe_root=`echo $dest | sed -e "s#^${IPKG_OFFLINE_ROOT}##" | ipkg_protect_slashes`
+ sed -e "s/\(Package:.*\)/\1\\
+Status: install ok installed\\
+Root: ${sed_safe_root}\\
+${new_conffiles}/" $info_dir/$pkg.control | ipkg_status_update_sd $sd $pkg
+
+ rm -f $info_dir/$pkg.control
+ rm -f $info_dir/$pkg.conffiles
+ rm -f $info_dir/$pkg.preinst
+ rm -f $info_dir/$pkg.postinst
+
+ echo "Done."
+}
+
+ipkg_install_file() {
+ ipkg_install_file_dest $IPKG_ROOT $*
+}
+
+ipkg_install() {
+
+ while [ $# -gt 0 ]; do
+ local pkg="$1"
+ shift
+
+ case "$pkg" in
+ http://* | ftp://*)
+ local tmp_pkg_file="$IPKG_TMP/"`ipkg_file_part $pkg`
+ if ipkg_download $pkg $tmp_pkg_file; then
+ ipkg_install_file $tmp_pkg_file
+ rm $tmp_pkg_file
+ fi
+ ;;
+ file:/*.ipk | file://*.deb)
+ local ipkg_filename="`echo $pkg|sed 's/^file://'`"
+ 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
+ ;;
+ esac
+ done
+}
+
+ipkg_install_pending() {
+ [ -n "$IPKG_OFFLINE_ROOT" ] && return 0
+
+ if [ -d "$IPKG_PENDING_DIR" ]; then
+ set +o noglob
+ local pending=`ls -1d $IPKG_PENDING_DIR/*.ipk 2> /dev/null` || true
+ set -o noglob
+ if [ -n "$pending" ]; then
+ echo "The following packages in $IPKG_PENDING_DIR will now be installed:"
+ echo $pending
+ for filename in $pending; do
+ if ipkg_install_file $filename; then
+ rm $filename
+ fi
+ done
+ fi
+ fi
+ return 0
+}
+
+ipkg_install_wanted() {
+ local wanted=`ipkg_status_matching 'Status:[[:space:]]*install.*not-installed'`
+
+ if [ -n "$wanted" ]; then
+ echo "The following package were previously requested but have not been installed:"
+ echo $wanted
+
+ if [ -n "$FORCE_DEFAULTS" ]; then
+ echo "Installing them now."
+ else
+ echo -n "Install them now [Y/n] ? "
+ read response
+ case "$response" in
+ [Nn] | [Nn][Oo])
+ return 0
+ ;;
+ esac
+ fi
+
+ ipkg_install $wanted
+ fi
+
+ return 0
+}
+
+ipkg_upgrade_pkg() {
+ local pkg="$1"
+ local avail_ver=`ipkg_info $pkg Version | ipkg_extract_value | head -n1`
+
+ is_installed=
+ for dest_name in `ipkg_dest_names`; do
+ local dest=`ipkg_dest_byname $dest_name`
+ local sd=$dest/$IPKG_DIR_PREFIX
+ local inst_ver=`ipkg_status_sd $sd $pkg Version | ipkg_extract_value`
+ if [ -n "$inst_ver" ]; then
+ is_installed=t
+
+ if [ -z "$avail_ver" ]; then
+ echo "Assuming locally installed package $pkg ($inst_ver) is up to date"
+ return 0
+ fi
+
+ if [ "$avail_ver" = "$inst_ver" ]; then
+ echo "Package $pkg ($inst_ver) installed in $dest_name is up to date"
+ elif opkg-compare-versions $avail_ver '>>' $inst_ver; then
+ echo "Upgrading $pkg ($dest_name) from $inst_ver to $avail_ver"
+ ipkg_get_install_dest $dest $pkg
+ else
+ echo "Not downgrading package $pkg from $inst_ver to $avail_ver"
+ fi
+ fi
+ done
+
+ if [ -z "$is_installed" ]; then
+ echo "Package $pkg does not appear to be installed"
+ return 0
+ fi
+
+}
+
+ipkg_upgrade() {
+ if [ $# -lt 1 ]; then
+ local pkgs=`ipkg_status_matching 'Status:.*[[:space:]]installed'`
+ else
+ pkgs="$*"
+ fi
+
+ for pkg in $pkgs; do
+ ipkg_upgrade_pkg $pkg
+ done
+}
+
+ipkg_remove_pkg_dest() {
+ local dest="$1"
+ local pkg="$2"
+ local sd=$dest/$IPKG_DIR_PREFIX
+ local info_dir=$sd/info
+
+ if ! ipkg_status_installed_sd $sd $pkg; then
+ echo "ipkg_remove: Package $pkg does not appear to be installed in $dest"
+ if ipkg_status_mentioned_sd $sd $pkg; then
+ echo "Purging mention of $pkg from the ipkg database"
+ ipkg_status_remove_sd $sd $pkg
+ fi
+ return 1
+ fi
+
+ echo "ipkg_remove: Removing $pkg... "
+
+ local files=`cat $info_dir/$pkg.list`
+
+ export PKG_ROOT=$dest
+ if [ -x "$info_dir/$pkg.prerm" ]; then
+ $info_dir/$pkg.prerm remove
+ fi
+
+ local conffiles=`ipkg_status_sd $sd $pkg Conffiles | ipkg_extract_value`
+
+ local dirs_to_remove=
+ for file in $files; do
+ if [ -d "$dest/$file" ]; then
+ dirs_to_remove="$dirs_to_remove $dest/$file"
+ else
+ if echo " $conffiles " | grep -q " $file "; then
+ if echo " $conffiles " | grep -q " $file "`md5sum $dest/$file | sed 's/ .*//'`; then
+ rm -f $dest/$file
+ fi
+ else
+ rm -f $dest/$file
+ fi
+ fi
+ done
+
+ local removed_a_dir=t
+ while [ -n "$removed_a_dir" ]; do
+ removed_a_dir=
+ local new_dirs_to_remove=
+ for dir in $dirs_to_remove; do
+ if rmdir $dir >/dev/null 2>&1; then
+ removed_a_dir=t
+ else
+ new_dirs_to_remove="$new_dirs_to_remove $dir"
+ fi
+ done
+ dirs_to_remove="$new_dirs_to_remove"
+ done
+
+ if [ -n "$dirs_to_remove" ]; then
+ echo "ipkg_remove: Warning: Not removing the following directories since they are not empty:" >&2
+ echo "$dirs_to_remove" | sed -e 's/\/[/]\+/\//g' >&2
+ fi
+
+ if [ -x "$info_dir/$pkg.postrm" ]; then
+ $info_dir/$pkg.postrm remove
+ fi
+
+ ipkg_status_remove_sd $sd $pkg
+ set +o noglob
+ rm -f $info_dir/$pkg.*
+ set -o noglob
+
+ echo "Done."
+}
+
+ipkg_remove_pkg() {
+ local pkg="$1"
+ for dest in `ipkg_dests_all`; do
+ local sd=$dest/$IPKG_DIR_PREFIX
+ if ipkg_status_mentioned_sd $sd $pkg; then
+ ipkg_remove_pkg_dest $dest $pkg
+ fi
+ done
+}
+
+ipkg_remove() {
+ while [ $# -gt 0 ]; do
+ local pkg="$1"
+ shift
+ if [ -n "$DEST_NAME" ]; then
+ ipkg_remove_pkg_dest $IPKG_ROOT $pkg
+ else
+ ipkg_remove_pkg $pkg
+ fi
+ done
+}
+
+ipkg_list_installed() {
+ echo `ipkg_status_matching 'Status:.*[[:space:]]installed'`
+}
+###########
+# ipkg main
+###########
+
+# Parse options
+while [ $# -gt 0 ]; do
+ arg="$1"
+ case $arg in
+ -d | -dest)
+ [ $# -gt 1 ] || ipkg_usage "option $arg requires an argument"
+ DEST_NAME="$2"
+ shift
+ ;;
+ -o | -offline)
+ [ $# -gt 1 ] || ipkg_usage "option $arg requires an argument"
+ IPKG_OFFLINE_ROOT="$2"
+ shift
+ ;;
+ -force-depends)
+ FORCE_DEPENDS=t
+ ;;
+ -force-defaults)
+ FORCE_DEFAULTS=t
+ ;;
+ -f)
+ [ $# -gt 1 ] || ipkg_usage "option $arg requires an argument"
+ IPKG_CONF="$2"
+ shift
+ ;;
+ -*)
+ ipkg_usage "unknown option $arg"
+ ;;
+ *)
+ break
+ ;;
+ esac
+ shift
+done
+
+[ $# -lt 1 ] && ipkg_usage "ipkg must have one sub-command argument"
+cmd="$1"
+shift
+
+ipkg_load_configuration
+
+case "$cmd" in
+update|upgrade|list|info|status|install_pending|list_installed)
+ ;;
+install|depends|remove|files|search)
+ [ $# -lt 1 ] && ipkg_usage "ERROR: the \`\`$cmd'' command requires an argument"
+ ;;
+*)
+ echo "ERROR: unknown sub-command \`$cmd'"
+ ipkg_usage
+ ;;
+esac
+
+# Only install pending if we have an interactive sub-command
+case "$cmd" in
+upgrade|install)
+ ipkg_install_pending
+ ipkg_install_wanted
+ ;;
+esac
+
+ipkg_$cmd $*
+rm -rf $IPKG_TMP
diff --git a/recipes/stage-manager/files/stage-manager-opkg-build b/recipes/stage-manager/files/stage-manager-opkg-build
new file mode 100755
index 0000000..b7be3dc
--- /dev/null
+++ b/recipes/stage-manager/files/stage-manager-opkg-build
@@ -0,0 +1,246 @@
+#!/bin/sh
+
+# opkg-build -- construct a .ipk from a directory
+# Carl Worth <cworth@east.isi.edu>
+# based on a script by Steve Redler IV, steve@sr-tech.com 5-21-2001
+# 2003-04-25 rea@sr.unh.edu
+# Updated to work on Familiar Pre0.7rc1, with busybox tar.
+# Note it Requires: binutils-ar (since the busybox ar can't create)
+# For UID debugging it needs a better "find".
+set -e
+
+version=1.0
+
+opkg_extract_value() {
+ sed -e "s/^[^:]*:[[:space:]]*//"
+}
+
+required_field() {
+ field=$1
+
+ value=`grep "^$field:" < $CONTROL/control | opkg_extract_value`
+ if [ -z "$value" ]; then
+ echo "*** Error: $CONTROL/control is missing field $field" >&2
+ return 1
+ fi
+ echo $value
+ return 0
+}
+
+disallowed_field() {
+ field=$1
+
+ value=`grep "^$field:" < $CONTROL/control | opkg_extract_value`
+ if [ -n "$value" ]; then
+ echo "*** Error: $CONTROL/control contains disallowed field $field" >&2
+ return 1
+ fi
+ echo $value
+ return 0
+}
+
+pkg_appears_sane() {
+ local pkg_dir=$1
+
+ local owd=`pwd`
+ cd $pkg_dir
+
+ PKG_ERROR=0
+
+ tilde_files=`find . -name '*~'`
+ if [ -n "$tilde_files" ]; then
+ if [ "$noclean" = "1" ]; then
+ echo "*** Warning: The following files have names ending in '~'.
+You probably want to remove them: " >&2
+ ls -ld $tilde_files
+ echo >&2
+ else
+ echo "*** Removing the following files: $tilde_files"
+ rm -f "$tilde_files"
+ fi
+ fi
+
+ large_uid_files=`find . -uid +99 || true`
+
+ if [ "$ogargs" = "" ] && [ -n "$large_uid_files" ]; then
+ echo "*** Warning: The following files have a UID greater than 99.
+You probably want to chown these to a system user: " >&2
+ ls -ld $large_uid_files
+ echo >&2
+ fi
+
+
+ if [ ! -f "$CONTROL/control" ]; then
+ echo "*** Error: Control file $pkg_dir/$CONTROL/control not found." >&2
+ cd $owd
+ return 1
+ fi
+
+ pkg=`required_field Package`
+ [ "$?" -ne 0 ] && PKG_ERROR=1
+
+ version=`required_field Version | sed 's/Version://; s/^.://g;'`
+ [ "$?" -ne 0 ] && PKG_ERROR=1
+
+ arch=`required_field Architecture`
+ [ "$?" -ne 0 ] && PKG_ERROR=1
+
+ required_field Maintainer >/dev/null
+ [ "$?" -ne 0 ] && PKG_ERROR=1
+
+ required_field Description >/dev/null
+ [ "$?" -ne 0 ] && PKG_ERROR=1
+
+ section=`required_field Section`
+ [ "$?" -ne 0 ] && PKG_ERROR=1
+ if [ -z "$section" ]; then
+ echo "The Section field should have one of the following values:" >&2
+ echo "admin, base, comm, editors, extras, games, graphics, kernel, libs, misc, net, text, web, x11" >&2
+ fi
+
+ priority=`required_field Priority`
+ [ "$?" -ne 0 ] && PKG_ERROR=1
+ if [ -z "$priority" ]; then
+ echo "The Priority field should have one of the following values:" >&2
+ echo "required, important, standard, optional, extra." >&2
+ echo "If you don't know which priority value you should be using, then use \`optional'" >&2
+ fi
+
+ source=`required_field Source`
+ [ "$?" -ne 0 ] && PKG_ERROR=1
+ if [ -z "$source" ]; then
+ echo "The Source field contain the URL's or filenames of the source code and any patches"
+ echo "used to build this package. Either gnu-style tarballs or Debian source packages "
+ echo "are acceptable. Relative filenames may be used if they are distributed in the same"
+ echo "directory as the .ipk file."
+ fi
+
+ disallowed_filename=`disallowed_field Filename`
+ [ "$?" -ne 0 ] && PKG_ERROR=1
+
+ if echo $pkg | grep '[^a-z0-9.+-]'; then
+ echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2
+ PKG_ERROR=1;
+ fi
+
+ local bad_fields=`sed -ne 's/^\([^[:space:]][^:[:space:]]\+[[:space:]]\+\)[^:].*/\1/p' < $CONTROL/control | sed -e 's/\\n//'`
+ if [ -n "$bad_fields" ]; then
+ bad_fields=`echo $bad_fields`
+ echo "*** Error: The following fields in $CONTROL/control are missing a ':'" >&2
+ echo " $bad_fields" >&2
+ echo "opkg-build: This may be due to a missing initial space for a multi-line field value" >&2
+ PKG_ERROR=1
+ fi
+
+ for script in $CONTROL/preinst $CONTROL/postinst $CONTROL/prerm $CONTROL/postrm; do
+ if [ -f $script -a ! -x $script ]; then
+ echo "*** Error: package script $script is not executable" >&2
+ PKG_ERROR=1
+ fi
+ done
+
+ if [ -f $CONTROL/conffiles ]; then
+ for cf in `cat $CONTROL/conffiles`; do
+ if [ ! -f ./$cf ]; then
+ echo "*** Error: $CONTROL/conffiles mentions conffile $cf which does not exist" >&2
+ PKG_ERROR=1
+ fi
+ done
+ fi
+
+ cd $owd
+ return $PKG_ERROR
+}
+
+###
+# opkg-build "main"
+###
+ogargs=""
+outer=ar
+noclean=0
+usage="Usage: $0 [-c] [-C] [-o owner] [-g group] <pkg_directory> [<destination_directory>]"
+while getopts "cg:ho:v" opt; do
+ case $opt in
+ o ) owner=$OPTARG
+ ogargs="--owner=$owner"
+ ;;
+ g ) group=$OPTARG
+ ogargs="$ogargs --group=$group"
+ ;;
+ c ) outer=tar
+ ;;
+ C ) noclean=1
+ ;;
+ v ) echo $version
+ exit 0
+ ;;
+ h ) echo $usage >&2 ;;
+ \? ) echo $usage >&2
+ esac
+done
+
+
+shift $(($OPTIND - 1))
+
+# continue on to process additional arguments
+
+case $# in
+1)
+ dest_dir=$PWD
+ ;;
+2)
+ dest_dir=$2
+ if [ "$dest_dir" = "." -o "$dest_dir" = "./" ] ; then
+ dest_dir=$PWD
+ fi
+ ;;
+*)
+ echo $usage >&2
+ exit 1
+ ;;
+esac
+
+pkg_dir=$1
+
+if [ ! -d $pkg_dir ]; then
+ echo "*** Error: Directory $pkg_dir does not exist" >&2
+ exit 1
+fi
+
+# CONTROL is second so that it takes precedence
+CONTROL=
+[ -d $pkg_dir/DEBIAN ] && CONTROL=DEBIAN
+[ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL
+if [ -z "$CONTROL" ]; then
+ echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2
+ exit 1
+fi
+
+if ! pkg_appears_sane $pkg_dir; then
+ echo >&2
+ echo "opkg-build: Please fix the above errors and try again." >&2
+ exit 1
+fi
+
+tmp_dir=$dest_dir/IPKG_BUILD.$$
+mkdir $tmp_dir
+
+echo $CONTROL > $tmp_dir/tarX
+( cd $pkg_dir && tar $ogargs -X $tmp_dir/tarX -czf $tmp_dir/data.tar.gz . )
+( cd $pkg_dir/$CONTROL && tar $ogargs -czf $tmp_dir/control.tar.gz . )
+rm $tmp_dir/tarX
+
+echo "2.0" > $tmp_dir/debian-binary
+
+pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk
+rm -f $pkg_file
+if [ "$outer" = "ar" ] ; then
+ ( cd $tmp_dir && ar -crf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz )
+else
+ ( cd $tmp_dir && tar -zcf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz )
+fi
+
+rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz
+rmdir $tmp_dir
+
+echo "Packaged contents of $pkg_dir into $pkg_file"
diff --git a/recipes/stage-manager/stagemanager-native_0.0.1.bb b/recipes/stage-manager/stagemanager-native_0.0.1.bb
index 9577749..8ad73ef 100644
--- a/recipes/stage-manager/stagemanager-native_0.0.1.bb
+++ b/recipes/stage-manager/stagemanager-native_0.0.1.bb
@@ -2,8 +2,8 @@ DESCRIPTION = "Helper script for packaged-staging.bbclass"
PR = "r15"
SRC_URI = "file://stage-manager \
- file://stage-manager-ipkg \
- file://stage-manager-ipkg-build "
+ file://stage-manager-opkg \
+ file://stage-manager-opkg-build "
LICENSE = "GPLv2"
PACKAGE_ARCH = "all"
@@ -21,6 +21,6 @@ NATIVE_INSTALL_WORKS = "1"
do_install() {
install -d ${STAGING_BINDIR}
install -m 0755 ${WORKDIR}/stage-manager ${STAGING_BINDIR}
- install -m 0755 ${WORKDIR}/stage-manager-ipkg ${STAGING_BINDIR}
- install -m 0755 ${WORKDIR}/stage-manager-ipkg-build ${STAGING_BINDIR}
+ install -m 0755 ${WORKDIR}/stage-manager-opkg ${STAGING_BINDIR}
+ install -m 0755 ${WORKDIR}/stage-manager-opkg-build ${STAGING_BINDIR}
}
--
1.7.0.4
next prev parent reply other threads:[~2011-01-25 6:27 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-25 6:25 [PATCH 0/9 v2] Replace ipkg-utils with opkg-utils Khem Raj
2011-01-25 6:25 ` [PATCH 1/9] classes/package_ipk.bbclass, classes/sourceipk.bbclass: Use opkg-utils-native instead of ipkg-utils-native Khem Raj
2011-01-25 6:25 ` [PATCH 2/9] recipes/meta recipes/tasks: Replace ipkg-utils with opkg-utils Khem Raj
2011-01-25 6:25 ` [PATCH 3/9] slugos.inc: Dont lock SRCDATE for ipkg, its not used anymore Khem Raj
2011-01-25 6:25 ` [PATCH 4/9] ipkg-utils: Remove the recipes Khem Raj
2011-01-25 6:25 ` [PATCH 5/9] classes: Replace ipkg-make-index with opkg-make-index Khem Raj
2011-01-25 6:25 ` [PATCH 6/9] bitbake.conf, nylon.conf, openwrt-sdk.conf: Use opkg-build instead of ipkg-build Khem Raj
2011-01-25 6:25 ` [PATCH 7/9] angstrom/personal-feed.sh, angstrom/sort.sh: Replace ipkg-make-index with opkg-make-index Khem Raj
2011-01-25 6:25 ` Khem Raj [this message]
2011-01-25 6:25 ` [PATCH 9/9] Recipes: Replace ipkg-utils with opkg-utils Khem Raj
2011-01-25 13:38 ` [PATCH 0/9 v2] " Koen Kooi
2011-01-25 23:29 ` Graham Gower
2011-01-26 1:21 ` Khem Raj
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1295936745-718-9-git-send-email-raj.khem@gmail.com \
--to=raj.khem@gmail.com \
--cc=openembedded-devel@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.