rev |
line source |
al@695
|
1 #!/bin/sh
|
al@695
|
2
|
al@695
|
3 # This program is a part of TazPkg.
|
al@695
|
4 # /usr/bin/tazpkg-convert: toolset to convert alien package to the tazpkg format
|
al@695
|
5
|
al@695
|
6 # Usage: tazpkg-convert alien_package [ target_directory ]
|
al@695
|
7
|
al@695
|
8
|
al@695
|
9 PACKAGE_FILE="$1"
|
al@695
|
10 TARGET_DIR="$2"
|
al@695
|
11 TMP_DIR=$(mktemp -d)
|
al@695
|
12 TOP_DIR="$(pwd)"
|
al@695
|
13
|
al@695
|
14 . /etc/slitaz/slitaz.conf
|
al@695
|
15 . /lib/libtaz.sh
|
al@695
|
16 . /usr/lib/tazpkg/tazpkg-find-depends
|
al@695
|
17
|
al@695
|
18 # Internationalization.
|
al@695
|
19 export TEXTDOMAIN='tazpkg'
|
al@695
|
20
|
al@695
|
21
|
al@695
|
22 # FIXME: what does this mean?
|
al@695
|
23 [ -n "$TARGET_DIR" -a -s "$TARGET_DIR/files.list.lzma" ] && TMPLOCALSTATE="$TARGET_DIR"
|
al@695
|
24
|
al@695
|
25
|
al@695
|
26 show_unresolved_lib()
|
al@695
|
27 {
|
al@695
|
28 if [ -s $TMP_DIR/unresolved ]; then
|
al@695
|
29 echo -e "BUGS=\"`gettext \"No dependency for\"`" >> $1
|
al@695
|
30 sort < $TMP_DIR/unresolved | uniq | \
|
al@695
|
31 while read file; do
|
al@695
|
32 _ 'WARNING: unknown dependency for $lib'
|
al@695
|
33 echo -n " $file" >> $1
|
al@695
|
34 done
|
al@695
|
35 echo "\"" >> $1
|
al@695
|
36 fi
|
al@695
|
37 }
|
al@695
|
38
|
al@695
|
39
|
al@695
|
40 # convert a .tar.bz2 package to .tazpkg
|
al@695
|
41
|
al@695
|
42 convert_upkg()
|
al@695
|
43 {
|
al@695
|
44 mkdir -p $TMP_DIR/fs
|
al@695
|
45 tar xjf $PACKAGE_FILE -C $TMP_DIR/fs
|
al@695
|
46 if [ -d $TMP_DIR/fs/var/lib/upkg/packages ]; then
|
al@695
|
47 cd $TMP_DIR
|
al@695
|
48 package="$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
|
al@695
|
49 version="$(sed '/^Version:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
|
al@695
|
50 url="http://www.paldo.org/"
|
al@695
|
51 file=$package-$version
|
al@695
|
52 mkdir $file
|
al@695
|
53 mv fs $file
|
al@695
|
54 maintainer=nobody@slitaz.org
|
al@695
|
55 descrip="$package package from paldo."
|
al@695
|
56 cat > $file/receipt <<EOT
|
al@695
|
57 # SliTaz package receipt.
|
al@695
|
58 # generated by tazpkg from package $(basename $PACKAGE_FILE)
|
al@695
|
59 PACKAGE="$package"
|
al@695
|
60 VERSION="$version"
|
al@695
|
61 CATEGORY="misc"
|
al@695
|
62 SHORT_DESC="$descrip"
|
al@695
|
63 WEB_SITE="$url"
|
al@695
|
64 MAINTAINER="$maintainer"
|
al@695
|
65 DEPENDS="$(find_depends)"
|
al@695
|
66 EOT
|
al@695
|
67 [ -s $file/var/lib/upkg/files/*.config.bz2 ] &&
|
al@695
|
68 cat >> $file/receipt <<EOT
|
al@695
|
69 CONFIG_FILES="$(bzcat $file/var/lib/upkg/files/*.config.bz2)"
|
al@695
|
70 EOT
|
al@695
|
71 while read ext func ; do
|
al@695
|
72 [ -s $file/fs/var/lib/upkg/scripts/*.$ext ] || continue
|
al@695
|
73 cat >> $file/receipt <<EOT
|
al@695
|
74
|
al@695
|
75 $func()
|
al@695
|
76 {
|
al@695
|
77 $(cat $file/fs/var/lib/upkg/scripts/*.$ext)
|
al@695
|
78 }
|
al@695
|
79 EOT
|
al@695
|
80 done <<EOT
|
al@695
|
81 prerm pre_remove
|
al@695
|
82 EOT
|
al@695
|
83
|
al@695
|
84 tazpkg pack $file
|
al@695
|
85 mv $TMP_DIR/$file.tazpkg $TOP_DIR
|
al@695
|
86 else
|
al@695
|
87 _ '$PACKAGE_FILE does not look like an upkg package!'
|
al@695
|
88 fi
|
al@695
|
89 cd $TOP_DIR
|
al@695
|
90 rm -rf $TMP_DIR
|
al@695
|
91 }
|
al@695
|
92
|
al@695
|
93
|
al@695
|
94 # convert a .spack package to .tazpkg
|
al@695
|
95
|
al@695
|
96 convert_spack()
|
al@695
|
97 {
|
al@695
|
98 mkdir -p $TMP_DIR
|
al@695
|
99 ( cd $TMP_DIR ; cpio -i ) < $PACKAGE_FILE
|
al@695
|
100 cd $TMP_DIR
|
al@695
|
101 package="$(sed '$!d;s/:.*//' about.txt)"
|
al@695
|
102 version="$(basename $PACKAGE_FILE | sed "s/$package-\([^-]*\).*/\1/")"
|
al@695
|
103 descrip="$(sed '$!d;s/.*: //' about.txt)"
|
al@695
|
104 url="http://0linux.org/"
|
al@695
|
105 maintainer=nobody@slitaz.org
|
al@695
|
106 file=$package-$version
|
al@695
|
107 mkdir -p $file/fs
|
al@695
|
108 xzcat files.xz | ( cd $file/fs ; cpio -idmu )
|
al@695
|
109 cat > $file/receipt <<EOT
|
al@695
|
110 # SliTaz package receipt.
|
al@695
|
111 # generated by tazpkg from package $(basename $PACKAGE_FILE)
|
al@695
|
112 PACKAGE="$package"
|
al@695
|
113 VERSION="$version"
|
al@695
|
114 CATEGORY="misc"
|
al@695
|
115 SHORT_DESC="$descrip"
|
al@695
|
116 WEB_SITE="$url"
|
al@695
|
117 MAINTAINER="$maintainer"
|
al@695
|
118 DEPENDS="$(find_depends)"
|
al@695
|
119 EOT
|
al@695
|
120 [ -s pre-install.sh ] && cat >> $file/receipt <<EOT
|
al@695
|
121
|
al@695
|
122 pre_install()
|
al@695
|
123 {
|
al@695
|
124 cd /
|
al@695
|
125 $(sed 1d pre-install.sh)
|
al@695
|
126 }
|
al@695
|
127 EOT
|
al@695
|
128 [ -s post-install.sh ] && cat >> $file/receipt <<EOT
|
al@695
|
129
|
al@695
|
130 post_install()
|
al@695
|
131 {
|
al@695
|
132 cd /
|
al@695
|
133 $(sed '1,/^}/d' post-install.sh)
|
al@695
|
134 }
|
al@695
|
135 EOT
|
al@695
|
136 tazpkg pack $file
|
al@695
|
137 cd $TOP_DIR
|
al@695
|
138 mv $TMP_DIR/$file.tazpkg .
|
al@695
|
139 rm -rf $TMP_DIR
|
al@695
|
140 }
|
al@695
|
141
|
al@695
|
142
|
al@695
|
143 # convert a .ipk package to .tazpkg
|
al@695
|
144
|
al@695
|
145 convert_ipk()
|
al@695
|
146 {
|
al@695
|
147 mkdir -p $TMP_DIR
|
al@695
|
148 tar xOzf $PACKAGE_FILE ./control.tar.gz | tar xzf - -C $TMP_DIR
|
al@695
|
149 package="$(grep ^Package $TMP_DIR/control | sed 's/.*: //')"
|
al@695
|
150 version="$(grep ^Version $TMP_DIR/control | sed 's/.*: //')"
|
al@695
|
151 maintainer="$(grep ^Maintainer $TMP_DIR/control | sed 's/.*: //')"
|
al@695
|
152 target="$(grep ^Architecture $TMP_DIR/control | sed 's/.*: //')"
|
al@695
|
153 descrip="$(grep ^Description $TMP_DIR/control | sed 's/.*: //')"
|
al@695
|
154 url="http://openwrt.org/"
|
al@695
|
155 case "$target" in
|
al@695
|
156 i386|all)
|
al@695
|
157 file=$package-$version
|
al@695
|
158 mkdir -p $TMP_DIR/$file/fs
|
al@695
|
159 tar xOzf $PACKAGE_FILE ./data.tar.gz | tar xzf - -C $TMP_DIR/$file/fs
|
al@695
|
160 cd $TMP_DIR
|
al@695
|
161 cat > $file/receipt <<EOT
|
al@695
|
162 # SliTaz package receipt.
|
al@695
|
163 # generated by tazpkg from package $(basename $PACKAGE_FILE)
|
al@695
|
164 PACKAGE="$package"
|
al@695
|
165 VERSION="$version"
|
al@695
|
166 CATEGORY="misc"
|
al@695
|
167 SHORT_DESC="$descrip"
|
al@695
|
168 WEB_SITE="$url"
|
al@695
|
169 MAINTAINER="$maintainer"
|
al@695
|
170 DEPENDS="$(find_depends)"
|
al@695
|
171 EOT
|
al@695
|
172 show_unresolved_lib $file/receipt
|
al@695
|
173 [ -s conffiles ] && cat >> $file/receipt <<EOT
|
al@695
|
174 CONFIG_FILES="$(cat conffiles)"
|
al@695
|
175 EOT
|
al@695
|
176 show_unresolved_lib $file/receipt
|
al@695
|
177 while read script func; do
|
al@695
|
178 [ -s $script ] && cat >> $file/receipt <<EOT
|
al@695
|
179
|
al@695
|
180 $func()
|
al@695
|
181 {
|
al@695
|
182 $(cat $script)
|
al@695
|
183 }
|
al@695
|
184 EOT
|
al@695
|
185 done <<EOT
|
al@695
|
186 preinst pre_install
|
al@695
|
187 postinst post_install
|
al@695
|
188 prerm pre_remove
|
al@695
|
189 postrm post_remove
|
al@695
|
190 EOT
|
al@695
|
191 awk '
|
al@695
|
192 {
|
al@695
|
193 if (/^ / && show) print substr($0,2);
|
al@695
|
194 else show=0;
|
al@695
|
195 if (/^Description/) show=1;
|
al@695
|
196 }' < $TMP_DIR/control > $file/description.txt
|
al@695
|
197 sed -i 's/^\.$//' $file/description.txt
|
al@695
|
198 [ -s $file/description.txt ] || rm -f $file/description.txt
|
al@695
|
199 tazpkg pack $file
|
al@695
|
200 cd $TOP_DIR
|
al@695
|
201 mv $TMP_DIR/$file.tazpkg .
|
al@695
|
202 ;;
|
al@695
|
203 *)
|
al@695
|
204 _ 'Invalid target: $target (expected i386)'
|
al@695
|
205 ;;
|
al@695
|
206 esac
|
al@695
|
207 rm -rf $TMP_DIR
|
al@695
|
208 }
|
al@695
|
209
|
al@695
|
210
|
al@695
|
211 # convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg
|
al@695
|
212
|
al@695
|
213 convert_arch()
|
al@695
|
214 {
|
al@695
|
215 mkdir -p $TMP_DIR/fs
|
al@695
|
216 busybox tar xf $PACKAGE_FILE -C $TMP_DIR/fs
|
al@695
|
217 if [ -f $TMP_DIR/fs/.PKGINFO ]; then
|
al@695
|
218 cd $TMP_DIR
|
al@695
|
219 package="$(grep ^pkgname fs/.PKGINFO | sed 's/.*= //')"
|
al@695
|
220 version="$(grep ^pkgver fs/.PKGINFO | sed 's/.*= //')"
|
al@695
|
221 descrip="$(grep ^pkgdesc fs/.PKGINFO | sed 's/.*= //')"
|
al@695
|
222 url="$(grep ^url fs/.PKGINFO | sed 's/.*= //')"
|
al@695
|
223 maintainer="$(grep ^packager fs/.PKGINFO | sed 's/.*= //')"
|
al@695
|
224 file=$package-$version
|
al@695
|
225 mkdir $file
|
al@695
|
226 mv fs $file
|
al@695
|
227 cat > $file/receipt <<EOT
|
al@695
|
228 # SliTaz package receipt.
|
al@695
|
229 # generated by tazpkg from Archlinux package $(basename $PACKAGE_FILE)
|
al@695
|
230 PACKAGE="$package"
|
al@695
|
231 VERSION="$version"
|
al@695
|
232 CATEGORY="misc"
|
al@695
|
233 SHORT_DESC="$descrip"
|
al@695
|
234 WEB_SITE="$url"
|
al@695
|
235 MAINTAINER="$maintainer"
|
al@695
|
236 DEPENDS="$(find_depends)"
|
al@695
|
237 EOT
|
al@695
|
238 show_unresolved_lib $file/receipt
|
al@695
|
239 rm -f $file/fs/.[A-Z]*
|
al@695
|
240 tazpkg pack $file
|
al@695
|
241 mv $file.tazpkg $TOP_DIR
|
al@695
|
242 else
|
al@695
|
243 _ '$PACKAGE_FILE does not look like an Archlinux/Alpine package!'
|
al@695
|
244 fi
|
al@695
|
245 cd $TOP_DIR
|
al@695
|
246 rm -rf $TMP_DIR
|
al@695
|
247 }
|
al@695
|
248
|
al@695
|
249
|
al@695
|
250 # get package and version from PACKAGE_FILE
|
al@695
|
251
|
al@695
|
252 parse_pkgname()
|
al@695
|
253 {
|
al@695
|
254 package=$(basename ${2:-$PACKAGE_FILE} $1)
|
al@695
|
255 IFS='-'
|
al@695
|
256 set -- $package
|
al@695
|
257 unset IFS
|
al@695
|
258 package=$1
|
al@695
|
259 version=$2
|
al@695
|
260 if [ -z "$version" ]; then
|
al@695
|
261 package=${1%%[0-9\.]*}
|
al@695
|
262 version=${1#$package}
|
al@695
|
263 fi
|
al@695
|
264 file="$package-$version"
|
al@695
|
265 mkdir $file
|
al@695
|
266 }
|
al@695
|
267
|
al@695
|
268
|
al@695
|
269 finish_convert_puppy()
|
al@695
|
270 {
|
al@695
|
271 rm -f fs/*.specs
|
al@695
|
272 mv fs $file
|
al@695
|
273 cat > $file/receipt <<EOT
|
al@695
|
274 # SliTaz package receipt.
|
al@695
|
275 # generated by tazpkg from puppy package $(basename $PACKAGE_FILE)
|
al@695
|
276 PACKAGE="$package"
|
al@695
|
277 VERSION="$version"
|
al@695
|
278 CATEGORY="misc"
|
al@695
|
279 SHORT_DESC="$desc"
|
al@695
|
280 WEB_SITE="http://puppylinux.org/"
|
al@695
|
281 MAINTAINER="nobody@slitaz.org"
|
al@695
|
282 DEPENDS="$(find_depends)"
|
al@695
|
283 EOT
|
al@695
|
284 show_unresolved_lib $file/receipt
|
al@695
|
285 for i in install uninstall ; do
|
al@695
|
286 [ -f $file/fs/p$i.sh ] && cat >> $file/receipt <<EOM
|
al@695
|
287
|
al@695
|
288 post_$i()
|
al@695
|
289 {
|
al@695
|
290 chroot \$1/ sh - << EOT
|
al@695
|
291 cd /
|
al@695
|
292 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/p$i.sh ; rm -f $file/fs/p$i.sh)
|
al@695
|
293 EOT
|
al@695
|
294 }
|
al@695
|
295 EOM
|
al@695
|
296 done
|
al@695
|
297 sed -i 's/post_uninstall/post_remove/' $file/receipt
|
al@695
|
298 tazpkg pack $file
|
al@695
|
299 mv $file.tazpkg $TOP_DIR
|
al@695
|
300 cd $TOP_DIR
|
al@695
|
301 rm -rf $TMP_DIR
|
al@695
|
302 }
|
al@695
|
303
|
al@695
|
304
|
al@695
|
305 # convert a .sfs package to .tazpkg
|
al@695
|
306
|
al@695
|
307 convert_sfs()
|
al@695
|
308 {
|
al@695
|
309 [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
|
al@695
|
310 if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/pet.specs$ ; then
|
al@695
|
311 _ '$PACKAGE_FILE does not look like a Puppy package!'
|
al@695
|
312 return 1
|
al@695
|
313 fi
|
al@695
|
314 mkdir -p $TMP_DIR
|
al@695
|
315 cd $TMP_DIR
|
al@695
|
316 parse_pkgname .sfs
|
al@695
|
317 unsquashfs $PACKAGE_FILE
|
al@695
|
318 mv squashfs-root fs
|
al@695
|
319 set -- $(cat fs/pet.specs)
|
al@695
|
320 desc="$10"
|
al@695
|
321 finish_convert_puppy
|
al@695
|
322 }
|
al@695
|
323
|
al@695
|
324
|
al@695
|
325 # convert a .pet package to .tazpkg
|
al@695
|
326
|
al@695
|
327 convert_pet()
|
al@695
|
328 {
|
al@695
|
329 mkdir -p $TMP_DIR
|
al@695
|
330 cd $TMP_DIR
|
al@695
|
331 parse_pkgname .pet
|
al@695
|
332 tar xzf $PACKAGE_FILE 2> /dev/null
|
al@695
|
333 . $package*/*.specs
|
al@695
|
334 desc="$PETMENUDESCR"
|
al@695
|
335 mv $package*/ fs
|
al@695
|
336 finish_convert_puppy
|
al@695
|
337 }
|
al@695
|
338
|
al@695
|
339
|
al@695
|
340 # convert a .sb package to .tazpkg
|
al@695
|
341
|
al@695
|
342 convert_sb()
|
al@695
|
343 {
|
al@695
|
344 [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
|
al@695
|
345 if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/var/log/removed_scripts ; then
|
al@695
|
346 _ '$PACKAGE_FILE does not look like a Slax package!'
|
al@695
|
347 return 1
|
al@695
|
348 fi
|
al@695
|
349 mkdir -p $TMP_DIR
|
al@695
|
350 cd $TMP_DIR
|
al@695
|
351 unsquashfs $PACKAGE_FILE
|
al@695
|
352 mv squashfs-root fs
|
al@695
|
353 parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//')
|
al@695
|
354 desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')"
|
al@695
|
355 cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > $file/description.txt
|
al@695
|
356 mv fs $file
|
al@695
|
357 cat > $file/receipt <<EOT
|
al@695
|
358 # SliTaz package receipt.
|
al@695
|
359 # generated by tazpkg from slax package $(basename $PACKAGE_FILE)
|
al@695
|
360 PACKAGE="$package"
|
al@695
|
361 VERSION="$version"
|
al@695
|
362 CATEGORY="misc"
|
al@695
|
363 SHORT_DESC="$desc"
|
al@695
|
364 WEB_SITE="http://www.slax.org/"
|
al@695
|
365 MAINTAINER="nobody@slitaz.org"
|
al@695
|
366 DEPENDS="$(find_depends)"
|
al@695
|
367 EOT
|
al@695
|
368 show_unresolved_lib $file/receipt
|
al@695
|
369 [ -f $file/fs/var/log/scripts/$package* ] && cat >> $file/receipt <<EOM
|
al@695
|
370
|
al@695
|
371 post_install()
|
al@695
|
372 {
|
al@695
|
373 chroot \$1/ sh - << EOT
|
al@695
|
374 cd /
|
al@695
|
375 $(cat $file/fs/var/log/scripts/$package* | sed -e 's/\\/\\\\/g' | sed -e 's/\$/\\$/g')
|
al@695
|
376 EOT
|
al@695
|
377 }
|
al@695
|
378 EOM
|
al@695
|
379 tazpkg pack $file
|
al@695
|
380 mv $file.tazpkg $TOP_DIR
|
al@695
|
381 cd $TOP_DIR
|
al@695
|
382 rm -rf $TMP_DIR
|
al@695
|
383 }
|
al@695
|
384
|
al@695
|
385
|
al@695
|
386 # convert a .tgz package to .tazpkg
|
al@695
|
387
|
al@695
|
388 convert_tgz()
|
al@695
|
389 {
|
al@695
|
390 parse_pkgname
|
al@695
|
391 mkdir -p $TMP_DIR/$file/fs
|
al@695
|
392 tar xzf $PACKAGE_FILE -C $TMP_DIR/$file/fs
|
al@695
|
393 cd $TMP_DIR
|
al@695
|
394 if [ -d $file/fs/install ]; then
|
al@695
|
395 descrip=$(grep ^$package $file/fs/install/slack-desc | \
|
al@695
|
396 head -1 | sed 's/.*(\(.*\)).*/\1/')
|
al@695
|
397 cat > $file/receipt <<EOT
|
al@695
|
398 # SliTaz package receipt.
|
al@695
|
399 # generated by tazpkg from slackware package $(basename $PACKAGE_FILE)
|
al@695
|
400 PACKAGE="$package"
|
al@695
|
401 VERSION="$version"
|
al@695
|
402 CATEGORY="misc"
|
al@695
|
403 SHORT_DESC="$descrip"
|
al@695
|
404 WEB_SITE="http://www.slackware.com/packages/"
|
al@695
|
405 MAINTAINER="nobody@slitaz.org"
|
al@695
|
406 DEPENDS="$(find_depends)"
|
al@695
|
407 EOT
|
al@695
|
408 show_unresolved_lib $file/receipt
|
al@695
|
409 [ -f $file/fs/install/doinst.sh ] && cat >> $file/receipt <<EOM
|
al@695
|
410
|
al@695
|
411 post_install()
|
al@695
|
412 {
|
al@695
|
413 chroot \$1/ sh - << EOT
|
al@695
|
414 cd /
|
al@695
|
415 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/install/doinst.sh)
|
al@695
|
416 EOT
|
al@695
|
417 }
|
al@695
|
418 EOM
|
al@695
|
419 grep ^$package $file/fs/install/slack-desc | \
|
al@695
|
420 sed "s/^$package://" > $file/description.txt
|
al@695
|
421 [ -s $file/description.txt ] || rm -f $file/description.txt
|
al@695
|
422 rm -rf $file/fs/install
|
al@695
|
423 tazpkg pack $file
|
al@695
|
424 mv $file.tazpkg $TOP_DIR
|
al@695
|
425 else
|
al@695
|
426 _ '$PACKAGE_FILE does not look like a Slackware package!'
|
al@695
|
427 fi
|
al@695
|
428 cd $TOP_DIR
|
al@695
|
429 rm -rf $TMP_DIR
|
al@695
|
430 }
|
al@695
|
431
|
al@695
|
432
|
al@695
|
433 # convert a .deb package to .tazpkg
|
al@695
|
434
|
al@695
|
435 convert_deb()
|
al@695
|
436 {
|
al@695
|
437 mkdir -p $TMP_DIR
|
al@695
|
438 dpkg-deb -e $PACKAGE_FILE $TMP_DIR
|
al@695
|
439 package=$(grep '^ *Package:' $TMP_DIR/control)
|
al@695
|
440 package=$(echo ${package##*:})
|
al@695
|
441 version=$(grep '^ *Version:' $TMP_DIR/control)
|
al@695
|
442 version=$(echo ${version##*:})
|
al@695
|
443 descrip=$(grep '^ *Description:' $TMP_DIR/control)
|
al@695
|
444 descrip=$(echo ${descrip##*:})
|
al@695
|
445 target="$(grep ^Architecture $TMP_DIR/control | sed 's/.*: //')"
|
al@695
|
446 case "$target" in
|
al@695
|
447 i386|all)
|
al@695
|
448 file="$package-$version"
|
al@695
|
449 mkdir -p $TMP_DIR/$file/fs/
|
al@695
|
450 dpkg-deb -x $PACKAGE_FILE $TMP_DIR/$file/fs
|
al@695
|
451 cd $TMP_DIR
|
al@695
|
452 cat > $file/receipt <<EOT
|
al@695
|
453 # SliTaz package receipt.
|
al@695
|
454 # generated by tazpkg from debian package $(basename $PACKAGE_FILE)
|
al@695
|
455 PACKAGE="$package"
|
al@695
|
456 VERSION="$version"
|
al@695
|
457 CATEGORY="misc"
|
al@695
|
458 SHORT_DESC="$descrip"
|
al@695
|
459 WEB_SITE="http://packages.debian.org/search?keywords=$package"
|
al@695
|
460 MAINTAINER="nobody@slitaz.org"
|
al@695
|
461 EOT
|
al@695
|
462 LICENSE="$(grep /usr/share/common-licenses/ \
|
al@695
|
463 $PACKAGE_FILE $TMP_DIR/$file/fs/usr/share/doc/*/copyright | \
|
al@695
|
464 sed 's|.*common-licenses/\([-\.A-Za-z0-9]*\).*|\1|;s|[-\.]$||q')"
|
al@695
|
465 [ -n "$LICENSE" ] && echo "LICENSE=\"$LICENSE\"" >> $file/receipt
|
al@695
|
466 echo "DEPENDS=\"$(find_depends)\"" >> $file/receipt
|
al@695
|
467 [ -s conffiles ] && cat >> $file/receipt <<EOT
|
al@695
|
468 CONFIG_FILES="$(cat conffiles)"
|
al@695
|
469 EOT
|
al@695
|
470 show_unresolved_lib $file/receipt
|
al@695
|
471 awk '
|
al@695
|
472 {
|
al@695
|
473 if (/^ / && show) print substr($0,2);
|
al@695
|
474 else show=0;
|
al@695
|
475 if (/^Description/) show=1;
|
al@695
|
476 }' < $TMP_DIR/control > $file/description.txt
|
al@695
|
477 sed -i 's/^\.$//' $file/description.txt
|
al@695
|
478 [ -s $file/description.txt ] || rm -f $file/description.txt
|
al@695
|
479 tazpkg pack $file
|
al@695
|
480 mv $file.tazpkg $TOP_DIR
|
al@695
|
481 ;;
|
al@695
|
482 *)
|
al@695
|
483 _ 'Invalid target: $target (expected i386)'
|
al@695
|
484 ;;
|
al@695
|
485 esac
|
al@695
|
486 cd $TOP_DIR
|
al@695
|
487 rm -rf $TMP_DIR
|
al@695
|
488 }
|
al@695
|
489
|
al@695
|
490
|
al@695
|
491 # convert a .rpm package to .tazpkg
|
al@695
|
492
|
al@695
|
493 convert_rpm()
|
al@695
|
494 {
|
al@695
|
495 mkdir -p $TMP_DIR
|
al@695
|
496 cp $PACKAGE_FILE $TMP_DIR
|
al@695
|
497 PACKAGE_FILE=$TMP_DIR/$(basename $PACKAGE_FILE)
|
al@695
|
498 rpm -qip $PACKAGE_FILE | awk -v pkg=$(basename $PACKAGE_FILE) '
|
al@695
|
499 BEGIN {
|
al@695
|
500 goturl=0;
|
al@695
|
501 printf "# SliTaz package receipt.\n";
|
al@695
|
502 printf "# generated by tazpkg from rpm package %s\n",pkg;
|
al@695
|
503 }
|
al@695
|
504 {
|
al@695
|
505 if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; }
|
al@695
|
506 if (/^Version/) printf "VERSION=\"%s-",$3;
|
al@695
|
507 if (/^Release/) printf "%s\"\n",$3;
|
al@695
|
508 if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15);
|
al@695
|
509 if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; }
|
al@695
|
510 }
|
al@695
|
511 END {
|
al@695
|
512 if (goturl == 0)
|
al@695
|
513 printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name;
|
al@695
|
514 printf "CATEGORY=\"misc\"\n";
|
al@695
|
515 printf "MAINTAINER=\"nobody@slitaz.org\"\n";
|
al@695
|
516 }
|
al@695
|
517 ' > $TMP_DIR/receipt
|
al@695
|
518 . $TMP_DIR/receipt
|
al@695
|
519 file=$PACKAGE-$VERSION
|
al@695
|
520 mkdir -p $TMP_DIR/$file/fs/
|
al@695
|
521 mv $TMP_DIR/receipt $TMP_DIR/$file
|
al@695
|
522 rpm -qip $PACKAGE_FILE | awk '
|
al@695
|
523 BEGIN { show=0 }
|
al@695
|
524 {
|
al@695
|
525 if (show) print;
|
al@695
|
526 if (/^Description/) show=1;
|
al@695
|
527 }
|
al@695
|
528 ' > $TMP_DIR/$file/description.txt
|
al@695
|
529 cd $TMP_DIR/$file/fs/
|
al@695
|
530 rpm2cpio $PACKAGE_FILE | cpio -idm --quiet
|
al@695
|
531 # rpm2cpio can't extract some new RPMs
|
al@695
|
532 if [ $? == 1 ]; then
|
al@695
|
533 if [ ! -e $INSTALLED/p7zip-full/receipt ]; then
|
al@695
|
534 boldify $(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')
|
al@695
|
535 _n "Do you want to install 'p7zip-full' package"; confirm
|
al@695
|
536 if [ $? = 0 ]; then
|
al@695
|
537 tazpkg -gi p7zip-full
|
al@695
|
538 else
|
al@695
|
539 rm -rf $TMP_DIR
|
al@695
|
540 exit 1
|
al@695
|
541 fi
|
al@695
|
542 fi
|
al@695
|
543 # we may already have 7z or may have just installed it in the step above
|
al@695
|
544 if [ -e $INSTALLED/p7zip-full/receipt ]; then
|
al@695
|
545 7z x -so $PACKAGE_FILE | cpio -idm --quiet
|
al@695
|
546 fi
|
al@695
|
547 fi
|
al@695
|
548 cd ../..
|
al@695
|
549 echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt
|
al@695
|
550 show_unresolved_lib $TMP_DIR/$file/receipt
|
al@695
|
551 tazpkg pack $file
|
al@695
|
552 mv $file.tazpkg $TOP_DIR
|
al@695
|
553 cd $TOP_DIR
|
al@695
|
554 rm -rf $TMP_DIR
|
al@695
|
555 }
|
al@695
|
556
|
al@695
|
557
|
al@695
|
558
|
al@695
|
559
|
al@695
|
560 if [ "$(dd if=$PACKAGE_FILE bs=8 count=1 skip=1 2> /dev/null)" == "debian-b" ]; then
|
al@695
|
561 convert_deb
|
al@695
|
562 else
|
al@695
|
563 case "$PACKAGE_FILE" in
|
al@695
|
564 *.deb|*.udeb)
|
al@695
|
565 convert_deb;;
|
al@695
|
566 *.rpm)
|
al@695
|
567 convert_rpm;;
|
al@695
|
568 *.sb)
|
al@695
|
569 convert_sb;;
|
al@695
|
570 *.sfs)
|
al@695
|
571 convert_sfs;;
|
al@695
|
572 *.pet)
|
al@695
|
573 convert_pet;;
|
al@695
|
574 *.tgz)
|
al@695
|
575 convert_tgz;;
|
al@695
|
576 *.apk|*.pkg.tar.gz|*.pkg.tar.xz)
|
al@695
|
577 convert_arch;;
|
al@695
|
578 *.ipk|*.opk)
|
al@695
|
579 convert_ipk;;
|
al@695
|
580 *.spack)
|
al@695
|
581 convert_spack;;
|
al@695
|
582 *.tar.bz2)
|
al@695
|
583 convert_upkg;;
|
al@695
|
584 *)
|
al@695
|
585 _ 'Unsupported format' ;;
|
al@695
|
586 esac
|
al@695
|
587 fi
|
al@695
|
588
|
al@695
|
589 exit 0
|