[maemo-commits] [maemo-commits] r9978 - projects/haf/trunk/dpkg/scripts
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri Feb 16 18:10:22 EET 2007
- Previous message: [maemo-commits] r9977 - projects/haf/trunk/dpkg/scripts
- Next message: [maemo-commits] r9980 - projects/haf/trunk/dpkg/scripts
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: marivoll
Date: 2007-02-16 18:10:21 +0200 (Fri, 16 Feb 2007)
New Revision: 9978
Added:
projects/haf/trunk/dpkg/scripts/cleanup-info.sh
projects/haf/trunk/dpkg/scripts/dpkg-divert.sh
projects/haf/trunk/dpkg/scripts/install-info.sh
projects/haf/trunk/dpkg/scripts/update-alternatives.sh
Log:
Alternatives for maemo.
Added: projects/haf/trunk/dpkg/scripts/cleanup-info.sh
===================================================================
--- projects/haf/trunk/dpkg/scripts/cleanup-info.sh 2007-02-16 16:09:50 UTC (rev 9977)
+++ projects/haf/trunk/dpkg/scripts/cleanup-info.sh 2007-02-16 16:10:21 UTC (rev 9978)
@@ -0,0 +1,3 @@
+#!/bin/sh
+exit 0
+
Added: projects/haf/trunk/dpkg/scripts/dpkg-divert.sh
===================================================================
--- projects/haf/trunk/dpkg/scripts/dpkg-divert.sh 2007-02-16 16:09:50 UTC (rev 9977)
+++ projects/haf/trunk/dpkg/scripts/dpkg-divert.sh 2007-02-16 16:10:21 UTC (rev 9978)
@@ -0,0 +1,285 @@
+#!/bin/sh
+
+version='1.0.11'; # This line modified by Makefile
+admindir="/var/lib/dpkg"; # This line modified by Makefile
+dpkglibdir="/usr/lib/dpkg"; # This line modified by Makefile
+
+testmode=0
+dorename=0
+pattern='.*'
+verbose=1
+mode='';
+divs=$admindir/diversions
+
+
+die(){
+ echo "$@"
+ exit 1;
+}
+
+quit() {
+ echo "dpkg-divert: $@"
+ exit 2;
+}
+
+enoent=`$dpkglibdir/enoent` || die "Cannot get ENOENT value from $dpkglibdir/enoent: $!"
+ENOENT(){
+ $enoent
+}
+
+showversion(){
+ echo -e "Debian dpkg-divert $version.\n" || die "failed to write version: $!"
+}
+
+usage(){
+ showversion
+ cat <<EOF
+Copyright (C) 1995 Ian Jackson.
+Copyright (C) 2000,2001 Wichert Akkerman.
+Copyright (C) 2006 Yauheni Kaliuta
+
+This is free software; see the GNU General Public Licence version 2 or later
+for copying conditions. There is NO warranty.
+
+Usage:
+
+ dpkg-divert [options] [--add] <file> - add a diversion
+ dpkg-divert [options] --remove <file> - remove the diversion
+ dpkg-divert [options] --list [<glob-pattern>] - show file diversions
+ dpkg-divert [options] --truename <file> - return the diverted file
+
+Options:
+ --package <package> name of the package whose copy of <file>
+ will not be diverted.
+ --local all packages' versions are diverted.
+ --divert <divert-to> the name used by other packages' versions.
+ --rename actually move the file aside (or back).
+ --quiet quiet operation, minimal output
+ --test don't do anything, just demonstrate
+ --help print this help screen and exit
+ --version output version and exit
+ --admindir <directory> set the directory with the diversions file
+
+When adding, default is --local and --divert <original>.distrib.
+When removing, --package or --local and --divert must match if specified.
+Package preinst/postrm scripts should always specify --package and --divert.
+EOF
+}
+
+badusage() {
+ echo -e "dpkg-divert: $@\n\n"
+ echo "You need --help"
+ exit 2
+}
+
+
+checkmanymodes() {
+ [ x"$mode" = x ] && return
+ badusage "two modes specified: $1 and --$mode"
+}
+
+
+
+checkrename() {
+ [ x$dorename = x0 ] && return
+ rsrc=$1
+ rdest=$2
+ set -e
+ touch $rsrc.dpkg-devert.tmp
+ touch $rdest.dpkg-devert.tmp
+ rm $rsrc.dpkg-devert.tmp $rdest.dpkg-devert.tmp
+ set +e
+}
+
+save() {
+ divs=$1
+ set -e
+ mv $divs $divs-old
+ mv $divs-new $divs
+ set +e
+}
+
+dorename() {
+ [ x$dorename = x0 -o x$testmode != x0 ] && return
+ mv $1 $2
+}
+
+truename() {
+ file=$1
+ handler='BEGIN {n = 0}
+ n == 0 && $1 == name { file = $1; n = 3 ; next }
+ n == 0 { file=$1; n = 1; next; }
+ n == 1 { n =2 ; next }
+ n == 2 { n = 0; }
+ n == 3 { print file, $1; n =4; }
+ n == 4 { exit } '
+ awk -v name=$file "$handler" < $divs
+}
+
+while [ "$1" != "" ]; do
+ case $1
+ in
+ --help)
+ usage
+ exit 0;;
+ --version)
+ showversion
+ exit 0;;
+ --test)
+ testmode=1
+ shift;;
+ --rename)
+ dorename=1
+ shift;;
+ --quiet)
+ verbose=0
+ shift;;
+ --local)
+ package=':'
+ shift;;
+ --add|--remove|--truename)
+# [ x"${2%%--*}" = x -a x"$1" ] && badusage "$1 needs a argument"
+ checkmanymodes $1
+ mode="${1##--}"
+ shift
+# file="$2"
+# [ x"$file" != x`echo $file | tr -d '\n'` ] && badusage "file may not contain newlines"
+# shift 2
+ ;;
+ --list)
+ checkmanymodes $1
+ mode="list"
+ if [ x"${2%%--*}" != x ]; then
+ pattern="$2"
+ shift
+ fi
+ shift;;
+ --divert)
+ [ x"${2%%--*}" = x ] && badusage "$1 needs a argument"
+ divertto="$2"
+ [ x"$divertto" != x`echo $divertto | tr -d '\n'` ] && badusage "divert-to may not contain newlines"
+ shift 2;;
+ --package)
+ [ x"${2%%--*}" = x ] && badusage "$1 needs a argument"
+ package="$2"
+ [ x"$package" != x`echo $package | tr -d '\n'` ] && badusage "package may not contain newlines"
+ shift 2;;
+ --admindir)
+ [ x"${2%%--*}" = x ] && badusage "$1 needs a argument"
+ admindir="$2"
+ shift 2;;
+ --*)
+ echo "Unknown option $1"
+ exit;;
+ *)
+ [ x"$file" = x ] || badusage "too many arguments"
+ file="$1"
+ [ x"$file" != x`echo $file | tr -d '\n'` ] && badusage "file may not contain newlines"
+ shift;;
+ esac
+done
+
+
+[ x$mode = x ] && mode='add'
+
+parser='BEGIN {n = 0};
+ n == 0 { file=$1; n = 1; next; } ;
+ n == 1 { alts[file] = $1; n = 2; next; };
+ n == 2 { packages[file] = $1; n = 0; }'
+
+case $mode in
+ add)
+ echo $file | grep -q '^/' || badusage "filename $file is not absolute"
+ [ -d "$file" ] && badusage "Cannot divert directories"
+ [ x"$divertto" = x ] && divertto="$file.distrib"
+ echo $divertto | grep -q '^/' || badusage "filename $divertto is not absolute"
+ [ x"$package" = x ] && package=':'
+
+ handler='END {
+ for (file in alts) {
+ if( file == dfile || alts[file] == dfile ||
+ file == divertto || alts[file] == divertto) {
+ if( file == dfile && alts[file] == divertto && package == packages[file])
+ exit 101;
+ exit 102;
+ }
+ }
+ file = dfile; alts[file] = divertto; packages[file] = package;
+ for (file in alts) { print file; print alts[file]; print packages[file]; }
+ } '
+ awk -v dfile=$file -v divertto=$divertto -v package=$package \
+ "$parser $handler" < $divs > $divs-new
+ ret=$?
+ case $ret in
+ 101)
+ echo "Leaving diversion unchanged"
+ exit 0;;
+ 102)
+ quit "Diversion clashes with other" ;;
+ 0)
+ ;;
+ *)
+ quit "Unknown awk retcode $ret";;
+ esac
+ checkrename $file $divertto
+ save $divs
+ dorename $file $divertto
+ exit 0
+ ;;
+ remove)
+ handler='END {
+ for (file in alts) {
+ if(file != dfile)
+ continue;
+ if ((divertto != "") && (alts[file] != divertto))
+ exit 101;
+ if ((package != "") && (packages[file] != package))
+ exit 102;
+ delete alts[file];
+ delete packages[file];
+ for (file in alts) { print file; print alts[file]; print packages[file]; }
+ exit 0;
+ }
+ exit 103;
+ } '
+ awk -v dfile=$file -v divertto="$divertto" -v package="$package" \
+ "$parser $handler" < $divs > $divs-new
+ ret=$?
+ case $ret in
+ 101)
+ quit "Mismatch on divert-to";;
+ 102)
+ quit "Mismatch on package" ;;
+ 103)
+ quit "Unknown diversion";;
+ 0)
+ ;;
+ *)
+ quit "Unknown awk retcode $ret";;
+ esac
+# dorename=1
+ divertto=`truename $file | cut -d" " -f 2`
+ checkrename $divertto $file
+ save $divs
+ dorename $divertto $file
+ exit 0
+
+ ;;
+ list)
+ handler='BEGIN {n = 0; toprint=""};
+ (n == 0) && ($1 ~ reg) { toprint = $1 }
+ n == 0 { file=$1; n = 1; next; } ;
+ (n == 1) && ($1 ~ reg) { toprint = file };
+ n == 1 { alts = $1; n = 2; next; };
+ (n == 2) && ($1 ~ reg) { toprint = file };
+ (n == 2) && (toprint != "") { print toprint; print alts; print $1 };
+ n == 2 { n = 0; toprint = ""}'
+
+ awk -v reg=$pattern "$handler" < $divs
+ ;;
+ truename)
+ truename $file
+ ;;
+ *)
+ ;;
+esac
Added: projects/haf/trunk/dpkg/scripts/install-info.sh
===================================================================
--- projects/haf/trunk/dpkg/scripts/install-info.sh 2007-02-16 16:09:50 UTC (rev 9977)
+++ projects/haf/trunk/dpkg/scripts/install-info.sh 2007-02-16 16:10:21 UTC (rev 9978)
@@ -0,0 +1,3 @@
+#!/bin/sh
+exit 0
+
Added: projects/haf/trunk/dpkg/scripts/update-alternatives.sh
===================================================================
--- projects/haf/trunk/dpkg/scripts/update-alternatives.sh 2007-02-16 16:09:50 UTC (rev 9977)
+++ projects/haf/trunk/dpkg/scripts/update-alternatives.sh 2007-02-16 16:10:21 UTC (rev 9978)
@@ -0,0 +1,147 @@
+#!/bin/sh
+
+version='0.0.1'; # This line modified by Makefile
+admindir="/var/lib/dpkg"; # This line modified by Makefile
+
+testmode=0
+verbose=1
+mode='';
+alts=$admindir/alternatives
+altsd="/etc/alternatives"
+genname=""
+symlink=""
+altern=""
+priority=""
+
+
+die(){
+ echo "$@"
+ exit 1;
+}
+
+quit() {
+ echo "update-alternatives: $@"
+ exit 2;
+}
+showversion(){
+ echo -e "Debian another update-alternatives $version.\n" || die "failed to write version: $!"
+}
+
+usage(){
+ showversion
+ cat <<EOF
+Copyright (C) 2006 Yauheni Kaliuta
+
+This is free software; see the GNU General Public Licence version 2
+for copying conditions. There is NO warranty.
+
+Usage:
+
+ update-alternatives [options] --install genname symlink altern priority [--slave genname symlink altern]
+ update-alternatives [options] --remove name path
+
+Options:
+ --verbose
+ --quiet
+ --test
+ not emplemented
+ --version
+ --altdir directory
+ --admindir directory
+EOF
+}
+
+badusage() {
+ echo -e "update-alternatives: $*\n\n"
+ echo "You need --help"
+ exit 2
+}
+
+
+checkmanymodes() {
+ [ x"$mode" = x ] && return
+ badusage "two modes specified: $1 and --$mode"
+}
+
+
+install() {
+ ln -sf "$altsd/$2" "$1"
+ ln -sf "$3" "$altsd/$2"
+}
+
+slave() {
+ install "$@"
+}
+
+remove() {
+ return 0
+ rm -f "$altsd/$1"
+}
+
+while [ "$1" != "" ]; do
+ case $1
+ in
+ -h|--help)
+ usage
+ exit 0;;
+ -V|--version)
+ showversion
+ exit 0;;
+ --test)
+ testmode=1
+ shift;;
+ -v|--verbose)
+ verbose=1
+ shift;;
+ --quiet)
+ verbose=0
+ shift;;
+ --install)
+ checkmanymodes "$1"
+ mode="${1##--}"
+ genname="$2"
+ symlink="$3"
+ altern="$4"
+ priority="$5"
+ [ x$genname = x -o x$symlink = x -o x$altern = x -o x$priority = x ] && badusage "wrong install arguments"
+ install "$genname" "$symlink" "$altern" "$priority"
+ shift 5;;
+ --slave)
+ [ x$mode = xinstall ] || badusage "$1 used only with install"
+ slave "$2" "$3" "$4"
+ shift 4;;
+ --remove)
+ checkmanymodes "$1"
+ mode="${1##--}"
+ symlink="$2"
+ altern="$3"
+ shift 3;;
+ --remove-all)
+ checkmanymodes "$1"
+ mode=removeall
+ symlink="$2"
+ shift 2;;
+ --all|--auto|--display|--list|--config)
+ checkmanymodes $1
+ echo "$1 unemplemented"
+ exit 0;;
+ --*)
+ echo "Unknown option $1"
+ exit;;
+ *)
+ [ x"$file" = x ] || badusage "too many arguments"
+ file="$1"
+ shift;;
+ esac
+done
+
+[ x$mode = x ] && badusage "no mode specifies"
+
+case "$mode" in
+ remove|removeall)
+ remove "$symlink" "$altern"
+ ;;
+ *)
+ ;;
+esac
+
- Previous message: [maemo-commits] r9977 - projects/haf/trunk/dpkg/scripts
- Next message: [maemo-commits] r9980 - projects/haf/trunk/dpkg/scripts
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
