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