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