summaryrefslogtreecommitdiff
path: root/mkipks
Unidiff
Diffstat (limited to 'mkipks') (more/less context) (ignore whitespace changes)
-rwxr-xr-xmkipks220
1 files changed, 220 insertions, 0 deletions
diff --git a/mkipks b/mkipks
new file mode 100755
index 0000000..947b19e
--- a/dev/null
+++ b/mkipks
@@ -0,0 +1,220 @@
1#!/bin/sh
2
3QTE_VERSION=2.3.2
4DEB_VERSION=2.0
5
6# Have to do this here, since CVS can't store symlinks
7mkdir -p etc/rc2.d
8rm -f etc/rc2.d/S98qpe
9ln -s ../init.d/qpe etc/rc2.d/S98qpe
10
11VERSION_MAJ=$(sed -n -e 's/.*QPE_VERSION "\([0-9]*\)\..*\..*".*/\1/p' <$QPEDIR/include/qpe/version.h)
12VERSION_MIN=$(sed -n -e 's/.*QPE_VERSION ".*\.\([0-9]*\)\..*".*/\1/p' <$QPEDIR/include/qpe/version.h)
13VERSION_PAT=$(sed -n -e 's/.*QPE_VERSION ".*\..*\.\([0-9]*\).*/\1/p' <$QPEDIR/include/qpe/version.h)
14if grep -q 'QPE_VERSION .*snapshot' $QPEDIR/include/qpe/version.h
15then
16 VERSION_CVS="_$(date +%Y%m%d)"
17else
18 VERSION_CVS=""
19fi
20
21QPE_VERSION=$VERSION_MAJ.$VERSION_MIN.$VERSION_PAT
22
23ARCH=arm
24STRIP=arm-linux-strip
25STRIP_FILES="*Advanced RISC Machines ARM*not stripped"
26
27TDIR=/tmp/ipk$$
28DATADIR=$TDIR/data
29CTRLDIR=$TDIR/control
30
31IMAGEDIR=
32VERB=
33LIST=
34RPM=
35
36while [ $# -ne 0 ]
37do
38 case "$1" in
39 -v)
40 VERB=1
41 echo >&2 "Packaging for version $VERSION_MAJ.$VERSION_MIN.$VERSION_PAT$VERSION_CVS"
42 ;; -l)
43 LIST=1
44 ;; -i)
45 shift
46 IMAGEDIR=$1
47 DATADIR=$IMAGEDIR
48 mkdir -p $IMAGEDIR
49 ;; -rpm)
50 if [ "$QPEDIR" != "/opt/Qtopia" ]
51 then
52 echo >&2 '$QPEDIR is not the standard /usr/Qtopia directory.'
53 sleep 1
54 #exit 1
55 fi
56 RPM=1
57 ;; -arch)
58 shift
59 ARCH=$1
60 STRIP=
61 STRIP_FILES=
62 ;; /*)
63 FILES="$FILES $1"
64 ;; *)
65 FILES="$FILES $PWD/$1"
66 esac
67 shift
68done
69
70
71if [ -z "$FILES" ]
72then
73 FILES=`find $QPEDIR -name "*.control" -print`
74fi
75
76RDIR=$PWD
77cd $QPEDIR
78
79for i in $FILES
80do
81 rm -rf $TDIR
82
83 mkdir -p $DATADIR
84 mkdir -p $CTRLDIR
85
86 packagename=${i##*/}; packagename=${packagename%.control}
87 version=$(eval echo '"'$(sed -n -e "s/^Version: *//p" $i)'"')
88 depends=$(eval echo '"'$(sed -n -e "s/^Depends: *//p" $i)'"')
89 files=$(eval echo $(sed -n -e "s/^Files://p" $i))
90 arch=$(eval echo $(sed -n -e "s/^Arch://p" $i))
91 section=$(sed -n -e "s/^Section: *//p" $i)
92 license=$(sed -n -e "s/^License: *//p" $i)
93 summary=$(sed -n -e "s/^Description: *//p" $i)
94 package=${packagename}_${version}_$ARCH
95 ERROR=
96 if [ -z "$files" ]
97 then
98 mkdir -p $DATADIR/usr/share/doc/$packagename
99 else
100 for f in $files
101 do
102 if [ -d $f ]
103 then
104 ffiles=$(find $f -type f -o -type b -o -type c -o -type l)
105 else
106 ffiles=$f
107 fi
108 for ff in $ffiles
109 do
110 case $ff in
111 */CVS/*)
112 continue
113 ;;*~)
114 continue
115 ;;*.control)
116 continue
117 ;; $QTDIR/*)
118 BASE=$(dirname /usr/${ff#$QTDIR/})
119 ;; etc/*.d/*)
120 BASE=$(dirname /$ff)
121 ;; ipaq/*)
122 BASE=$(dirname ${ff#ipaq})
123 ;; *)
124 # For SHARP ROM compatibility. Should change to Qtopia.
125 BASE=/opt/QtPalmtop/$(dirname $ff)
126 esac
127
128 if [ -f $ff -o -b $ff -o -c $ff ]
129 then
130 D=$DATADIR$BASE
131 if [ -x $ff -a -n "$STRIP" ]
132 then
133 case $(file $ff) in
134 $STRIP_FILES)
135 $STRIP $ff
136 ;; *)
137 esac
138 fi
139 if [ -n "$RPM" ]
140 then
141 case "$ff" in
142 /*) RPMFILES="$RPMFILES $ff"
143 ;; *) RPMFILES="$RPMFILES $QPEDIR/$ff"
144 esac
145 else
146 mkdir -p $D
147 if cp -a $ff $D
148 then
149 true
150 else
151 ERROR=1
152 fi
153 fi
154 else
155 echo >&2 "$0: $i: No such file: $ff"
156 ERROR=1
157 fi
158 done
159 done
160 fi
161 if [ -z "$ERROR" ]
162 then
163 if [ -n "$RPM" ]
164 then
165 SPEC=/tmp/mkipks-rpm-$$.spec
166 echo >$SPEC "Summary: $summary"
167 echo >>$SPEC "Name: $packagename"
168 echo >>$SPEC "Group: $section" ##########
169 echo >>$SPEC "License: $license"
170 echo >>$SPEC "Version: ${version%-*}"
171 echo >>$SPEC "Release: ${version#*-}"
172
173 echo >>$SPEC "%description"
174 sed -n -e '/^Description:/,$ p' $i | tail +2 >>$SPEC
175 echo >>$SPEC "%files"
176 echo >>$SPEC "%defattr(-,root,root)"
177 /bin/ls $RPMFILES >>$SPEC
178 rpm -bb $SPEC --target $ARCH-unknown-linux
179 # rm $SPEC
180 elif [ -z "$IMAGEDIR" ]
181 then
182 #size=$(du -h -s $DATADIR | sed -e 's/[ ].*//')
183 size=$(mkfs.jffs2 -r $DATADIR | wc -c)
184 echo "Package: $packagename" >$CTRLDIR/control
185 echo "Installed-Size: $size" >>$CTRLDIR/control
186 echo "Filename: ./$package.ipk" >>$CTRLDIR/control
187 echo "Version: $version" >>$CTRLDIR/control
188 echo "Depends: $depends" >>$CTRLDIR/control
189 egrep -v "^(Files|Version|Depends):" >>$CTRLDIR/control $i
190 echo "$DEB_VERSION" >$TDIR/debian-binary
191 base=${i%.control}
192 scripts="preinst postinst prerm postrm"
193 for pf in $scripts
194 do
195 if [ -x ${base}.$pf ]
196 then
197 cp ${base}.$pf $CTRLDIR/$pf
198 fi
199 done
200 if [ "$UID" = 0 ]
201 then
202 chown -R root.root $TDIR
203 fi
204 ( cd $CTRLDIR; tar cfz ../control.tar.gz ./*; )
205 ( cd $DATADIR; tar cfz ../data.tar.gz ./*; )
206 ( cd $TDIR; rm -rf control data; tar cf - ./debian-binary ./control.tar.gz ./data.tar.gz; ) | gzip >$RDIR/$package.ipk
207 RESULT=$package.ipk
208 if [ -n "$VERB" ]
209 then
210 echo >&2 "Built $RESULT ($size)"
211 fi
212 if [ -n "$LIST" ]
213 then
214 echo $RESULT
215 fi
216 fi
217 else
218 echo >&2 "Not building $package package"
219 fi
220done