CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Ports :: Packages :: Bugs :: Links :: About :: Donors
Modified setup-helper script to handle extra collections
[initrd.git] / filesystem / setup-helper
1 #!/bin/bash
2 # post setup
3 #
4 # Johannes Winkelmann, jw at tks6 dot net
5
6 ROOT=$1
7 DB=$ROOT/var/lib/pkg/db
8
9 ## those values should be changed:
10 TMPDB=$DB.tmp
11 BACKUPDB=$DB.backup
12 PKGADD="pkgadd"
13 PKGRM="pkgrm"
14 MV="mv"
15
16
17 is_installed() {
18 printf "%s" $(pkginfo -r $ROOT -i | gawk -v r="^$1\$" '$1 ~ r {print $1}')
19 }
20
21
22 rename_packages() {
23 if [ -z "$1" ]; then
24 return
25 fi
26 pkg=$@
27
28 filter="sed "
29 runfilter="no"
30 for tuple in $@; do
31 split=($(echo $tuple|sed -e 's|:| |'))
32 if [ -n "${split[1]}" ] && [ `is_installed ${split[0]}` ]; then
33 echo "Package renamed: ${split[0]} -> ${split[1]}"
34 filter="$filter -e 's|^${split[0]}$|${split[1]}|'"
35 runfilter="yes"
36 fi
37 done
38 if [ "$runfilter" = "no" ]; then
39 return
40 fi
41
42 :> $TMPDB
43 if [ -f $DB ]; then
44 nextIsName=1
45 cat $DB|while read l; do
46 if [ $nextIsName -eq 1 ]; then
47 nextIsName=0
48 echo $l|eval $filter >> $TMPDB
49 else
50 if [ "$l" = "" ]; then
51 nextIsName=1
52 fi
53 echo $l >> $TMPDB
54 fi
55 done
56 fi
57
58 $MV $DB $BACKUPDB
59 $MV $TMPDB $DB
60 }
61
62
63 remove_packages() {
64 for package in $@; do
65 if [ `is_installed $package` ]; then
66 echo "Package removed: $package"
67 $PKGRM -r $ROOT $package
68 fi
69 done
70 }
71
72 inject_packages() {
73 for package in $@; do
74 pkg="`find core $EXTRA_COLLECTIONS \( -name \"${package}#*.pkg.tar.gz\" -o -name \"${package}#*.pkg.tar.bz2\" -o -name \"${package}#*.pkg.tar.xz\" \)&2> /dev/null`"
75 if [ -z "$pkg" ]; then
76 echo " ERROR: package $package not found on CRUX media installer"
77 else
78 if [ -z `is_installed $package` ]; then
79 echo "Package injected: $package"
80 $PKGADD -r $ROOT -f $pkg
81 else
82 echo "Package upgraded: $package"
83 $PKGADD -r $ROOT -u -f $pkg
84 fi
85 fi
86 done
87 }
88
89 ####################
90
91 if [ -z "$1" ]; then
92 echo "Usage: $0 <root>"
93 exit -1
94 fi
95
96 EXTRA_COLLECTIONS=""
97 for i in /media/crux/*; do.
98 if [ -d $i ]; then
99 if [ "$i" != "core" ] && [ "$i" != "kernel" ]; then
100 EXTRA_COLLECTIONS="$EXTRA_COLLECTIONS $i"
101 fi
102 fi
103 done
104
105 ##### # 2.7 -> 2.8 #####
106 echo "* CRUX 2.7 -> 2.8 setup-helper"
107
108 rename_packages "util-linux-ng:util-linux"
109 remove_packages module-init-tools eject
110 inject_packages kmod tzdata util-linux
111
112 if grep -q opt $EXTRA_COLLECTIONS; then
113
114 if [ `is_installed glib` ]; then
115 inject_packages libffi
116 fi
117
118 if [ `is_installed wpa_supplicant` ]; then
119 inject_packages libnl
120 fi
121 fi
122
123 if grep -q xorg $EXTRA_COLLECTIONS; then
124
125 if [ `is_installed xorg-xcb-util` ]; then
126 inject_packages xorg-xcb-util-image xorg-xcb-util-keysyms xorg-xcb-util-renderutil xorg-xcb-util-wm
127 fi
128
129 if [ `is_installed xorg-xf86-input-evdev` ]; then
130 inject_packages mtdev
131 fi
132
133 if [ `is_installed xorg-xf86-input-synaptics` ]; then
134 inject_packages mtdev
135 fi
136
137 if [ `is_installed firefox` ]; then
138 inject_packages nspr nss sqlite3
139 fi
140
141 if [ `is_installed mesa3d` ]; then
142 inject_packages glu
143 fi
144 fi
145
146 # force replacement of /etc/mtab with symlink
147 ln -sf /proc/self/mounts $ROOT/etc/mtab