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@707
|
29 echo -e "BUGS=\"$(_n 'No dependency for:')" >> $1
|
al@695
|
30 sort < $TMP_DIR/unresolved | uniq | \
|
al@695
|
31 while read file; do
|
al@707
|
32 _ 'WARNING: unknown dependency for %s' $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@707
|
87 _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'upkg'
|
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
|
pascal@697
|
149 package=$(sed '/^Package/!d;s/.*: //' $TMP_DIR/control)
|
pascal@697
|
150 version=$(sed '/^Version/!d;s/.*: //' $TMP_DIR/control)
|
pascal@697
|
151 maintainer="$(sed '/^Maintainer/!d;s/.*: //' $TMP_DIR/control)"
|
pascal@697
|
152 target="$(sed '/^Architecture/!d;s/.*: //' $TMP_DIR/control)"
|
pascal@697
|
153 descrip=$(sed '/^Description/!d;s/.*: //' $TMP_DIR/control)
|
pascal@697
|
154 homepage=$(sed '/^Homepage/!d;s/.*: //' $TMP_DIR/control)
|
al@695
|
155 url="http://openwrt.org/"
|
al@695
|
156 case "$target" in
|
al@695
|
157 i386|all)
|
al@695
|
158 file=$package-$version
|
al@695
|
159 mkdir -p $TMP_DIR/$file/fs
|
al@695
|
160 tar xOzf $PACKAGE_FILE ./data.tar.gz | tar xzf - -C $TMP_DIR/$file/fs
|
al@695
|
161 cd $TMP_DIR
|
al@695
|
162 cat > $file/receipt <<EOT
|
al@695
|
163 # SliTaz package receipt.
|
al@695
|
164 # generated by tazpkg from package $(basename $PACKAGE_FILE)
|
al@695
|
165 PACKAGE="$package"
|
al@695
|
166 VERSION="$version"
|
al@695
|
167 CATEGORY="misc"
|
al@695
|
168 SHORT_DESC="$descrip"
|
pascal@697
|
169 WEB_SITE="${homepage:-$url}"
|
al@695
|
170 MAINTAINER="$maintainer"
|
al@695
|
171 DEPENDS="$(find_depends)"
|
al@695
|
172 EOT
|
al@695
|
173 show_unresolved_lib $file/receipt
|
al@695
|
174 [ -s conffiles ] && cat >> $file/receipt <<EOT
|
al@695
|
175 CONFIG_FILES="$(cat conffiles)"
|
al@695
|
176 EOT
|
al@695
|
177 show_unresolved_lib $file/receipt
|
al@695
|
178 while read script func; do
|
al@695
|
179 [ -s $script ] && cat >> $file/receipt <<EOT
|
al@695
|
180
|
al@695
|
181 $func()
|
al@695
|
182 {
|
al@695
|
183 $(cat $script)
|
al@695
|
184 }
|
al@695
|
185 EOT
|
al@695
|
186 done <<EOT
|
al@695
|
187 preinst pre_install
|
al@695
|
188 postinst post_install
|
al@695
|
189 prerm pre_remove
|
al@695
|
190 postrm post_remove
|
al@695
|
191 EOT
|
al@695
|
192 awk '
|
al@695
|
193 {
|
al@695
|
194 if (/^ / && show) print substr($0,2);
|
al@695
|
195 else show=0;
|
al@695
|
196 if (/^Description/) show=1;
|
al@695
|
197 }' < $TMP_DIR/control > $file/description.txt
|
al@695
|
198 sed -i 's/^\.$//' $file/description.txt
|
al@695
|
199 [ -s $file/description.txt ] || rm -f $file/description.txt
|
al@695
|
200 tazpkg pack $file
|
al@695
|
201 cd $TOP_DIR
|
al@695
|
202 mv $TMP_DIR/$file.tazpkg .
|
al@695
|
203 ;;
|
al@695
|
204 *)
|
al@707
|
205 _ 'Invalid target: %s (expected i386)' $target
|
al@695
|
206 ;;
|
al@695
|
207 esac
|
al@695
|
208 rm -rf $TMP_DIR
|
al@695
|
209 }
|
al@695
|
210
|
pascal@754
|
211 # convert a .cards.tar.xz package to .tazpkg
|
pascal@754
|
212
|
pascal@754
|
213 convert_nutyx()
|
pascal@754
|
214 {
|
pascal@754
|
215 mkdir -p $TMP_DIR/fs
|
pascal@754
|
216 busybox tar xf $PACKAGE_FILE -C $TMP_DIR/fs
|
pascal@754
|
217 if [ -f $TMP_DIR/fs/.META ]; then
|
pascal@754
|
218 package="$(sed '/^N/!d;s/^.//' fs/.META)"
|
pascal@754
|
219 version="$(sed '/^V/!d;s/^.//' fs/.META)"
|
pascal@754
|
220 descrip="$(sed '/^D/!d;s/^.//' fs/.META)"
|
pascal@754
|
221 file=$package-$version
|
pascal@754
|
222 mkdir $file
|
pascal@754
|
223 mv fs $file
|
pascal@754
|
224 cat > $file/receipt <<EOT
|
pascal@754
|
225 # SliTaz package receipt.
|
pascal@760
|
226 # generated by tazpkg from NuTyX package $(basename $PACKAGE_FILE)
|
pascal@754
|
227 PACKAGE="$package"
|
pascal@754
|
228 VERSION="$version"
|
pascal@754
|
229 CATEGORY="misc"
|
pascal@754
|
230 SHORT_DESC="$descrip"
|
pascal@754
|
231 WEB_SITE="http://www.nutyx.org/"
|
pascal@754
|
232 MAINTAINER="nobody@slitaz.org"
|
pascal@754
|
233 DEPENDS="$(find_depends)"
|
pascal@754
|
234 EOT
|
pascal@754
|
235 show_unresolved_lib $file/receipt
|
pascal@754
|
236 rm -f $file/fs/.[A-Z]*
|
pascal@754
|
237 tazpkg pack $file
|
pascal@754
|
238 mv $file.tazpkg $TOP_DIR
|
pascal@754
|
239 else
|
pascal@754
|
240 _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'NuTyX'
|
pascal@754
|
241 fi
|
pascal@754
|
242 cd $TOP_DIR
|
pascal@754
|
243 rm -rf $TMP_DIR
|
pascal@754
|
244 }
|
al@695
|
245
|
al@695
|
246 # convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg
|
al@695
|
247
|
al@695
|
248 convert_arch()
|
al@695
|
249 {
|
al@695
|
250 mkdir -p $TMP_DIR/fs
|
al@695
|
251 busybox tar xf $PACKAGE_FILE -C $TMP_DIR/fs
|
al@695
|
252 if [ -f $TMP_DIR/fs/.PKGINFO ]; then
|
al@695
|
253 cd $TMP_DIR
|
pascal@697
|
254 package="$(sed '/^pkgname/!d;s/.*= //' fs/.PKGINFO)"
|
pascal@697
|
255 version="$(sed '/^pkgver/!d;s/.*= //' fs/.PKGINFO)"
|
pascal@697
|
256 descrip="$(sed '/^pkgdesc/!d;s/.*= //' fs/.PKGINFO)"
|
pascal@697
|
257 url="$(sed '/^url/!d;s/.*= //' fs/.PKGINFO)"
|
pascal@697
|
258 maintainer="$(sed '/^packager/!d;s/.*= //' fs/.PKGINFO)"
|
al@695
|
259 file=$package-$version
|
al@695
|
260 mkdir $file
|
al@695
|
261 mv fs $file
|
al@695
|
262 cat > $file/receipt <<EOT
|
al@695
|
263 # SliTaz package receipt.
|
al@695
|
264 # generated by tazpkg from Archlinux package $(basename $PACKAGE_FILE)
|
al@695
|
265 PACKAGE="$package"
|
al@695
|
266 VERSION="$version"
|
al@695
|
267 CATEGORY="misc"
|
al@695
|
268 SHORT_DESC="$descrip"
|
al@695
|
269 WEB_SITE="$url"
|
al@695
|
270 MAINTAINER="$maintainer"
|
al@695
|
271 DEPENDS="$(find_depends)"
|
al@695
|
272 EOT
|
al@695
|
273 show_unresolved_lib $file/receipt
|
al@695
|
274 rm -f $file/fs/.[A-Z]*
|
al@695
|
275 tazpkg pack $file
|
al@695
|
276 mv $file.tazpkg $TOP_DIR
|
al@695
|
277 else
|
al@707
|
278 _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'Archlinux/Alpine'
|
al@695
|
279 fi
|
al@695
|
280 cd $TOP_DIR
|
al@695
|
281 rm -rf $TMP_DIR
|
al@695
|
282 }
|
al@695
|
283
|
al@695
|
284
|
al@695
|
285 # get package and version from PACKAGE_FILE
|
al@695
|
286
|
al@695
|
287 parse_pkgname()
|
al@695
|
288 {
|
al@695
|
289 package=$(basename ${2:-$PACKAGE_FILE} $1)
|
al@695
|
290 IFS='-'
|
al@695
|
291 set -- $package
|
al@695
|
292 unset IFS
|
al@695
|
293 package=$1
|
al@695
|
294 version=$2
|
al@695
|
295 if [ -z "$version" ]; then
|
al@695
|
296 package=${1%%[0-9\.]*}
|
al@695
|
297 version=${1#$package}
|
al@695
|
298 fi
|
al@695
|
299 file="$package-$version"
|
al@695
|
300 mkdir $file
|
al@695
|
301 }
|
al@695
|
302
|
al@695
|
303
|
al@695
|
304 finish_convert_puppy()
|
al@695
|
305 {
|
al@695
|
306 rm -f fs/*.specs
|
al@695
|
307 mv fs $file
|
al@695
|
308 cat > $file/receipt <<EOT
|
al@695
|
309 # SliTaz package receipt.
|
al@695
|
310 # generated by tazpkg from puppy package $(basename $PACKAGE_FILE)
|
al@695
|
311 PACKAGE="$package"
|
al@695
|
312 VERSION="$version"
|
al@695
|
313 CATEGORY="misc"
|
al@695
|
314 SHORT_DESC="$desc"
|
al@695
|
315 WEB_SITE="http://puppylinux.org/"
|
al@695
|
316 MAINTAINER="nobody@slitaz.org"
|
al@695
|
317 DEPENDS="$(find_depends)"
|
al@695
|
318 EOT
|
al@695
|
319 show_unresolved_lib $file/receipt
|
al@695
|
320 for i in install uninstall ; do
|
al@695
|
321 [ -f $file/fs/p$i.sh ] && cat >> $file/receipt <<EOM
|
al@695
|
322
|
al@695
|
323 post_$i()
|
al@695
|
324 {
|
al@695
|
325 chroot \$1/ sh - << EOT
|
al@695
|
326 cd /
|
al@695
|
327 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/p$i.sh ; rm -f $file/fs/p$i.sh)
|
al@695
|
328 EOT
|
al@695
|
329 }
|
al@695
|
330 EOM
|
al@695
|
331 done
|
al@695
|
332 sed -i 's/post_uninstall/post_remove/' $file/receipt
|
al@695
|
333 tazpkg pack $file
|
al@695
|
334 mv $file.tazpkg $TOP_DIR
|
al@695
|
335 cd $TOP_DIR
|
al@695
|
336 rm -rf $TMP_DIR
|
al@695
|
337 }
|
al@695
|
338
|
al@695
|
339
|
al@695
|
340 # convert a .sfs package to .tazpkg
|
al@695
|
341
|
al@695
|
342 convert_sfs()
|
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/pet.specs$ ; then
|
al@707
|
346 _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'Puppy'
|
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 parse_pkgname .sfs
|
al@695
|
352 unsquashfs $PACKAGE_FILE
|
al@695
|
353 mv squashfs-root fs
|
al@695
|
354 set -- $(cat fs/pet.specs)
|
al@695
|
355 desc="$10"
|
al@695
|
356 finish_convert_puppy
|
al@695
|
357 }
|
al@695
|
358
|
al@695
|
359
|
al@695
|
360 # convert a .pet package to .tazpkg
|
al@695
|
361
|
al@695
|
362 convert_pet()
|
al@695
|
363 {
|
al@695
|
364 mkdir -p $TMP_DIR
|
al@695
|
365 cd $TMP_DIR
|
al@695
|
366 parse_pkgname .pet
|
al@695
|
367 tar xzf $PACKAGE_FILE 2> /dev/null
|
al@695
|
368 . $package*/*.specs
|
al@695
|
369 desc="$PETMENUDESCR"
|
al@695
|
370 mv $package*/ fs
|
al@695
|
371 finish_convert_puppy
|
al@695
|
372 }
|
al@695
|
373
|
al@695
|
374
|
al@695
|
375 # convert a .sb package to .tazpkg
|
al@695
|
376
|
al@695
|
377 convert_sb()
|
al@695
|
378 {
|
al@695
|
379 [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
|
al@695
|
380 if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/var/log/removed_scripts ; then
|
al@707
|
381 _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'Slax'
|
al@695
|
382 return 1
|
al@695
|
383 fi
|
al@695
|
384 mkdir -p $TMP_DIR
|
al@695
|
385 cd $TMP_DIR
|
al@695
|
386 unsquashfs $PACKAGE_FILE
|
al@695
|
387 mv squashfs-root fs
|
al@695
|
388 parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//')
|
al@695
|
389 desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')"
|
al@695
|
390 cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > $file/description.txt
|
al@695
|
391 mv fs $file
|
al@695
|
392 cat > $file/receipt <<EOT
|
al@695
|
393 # SliTaz package receipt.
|
al@695
|
394 # generated by tazpkg from slax package $(basename $PACKAGE_FILE)
|
al@695
|
395 PACKAGE="$package"
|
al@695
|
396 VERSION="$version"
|
al@695
|
397 CATEGORY="misc"
|
al@695
|
398 SHORT_DESC="$desc"
|
al@695
|
399 WEB_SITE="http://www.slax.org/"
|
al@695
|
400 MAINTAINER="nobody@slitaz.org"
|
al@695
|
401 DEPENDS="$(find_depends)"
|
al@695
|
402 EOT
|
al@695
|
403 show_unresolved_lib $file/receipt
|
al@695
|
404 [ -f $file/fs/var/log/scripts/$package* ] && cat >> $file/receipt <<EOM
|
al@695
|
405
|
al@695
|
406 post_install()
|
al@695
|
407 {
|
al@695
|
408 chroot \$1/ sh - << EOT
|
al@695
|
409 cd /
|
al@695
|
410 $(cat $file/fs/var/log/scripts/$package* | sed -e 's/\\/\\\\/g' | sed -e 's/\$/\\$/g')
|
al@695
|
411 EOT
|
al@695
|
412 }
|
al@695
|
413 EOM
|
al@695
|
414 tazpkg pack $file
|
al@695
|
415 mv $file.tazpkg $TOP_DIR
|
al@695
|
416 cd $TOP_DIR
|
al@695
|
417 rm -rf $TMP_DIR
|
al@695
|
418 }
|
al@695
|
419
|
al@695
|
420
|
al@695
|
421 # convert a .tgz package to .tazpkg
|
al@695
|
422
|
al@695
|
423 convert_tgz()
|
al@695
|
424 {
|
al@695
|
425 parse_pkgname
|
al@695
|
426 mkdir -p $TMP_DIR/$file/fs
|
al@695
|
427 tar xzf $PACKAGE_FILE -C $TMP_DIR/$file/fs
|
al@695
|
428 cd $TMP_DIR
|
al@695
|
429 if [ -d $file/fs/install ]; then
|
pascal@697
|
430 descrip=$(sed "/^$package/!d;s/.*(\\(.*\\)).*/\\1/;q" \
|
pascal@697
|
431 $file/fs/install/slack-desc)
|
al@695
|
432 cat > $file/receipt <<EOT
|
al@695
|
433 # SliTaz package receipt.
|
al@695
|
434 # generated by tazpkg from slackware package $(basename $PACKAGE_FILE)
|
al@695
|
435 PACKAGE="$package"
|
al@695
|
436 VERSION="$version"
|
al@695
|
437 CATEGORY="misc"
|
al@695
|
438 SHORT_DESC="$descrip"
|
al@695
|
439 WEB_SITE="http://www.slackware.com/packages/"
|
al@695
|
440 MAINTAINER="nobody@slitaz.org"
|
al@695
|
441 DEPENDS="$(find_depends)"
|
al@695
|
442 EOT
|
al@695
|
443 show_unresolved_lib $file/receipt
|
al@695
|
444 [ -f $file/fs/install/doinst.sh ] && cat >> $file/receipt <<EOM
|
al@695
|
445
|
al@695
|
446 post_install()
|
al@695
|
447 {
|
al@695
|
448 chroot \$1/ sh - << EOT
|
al@695
|
449 cd /
|
al@695
|
450 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/install/doinst.sh)
|
al@695
|
451 EOT
|
al@695
|
452 }
|
al@695
|
453 EOM
|
pascal@697
|
454 sed "/^$package/:d;s/^$package://" \
|
pascal@697
|
455 $file/fs/install/slack-desc > $file/description.txt
|
al@695
|
456 [ -s $file/description.txt ] || rm -f $file/description.txt
|
al@695
|
457 rm -rf $file/fs/install
|
al@695
|
458 tazpkg pack $file
|
al@695
|
459 mv $file.tazpkg $TOP_DIR
|
al@695
|
460 else
|
al@707
|
461 _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'Slackware'
|
al@695
|
462 fi
|
al@695
|
463 cd $TOP_DIR
|
al@695
|
464 rm -rf $TMP_DIR
|
al@695
|
465 }
|
al@695
|
466
|
al@695
|
467
|
al@695
|
468 # convert a .deb package to .tazpkg
|
al@695
|
469
|
al@695
|
470 convert_deb()
|
al@695
|
471 {
|
al@695
|
472 mkdir -p $TMP_DIR
|
al@695
|
473 dpkg-deb -e $PACKAGE_FILE $TMP_DIR
|
pascal@697
|
474 package=$(sed '/^ *Package:/!d;s/.*: //' $TMP_DIR/control)
|
pascal@697
|
475 version=$(sed '/^ *Version:/!d;s/.*: //' $TMP_DIR/control)
|
pascal@697
|
476 descrip=$(sed '/^ *Description:/!d;s/.*: //' $TMP_DIR/control)
|
pascal@697
|
477 homepage=$(sed '/^ *Homepage:/!d;s/.*: //' $TMP_DIR/control)
|
pascal@697
|
478 target="$(sed '/^ *Architecture:/!d;s/.*: //' $TMP_DIR/control)"
|
al@695
|
479 case "$target" in
|
al@695
|
480 i386|all)
|
al@695
|
481 file="$package-$version"
|
al@695
|
482 mkdir -p $TMP_DIR/$file/fs/
|
al@695
|
483 dpkg-deb -x $PACKAGE_FILE $TMP_DIR/$file/fs
|
al@695
|
484 cd $TMP_DIR
|
al@695
|
485 cat > $file/receipt <<EOT
|
al@695
|
486 # SliTaz package receipt.
|
al@695
|
487 # generated by tazpkg from debian package $(basename $PACKAGE_FILE)
|
al@695
|
488 PACKAGE="$package"
|
al@695
|
489 VERSION="$version"
|
al@695
|
490 CATEGORY="misc"
|
al@695
|
491 SHORT_DESC="$descrip"
|
pascal@697
|
492 WEB_SITE="${homepage:-http://packages.debian.org/search?keywords=$package}"
|
al@695
|
493 MAINTAINER="nobody@slitaz.org"
|
al@695
|
494 EOT
|
al@695
|
495 LICENSE="$(grep /usr/share/common-licenses/ \
|
al@695
|
496 $PACKAGE_FILE $TMP_DIR/$file/fs/usr/share/doc/*/copyright | \
|
al@695
|
497 sed 's|.*common-licenses/\([-\.A-Za-z0-9]*\).*|\1|;s|[-\.]$||q')"
|
al@695
|
498 [ -n "$LICENSE" ] && echo "LICENSE=\"$LICENSE\"" >> $file/receipt
|
al@695
|
499 echo "DEPENDS=\"$(find_depends)\"" >> $file/receipt
|
al@695
|
500 [ -s conffiles ] && cat >> $file/receipt <<EOT
|
al@695
|
501 CONFIG_FILES="$(cat conffiles)"
|
al@695
|
502 EOT
|
al@695
|
503 show_unresolved_lib $file/receipt
|
al@695
|
504 awk '
|
al@695
|
505 {
|
al@695
|
506 if (/^ / && show) print substr($0,2);
|
al@695
|
507 else show=0;
|
al@695
|
508 if (/^Description/) show=1;
|
al@695
|
509 }' < $TMP_DIR/control > $file/description.txt
|
al@695
|
510 sed -i 's/^\.$//' $file/description.txt
|
al@695
|
511 [ -s $file/description.txt ] || rm -f $file/description.txt
|
al@695
|
512 tazpkg pack $file
|
al@695
|
513 mv $file.tazpkg $TOP_DIR
|
al@695
|
514 ;;
|
al@695
|
515 *)
|
al@707
|
516 _ 'Invalid target: %s (expected i386)' $target
|
al@695
|
517 ;;
|
al@695
|
518 esac
|
al@695
|
519 cd $TOP_DIR
|
al@695
|
520 rm -rf $TMP_DIR
|
al@695
|
521 }
|
al@695
|
522
|
al@695
|
523
|
al@695
|
524 # convert a .rpm package to .tazpkg
|
al@695
|
525
|
al@695
|
526 convert_rpm()
|
al@695
|
527 {
|
al@695
|
528 mkdir -p $TMP_DIR
|
al@695
|
529 cp $PACKAGE_FILE $TMP_DIR
|
al@695
|
530 PACKAGE_FILE=$TMP_DIR/$(basename $PACKAGE_FILE)
|
al@695
|
531 rpm -qip $PACKAGE_FILE | awk -v pkg=$(basename $PACKAGE_FILE) '
|
al@695
|
532 BEGIN {
|
al@695
|
533 goturl=0;
|
al@695
|
534 printf "# SliTaz package receipt.\n";
|
al@695
|
535 printf "# generated by tazpkg from rpm package %s\n",pkg;
|
al@695
|
536 }
|
al@695
|
537 {
|
al@695
|
538 if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; }
|
al@695
|
539 if (/^Version/) printf "VERSION=\"%s-",$3;
|
al@695
|
540 if (/^Release/) printf "%s\"\n",$3;
|
al@695
|
541 if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15);
|
al@695
|
542 if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; }
|
al@695
|
543 }
|
al@695
|
544 END {
|
al@695
|
545 if (goturl == 0)
|
al@695
|
546 printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name;
|
al@695
|
547 printf "CATEGORY=\"misc\"\n";
|
al@695
|
548 printf "MAINTAINER=\"nobody@slitaz.org\"\n";
|
al@695
|
549 }
|
al@695
|
550 ' > $TMP_DIR/receipt
|
al@695
|
551 . $TMP_DIR/receipt
|
al@695
|
552 file=$PACKAGE-$VERSION
|
al@695
|
553 mkdir -p $TMP_DIR/$file/fs/
|
al@695
|
554 mv $TMP_DIR/receipt $TMP_DIR/$file
|
al@695
|
555 rpm -qip $PACKAGE_FILE | awk '
|
al@695
|
556 BEGIN { show=0 }
|
al@695
|
557 {
|
al@695
|
558 if (show) print;
|
al@695
|
559 if (/^Description/) show=1;
|
al@695
|
560 }
|
al@695
|
561 ' > $TMP_DIR/$file/description.txt
|
al@695
|
562 cd $TMP_DIR/$file/fs/
|
al@695
|
563 rpm2cpio $PACKAGE_FILE | cpio -idm --quiet
|
al@695
|
564 # rpm2cpio can't extract some new RPMs
|
al@695
|
565 if [ $? == 1 ]; then
|
al@695
|
566 if [ ! -e $INSTALLED/p7zip-full/receipt ]; then
|
al@707
|
567 boldify "$(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')"
|
al@707
|
568 confirm "$(_n 'Do you want to install "%s" package? (y/N)' 'p7zip-full')"
|
al@695
|
569 if [ $? = 0 ]; then
|
al@695
|
570 tazpkg -gi p7zip-full
|
al@695
|
571 else
|
al@695
|
572 rm -rf $TMP_DIR
|
al@695
|
573 exit 1
|
al@695
|
574 fi
|
al@695
|
575 fi
|
al@695
|
576 # we may already have 7z or may have just installed it in the step above
|
al@695
|
577 if [ -e $INSTALLED/p7zip-full/receipt ]; then
|
al@695
|
578 7z x -so $PACKAGE_FILE | cpio -idm --quiet
|
al@695
|
579 fi
|
al@695
|
580 fi
|
al@695
|
581 cd ../..
|
al@695
|
582 echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt
|
al@695
|
583 show_unresolved_lib $TMP_DIR/$file/receipt
|
al@695
|
584 tazpkg pack $file
|
al@695
|
585 mv $file.tazpkg $TOP_DIR
|
al@695
|
586 cd $TOP_DIR
|
al@695
|
587 rm -rf $TMP_DIR
|
al@695
|
588 }
|
al@695
|
589
|
pascal@698
|
590 # convert a .xbps package to .tazpkg (http://repo.voidlinux.eu/current/)
|
pascal@698
|
591 xbpstag()
|
pascal@698
|
592 {
|
pascal@698
|
593 sed "/<key>$1<\/key>/!d{n;s/.*>\\(.*\\)<.*/\\1/}" \
|
pascal@698
|
594 < fs/props.plist | sed \$!d
|
pascal@698
|
595 }
|
pascal@698
|
596
|
pascal@698
|
597 convert_xbps()
|
pascal@698
|
598 {
|
pascal@698
|
599 mkdir -p $TMP_DIR/fs
|
pascal@698
|
600 ( xzcat $PACKAGE_FILE || bzcat $PACKAGE_FILE || zcat $PACKAGE_FILE ) | \
|
pascal@698
|
601 tar xf - -C $TMP_DIR/fs
|
pascal@698
|
602
|
pascal@698
|
603 cd $TMP_DIR
|
pascal@698
|
604 HOST_ARCH="$(xbpstag architecture)"
|
pascal@698
|
605 case "$HOST_ARCH" in
|
pascal@698
|
606 i686) HOST_ARCH="i486" ;;
|
al@707
|
607 *) _ 'Arch "%s" not supported.' $HOST_ARCH
|
pascal@698
|
608 HOST_ARCH=
|
pascal@698
|
609 esac
|
pascal@698
|
610
|
pascal@698
|
611 if [ "$HOST_ARCH" ]; then
|
pascal@698
|
612 package="$(xbpstag pkgname)"
|
pascal@698
|
613 version="$(xbpstag version)"
|
pascal@698
|
614 file=$package-$version
|
pascal@698
|
615 mkdir $file
|
pascal@698
|
616 cat > $file/receipt <<EOT
|
pascal@698
|
617 # SliTaz package receipt.
|
pascal@698
|
618 # generated by tazpkg from package $(basename $PACKAGE_FILE)
|
pascal@698
|
619 PACKAGE="$package"
|
pascal@698
|
620 VERSION="$version"
|
pascal@698
|
621 CATEGORY="misc"
|
pascal@698
|
622 SHORT_DESC="$(xbpstag short_desc)"
|
pascal@698
|
623 WEB_SITE="$(xbpstag homepage)"
|
pascal@698
|
624 MAINTAINER="$(xbpstag maintainer | sed 's/>/>/;s/</</')"
|
pascal@698
|
625 LICENSE="$(xbpstag license | sed 's/-//g')"
|
pascal@698
|
626 HOST_ARCH="$HOST_ARCH"
|
pascal@698
|
627 CONFIG_FILES="$(sed '/<key>conf_files<\/key>/,/<key>/!d;/array>/d;/<key>/d;s/.*>\(.*\)<.*/\1/' fs/props.plist)"
|
pascal@698
|
628
|
pascal@698
|
629 DEPENDS="$(find_depends)"
|
pascal@698
|
630
|
pascal@698
|
631 EOT
|
pascal@698
|
632 while read script func ; do
|
pascal@698
|
633 [ -s fs/$script ] && cat >> $file/receipt <<EOT
|
pascal@698
|
634 xbps_$func()
|
pascal@698
|
635 {
|
pascal@698
|
636 set +e
|
pascal@698
|
637 $(cat fs/$script)
|
pascal@698
|
638 }
|
pascal@698
|
639
|
pascal@698
|
640 pre_$func()
|
pascal@698
|
641 {
|
pascal@698
|
642 xbps_$func pre $package $version yes /etc/xbps.conf $HOST_ARCH
|
pascal@698
|
643 }
|
pascal@698
|
644
|
pascal@698
|
645 post_$func()
|
pascal@698
|
646 {
|
pascal@698
|
647 xbps_$func post $package $version yes /etc/xbps.conf $HOST_ARCH
|
pascal@698
|
648 }
|
pascal@698
|
649
|
pascal@698
|
650 EOT
|
pascal@698
|
651 rm -f fs/$script
|
pascal@698
|
652 done << EOT
|
pascal@698
|
653 INSTALL install
|
pascal@698
|
654 REMOVE remove
|
pascal@698
|
655 EOT
|
pascal@698
|
656 rm -f fs/*.plist
|
pascal@698
|
657 mv fs $package-$version
|
pascal@698
|
658 tazpkg pack $package-$version
|
pascal@698
|
659 mv $package-$version.tazpkg $TOP_DIR
|
pascal@698
|
660 fi
|
pascal@698
|
661 cd $TOP_DIR
|
pascal@698
|
662 rm -rf $TMP_DIR
|
pascal@698
|
663 }
|
al@695
|
664
|
pascal@734
|
665 finish_convert_tinycore()
|
pascal@734
|
666 {
|
pascal@734
|
667 cat > $file/receipt <<EOT
|
pascal@734
|
668 # SliTaz package receipt.
|
pascal@734
|
669 # generated by tazpkg from tinycore package $(basename $PACKAGE_FILE)
|
pascal@734
|
670 PACKAGE="$package"
|
pascal@734
|
671 VERSION="$version"
|
pascal@734
|
672 CATEGORY="misc"
|
pascal@734
|
673 SHORT_DESC="tinycore package $(basename $PACKAGE_FILE)"
|
pascal@734
|
674 WEB_SITE="http://tinycorelinux.net/"
|
pascal@734
|
675 MAINTAINER="nobody@slitaz.org"
|
pascal@734
|
676 DEPENDS="$(find_depends)"
|
pascal@734
|
677 EOT
|
pascal@734
|
678 show_unresolved_lib $file/receipt
|
pascal@734
|
679 script=$file/fs/usr/local/tce.installed/$PACKAGE
|
pascal@734
|
680 [ -f $script ] && cat >> $file/receipt <<EOM
|
pascal@734
|
681
|
pascal@734
|
682 post_install()
|
pascal@734
|
683 {
|
pascal@734
|
684 chroot \$1/ sh - << EOT
|
pascal@734
|
685 cd /
|
pascal@734
|
686 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $script)
|
pascal@734
|
687 EOT
|
pascal@734
|
688 }
|
pascal@734
|
689 EOM
|
pascal@734
|
690 [ -d $file/fs/usr/local/tce.installed ] &&
|
pascal@734
|
691 rm -rf $file/fs/usr/local/tce.installed
|
pascal@734
|
692 tazpkg pack $file
|
pascal@734
|
693 mv $file.tazpkg $TOP_DIR
|
pascal@734
|
694 cd $TOP_DIR
|
pascal@734
|
695 rm -rf $TMP_DIR
|
pascal@734
|
696 }
|
pascal@734
|
697
|
pascal@734
|
698 # convert a .tce package to .tazpkg
|
pascal@734
|
699
|
pascal@734
|
700 convert_tce()
|
pascal@734
|
701 {
|
pascal@734
|
702 if ! tar tzf $PACKAGE_FILE | grep -q ^usr/local ; then
|
pascal@734
|
703 _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'Tinycore'
|
pascal@734
|
704 return 1
|
pascal@734
|
705 fi
|
pascal@734
|
706 mkdir -p $TMP_DIR
|
pascal@734
|
707 cd $TMP_DIR
|
pascal@734
|
708 case "$PACKAGE_FILE" in
|
pascal@734
|
709 *.tcel) parse_pkgname .tcel ;;
|
pascal@734
|
710 *.tcem) parse_pkgname .tcem ;;
|
pascal@734
|
711 *) parse_pkgname .tce ;;
|
pascal@734
|
712 esac
|
pascal@734
|
713 mkdir -p $file/fs
|
pascal@734
|
714 tar xzf $PACKAGE_FILE -C $file/fs
|
pascal@734
|
715 finish_convert_tinycore
|
pascal@734
|
716 }
|
pascal@734
|
717
|
pascal@734
|
718 # convert a .tcz package to .tazpkg
|
pascal@734
|
719
|
pascal@734
|
720 convert_tcz()
|
pascal@734
|
721 {
|
pascal@734
|
722 [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
|
pascal@734
|
723 if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/$ ; then
|
pascal@734
|
724 _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'Tinycore'
|
pascal@734
|
725 return 1
|
pascal@734
|
726 fi
|
pascal@734
|
727 mkdir -p $TMP_DIR
|
pascal@734
|
728 cd $TMP_DIR
|
pascal@734
|
729 parse_pkgname .tcz
|
pascal@734
|
730 unsquashfs $PACKAGE_FILE
|
pascal@734
|
731 mv squashfs-root $file/fs
|
pascal@734
|
732 finish_convert_tinycore
|
pascal@734
|
733 }
|
al@695
|
734
|
al@695
|
735
|
al@695
|
736 if [ "$(dd if=$PACKAGE_FILE bs=8 count=1 skip=1 2> /dev/null)" == "debian-b" ]; then
|
al@695
|
737 convert_deb
|
al@695
|
738 else
|
al@695
|
739 case "$PACKAGE_FILE" in
|
al@695
|
740 *.deb|*.udeb)
|
al@695
|
741 convert_deb;;
|
al@695
|
742 *.rpm)
|
al@695
|
743 convert_rpm;;
|
al@695
|
744 *.sb)
|
al@695
|
745 convert_sb;;
|
al@695
|
746 *.sfs)
|
al@695
|
747 convert_sfs;;
|
al@695
|
748 *.pet)
|
al@695
|
749 convert_pet;;
|
al@695
|
750 *.tgz)
|
al@695
|
751 convert_tgz;;
|
pascal@754
|
752 *.cards.tar.xz)
|
pascal@754
|
753 convert_nutyx;;
|
al@695
|
754 *.apk|*.pkg.tar.gz|*.pkg.tar.xz)
|
al@695
|
755 convert_arch;;
|
al@695
|
756 *.ipk|*.opk)
|
al@695
|
757 convert_ipk;;
|
al@695
|
758 *.spack)
|
al@695
|
759 convert_spack;;
|
al@695
|
760 *.tar.bz2)
|
al@695
|
761 convert_upkg;;
|
pascal@698
|
762 *.xbps)
|
pascal@698
|
763 convert_xbps;;
|
pascal@734
|
764 *.tce|*.tcel|*.tcem)
|
pascal@734
|
765 convert_tce;;
|
pascal@734
|
766 *.tcz)
|
pascal@734
|
767 convert_tcz;;
|
al@695
|
768 *)
|
al@695
|
769 _ 'Unsupported format' ;;
|
al@695
|
770 esac
|
al@695
|
771 fi
|
al@695
|
772
|
al@695
|
773 exit 0
|