diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-10-07 11:57:20 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2006-10-07 11:57:20 +0000 |
commit | 725611a466f2edf12f809d22339b22223af4afe7 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /openwrt/scripts | |
parent | f4dd5a6d7c4ebea48cd6292744cb9def6037de80 (diff) |
move old kamikaze out of trunk - will put buildroot-ng in there as soon as all the developers are ready
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@4944 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'openwrt/scripts')
-rwxr-xr-x | openwrt/scripts/adam2flash.pl | 174 | ||||
-rwxr-xr-x | openwrt/scripts/configtest.pl | 28 | ||||
-rwxr-xr-x | openwrt/scripts/download.pl | 99 | ||||
-rw-r--r-- | openwrt/scripts/flash.sh | 66 | ||||
-rwxr-xr-x | openwrt/scripts/gen_busybox_config.pl | 22 | ||||
-rw-r--r-- | openwrt/scripts/gen_busybox_menuconfig.pl | 69 | ||||
-rwxr-xr-x | openwrt/scripts/ipkg | 1185 | ||||
-rwxr-xr-x | openwrt/scripts/make-ipkg-dir.sh | 21 | ||||
-rwxr-xr-x | openwrt/scripts/patch-kernel.sh | 54 | ||||
-rwxr-xr-x | openwrt/scripts/rstrip.sh | 26 |
10 files changed, 0 insertions, 1744 deletions
diff --git a/openwrt/scripts/adam2flash.pl b/openwrt/scripts/adam2flash.pl deleted file mode 100755 index bd0fa69a6..000000000 --- a/openwrt/scripts/adam2flash.pl +++ /dev/null @@ -1,174 +0,0 @@ -#!/usr/bin/perl -# -# D-Link DSL-G6x4T flash utility -# -# Copyright (C) 2005 Felix Fietkau <mailto@nbd.name> -# based on fbox recovery util by Enrik Berkhan -# -# 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 of the License, 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. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - -use IO::Socket::INET; -use Socket; -use strict; -use warnings; - -sub usage() { - print STDERR "Usage: $0 <ip> [firmware.bin]\n\n"; - exit 0; -} - -my $ip = shift @ARGV; -$ip and $ip =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ or usage(); - -my $probe = IO::Socket::INET->new(Proto => 'udp', - Broadcast => 1, - LocalPort => 5035) or die "socket: $!"; -my $setip = unpack("N", inet_aton($ip)); -$setip > 0 or usage(); - -my @packets; -foreach my $ver ([18, 1], [22, 2]) { - push @packets, pack("vCCVNV", 0, @$ver, 1, $setip, 0); -} -print STDERR "Looking for device: "; -my $broadcast = sockaddr_in(5035, INADDR_BROADCAST); -my $scanning; -my $box; - -$SIG{"ALRM"} = sub { - return if --$scanning <= 0; - foreach my $packet (@packets) { - $probe->send($packet, 0, $broadcast); - } - print STDERR "."; -}; - -$scanning = 10; -foreach my $packet (@packets) { - $probe->send($packet, 0, $broadcast); -} -print STDERR "."; - -while($scanning) { - my $reply; - - alarm(1); - if (my $peer = $probe->recv($reply, 16)) { - next if (length($reply) < 16); - my ($port, $addr) = sockaddr_in($peer); - my ($major, $minor1, $minor2, $code, $addr2) = unpack("vCCVV", $reply); - $addr2 = pack("N", $addr2); - if ($code == 2) { - $scanning = 0; - printf STDERR " found!\nADAM2 version $major.$minor1.$minor2 at %s (%s)\n", inet_ntoa($addr), inet_ntoa($addr2); - $box = inet_ntoa($addr); - } - } -} - -$box or die " not found!\n"; - -{ - package ADAM2FTP; - use base qw(Net::FTP); - - # ADAM2 requires upper case commands, some brain dead firewall doesn't ;-) - sub _USER { - shift->command("USER",@_)->response() - } - - sub _GETENV { - my $ftp = shift; - my ($ok, $name, $value); - - $ftp->command("GETENV",@_); - while(length($ok = $ftp->response()) < 1) { - my $line = $ftp->getline(); - unless (defined($value)) { - chomp($line); - ($name, $value) = split(/\s+/, $line, 2); - } - } - $ftp->debug_print(0, "getenv: $value\n") - if $ftp->debug(); - return $value; - } - - sub getenv { - my $ftp = shift; - my $name = shift; - return $ftp->_GETENV($name); - } - - sub _REBOOT { - shift->command("REBOOT")->response() == Net::FTP::CMD_OK - } - - sub reboot { - my $ftp = shift; - $ftp->_REBOOT; - $ftp->close; - } -} - -my $file = shift @ARGV; -$file || exit 0; - -open FILE, "<$file" or die "can't open firmware file\n"; -my $ftp = ADAM2FTP->new($box, Debug => 0, Timeout => 600) or die "can't open control connection\n"; -$ftp->login("adam2", "adam2") or die "can't login\n"; - -my $mtd0 = $ftp->getenv("mtd0"); -my $mtd1 = $ftp->getenv("mtd1"); -my ($ksize, $fssize); - -$mtd1 =~ /^(0x\w+),(0x\w+)$/ and $ksize = hex($2) - hex($1); -$mtd0 =~ /^(0x\w+),(0x\w+)$/ and $fssize = hex($2) - hex($1); -$ksize and $fssize or die 'cannot read partition offsets'; -printf STDERR "Available flash space: 0x%08x (0x%08x + 0x%08x)\n", $ksize + $fssize, $ksize, $fssize; - -$ftp->command("MEDIA FLSH")->response(); -$ftp->binary(); -print STDERR "Writing to mtd1...\n"; - -my $dc = $ftp->stor("fs mtd1"); -$dc or die "can't open data connection\n"; -my $rbytes = 1; - -while (($ksize > 0) and ($rbytes > 0)) { - my $buffer; - my $len = ($ksize > 1024 ? 1024 : $ksize); - $rbytes = read FILE, $buffer, $len; - $rbytes and $ksize -= $dc->write($buffer, $rbytes, 600); -} - -$dc->close(); -$rbytes or die "no more data left to write\n"; - -print STDERR "Writing to mtd0...\n"; - -$dc = $ftp->stor("fs mtd0"); -$dc or die "can't open data connection\n"; - -while (($fssize > 0) and ($rbytes > 0)) { - my $buffer; - my $len = ($fssize > 1024 ? 1024 : $fssize); - $rbytes = read FILE, $buffer, $len; - $rbytes and $fssize -= $dc->write($buffer, $rbytes, 600); -} - -$dc->close(); -$ftp->reboot(); diff --git a/openwrt/scripts/configtest.pl b/openwrt/scripts/configtest.pl deleted file mode 100755 index 476bba7dc..000000000 --- a/openwrt/scripts/configtest.pl +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/perl -my %change = ( - '^BUSYBOX' => 'make package/busybox-clean', - 'OPENVPN_' => 'make package/openvpn-clean', - 'SYSCONF_' => 'make package/base-files-clean target_clean', - '' => 'make target_clean' -); - -my @configfiles = ( -# ['package/linux/linux.config', 'build_mipsel/linux/.config' => -# 'make -C package linux-clean'] -); - - - -foreach my $change (keys %change) { - my $v1 = `grep '$change' .config.test`; - my $v2 = `grep '$change' .config`; - $v1 eq $v2 or system($change{$change}); -} - -foreach my $file (@configfiles) { - if ((-f $file->[0]) and (-f $file->[1])) { - my @s1 = stat $file->[0]; - my @s2 = stat $file->[1]; - $s1[9] > $s2[9] and system($file->[2]); - } -} diff --git a/openwrt/scripts/download.pl b/openwrt/scripts/download.pl deleted file mode 100755 index 794d8edeb..000000000 --- a/openwrt/scripts/download.pl +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/perl -use strict; -use warnings; - -my $target = shift @ARGV; -my $filename = shift @ARGV; -my $md5sum = shift @ARGV; -my @mirrors; - -my $ok; - -@ARGV > 0 or die "Syntax: $0 <target dir> <filename> <md5sum> <mirror> [<mirror> ...]\n"; - -sub download -{ - my $mirror = shift; - - open WGET, "wget -t1 --timeout=20 -O- \"$mirror/$filename\" |" or die "Cannot launch wget.\n"; - open MD5SUM, "| md5sum > \"$target/$filename.md5sum\"" or die "Cannot launch md5sum.\n"; - open OUTPUT, "> $target/$filename.dl" or die "Cannot create file $target/$filename.dl: $!\n"; - my $buffer; - while (read WGET, $buffer, 1048576) { - print MD5SUM $buffer; - print OUTPUT $buffer; - } - close MD5SUM; - close WGET; - close OUTPUT; - - if (($? >> 8) != 0 ) { - print STDERR "Download failed.\n"; - cleanup(); - return; - } - - my $sum = `cat "$target/$filename.md5sum"`; - $sum =~ /^(\w+)\s+/ or die "Could not generate md5sum\n"; - $sum = $1; - - if (($md5sum =~ /\w{32}/) and ($sum ne $md5sum)) { - print STDERR "MD5 sum of the downloaded file does not match - deleting download.\n"; - cleanup(); - return; - } - - unlink "$target/$filename"; - system("mv \"$target/$filename.dl\" \"$target/$filename\""); - cleanup(); -} - -sub cleanup -{ - unlink "$target/$filename.dl"; - unlink "$target/$filename.md5sum"; -} - -foreach my $mirror (@ARGV) { - if ($mirror =~ /^\@SF\/(.+)$/) { - my $sfpath = $1; - open SF, "wget -t1 -q -O- 'http://prdownloads.sourceforge.net/$sfpath/$filename' |"; - while (<SF>) { - /RADIO NAME=use_default VALUE=(\w+) OnClick="form\.submit\(\)">/ or - /type="radio" name="use_default" value="(\w+)" onclick="form\.submit\(\)"\/>/ and do { - push @mirrors, "http://$1.dl.sourceforge.net/sourceforge/$sfpath"; - }; - /<a href="\/.+\?use_mirror=(\w+)"><b>Download/ and do { - push @mirrors, "http://$1.dl.sourceforge.net/sourceforge/$sfpath"; - }; - } - push @mirrors, "http://dl.sourceforge.net/sourceforge/$sfpath"; - close SF; - } elsif ($mirror =~ /^\@GNU\/(.+)$/) { - my $gnupath = $1; - push @mirrors, "ftp://ftp.gnu.org/gnu/$gnupath"; - push @mirrors, "ftp://ftp.belnet.be/mirror/ftp.gnu.org/gnu/$gnupath"; - push @mirrors, "ftp://ftp.mirror.nl/pub/mirror/gnu/$gnupath"; - push @mirrors, "http://mirror.switch.ch/ftp/mirror/gnu/$gnupath"; - push @mirrors, "ftp://ftp.uu.net/archive/systems/gnu/$gnupath"; - push @mirrors, "ftp://ftp.eu.uu.net/pub/gnu/$gnupath"; - push @mirrors, "ftp://ftp.leo.org/pub/comp/os/unix/gnu/$gnupath"; - push @mirrors, "ftp://ftp.digex.net/pub/gnu/$gnupath"; - } else { - push @mirrors, $mirror; - } -} - -push @mirrors, 'http://mirror1.openwrt.org/'; -push @mirrors, 'http://downloads.openwrt.org/sources/'; - -while (!$ok) { - my $mirror = shift @mirrors; - $mirror or die "No more mirrors to try - giving up.\n"; - - download($mirror); - -f "$target/$filename" and $ok = 1; -} - -$SIG{INT} = \&cleanup; - diff --git a/openwrt/scripts/flash.sh b/openwrt/scripts/flash.sh deleted file mode 100644 index 8841c3568..000000000 --- a/openwrt/scripts/flash.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash -# -# tftp flash script for wireless routers -# -# Copyright (C) 2004 by Oleg I. Vdovikin <oleg@cs.msu.su> -# Copyright (C) 2005 by Waldemar Brodkorb <wbx@openwrt.org> -# -# 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 of the License, 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. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - -if [ -z "$1" ] || [ ! -f $1 ] || [ -z $2 ]; then - echo Usage: $0 firmware vendor -cat << EOF -IMPORTANT: -Notes for Linksys / Asus WL500gx router: - be sure you have set boot_wait to yes. Power on your router - after executing this script. - -Notes for Asus WL500g router: - be sure POWER led is flashing (If this is not the case - poweroff the device, push the reset button & power on - it again, then release button) - -1) connect your pc to the LAN port -2) be sure your link is up and has an address in the - 192.168.1.0/24 address range (and not the 192.168.1.1) - -Notes for Toshiba router: - boot_wait is enabled by default on these units. - -1) connect your pc to any of the four LAN ports -2) be sure your link is up and has an address in the - 192.168.10.1/24 address range (and not the 192.168.10.1) -3) run this script (unit will only accept .trx images) -4) Turn unit power on. - -EOF - exit 0 -fi -if [ "$2" == "asus" ]; then -echo Confirming IP address setting... -echo -en "get ASUSSPACELINK\x01\x01\xa8\xc0 /dev/null\nquit\n" | tftp 192.168.1.1 -echo Flashing 192.168.1.1 using $1... -echo -en "binary\nput $1 ASUSSPACELINK\nquit\n" | tftp 192.168.1.1 -echo Please wait until leds stops flashing. -elif [ "$2" == "linksys" ]; then -echo Flashing 192.168.1.1 using $1... -echo -en "rexmt 1\ntrace\nbinary\nput $1\nquit\n" | tftp 192.168.1.1 -echo Please wait until power led stops flashing. Do not poweroff! Then you can login via telnet 192.168.1.1. -elif [ "$2" == "toshiba" ]; then -echo Flashing 192.168.10.1 using $1... -echo -en "rexmt 1\ntrace\nbinary\nput $1\nquit\n" | tftp 192.168.10.1 -echo Unit will automatically reboot within 5 minutes. Do not power off. Then you can login via telnet 192.168.10.1. -fi diff --git a/openwrt/scripts/gen_busybox_config.pl b/openwrt/scripts/gen_busybox_config.pl deleted file mode 100755 index 1a84ab999..000000000 --- a/openwrt/scripts/gen_busybox_config.pl +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/perl -use strict; - -my $line; -my $l1 = ''; -my $l2 = '=y'; -while (<>) { - chomp; - /^(# )BR2_LARGEFILE(.+)$/ and do { - $l1 = $1; - $l2 = $2; - }; - /^(# )?BUSYBOX_(.+)/ and do { - my $p1 = $1; - my $p2 = $2; - $p2 =~ /(CONFIG_LFS|FDISK_SUPPORT_LARGE_DISKS)/ and do { - $p1 = $l1; - $p2 = "$1$l2"; - }; - print "$p1$p2\n"; - } -} diff --git a/openwrt/scripts/gen_busybox_menuconfig.pl b/openwrt/scripts/gen_busybox_menuconfig.pl deleted file mode 100644 index 6ce323bb1..000000000 --- a/openwrt/scripts/gen_busybox_menuconfig.pl +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/perl -use strict; -my $PATH = $ARGV[0]; -($PATH and -d $PATH) or die 'invalid path'; -my $DEFCONFIG = $ARGV[1]; -($DEFCONFIG and -f $DEFCONFIG) or die 'invalid config file'; - -my %config; - -open CONFIG, $DEFCONFIG or die 'cannot open config file'; -while (<CONFIG>) { - /^([\w_]+)=([ym])/ and $config{$1} = $2; - /^([\w_]+)=(\d+)/ and $config{$1} = $2; - /^([\w_]+)=(".+")/ and $config{$1} = $2; -} -close CONFIG; - -open FIND, "find \"$PATH\" -name Config.in |"; -while (<FIND>) { - chomp; - my $input = $_; - s/^$PATH\///g; - s/sysdeps\/linux\///g; - my $output = $_; - print STDERR "$input => $output\n"; - $output =~ /^(.+)\/[^\/]+$/ and system("mkdir -p $1"); - - open INPUT, $input; - open OUTPUT, ">$output"; - my ($cur, $default_set, $line); - while ($line = <INPUT>) { - next if $line =~ /^\s*mainmenu/; - - # FIXME: make this dynamic - $line =~ s/default CONFIG_FEATURE_BUFFERS_USE_MALLOC/default CONFIG_FEATURE_BUFFERS_GO_ON_STACK/; - $line =~ s/default BUSYBOX_CONFIG_FEATURE_SH_IS_NONE/default BUSYBOX_CONFIG_FEATURE_SH_IS_ASH/; - - if ($line =~ /^\s*config\s*([\w_]+)/) { - $cur = $1; - undef $default_set; - } - if ($line =~ /^\s*(menu|choice|end|source)/) { - undef $cur; - undef $default_set; - } - $line =~ s/^(\s*source\s+)/$1package\/busybox\/config\//; - - $line =~ s/(\s+)((CONFIG|FDISK|USING|CROSS|EXTRA|PREFIX|FEATURE|HAVE|BUSYBOX)[\w_]*)/$1BUSYBOX_$2/g; - - if ($cur) { - ($cur !~ /^CONFIG/ or $cur eq 'CONFIG_LFS') and do { - $line =~ s/^(\s*(bool|tristate|string))\s*".+"$/$1/; - }; - if ($line =~ /^\s*default/) { - my $c; - $default_set = 1; - $c = $config{$cur} or $c = 'n'; - - $line =~ s/^(\s*default\s*)(\w+|"[^"]*")(.*)/$1$c$3/; - } - } - - print OUTPUT $line; - } - close OUTPUT; - close INPUT; - -} -close FIND; diff --git a/openwrt/scripts/ipkg b/openwrt/scripts/ipkg deleted file mode 100755 index 57e4457cc..000000000 --- a/openwrt/scripts/ipkg +++ /dev/null @@ -1,1185 +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 - -# By default do not do globbing. Any command wanting globbing should -# explicitly enable it first and disable it afterwards. -set -o noglob - -ipkg_is_upgrade () { - local A B a b - A=$(echo $1 | sed -r "s/([0-9]+)[^[:alnum:]]*/ \1 /g"). - B=$(echo $2 | sed -r "s/([0-9]+)[^[:alnum:]]*/ \1 /g"). - while [ \! -z "$A" ] && [ \! -z "$B" ]; do { - set $A; a=$1; shift; A=$* - set $B; b=$1; shift; B=$* - [ "$a" -lt "$b" ] 2>&- && return 1 - { [ "$a" -gt "$b" ] 2>&- || [ "$a" ">" "$b" ]; } && return - }; done - return 1 -} - -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 -n 1 -} - -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 -n 1 -} - -ipkg_dest_default_name() { - ipkg_dest_names | head -n 1 -} - -ipkg_dest_byname() { - local dest="$1" - ipkg_dests $dest | head -n 1 -} - -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 - - IPKG_CONF="$IPKG_CONF_DIR/ipkg.conf" - - 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 - 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 - - # 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 $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 ok 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:]]\+/\n/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 - - if ! $pkg_extract_stdout $filename ./control.tar.gz | (cd $IPKG_TMP/$pkg/control; tar -xzf - ) ; then - echo "ipkg_install_file: ERROR unpacking control.tar.gz from $filename" - return 1 - fi - - 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 -f $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 - - if ! $pkg_extract_stdout $filename ./data.tar.gz | (cd $IPKG_TMP/$pkg/data; tar -xzf - ) ; then - echo "ipkg_install_file: ERROR unpacking data.tar.gz from $filename" - return 1 - fi - 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 $info_dir/$pkg.list - $pkg_extract_stdout $filename ./data.tar.gz | tar tzf - | sed -e 's/^\.//' > $info_dir/$pkg.list - - 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_offline_root="`echo ${IPKG_OFFLINE_ROOT} | ipkg_protect_slashes`" - local sed_safe_root="`echo $dest | sed -e "s/^${sed_safe_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) - ipkg_install_file $pkg - ;; - *) - 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 -n 1`" - - 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_is_upgrade "$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 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 - ;; - -*) - 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 -mkdir -p /tmp/ipkg - -case "$cmd" in -update|upgrade|list|info|status|install_pending) - ;; -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 $* -for a in `ls $IPKG_TMP`; do - rm -rf $IPKG_TMP/$a -done diff --git a/openwrt/scripts/make-ipkg-dir.sh b/openwrt/scripts/make-ipkg-dir.sh deleted file mode 100755 index 236cb6feb..000000000 --- a/openwrt/scripts/make-ipkg-dir.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -BASE=http://svn.openwrt.org/openwrt/trunk/openwrt -TARGET=$1 -CONTROL=$2 -VERSION=$3 -ARCH=$4 - -WD=$(pwd) - -mkdir -p "$TARGET/CONTROL" -grep '^[^(Version|Architecture)]' "$CONTROL" > "$TARGET/CONTROL/control" -grep '^Maintainer' "$CONTROL" 2>&1 >/dev/null || \ - echo "Maintainer: OpenWrt Developers Team <openwrt-devel@openwrt.org>" >> "$TARGET/CONTROL/control" -grep '^Source' "$CONTROL" 2>&1 >/dev/null || { - pkgbase=$(echo "$WD" | sed -e "s|^$TOPDIR/||g") - [ "$pkgbase" = "$WD" ] && src="N/A" || src="$BASE/$pkgbase" - echo "Source: $src" >> "$TARGET/CONTROL/control" -} -echo "Version: $VERSION" >> "$TARGET/CONTROL/control" -echo "Architecture: $ARCH" >> "$TARGET/CONTROL/control" -chmod 644 "$TARGET/CONTROL/control" diff --git a/openwrt/scripts/patch-kernel.sh b/openwrt/scripts/patch-kernel.sh deleted file mode 100755 index 5455a0cf8..000000000 --- a/openwrt/scripts/patch-kernel.sh +++ /dev/null @@ -1,54 +0,0 @@ -#! /bin/sh -# A little script I whipped up to make it easy to -# patch source trees and have sane error handling -# -Erik -# -# (c) 2002 Erik Andersen <andersen@codepoet.org> - -# Set directories from arguments, or use defaults. -targetdir=${1-.} -patchdir=${2-../kernel-patches} -patchpattern=${3-*} - -if [ ! -d "${targetdir}" ] ; then - echo "Aborting. '${targetdir}' is not a directory." - exit 1 -fi -if [ ! -d "${patchdir}" ] ; then - echo "Aborting. '${patchdir}' is not a directory." - exit 1 -fi - -for i in ${patchdir}/${patchpattern} ; do - case "$i" in - *.gz) - type="gzip"; uncomp="gunzip -dc"; ;; - *.bz) - type="bzip"; uncomp="bunzip -dc"; ;; - *.bz2) - type="bzip2"; uncomp="bunzip2 -dc"; ;; - *.zip) - type="zip"; uncomp="unzip -d"; ;; - *.Z) - type="compress"; uncomp="uncompress -c"; ;; - *) - type="plaintext"; uncomp="cat"; ;; - esac - [ -d "${i}" ] && echo "Ignoring subdirectory ${i}" && continue - echo "" - echo "Applying ${i} using ${type}: " - ${uncomp} ${i} | patch -p1 -E -d ${targetdir} - if [ $? != 0 ] ; then - echo "Patch failed! Please fix $i!" - exit 1 - fi -done - -# Check for rejects... -if [ "`find $targetdir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ] ; then - echo "Aborting. Reject files found." - exit 1 -fi - -# Remove backup files -find $targetdir/ '(' -name '*.orig' -o -name '.*.orig' ')' -exec rm -f {} \; diff --git a/openwrt/scripts/rstrip.sh b/openwrt/scripts/rstrip.sh deleted file mode 100755 index d9d3ad21b..000000000 --- a/openwrt/scripts/rstrip.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -SELF=${0##*/} - -[ -z "$STRIP" ] && { - echo "$SELF: strip command not defined (STRIP variable not set)" - exit 1 -} - -TARGETS=$* - -[ -z "$TARGETS" ] && { - echo "$SELF: no directories / files specified" - echo "usage: $SELF [PATH...]" - exit 1 -} - -find $TARGETS -type f -a -exec file {} \; | \ - sed -n -e 's/^\(.*\):.*ELF.*\(executable\|relocatable\|shared object\).*, not stripped/\1:\2/p' | \ -( - IFS=":" - while read F S; do - echo "$SELF: $F:$S" - eval "$STRIP $F" - done -) |