# HG changeset patch # User Aleksej Bobylev # Date 1417479729 -7200 # Node ID 52d1418d89d7b3b7c1496f3d2ea1605d41e2554e # Parent d25da6d9be7acc08a893d485d06e1584ecbce32b Separate convert functions to tazpkg-convert; functions that are common to the tazpkg and tazpkg-convert moved to libs. diff -r d25da6d9be7a -r 52d1418d89d7 Makefile --- a/Makefile Mon Dec 01 01:06:57 2014 +0200 +++ b/Makefile Tue Dec 02 02:22:09 2014 +0200 @@ -13,6 +13,7 @@ all: msgfmt + # i18n. pot: @@ -40,49 +41,75 @@ fi; \ done; + # Installation. install: msgfmt # TazPkg command line interface - install -m 0755 -d $(DESTDIR)$(PREFIX)/bin - install -m 0777 tazpkg $(DESTDIR)$(PREFIX)/bin + install -m 0755 -d $(DESTDIR)$(PREFIX)/bin + install -m 0777 tazpkg $(DESTDIR)$(PREFIX)/bin + install -m 0777 tazpkg-convert $(DESTDIR)$(PREFIX)/bin + install -m 0755 -d $(DESTDIR)$(PREFIX)/lib/tazpkg + install -m 0777 tazpkg-find-depends $(DESTDIR)$(PREFIX)/lib/tazpkg + # TazPkg-box GUI install -m 0777 tazpkg-notify $(DESTDIR)$(PREFIX)/bin - install -m 0777 tazpkg-box $(DESTDIR)$(PREFIX)/bin + install -m 0777 tazpkg-box $(DESTDIR)$(PREFIX)/bin + # Configuration files - install -m 0755 -d $(DESTDIR)$(SYSCONFDIR) + install -m 0755 -d $(DESTDIR)$(SYSCONFDIR) install -m 0644 tazpkg.conf $(DESTDIR)$(SYSCONFDIR) + # Documentation install -m 0755 -d $(DESTDIR)$(DOCDIR)/tazpkg - cp -a doc/* $(DESTDIR)$(DOCDIR)/tazpkg + cp -a doc/* $(DESTDIR)$(DOCDIR)/tazpkg + # TazPanel files install -m 0755 -d $(DESTDIR)/var/www/tazpanel/menu.d - cp -a pkgs.cgi $(DESTDIR)/var/www/tazpanel - cp -a pkgs $(DESTDIR)/var/www/tazpanel/menu.d + cp -a pkgs.cgi $(DESTDIR)/var/www/tazpanel + cp -a pkgs $(DESTDIR)/var/www/tazpanel/menu.d + # The i18n files install -m 0755 -d $(DESTDIR)$(PREFIX)/share/locale - cp -a po/mo/* $(DESTDIR)$(PREFIX)/share/locale + cp -a po/mo/* $(DESTDIR)$(PREFIX)/share/locale + # Desktop integration - mkdir -p $(DESTDIR)$(PREFIX)/share - cp -a applications $(DESTDIR)$(PREFIX)/share - cp -a mime $(DESTDIR)$(PREFIX)/share - cp -a pixmaps $(DESTDIR)$(PREFIX)/share - # TazPKG Notify XDG autostart - mkdir -p $(DESTDIR)/etc/xdg + mkdir -p $(DESTDIR)$(PREFIX)/share + cp -a applications $(DESTDIR)$(PREFIX)/share + #cp -a mime $(DESTDIR)$(PREFIX)/share # moved to shared-mime-info package + cp -a pixmaps $(DESTDIR)$(PREFIX)/share + + # TazPkg Notify XDG autostart + mkdir -p $(DESTDIR)/etc/xdg cp -a xdg/autostart $(DESTDIR)/etc/xdg - + # Uninstallation and clean-up commands. uninstall: - rm -f $(DESTDIR)$(PREFIX)/bin/tazpkg - rm -f $(DESTDIR)$(PREFIX)/bin/tazpkg-box - rm -f $(DESTDIR)$(PREFIX)/var/www/tazpanel/menu.d/pkgs - rm -f $(DESTDIR)$(PREFIX)/var/www/tazpanel/pkgs.cgi - rm -rf $(DESTDIR)$(PREFIX)/tazpkg-notify + rm -f $(DESTDIR)$(PREFIX)/bin/tazpkg + rm -f $(DESTDIR)$(PREFIX)/bin/tazpkg-convert + rm -f $(DESTDIR)$(PREFIX)/lib/tazpkg/tazpkg-find-depends + + rm -f $(DESTDIR)$(PREFIX)/bin/tazpkg-notify + rm -f $(DESTDIR)$(PREFIX)/bin/tazpkg-box + + rm -f $(DESTDIR)$(SYSCONFDIR)/tazpkg.conf + rm -rf $(DESTDIR)$(DOCDIR)/tazpkg - rm -f $(DESTDIR)$(SYSCONFDIR)/tazpkg.conf - rm -rf $(DESTDIR)$(PREFIX)/share/locale/*/LC_MESSAGES/tazpkg*.mo + + rm -f $(DESTDIR)/var/www/tazpanel/pkgs.cgi + rm -f $(DESTDIR)/var/www/tazpanel/menu.d/pkgs + + rm -rf $(DESTDIR)$(PREFIX)/share/locale/*/LC_MESSAGES/tazpkg.mo + + rm -f $(DESTDIR)$(PREFIX)/share/applications/tazpkg-*.desktop + rm -f $(DESTDIR)$(PREFIX)/share/applications/tazpanel-pkgs.desktop + + rm -f $(DESTDIR)$(PREFIX)/share/pixmaps/tazpkg*.png + + rm -f $(DESTDIR)/etc/xdg/autostart/tazpkg-notify.desktop + clean: rm -rf _pkg @@ -90,19 +117,20 @@ rm -rf po/mo rm -f po/*~ rm -f po/*.mo - + targz: rm -rf ${tmpdir} mkdir -p ${tmpdir} - + make DESTDIR=${tmpdir} install - + cd tar-install ; \ tar cvzf ${tarball} tazpkg-$(VERSION) ; \ cd - - + @echo "** Tarball successfully created in tar-install/${tarball}" + help: @echo "make [ pot | msgmerge | msgfmt | all | install | uninstall | clear | targz ]" diff -r d25da6d9be7a -r 52d1418d89d7 mime/packages/tazpkg.xml --- a/mime/packages/tazpkg.xml Mon Dec 01 01:06:57 2014 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ - - - - SliTaz package - SliTaz package - пакет SliTaz - - - - diff -r d25da6d9be7a -r 52d1418d89d7 po/fr.po --- a/po/fr.po Mon Dec 01 01:06:57 2014 +0200 +++ b/po/fr.po Tue Dec 02 02:22:09 2014 +0200 @@ -338,7 +338,7 @@ "You can use the --forced option to force installation." msgstr "" "le paquet est déjà installé.\n" -"Vous pouvez utiliser l'option --forced pour forcer son installation.\n" +"Vous pouvez utiliser l'option --forced pour forcer son installation." #: tazpkg:310 #, sh-format diff -r d25da6d9be7a -r 52d1418d89d7 po/zh_TW.po --- a/po/zh_TW.po Mon Dec 01 01:06:57 2014 +0200 +++ b/po/zh_TW.po Tue Dec 02 02:22:09 2014 +0200 @@ -421,7 +421,7 @@ "Leaving dependencies for $PACKAGE unresolved.\n" "The package is installed but will probably not work." msgstr "" -"$PACKAGE 有未解決包依賴". +"$PACKAGE 有未解決包依賴." "包已安裝但可能無法正常工作." #: tazpkg:910 diff -r d25da6d9be7a -r 52d1418d89d7 tazpkg --- a/tazpkg Mon Dec 01 01:06:57 2014 +0200 +++ b/tazpkg Tue Dec 02 02:22:09 2014 +0200 @@ -25,6 +25,7 @@ . /lib/libtaz.sh . /usr/lib/slitaz/libpkg.sh +. /usr/lib/tazpkg/tazpkg-find-depends # Internationalization. #. /usr/bin/gettext.sh @@ -116,8 +117,6 @@ UP_LIST=$LOCALSTATE/packages.up DEFAULT_MIRROR="$ONLINE_PKGS" -# Need by check_depends -TMPLOCALSTATE= @@ -1252,606 +1251,6 @@ } -# Check for ELF file - -is_elf() -{ - [ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" = "ELF" ] -} - - -# Print shared library dependencies - -ldd() -{ - LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so $1 2> /dev/null -} - - -# search dependencies for files in $TMP_DIR/$file/fs - -find_depends() -{ - DEFAULT_DEPENDS="glibc-base gcc-lib-base" - - [ -n "$TMPLOCALSTATE" ] || TMPLOCALSTATE=$LOCALSTATE - [ -f $TMPLOCALSTATE/files.list.lzma ] || tazpkg recharge > /dev/null - for i in $TMPLOCALSTATE/files.list.lzma \ - $TMPLOCALSTATE/undigest/*/files.list.lzma ; do - [ -f $i ] && lzma d $i -so >> $TMP_DIR/files.list - done - - find ${1:-$TMP_DIR/$file/fs} -type f | \ - while read chkfile ; do - is_elf $chkfile || continue - case "$chkfile" in - *.o|*.ko|*.ko.gz) continue;; - esac - - ldd $chkfile | \ - while read lib rem; do - case "$lib" in - statically|linux-gate.so*|ld-*.so|*/ld-*.so) continue;; - esac - find ${1:-$TMP_DIR/$file/fs} | grep -q /$lib$ && continue - - for dep in $(fgrep $lib files.list | cut -d: -f1); do - case " $DEFAULT_DEPENDS " in - *\ $dep\ *) continue 2;; - esac - grep -qs "^$dep$" $TMP_DIR/depends && continue 2 - done - - if [ -n "$dep" ]; then - echo "$dep" >> $TMP_DIR/depends - else - grep -qs ^$lib$ $TMP_DIR/unresolved || - echo "$lib" >> $TMP_DIR/unresolved - fi - done - done - - spc="" - sort < $TMP_DIR/depends 2> /dev/null | uniq | \ - while read file; do - echo -n "$spc$file" - spc=" " - done -} - - -show_unresolved_lib() -{ - if [ -s $TMP_DIR/unresolved ]; then - echo -e "BUGS=\"`gettext \"No dependency for\"`" >> $1 - sort < $TMP_DIR/unresolved | uniq | \ - while read file; do - _ 'WARNING: unknown dependency for $lib' - echo -n " $file" >> $1 - done - echo "\"" >> $1 - fi -} - - -# convert a .tar.bz2 package to .tazpkg - -convert_upkg() -{ - mkdir -p $TMP_DIR/fs - tar xjf $PACKAGE_FILE -C $TMP_DIR/fs - if [ -d $TMP_DIR/fs/var/lib/upkg/packages ]; then - cd $TMP_DIR - package="$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)" - version="$(sed '/^Version:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)" - url="http://www.paldo.org/" - file=$package-$version - mkdir $file - mv fs $file - maintainer=nobody@slitaz.org - descrip="$package package from paldo." - cat > $file/receipt <> $file/receipt <> $file/receipt < $file/receipt <> $file/receipt <> $file/receipt < $file/receipt <> $file/receipt <> $file/receipt < $file/description.txt - sed -i 's/^\.$//' $file/description.txt - [ -s $file/description.txt ] || rm -f $file/description.txt - tazpkg pack $file - cd $TOP_DIR - mv $TMP_DIR/$file.tazpkg . - ;; - *) - _ 'Invalid target: $target (expected i386)' - ;; - esac - rm -rf $TMP_DIR -} - - -# convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg - -convert_arch() -{ - mkdir -p $TMP_DIR/fs - busybox tar xf $PACKAGE_FILE -C $TMP_DIR/fs - if [ -f $TMP_DIR/fs/.PKGINFO ]; then - cd $TMP_DIR - package="$(grep ^pkgname fs/.PKGINFO | sed 's/.*= //')" - version="$(grep ^pkgver fs/.PKGINFO | sed 's/.*= //')" - descrip="$(grep ^pkgdesc fs/.PKGINFO | sed 's/.*= //')" - url="$(grep ^url fs/.PKGINFO | sed 's/.*= //')" - maintainer="$(grep ^packager fs/.PKGINFO | sed 's/.*= //')" - file=$package-$version - mkdir $file - mv fs $file - cat > $file/receipt < $file/receipt <> $file/receipt < /dev/null - . $package*/*.specs - desc="$PETMENUDESCR" - mv $package*/ fs - finish_convert_puppy -} - - -# convert a .sb package to .tazpkg - -convert_sb() -{ - [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs - if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/var/log/removed_scripts ; then - _ '$PACKAGE_FILE does not look like a Slax package!' - return 1 - fi - mkdir -p $TMP_DIR - cd $TMP_DIR - unsquashfs $PACKAGE_FILE - mv squashfs-root fs - parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//') - desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')" - cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > $file/description.txt - mv fs $file - cat > $file/receipt <> $file/receipt < $file/receipt <> $file/receipt < $file/description.txt - [ -s $file/description.txt ] || rm -f $file/description.txt - rm -rf $file/fs/install - tazpkg pack $file - mv $file.tazpkg $TOP_DIR - else - _ '$PACKAGE_FILE does not look like a Slackware package!' - fi - cd $TOP_DIR - rm -rf $TMP_DIR -} - - -# convert a .deb package to .tazpkg - -convert_deb() -{ - mkdir -p $TMP_DIR - dpkg-deb -e $PACKAGE_FILE $TMP_DIR - package=$(grep '^ *Package:' $TMP_DIR/control) - package=$(echo ${package##*:}) - version=$(grep '^ *Version:' $TMP_DIR/control) - version=$(echo ${version##*:}) - descrip=$(grep '^ *Description:' $TMP_DIR/control) - descrip=$(echo ${descrip##*:}) - target="$(grep ^Architecture $TMP_DIR/control | sed 's/.*: //')" - case "$target" in - i386|all) - file="$package-$version" - mkdir -p $TMP_DIR/$file/fs/ - dpkg-deb -x $PACKAGE_FILE $TMP_DIR/$file/fs - cd $TMP_DIR - cat > $file/receipt <> $file/receipt - echo "DEPENDS=\"$(find_depends)\"" >> $file/receipt - [ -s conffiles ] && cat >> $file/receipt < $file/description.txt - sed -i 's/^\.$//' $file/description.txt - [ -s $file/description.txt ] || rm -f $file/description.txt - tazpkg pack $file - mv $file.tazpkg $TOP_DIR - ;; - *) - _ 'Invalid target: $target (expected i386)' - ;; - esac - cd $TOP_DIR - rm -rf $TMP_DIR -} - - -# convert a .rpm package to .tazpkg - -convert_rpm() -{ - mkdir -p $TMP_DIR - cp $PACKAGE_FILE $TMP_DIR - PACKAGE_FILE=$TMP_DIR/$(basename $PACKAGE_FILE) - rpm -qip $PACKAGE_FILE | awk -v pkg=$(basename $PACKAGE_FILE) ' -BEGIN { - goturl=0; - printf "# SliTaz package receipt.\n"; - printf "# generated by tazpkg from rpm package %s\n",pkg; -} -{ - if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; } - if (/^Version/) printf "VERSION=\"%s-",$3; - if (/^Release/) printf "%s\"\n",$3; - if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15); - if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; } -} -END { - if (goturl == 0) - printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name; - printf "CATEGORY=\"misc\"\n"; - printf "MAINTAINER=\"nobody@slitaz.org\"\n"; -} -' > $TMP_DIR/receipt - . $TMP_DIR/receipt - file=$PACKAGE-$VERSION - mkdir -p $TMP_DIR/$file/fs/ - mv $TMP_DIR/receipt $TMP_DIR/$file - rpm -qip $PACKAGE_FILE | awk ' -BEGIN { show=0 } -{ - if (show) print; - if (/^Description/) show=1; -} -' > $TMP_DIR/$file/description.txt - cd $TMP_DIR/$file/fs/ - rpm2cpio $PACKAGE_FILE | cpio -idm --quiet - # rpm2cpio can't extract some new RPMs - if [ $? == 1 ]; then - if [ ! -e $INSTALLED/p7zip-full/receipt ]; then - boldify $(_ 'Unable to extract the RPM using standard tools (rpm2cpio).') - _n "Do you want to install 'p7zip-full' package"; confirm - if [ $? = 0 ]; then - tazpkg -gi p7zip-full - else - rm -rf $TMP_DIR - exit 1 - fi - fi - # we may already have 7z or may have just installed it in the step above - if [ -e $INSTALLED/p7zip-full/receipt ]; then - 7z x -so $PACKAGE_FILE | cpio -idm --quiet - fi - fi - cd ../.. - echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt - show_unresolved_lib $TMP_DIR/$file/receipt - tazpkg pack $file - mv $file.tazpkg $TOP_DIR - cd $TOP_DIR - rm -rf $TMP_DIR -} - - update_desktop_database() { if [ -f $1/usr/bin/update-desktop-database ] && [ -n "$updatedesktopdb" ]; then @@ -3341,37 +2740,8 @@ convert|-c) # convert misc package format to .tazpkg check_for_package_file - [ -n "$TARGET_DIR" -a -s "$TARGET_DIR/files.list.lzma" ] && - TMPLOCALSTATE="$TARGET_DIR" - if [ "$(dd if=$PACKAGE_FILE bs=8 count=1 skip=1 2> /dev/null)" \ - == "debian-b" ]; then - convert_deb - else - case "$PACKAGE_FILE" in - *.deb|*.udeb) - convert_deb;; - *.rpm) - convert_rpm;; - *.sb) - convert_sb;; - *.sfs) - convert_sfs;; - *.pet) - convert_pet;; - *.tgz) - convert_tgz;; - *.apk|*.pkg.tar.gz|*.pkg.tar.xz) - convert_arch;; - *.ipk|*.opk) - convert_ipk;; - *.spack) - convert_spack;; - *.tar.bz2) - convert_upkg;; - *) - _ 'Unsupported format' ;; - esac - fi ;; + tazpkg-convert $@ + ;; link) diff -r d25da6d9be7a -r 52d1418d89d7 tazpkg-convert --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tazpkg-convert Tue Dec 02 02:22:09 2014 +0200 @@ -0,0 +1,589 @@ +#!/bin/sh + +# This program is a part of TazPkg. +# /usr/bin/tazpkg-convert: toolset to convert alien package to the tazpkg format + +# Usage: tazpkg-convert alien_package [ target_directory ] + + +PACKAGE_FILE="$1" +TARGET_DIR="$2" +TMP_DIR=$(mktemp -d) +TOP_DIR="$(pwd)" + +. /etc/slitaz/slitaz.conf +. /lib/libtaz.sh +. /usr/lib/tazpkg/tazpkg-find-depends + +# Internationalization. +export TEXTDOMAIN='tazpkg' + + +# FIXME: what does this mean? +[ -n "$TARGET_DIR" -a -s "$TARGET_DIR/files.list.lzma" ] && TMPLOCALSTATE="$TARGET_DIR" + + +show_unresolved_lib() +{ + if [ -s $TMP_DIR/unresolved ]; then + echo -e "BUGS=\"`gettext \"No dependency for\"`" >> $1 + sort < $TMP_DIR/unresolved | uniq | \ + while read file; do + _ 'WARNING: unknown dependency for $lib' + echo -n " $file" >> $1 + done + echo "\"" >> $1 + fi +} + + +# convert a .tar.bz2 package to .tazpkg + +convert_upkg() +{ + mkdir -p $TMP_DIR/fs + tar xjf $PACKAGE_FILE -C $TMP_DIR/fs + if [ -d $TMP_DIR/fs/var/lib/upkg/packages ]; then + cd $TMP_DIR + package="$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)" + version="$(sed '/^Version:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)" + url="http://www.paldo.org/" + file=$package-$version + mkdir $file + mv fs $file + maintainer=nobody@slitaz.org + descrip="$package package from paldo." + cat > $file/receipt <> $file/receipt <> $file/receipt < $file/receipt <> $file/receipt <> $file/receipt < $file/receipt <> $file/receipt <> $file/receipt < $file/description.txt + sed -i 's/^\.$//' $file/description.txt + [ -s $file/description.txt ] || rm -f $file/description.txt + tazpkg pack $file + cd $TOP_DIR + mv $TMP_DIR/$file.tazpkg . + ;; + *) + _ 'Invalid target: $target (expected i386)' + ;; + esac + rm -rf $TMP_DIR +} + + +# convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg + +convert_arch() +{ + mkdir -p $TMP_DIR/fs + busybox tar xf $PACKAGE_FILE -C $TMP_DIR/fs + if [ -f $TMP_DIR/fs/.PKGINFO ]; then + cd $TMP_DIR + package="$(grep ^pkgname fs/.PKGINFO | sed 's/.*= //')" + version="$(grep ^pkgver fs/.PKGINFO | sed 's/.*= //')" + descrip="$(grep ^pkgdesc fs/.PKGINFO | sed 's/.*= //')" + url="$(grep ^url fs/.PKGINFO | sed 's/.*= //')" + maintainer="$(grep ^packager fs/.PKGINFO | sed 's/.*= //')" + file=$package-$version + mkdir $file + mv fs $file + cat > $file/receipt < $file/receipt <> $file/receipt < /dev/null + . $package*/*.specs + desc="$PETMENUDESCR" + mv $package*/ fs + finish_convert_puppy +} + + +# convert a .sb package to .tazpkg + +convert_sb() +{ + [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs + if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/var/log/removed_scripts ; then + _ '$PACKAGE_FILE does not look like a Slax package!' + return 1 + fi + mkdir -p $TMP_DIR + cd $TMP_DIR + unsquashfs $PACKAGE_FILE + mv squashfs-root fs + parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//') + desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')" + cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > $file/description.txt + mv fs $file + cat > $file/receipt <> $file/receipt < $file/receipt <> $file/receipt < $file/description.txt + [ -s $file/description.txt ] || rm -f $file/description.txt + rm -rf $file/fs/install + tazpkg pack $file + mv $file.tazpkg $TOP_DIR + else + _ '$PACKAGE_FILE does not look like a Slackware package!' + fi + cd $TOP_DIR + rm -rf $TMP_DIR +} + + +# convert a .deb package to .tazpkg + +convert_deb() +{ + mkdir -p $TMP_DIR + dpkg-deb -e $PACKAGE_FILE $TMP_DIR + package=$(grep '^ *Package:' $TMP_DIR/control) + package=$(echo ${package##*:}) + version=$(grep '^ *Version:' $TMP_DIR/control) + version=$(echo ${version##*:}) + descrip=$(grep '^ *Description:' $TMP_DIR/control) + descrip=$(echo ${descrip##*:}) + target="$(grep ^Architecture $TMP_DIR/control | sed 's/.*: //')" + case "$target" in + i386|all) + file="$package-$version" + mkdir -p $TMP_DIR/$file/fs/ + dpkg-deb -x $PACKAGE_FILE $TMP_DIR/$file/fs + cd $TMP_DIR + cat > $file/receipt <> $file/receipt + echo "DEPENDS=\"$(find_depends)\"" >> $file/receipt + [ -s conffiles ] && cat >> $file/receipt < $file/description.txt + sed -i 's/^\.$//' $file/description.txt + [ -s $file/description.txt ] || rm -f $file/description.txt + tazpkg pack $file + mv $file.tazpkg $TOP_DIR + ;; + *) + _ 'Invalid target: $target (expected i386)' + ;; + esac + cd $TOP_DIR + rm -rf $TMP_DIR +} + + +# convert a .rpm package to .tazpkg + +convert_rpm() +{ + mkdir -p $TMP_DIR + cp $PACKAGE_FILE $TMP_DIR + PACKAGE_FILE=$TMP_DIR/$(basename $PACKAGE_FILE) + rpm -qip $PACKAGE_FILE | awk -v pkg=$(basename $PACKAGE_FILE) ' +BEGIN { + goturl=0; + printf "# SliTaz package receipt.\n"; + printf "# generated by tazpkg from rpm package %s\n",pkg; +} +{ + if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; } + if (/^Version/) printf "VERSION=\"%s-",$3; + if (/^Release/) printf "%s\"\n",$3; + if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15); + if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; } +} +END { + if (goturl == 0) + printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name; + printf "CATEGORY=\"misc\"\n"; + printf "MAINTAINER=\"nobody@slitaz.org\"\n"; +} +' > $TMP_DIR/receipt + . $TMP_DIR/receipt + file=$PACKAGE-$VERSION + mkdir -p $TMP_DIR/$file/fs/ + mv $TMP_DIR/receipt $TMP_DIR/$file + rpm -qip $PACKAGE_FILE | awk ' +BEGIN { show=0 } +{ + if (show) print; + if (/^Description/) show=1; +} +' > $TMP_DIR/$file/description.txt + cd $TMP_DIR/$file/fs/ + rpm2cpio $PACKAGE_FILE | cpio -idm --quiet + # rpm2cpio can't extract some new RPMs + if [ $? == 1 ]; then + if [ ! -e $INSTALLED/p7zip-full/receipt ]; then + boldify $(_ 'Unable to extract the RPM using standard tools (rpm2cpio).') + _n "Do you want to install 'p7zip-full' package"; confirm + if [ $? = 0 ]; then + tazpkg -gi p7zip-full + else + rm -rf $TMP_DIR + exit 1 + fi + fi + # we may already have 7z or may have just installed it in the step above + if [ -e $INSTALLED/p7zip-full/receipt ]; then + 7z x -so $PACKAGE_FILE | cpio -idm --quiet + fi + fi + cd ../.. + echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt + show_unresolved_lib $TMP_DIR/$file/receipt + tazpkg pack $file + mv $file.tazpkg $TOP_DIR + cd $TOP_DIR + rm -rf $TMP_DIR +} + + + + +if [ "$(dd if=$PACKAGE_FILE bs=8 count=1 skip=1 2> /dev/null)" == "debian-b" ]; then + convert_deb +else + case "$PACKAGE_FILE" in + *.deb|*.udeb) + convert_deb;; + *.rpm) + convert_rpm;; + *.sb) + convert_sb;; + *.sfs) + convert_sfs;; + *.pet) + convert_pet;; + *.tgz) + convert_tgz;; + *.apk|*.pkg.tar.gz|*.pkg.tar.xz) + convert_arch;; + *.ipk|*.opk) + convert_ipk;; + *.spack) + convert_spack;; + *.tar.bz2) + convert_upkg;; + *) + _ 'Unsupported format' ;; + esac +fi + +exit 0 diff -r d25da6d9be7a -r 52d1418d89d7 tazpkg-find-depends --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tazpkg-find-depends Tue Dec 02 02:22:09 2014 +0200 @@ -0,0 +1,77 @@ +# /usr/lib/tazpkg-find-depends: this program is a part of TazPkg. +# This file contains the functions that are common to tazpkg and tazpkg-convert, +# and sourced by them. + + +# Need by check_depends +TMPLOCALSTATE= + + +# Check for ELF file + +is_elf() +{ + [ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" = "ELF" ] +} + + +# Print shared library dependencies + +ldd() +{ + LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so $1 2> /dev/null +} + + +# search dependencies for files in $TMP_DIR/$file/fs + +find_depends() +{ + DEFAULT_DEPENDS="glibc-base gcc-lib-base" + + [ -n "$TMPLOCALSTATE" ] || TMPLOCALSTATE=$LOCALSTATE + [ -f $TMPLOCALSTATE/files.list.lzma ] || tazpkg recharge > /dev/null + for i in $TMPLOCALSTATE/files.list.lzma \ + $TMPLOCALSTATE/undigest/*/files.list.lzma ; do + [ -f $i ] && lzma d $i -so >> $TMP_DIR/files.list + done + + find ${1:-$TMP_DIR/$file/fs} -type f | \ + while read chkfile ; do + is_elf $chkfile || continue + case "$chkfile" in + *.o|*.ko|*.ko.gz) continue;; + esac + + ldd $chkfile | \ + while read lib rem; do + case "$lib" in + statically|linux-gate.so*|ld-*.so|*/ld-*.so) continue;; + esac + find ${1:-$TMP_DIR/$file/fs} | grep -q /$lib$ && continue + + for dep in $(fgrep $lib files.list | cut -d: -f1); do + case " $DEFAULT_DEPENDS " in + *\ $dep\ *) continue 2;; + esac + grep -qs "^$dep$" $TMP_DIR/depends && continue 2 + done + + if [ -n "$dep" ]; then + echo "$dep" >> $TMP_DIR/depends + else + grep -qs ^$lib$ $TMP_DIR/unresolved || + echo "$lib" >> $TMP_DIR/unresolved + fi + done + done + + spc="" + sort < $TMP_DIR/depends 2> /dev/null | uniq | \ + while read file; do + echo -n "$spc$file" + spc=" " + done +} + + diff -r d25da6d9be7a -r 52d1418d89d7 xdg/autostart/tazpkg-notify.desktop --- a/xdg/autostart/tazpkg-notify.desktop Mon Dec 01 01:06:57 2014 +0200 +++ b/xdg/autostart/tazpkg-notify.desktop Tue Dec 02 02:22:09 2014 +0200 @@ -2,4 +2,5 @@ Type=Application Name=Packages Notification System Name[fr]=Notification du système de paquets +Name[ru]=Уведомления менеджера пакетов Exec=tazpkg-notify