summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rwxr-xr-xmkipks35
-rwxr-xr-xscripts/ipkg-build194
-rwxr-xr-xscripts/ipkg-unbuild29
3 files changed, 241 insertions, 17 deletions
diff --git a/mkipks b/mkipks
index 21b903c..26c72b9 100755
--- a/mkipks
+++ b/mkipks
@@ -1,231 +1,232 @@
1#!/bin/sh 1#!/bin/sh
2 2
3QTE_VERSION=2.3.2 3QTE_VERSION=2.3.2
4DEB_VERSION=2.0 4DEB_VERSION=2.0
5 5
6# Have to do this here, since CVS can't store symlinks 6# Have to do this here, since CVS can't store symlinks
7mkdir -p etc/rc2.d 7mkdir -p etc/rc2.d
8rm -f etc/rc2.d/S98opie 8rm -f etc/rc2.d/S98opie
9ln -s ../init.d/opie etc/rc2.d/S98opie 9ln -s ../init.d/opie etc/rc2.d/S98opie
10 10
11rm -f ipaq/etc/rc2.d/S96opieatd 11rm -f ipaq/etc/rc2.d/S96opieatd
12ln -s ../init.d/opieatd ipaq/etc/rc2.d/S96opieatd 12ln -s ../init.d/opieatd ipaq/etc/rc2.d/S96opieatd
13 13
14VERSION_MAJ=$(sed -n -e 's/.*QPE_VERSION "\([0-9]*\)\..*\..*".*/\1/p' <$OPIEDIR/include/qpe/version.h) 14VERSION_MAJ=$(sed -n -e 's/.*QPE_VERSION "\([0-9]*\)\..*\..*".*/\1/p' <$OPIEDIR/include/qpe/version.h)
15VERSION_MIN=$(sed -n -e 's/.*QPE_VERSION ".*\.\([0-9]*\)\..*".*/\1/p' <$OPIEDIR/include/qpe/version.h) 15VERSION_MIN=$(sed -n -e 's/.*QPE_VERSION ".*\.\([0-9]*\)\..*".*/\1/p' <$OPIEDIR/include/qpe/version.h)
16VERSION_PAT=$(sed -n -e 's/.*QPE_VERSION ".*\..*\.\([0-9]*\).*/\1/p' <$OPIEDIR/include/qpe/version.h) 16VERSION_PAT=$(sed -n -e 's/.*QPE_VERSION ".*\..*\.\([0-9]*\).*/\1/p' <$OPIEDIR/include/qpe/version.h)
17SUB_VERSION=$(sed -n -e 's,.*SUB_VERSION \"\(.*\)\".*,\1,p' <$OPIEDIR/include/qpe/version.h) 17SUB_VERSION=$(sed -n -e 's,.*SUB_VERSION \"\(.*\)\".*,\1,p' <$OPIEDIR/include/qpe/version.h)
18if grep -q 'QPE_VERSION .*snapshot' $OPIEDIR/include/qpe/version.h 18if grep -q 'QPE_VERSION .*snapshot' $OPIEDIR/include/qpe/version.h
19then 19then
20 VERSION_CVS="$(date +%Y%m%d)" 20 VERSION_CVS="$(date +%Y%m%d)"
21 SUB_VERSION=$VERSION_CVS 21 SUB_VERSION=$VERSION_CVS
22else 22else
23 VERSION_CVS="" 23 VERSION_CVS=""
24fi 24fi
25 25
26QPE_VERSION=$VERSION_MAJ.$VERSION_MIN.$VERSION_PAT 26QPE_VERSION=$VERSION_MAJ.$VERSION_MIN.$VERSION_PAT
27 27
28ARCH=arm 28ARCH=arm
29STRIP=arm-linux-strip 29STRIP=arm-linux-strip
30STRIP_FILES="*ARM*not stripped" 30STRIP_FILES="*ARM*not stripped"
31 31
32TDIR=/tmp/ipk$$ 32TDIR=/tmp/ipk$$
33DATADIR=$TDIR/data 33DATADIR=$TDIR
34CTRLDIR=$TDIR/control 34CTRLDIR=$TDIR/CONTROL
35 35
36IMAGEDIR= 36IMAGEDIR=
37VERB= 37VERB=
38LIST= 38LIST=
39RPM= 39RPM=
40 40
41while [ $# -ne 0 ] 41while [ $# -ne 0 ]
42do 42do
43 case "$1" in 43 case "$1" in
44 -v) 44 -v)
45 VERB=1 45 VERB=1
46 echo >&2 "Packaging for version $VERSION_MAJ.$VERSION_MIN.$VERSION_PAT$VERSION_CVS" 46 echo >&2 "Packaging for version $VERSION_MAJ.$VERSION_MIN.$VERSION_PAT$VERSION_CVS"
47 ;; -l) 47 ;; -l)
48 LIST=1 48 LIST=1
49 ;; -i) 49 ;; -i)
50 shift 50 shift
51 IMAGEDIR=$1 51 IMAGEDIR=$1
52 DATADIR=$IMAGEDIR 52 DATADIR=$IMAGEDIR
53 mkdir -p $IMAGEDIR 53 mkdir -p $IMAGEDIR
54 ;; -rpm) 54 ;; -rpm)
55 if [ "$OPIEDIR" != "/opt/Qtopia" ] 55 if [ "$OPIEDIR" != "/opt/Qtopia" ]
56 then 56 then
57 echo >&2 '$OPIEDIR is not the standard /usr/Qtopia directory.' 57 echo >&2 '$OPIEDIR is not the standard /usr/Qtopia directory.'
58 sleep 1 58 sleep 1
59 #exit 1 59 #exit 1
60 fi 60 fi
61 RPM=1 61 RPM=1
62 ;; -arch) 62 ;; -arch)
63 shift 63 shift
64 ARCH=$1 64 ARCH=$1
65 STRIP= 65 STRIP=
66 STRIP_FILES= 66 STRIP_FILES=
67 ;; /*) 67 ;; /*)
68 FILES="$FILES $1" 68 FILES="$FILES $1"
69 ;; *) 69 ;; *)
70 FILES="$FILES $PWD/$1" 70 FILES="$FILES $PWD/$1"
71 esac 71 esac
72 shift 72 shift
73done 73done
74 74
75 75
76if [ -z "$FILES" ] 76if [ -z "$FILES" ]
77then 77then
78 FILES=`find $OPIEDIR -name "*.control" -print` 78 FILES=`find $OPIEDIR -name "*.control" -print`
79fi 79fi
80 80
81RDIR=$PWD 81RDIR=$PWD
82cd $OPIEDIR 82cd $OPIEDIR
83 83
84for i in $FILES 84for i in $FILES
85do 85do
86 rm -rf $TDIR 86 rm -rf $TDIR
87 87
88 mkdir -p $DATADIR 88 mkdir -p $DATADIR
89 mkdir -p $CTRLDIR 89 mkdir -p $CTRLDIR
90 90
91 packagename=${i##*/}; packagename=${packagename%.control} 91 packagename=${i##*/}; packagename=${packagename%.control}
92 version=$(eval echo '"'$(sed -n -e "s/^Version: *//p" $i)'"') 92 version=$(eval echo '"'$(sed -n -e "s/^Version: *//p" $i)'"')
93 depends=$(eval echo '"'$(sed -n -e "s/^Depends: *//p" $i)'"') 93 depends=$(eval echo '"'$(sed -n -e "s/^Depends: *//p" $i)'"')
94 files=$(eval echo $(sed -n -e "s/^Files://p" $i)) 94 files=$(eval echo $(sed -n -e "s/^Files://p" $i))
95 arch=$(eval echo $(sed -n -e "s/^Arch://p" $i)) 95 arch=$(eval echo $(sed -n -e "s/^Arch://p" $i))
96 section=$(sed -n -e "s/^Section: *//p" $i) 96 section=$(sed -n -e "s/^Section: *//p" $i)
97 provides=$(sed -n -e "s/^Provides: *//p" $i) 97 provides=$(sed -n -e "s/^Provides: *//p" $i)
98 conflicts=$(sed -n -e "s/^Conflicts: *//p" $i) 98 conflicts=$(sed -n -e "s/^Conflicts: *//p" $i)
99 license=$(sed -n -e "s/^License: *//p" $i) 99 license=$(sed -n -e "s/^License: *//p" $i)
100 summary=$(sed -n -e "s/^Description: *//p" $i) 100 summary=$(sed -n -e "s/^Description: *//p" $i)
101 package=${packagename}_${version}_$ARCH 101 package=${packagename}_${version}_$ARCH
102 ERROR= 102 ERROR=
103 if [ -z "$files" ] 103 if [ -z "$files" ]
104 then 104 then
105 mkdir -p $DATADIR/usr/share/doc/$packagename 105 mkdir -p $DATADIR/usr/share/doc/$packagename
106 else 106 else
107 for f in $files 107 for f in $files
108 do 108 do
109 if [ -d $f ] 109 if [ -d $f ]
110 then 110 then
111 ffiles=$(find $f -type f -o -type b -o -type c -o -type l) 111 ffiles=$(find $f -type f -o -type b -o -type c -o -type l)
112 else 112 else
113 ffiles=$f 113 ffiles=$f
114 fi 114 fi
115 for ff in $ffiles 115 for ff in $ffiles
116 do 116 do
117 case $ff in 117 case $ff in
118 */CVS/*) 118 */CVS/*)
119 continue 119 continue
120 ;;*~) 120 ;;*~)
121 continue 121 continue
122 ;;*.control) 122 ;;*.control)
123 continue 123 continue
124 ;; $QTDIR/*) 124 ;; $QTDIR/*)
125 BASE=$(dirname /opt/QtPalmtop/${ff#$QTDIR/}) 125 BASE=$(dirname /opt/QtPalmtop/${ff#$QTDIR/})
126 ;; etc/*.d/*) 126 ;; etc/*.d/*)
127 BASE=$(dirname /$ff) 127 BASE=$(dirname /$ff)
128 ;; ipaq/*) 128 ;; ipaq/*)
129 BASE=$(dirname ${ff#ipaq}) 129 BASE=$(dirname ${ff#ipaq})
130 ;; *) 130 ;; *)
131 # For SHARP ROM compatibility. Should change to Qtopia. 131 # For SHARP ROM compatibility. Should change to Qtopia.
132 BASE=/opt/QtPalmtop/$(dirname $ff) 132 BASE=/opt/QtPalmtop/$(dirname $ff)
133 esac 133 esac
134 134
135 if [ -f $ff -o -b $ff -o -c $ff ] 135 if [ -f $ff -o -b $ff -o -c $ff ]
136 then 136 then
137 D=$DATADIR$BASE 137 D=$DATADIR$BASE
138 if [ -x $ff -a -n "$STRIP" ] 138 if [ -x $ff -a -n "$STRIP" ]
139 then 139 then
140 case $(file $ff) in 140 case $(file $ff) in
141 $STRIP_FILES) 141 $STRIP_FILES)
142 $STRIP $ff 142 $STRIP $ff
143 ;; *) 143 ;; *)
144 esac 144 esac
145 fi 145 fi
146 if [ -n "$RPM" ] 146 if [ -n "$RPM" ]
147 then 147 then
148 case "$ff" in 148 case "$ff" in
149 /*) RPMFILES="$RPMFILES $ff" 149 /*) RPMFILES="$RPMFILES $ff"
150 ;; *) RPMFILES="$RPMFILES $OPIEDIR/$ff" 150 ;; *) RPMFILES="$RPMFILES $OPIEDIR/$ff"
151 esac 151 esac
152 else 152 else
153 mkdir -p $D 153 mkdir -p $D
154 if cp -a $ff $D 154 if cp -a $ff $D
155 then 155 then
156 true 156 true
157 else 157 else
158 ERROR=1 158 ERROR=1
159 fi 159 fi
160 fi 160 fi
161 else 161 else
162 echo >&2 "$0: $i: No such file: $ff" 162 echo >&2 "$0: $i: No such file: $ff"
163 ERROR=1 163 ERROR=1
164 fi 164 fi
165 done 165 done
166 done 166 done
167 fi 167 fi
168 if [ -z "$ERROR" ] 168 if [ -z "$ERROR" ]
169 then 169 then
170 if [ -n "$RPM" ] 170 if [ -n "$RPM" ]
171 then 171 then
172 SPEC=/tmp/mkipks-rpm-$$.spec 172 SPEC=/tmp/mkipks-rpm-$$.spec
173 echo >$SPEC "Summary: $summary" 173 echo >$SPEC "Summary: $summary"
174 echo >>$SPEC "Name: $packagename" 174 echo >>$SPEC "Name: $packagename"
175 echo >>$SPEC "Group: $section" ########## 175 echo >>$SPEC "Group: $section" ##########
176 echo >>$SPEC "License: $license" 176 echo >>$SPEC "License: $license"
177 echo >>$SPEC "Version: ${version%-*}" 177 echo >>$SPEC "Version: ${version%-*}"
178 echo >>$SPEC "Release: ${version#*-}" 178 echo >>$SPEC "Release: ${version#*-}"
179 179
180 echo >>$SPEC "%description" 180 echo >>$SPEC "%description"
181 sed -n -e '/^Description:/,$ p' $i | tail +2 >>$SPEC 181 sed -n -e '/^Description:/,$ p' $i | tail +2 >>$SPEC
182 echo >>$SPEC "%files" 182 echo >>$SPEC "%files"
183 echo >>$SPEC "%defattr(-,root,root)" 183 echo >>$SPEC "%defattr(-,root,root)"
184 /bin/ls $RPMFILES >>$SPEC 184 /bin/ls $RPMFILES >>$SPEC
185 rpm -bb --target $ARCH-unknown-linux $SPEC 185 rpm -bb --target $ARCH-unknown-linux $SPEC
186 # rm $SPEC 186 # rm $SPEC
187 elif [ -z "$IMAGEDIR" ] 187 elif [ -z "$IMAGEDIR" ]
188 then 188 then
189 #size=$(du -h -s $DATADIR | sed -e 's/[ ].*//') 189 #size=$(du -h -s $DATADIR | sed -e 's/[ ].*//')
190 size=$(mkfs.jffs2 -r $DATADIR | wc -c) 190 if (which mkfs.jffs2 >/dev/null 2>&1); then
191 size=$(mkfs.jffs2 -r $DATADIR | wc -c)
192 fi
191 echo "Package: $packagename" >$CTRLDIR/control 193 echo "Package: $packagename" >$CTRLDIR/control
194 if [ ! -z "$size" ]; then
192 echo "Installed-Size: $size" >>$CTRLDIR/control 195 echo "Installed-Size: $size" >>$CTRLDIR/control
196 else
197 echo "Warning, no mkfs.jffs2 found, unable to set Installed-Size."
198 fi
199 echo "Architecture: $ARCH" >>$CTRLDIR/control
193 echo "Filename: ./$package.ipk" >>$CTRLDIR/control 200 echo "Filename: ./$package.ipk" >>$CTRLDIR/control
194 echo "Version: $version" >>$CTRLDIR/control 201 echo "Version: $version" >>$CTRLDIR/control
195 echo "Depends: $depends" >>$CTRLDIR/control 202 [ ! -z "$depends" ] && echo "Depends: $depends" >>$CTRLDIR/control
196 echo "Provides: $provides" >>$CTRLDIR/control 203 [ ! -z "$provides" ] && echo "Provides: $provides" >>$CTRLDIR/control
197 echo "Conflicts: $conflicts" >>$CTRLDIR/control 204 [ ! -z "$conflicts" ] && echo "Conflicts: $conflicts" >>$CTRLDIR/control
198 egrep -v "^(Files|Version|Depends|Provides|Conflicts):" >>$CTRLDIR/control $i 205 egrep -v "^(Files|Version|Depends|Provides|Conflicts|Architecture):" >>$CTRLDIR/control $i
199 echo "$DEB_VERSION" >$TDIR/debian-binary 206 # echo "$DEB_VERSION" >$TDIR/debian-binary
200 base=${i%.control} 207 base=${i%.control}
201 scripts="preinst postinst prerm postrm" 208 scripts="preinst postinst prerm postrm"
202 for pf in $scripts 209 for pf in $scripts
203 do 210 do
204 if [ -x ${base}.$pf ] 211 if [ -x ${base}.$pf ]
205 then 212 then
206 cp ${base}.$pf $CTRLDIR/$pf 213 cp ${base}.$pf $CTRLDIR/$pf
207 fi 214 fi
208 done 215 done
209 if [ "$UID" = 0 ] 216 $OPIEDIR/scripts/ipkg-build -o root -g root $TDIR
210 then
211 chown -R root.root $TDIR
212 else
213 echo "Warning: You are not root. Unable to squash permissions."
214 fi
215 ( cd $CTRLDIR; tar cfz ../control.tar.gz ./*; )
216 ( cd $DATADIR; tar cfz ../data.tar.gz ./*; )
217 ( cd $TDIR; rm -rf control data; tar cf - ./debian-binary ./control.tar.gz ./data.tar.gz; ) | gzip >$RDIR/$package.ipk
218 RESULT=$package.ipk 217 RESULT=$package.ipk
219 if [ -n "$VERB" ] 218 if [ -n "$VERB" ]
220 then 219 then
221 echo >&2 "Built $RESULT ($size)" 220 echo >&2 "Built $RESULT ($size)"
222 fi 221 fi
223 if [ -n "$LIST" ] 222 if [ -n "$LIST" ]
224 then 223 then
225 echo $RESULT 224 echo $RESULT
226 fi 225 fi
227 fi 226 fi
228 else 227 else
229 echo >&2 "Not building $package package" 228 echo >&2 "Not building $package package"
230 fi 229 fi
231done 230done
231# clean up
232rm -rf $TDIR
diff --git a/scripts/ipkg-build b/scripts/ipkg-build
new file mode 100755
index 0000000..ac8f286
--- a/dev/null
+++ b/scripts/ipkg-build
@@ -0,0 +1,194 @@
1#!/bin/bash
2
3# ipkg-build -- construct a .ipk from a directory
4# Carl Worth <cworth@east.isi.edu>
5# based on a script by Steve Redler IV, steve@sr-tech.com 5-21-2001
6set -e
7
8ipkg_extract_value() {
9 sed -e "s/^[^:]*:[[:space:]]*//"
10}
11
12required_field() {
13 field=$1
14
15 value=`grep "^$field:" < $CONTROL/control | ipkg_extract_value`
16 if [ -z "$value" ]; then
17 echo "*** Error: $CONTROL/control is missing field $field" >&2
18 return 1
19 fi
20 echo $value
21 return 0
22}
23
24pkg_appears_sane() {
25 local pkg_dir=$1
26
27 local owd=`pwd`
28 cd $pkg_dir
29
30 PKG_ERROR=0
31
32 tilde_files=`find . -name '*~'`
33 if [ -n "$tilde_files" ]; then
34 echo "*** Warning: The following files have names ending in '~'.
35You probably want to remove them: " >&2
36 ls -ld $tilde_files
37 echo >&2
38 fi
39
40 large_uid_files=`find . -uid +99`
41
42 if [ "$ogargs" = "" ] && [ -n "$large_uid_files" ]; then
43 echo "*** Warning: The following files have a UID greater than 99.
44You probably want to chown these to a system user: " >&2
45 ls -ld $large_uid_files
46 echo >&2
47 fi
48
49
50 if [ ! -f "$CONTROL/control" ]; then
51 echo "*** Error: Control file $pkg_dir/$CONTROL/control not found." >&2
52 cd $owd
53 return 1
54 fi
55
56 pkg=`required_field Package`
57 [ "$?" -ne 0 ] && PKG_ERROR=1
58
59 version=`required_field Version | sed 's/.*://;'`
60 [ "$?" -ne 0 ] && PKG_ERROR=1
61
62 arch=`required_field Architecture`
63 [ "$?" -ne 0 ] && PKG_ERROR=1
64
65 required_field Maintainer >/dev/null
66 [ "$?" -ne 0 ] && PKG_ERROR=1
67
68 required_field Description >/dev/null
69 [ "$?" -ne 0 ] && PKG_ERROR=1
70
71 section=`required_field Section`
72 [ "$?" -ne 0 ] && PKG_ERROR=1
73 if [ -z "$section" ]; then
74 echo "The Section field should have one of the following values:" >&2
75 echo "admin, base, comm, editors, extras, games, graphics, kernel, libs, misc, net, text, web, x11" >&2
76 fi
77
78 priority=`required_field Priority`
79 [ "$?" -ne 0 ] && PKG_ERROR=1
80 if [ -z "$priority" ]; then
81 echo "The Priority field should have one of the following values:" >&2
82 echo "required, important, standard, optional, extra." >&2
83 echo "If you don't know which priority value you should be using, then use \`optional'" >&2
84 fi
85
86 if echo $pkg | grep '[^a-z0-9.+-]'; then
87 echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2
88 PKG_ERROR=1;
89 fi
90
91 local bad_fields=`sed -ne 's/^\([^[:space:]][^:[:space:]]\+[[:space:]]\+\)[^:].*/\1/p' < $CONTROL/control | sed -e 's/\\n//'`
92 if [ -n "$bad_fields" ]; then
93 bad_fields=`echo $bad_fields`
94 echo "*** Error: The following fields in $CONTROL/control are missing a ':'" >&2
95 echo "$bad_fields" >&2
96 echo "ipkg-build: This may be due to a missing initial space for a multi-line field value" >&2
97 PKG_ERROR=1
98 fi
99
100 for script in $CONTROL/preinst $CONTROL/postinst $CONTROL/prerm $CONTROL/postrm; do
101 if [ -f $script -a ! -x $script ]; then
102 echo "*** Error: package script $script is not executable" >&2
103 PKG_ERROR=1
104 fi
105 done
106
107 if [ -f $CONTROL/conffiles ]; then
108 for cf in `cat $CONTROL/conffiles`; do
109 if [ ! -f ./$cf ]; then
110 echo "*** Error: $CONTROL/conffiles mentions conffile $cf which does not exist" >&2
111 PKG_ERROR=1
112 fi
113 done
114 fi
115
116 cd $owd
117 return $PKG_ERROR
118}
119
120###
121# ipkg-build "main"
122###
123ogargs=""
124usage="Usage: $0 [-o owner] [-g group] <pkg_directory> [<destination_directory>]"
125while getopts ":o:g:" opt; do
126 case $opt in
127 o ) owner=$OPTARG
128 ogargs="--owner=$owner"
129 ;;
130 g ) group=$OPTARG
131 ogargs="$ogargs --group=$group"
132 ;;
133 \? ) echo $usage >&2
134 esac
135done
136
137
138shift $(($OPTIND - 1))
139
140# continue on to process additional arguments
141
142case $# in
1431)
144 dest_dir=.
145 ;;
1462)
147 dest_dir=$2
148 ;;
149*)
150 echo echo $usage >&2
151 exit 1
152 ;;
153esac
154
155pkg_dir=$1
156
157if [ ! -d $pkg_dir ]; then
158 echo "*** Error: Directory $pkg_dir does not exist" >&2
159 exit 1
160fi
161
162# CONTROL is second so that it takes precedence
163CONTROL=
164[ -d $pkg_dir/DEBIAN ] && CONTROL=DEBIAN
165[ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL
166if [ -z "$CONTROL" ]; then
167 echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2
168 exit 1
169fi
170
171if ! pkg_appears_sane $pkg_dir; then
172 echo >&2
173 echo "ipkg-build: Please fix the above errors and try again." >&2
174 exit 1
175fi
176
177tmp_dir=$dest_dir/IPKG_BUILD.$$
178mkdir $tmp_dir
179
180tar $ogargs -C $pkg_dir -czf $tmp_dir/data.tar.gz . --exclude=$CONTROL
181tar $ogargs -C $pkg_dir/$CONTROL -czf $tmp_dir/control.tar.gz .
182
183echo "2.0" > $tmp_dir/debian-binary
184
185pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk
186here_dir=$PWD
187## tar -C $tmp_dir -czf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz
188rm -f $pkg_file
189cd $tmp_dir ; ar crf $here_dir/$pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz
190cd $here_dir
191rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz
192rmdir $tmp_dir
193
194echo "Packaged contents of $pkg_dir into $pkg_file"
diff --git a/scripts/ipkg-unbuild b/scripts/ipkg-unbuild
new file mode 100755
index 0000000..f724f75
--- a/dev/null
+++ b/scripts/ipkg-unbuild
@@ -0,0 +1,29 @@
1#!/bin/sh
2
3set -e
4
5if [ $# -lt 1 ]; then
6 echo "usage: $0: package.ipk"
7 exit 1
8fi
9
10while [ $# -gt 0 ]; do
11 filename=$1
12 shift
13
14 pkg=`echo $filename | sed 's/.*\///;s/.ipk$//;s/.deb$//'`
15
16 mkdir -p $pkg
17 mkdir -p $pkg/CONTROL
18
19 pkg_dir=$PWD
20 cd $pkg; (ar x ../$filename || tar zxf ../$filename) >& /dev/null
21 cd $pkg_dir
22
23 tar xzf $pkg/data.tar.gz -C $pkg
24 tar xzf $pkg/control.tar.gz -C $pkg/CONTROL
25 rm -f $pkg/control.tar.gz $pkg/data.tar.gz $pkg/debian-binary
26done
27
28
29