tazpkg rev 822

Add README.devel; introduce libexec for modules; rename modules; support install variables in Makefile.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Sat Jul 25 16:50:18 2015 +0300 (2015-07-25)
parents e1399e7ca7ff
children 6d8c84911558
files Makefile README.devel applications/tazpanel-pkgs.desktop modules/convert modules/find-depends modules/help modules/tazpkg-convert modules/tazpkg-find-depends modules/tazpkg-help tazpkg
line diff
     1.1 --- a/Makefile	Fri Jul 24 17:13:16 2015 +0200
     1.2 +++ b/Makefile	Sat Jul 25 16:50:18 2015 +0300
     1.3 @@ -1,13 +1,21 @@
     1.4  # Makefile for TazPkg.
     1.5  #
     1.6 -PREFIX?=/usr
     1.7 -DOCDIR?=$(PREFIX)/share/doc
     1.8 -SYSCONFDIR?=/etc/slitaz
     1.9 +prefix?=/usr
    1.10 +exec_prefix?=$(prefix)
    1.11 +bindir?=$(exec_prefix)/bin
    1.12 +libexecdir?=$(exec_prefix)/libexec
    1.13 +datarootdir?=$(prefix)/share
    1.14 +sysconfdir?=/etc
    1.15 +docdir?=$(datarootdir)/doc/tazpkg
    1.16 +libdir?=$(exec_prefix)/lib
    1.17 +localedir?=$(datarootdir)/locale
    1.18 +iconsdir?=$(datarootdir)/icons
    1.19 +
    1.20  DESTDIR?=
    1.21  LINGUAS?=el es fr pl pt_BR ru sv zh_CN zh_TW
    1.22  
    1.23 -VERSION:=$(shell grep ^VERSION=[0-9] tazpkg | cut -d '=' -f 2)
    1.24 -ICONS = $(DESTDIR)$(PREFIX)/share/icons/hicolor/32x32
    1.25 +VERSION:=$(shell grep ^VERSION=[0-9] tazpkg | cut -d'=' -f2)
    1.26 +ICONS = $(DESTDIR)$(iconsdir)/hicolor/32x32
    1.27  
    1.28  tmpdir = tar-install/tazpkg-$(VERSION)
    1.29  tarball = tazpkg-$(VERSION).tar.gz
    1.30 @@ -21,8 +29,9 @@
    1.31  	xgettext -o po/tazpkg.pot -L Shell \
    1.32  		--package-name=TazPkg \
    1.33  		--package-version="$(VERSION)" -kaction -ktitle -k_ -k_n -k_p:1,2 \
    1.34 -		./tazpkg ./modules/tazpkg-convert ./modules/tazpkg-find-depends ./tazpkg-box \
    1.35 -		./tazpanel/pkgs.cgi ./tazpkg-notify ./modules/tazpkg-help
    1.36 +		./tazpkg \
    1.37 +		./modules/convert ./modules/find-depends ./modules/help \
    1.38 +		./tazpkg-box ./tazpkg-notify ./tazpanel/pkgs.cgi
    1.39  
    1.40  msgmerge:
    1.41  	@for l in $(LINGUAS); do \
    1.42 @@ -48,25 +57,27 @@
    1.43  
    1.44  install: msgfmt
    1.45  	# TazPkg command line interface
    1.46 -	install -m 0755 -d                  $(DESTDIR)$(PREFIX)/bin
    1.47 -	install -m 0777 tazpkg              $(DESTDIR)$(PREFIX)/bin
    1.48 -	#-[ "$(VERSION)" ] && sed -i 's/^VERSION=[0-9].*/VERSION=$(VERSION)/' $(DESTDIR)$(PREFIX)/bin/tazpkg
    1.49 -	install -m 0777 modules/tazpkg-convert      $(DESTDIR)$(PREFIX)/bin
    1.50 -	install -m 0777 modules/tazpkg-help         $(DESTDIR)$(PREFIX)/bin
    1.51 -	install -m 0755 -d                          $(DESTDIR)$(PREFIX)/lib/tazpkg
    1.52 -	install -m 0777 modules/tazpkg-find-depends $(DESTDIR)$(PREFIX)/lib/tazpkg
    1.53 +	install -m 0755 -d     $(DESTDIR)$(bindir)
    1.54 +	install -m 0755 tazpkg $(DESTDIR)$(bindir)
    1.55 +
    1.56 +	# TazPkg modules
    1.57 +	install -m 0755 -d        $(DESTDIR)$(libexecdir)/tazpkg
    1.58 +	install -m 0755 modules/* $(DESTDIR)$(libexecdir)/tazpkg
    1.59 +	# Substitute "@@MODULES@@" with modules path
    1.60 +	sed -i "s|@@MODULES@@|$(libexecdir)/tazpkg|g" $(DESTDIR)$(bindir)/tazpkg
    1.61 +	sed -i "s|@@MODULES@@|$(libexecdir)/tazpkg|g" $(DESTDIR)$(libexecdir)/tazpkg/convert
    1.62  
    1.63  	# TazPkg-box GUI
    1.64 -	install -m 0777 tazpkg-notify $(DESTDIR)$(PREFIX)/bin
    1.65 -	install -m 0777 tazpkg-box    $(DESTDIR)$(PREFIX)/bin
    1.66 +	install -m 0777 tazpkg-notify $(DESTDIR)$(bindir)
    1.67 +	install -m 0777 tazpkg-box    $(DESTDIR)$(bindir)
    1.68  
    1.69  	# Configuration files
    1.70 -	install -m 0755 -d          $(DESTDIR)$(SYSCONFDIR)
    1.71 -	install -m 0644 tazpkg.conf $(DESTDIR)$(SYSCONFDIR)
    1.72 +	install -m 0755 -d          $(DESTDIR)$(sysconfdir)/slitaz
    1.73 +	install -m 0644 tazpkg.conf $(DESTDIR)$(sysconfdir)/slitaz
    1.74  
    1.75  	# Documentation
    1.76 -	install -m 0755 -d $(DESTDIR)$(DOCDIR)/tazpkg
    1.77 -	cp -a doc/*        $(DESTDIR)$(DOCDIR)/tazpkg
    1.78 +	install -m 0755 -d $(DESTDIR)$(docdir)
    1.79 +	cp -a doc/*        $(DESTDIR)$(docdir)
    1.80  
    1.81  	# TazPanel files
    1.82  	install -m 0755 -d                $(DESTDIR)/var/www/tazpanel/menu.d
    1.83 @@ -76,13 +87,13 @@
    1.84  	install -m 0644 tazpanel/pkgs.css $(DESTDIR)/var/www/tazpanel/styles/default
    1.85  
    1.86  	# The i18n files
    1.87 -	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/locale
    1.88 -	cp -a po/mo/*      $(DESTDIR)$(PREFIX)/share/locale
    1.89 +	install -m 0755 -d $(DESTDIR)$(localedir)
    1.90 +	cp -a po/mo/*      $(DESTDIR)$(localedir)
    1.91  
    1.92  	# Desktop integration
    1.93 -	mkdir -p           $(DESTDIR)$(PREFIX)/share
    1.94 -	cp -a applications $(DESTDIR)$(PREFIX)/share
    1.95 -	#cp -a mime         $(DESTDIR)$(PREFIX)/share # moved to shared-mime-info package
    1.96 +	install -m 0755 -d                     $(DESTDIR)$(datarootdir)/applications
    1.97 +	install -m 0644 applications/*.desktop $(DESTDIR)$(datarootdir)/applications
    1.98 +	#cp -a mime         $(DESTDIR)$(datarootdir) # moved to shared-mime-info package
    1.99  
   1.100  	# Default icons
   1.101  	install -m 0755 -d $(ICONS)/apps
   1.102 @@ -94,37 +105,40 @@
   1.103  	ln -fs tazpkg.png  $(ICONS)/apps/TazPkg.png     # icon for Yad
   1.104  
   1.105  	# TazPkg Notify XDG autostart
   1.106 -	mkdir -p            $(DESTDIR)/etc/xdg
   1.107 -	cp -a xdg/autostart $(DESTDIR)/etc/xdg
   1.108 +	mkdir -p            $(DESTDIR)$(sysconfdir)/xdg
   1.109 +	cp -a xdg/autostart $(DESTDIR)$(sysconfdir)/xdg
   1.110  
   1.111  
   1.112  # Uninstallation and clean-up commands.
   1.113  
   1.114  uninstall:
   1.115 -	rm -f  $(DESTDIR)$(PREFIX)/bin/tazpkg
   1.116 -	rm -f  $(DESTDIR)$(PREFIX)/bin/tazpkg-convert
   1.117 -	rm -f  $(DESTDIR)$(PREFIX)/lib/tazpkg/tazpkg-find-depends
   1.118 +	rm -f  $(DESTDIR)$(bindir)/tazpkg
   1.119 +	rm -f  $(DESTDIR)$(libexecdir)/tazpkg/convert
   1.120 +	rm -f  $(DESTDIR)$(libexecdir)/tazpkg/find-depends
   1.121 +	rm -f  $(DESTDIR)$(libexecdir)/tazpkg/help
   1.122  
   1.123 -	rm -f  $(DESTDIR)$(PREFIX)/bin/tazpkg-notify
   1.124 -	rm -f  $(DESTDIR)$(PREFIX)/bin/tazpkg-box
   1.125 +	rm -f  $(DESTDIR)$(bindir)/tazpkg-notify
   1.126 +	rm -f  $(DESTDIR)$(bindir)/tazpkg-box
   1.127  
   1.128 -	rm -f  $(DESTDIR)$(SYSCONFDIR)/tazpkg.conf
   1.129 +	rm -f  $(DESTDIR)$(sysconfdir)/slitaz/tazpkg.conf
   1.130  
   1.131 -	rm -rf $(DESTDIR)$(DOCDIR)/tazpkg
   1.132 +	rm -rf $(DESTDIR)$(docdir)/tazpkg*.html
   1.133 +	rm     $(DESTDIR)$(docdir)
   1.134  
   1.135  	rm -f  $(DESTDIR)/var/www/tazpanel/pkgs.cgi
   1.136  	rm -f  $(DESTDIR)/var/www/tazpanel/menu.d/pkgs
   1.137 +	rm -f  $(DESTDIR)/var/www/tazpanel/styles/default/pkgs.css
   1.138  
   1.139 -	rm -rf $(DESTDIR)$(PREFIX)/share/locale/*/LC_MESSAGES/tazpkg.mo
   1.140 +	rm -rf $(DESTDIR)$(localedir)/*/LC_MESSAGES/tazpkg.mo
   1.141  
   1.142 -	rm -f  $(DESTDIR)$(PREFIX)/share/applications/tazpkg-*.desktop
   1.143 -	rm -f  $(DESTDIR)$(PREFIX)/share/applications/tazpanel-pkgs.desktop
   1.144 +	rm -f  $(DESTDIR)$(datarootdir)/applications/tazpkg-*.desktop
   1.145 +	rm -f  $(DESTDIR)$(datarootdir)/applications/tazpanel-pkgs.desktop
   1.146  
   1.147  	rm -f  $(ICONS)/apps/tazpkg.png
   1.148  	rm -f  $(ICONS)/actions/tazpkg-up.png
   1.149  	rm -f  $(ICONS)/status/tazpkg-installed.png
   1.150  
   1.151 -	rm -f  $(DESTDIR)/etc/xdg/autostart/tazpkg-notify.desktop
   1.152 +	rm -f  $(DESTDIR)$(sysconfdir)/xdg/autostart/tazpkg-notify.desktop
   1.153  
   1.154  
   1.155  clean:
   1.156 @@ -142,7 +156,7 @@
   1.157  	make DESTDIR=${tmpdir} install
   1.158  
   1.159  	cd tar-install ; \
   1.160 -	tar cvzf ${tarball} tazpkg-$(VERSION) ; \
   1.161 +	tar -cvzf ${tarball} tazpkg-$(VERSION) ; \
   1.162  	cd -
   1.163  
   1.164  	@echo "** Tarball successfully created in tar-install/${tarball}"
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/README.devel	Sat Jul 25 16:50:18 2015 +0300
     2.3 @@ -0,0 +1,107 @@
     2.4 +README file for TazPkg developers
     2.5 +=================================
     2.6 +
     2.7 +
     2.8 +Desktop integration
     2.9 +-------------------
    2.10 +
    2.11 +mimeapps.list: this file deprecated and not installed
    2.12 +https://wiki.archlinux.org/index.php/Default_applications
    2.13 +(Also, defaults.list deprecated.)
    2.14 +
    2.15 +MIME-type "x-scheme-handler/tazpkg" already listed in the tazpkg-url.desktop
    2.16 +
    2.17 +
    2.18 +Categories for .desktop files are listed here:
    2.19 +http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html
    2.20 +
    2.21 +tazpanel-pkgs.desktop: sub-category PackageManager -> category Settings
    2.22 +
    2.23 +
    2.24 +TazPkg modules
    2.25 +--------------
    2.26 +
    2.27 +About 4,000 lines of code is too big to effectively maintain it in single file.
    2.28 +
    2.29 +Linux way [https://en.wikibooks.org/wiki/Linux_Guide/How_Linux_Works]:
    2.30 +> The Linux Way can be summarized as:
    2.31 +>   * Use programs that do only one task, but do it well.
    2.32 +>   * To accomplish complex tasks, use several programs linked together.
    2.33 +>   * Store information in human-readable plain text files whenever it is
    2.34 +>     possible.
    2.35 +>   * There is no "one true way" to do anything.
    2.36 +>   * Prefer commandline tools over graphical tools.
    2.37 +
    2.38 +It decided to split single tazpkg code into few independent modules.
    2.39 +
    2.40 +Goals: not to scroll thousand of lines to move forth and back to the internal
    2.41 +tazpkg functions and to the main tazpkg code; knowledge that single code
    2.42 +changing in the one place will not have side effect in the other place; reduce
    2.43 +the barrier to entry for new developers.
    2.44 +
    2.45 +
    2.46 +Place best fit tazpkg modules is /usr/libexec directory.
    2.47 +http://www.linuxbase.org/betaspecs/fhs/fhs/ch04s07.html
    2.48 +
    2.49 +> /usr/libexec includes internal binaries that are not intended to be executed
    2.50 +> directly by users or shell scripts. Applications may use a single subdirectory
    2.51 +> under /usr/libexec.
    2.52 +
    2.53 +> Applications which use /usr/libexec in this way must not also use /usr/lib to
    2.54 +> store internal binaries, though they may use /usr/lib for the other purposes
    2.55 +> documented here.
    2.56 +
    2.57 +So, directory for tazpkg modules is /usr/libexec/tazpkg/.
    2.58 +It is out of the PATH, so modules will not interfere with original Linux
    2.59 +commands and will not autocomplete in the terminal. Nothing changed with the
    2.60 +user experience: it is still single tazpkg.
    2.61 +
    2.62 +
    2.63 +To execute module we need to know full path to the module.
    2.64 +We can use simple names for modules such as "help", "convert", "list", etc.
    2.65 +
    2.66 +
    2.67 +Directory variables
    2.68 +-------------------
    2.69 +
    2.70 +Many programs can be configured using variables such as prefix, docdir, etc.:
    2.71 +  make prefix=/usr install
    2.72 +
    2.73 +All variables are in lower case (only DESTDIR is in upper case). See more here:
    2.74 +https://www.gnu.org/prep/standards/html_node/Directory-Variables.html
    2.75 +
    2.76 +Makefile contains variables support with default values.
    2.77 +Default prefix=/usr, all other variables are defaults to values described
    2.78 +at the given link.
    2.79 +
    2.80 +
    2.81 +Code commenting
    2.82 +---------------
    2.83 +
    2.84 +Developer comments are very important to understand how program works.
    2.85 +But that comments are useless to the end user and they just increase the size
    2.86 +of the scripts without making any changes to the script business logic. It also
    2.87 +increase the size of the scripts that includes shared "libs" such as libtaz.sh.
    2.88 +
    2.89 +We can strip all the comments from installed scripts, leaving that comments
    2.90 +for developers in the SliTaz Hg repositories.
    2.91 +
    2.92 +We need only to leave "#!/bin/sh" line and one-two lines of comments described
    2.93 +what it is and where you can find the original scripts if you want to develop
    2.94 +them.
    2.95 +
    2.96 +
    2.97 +Tests
    2.98 +-----
    2.99 +
   2.100 +Tests are the important part of the development process. TazPkg development is
   2.101 +not easy. We have no automated tests at the moment. Only we can do manual tests,
   2.102 +but we even have no check-list.
   2.103 +
   2.104 +To test tazpkg effectively we need two sorts of the tests. One set of the tests
   2.105 +we can reproduce in the local file system (inside special prepared chroot
   2.106 +environment). For other tests we need special test-server that provide special
   2.107 +test cases (emulate package database changes), also provide both main and few
   2.108 +undigest repositories. We can set up special scripts and test repository on the
   2.109 +existing server (cook.slitaz.org).
   2.110 +
     3.1 --- a/applications/tazpanel-pkgs.desktop	Fri Jul 24 17:13:16 2015 +0200
     3.2 +++ b/applications/tazpanel-pkgs.desktop	Sat Jul 25 16:50:18 2015 +0300
     3.3 @@ -8,4 +8,4 @@
     3.4  TryExec=tazweb
     3.5  Exec=sh -c 'W=$HOME/.config/slitaz/subox.conf;[ -f $W ]||subox -;tazweb root:$(head $W)@127.0.0.1:82/user/pkgs.cgi'
     3.6  Icon=tazpkg
     3.7 -Categories=Settings;System;PackageManager;
     3.8 +Categories=Settings;PackageManager;
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/modules/convert	Sat Jul 25 16:50:18 2015 +0300
     4.3 @@ -0,0 +1,750 @@
     4.4 +#!/bin/sh
     4.5 +
     4.6 +# This program is a part of TazPkg.
     4.7 +# /usr/bin/tazpkg-convert: toolset to convert alien package to the tazpkg format
     4.8 +
     4.9 +# Usage: tazpkg-convert alien_package [ target_directory ]
    4.10 +
    4.11 +
    4.12 +PACKAGE_FILE="$1"
    4.13 +TARGET_DIR="$2"
    4.14 +TMP_DIR=$(mktemp -d)
    4.15 +TOP_DIR="$(pwd)"
    4.16 +
    4.17 +. /etc/slitaz/slitaz.conf
    4.18 +. /lib/libtaz.sh
    4.19 +. @@MODULES@@/find-depends
    4.20 +
    4.21 +# Internationalization.
    4.22 +export TEXTDOMAIN='tazpkg'
    4.23 +
    4.24 +
    4.25 +# FIXME: what does this mean?
    4.26 +[ -n "$TARGET_DIR" -a -s "$TARGET_DIR/files.list.lzma" ] && TMPLOCALSTATE="$TARGET_DIR"
    4.27 +
    4.28 +
    4.29 +show_unresolved_lib() {
    4.30 +	if [ -s "$TMP_DIR/unresolved" ]; then
    4.31 +		echo -e "BUGS=\"$(_n 'No dependency for:')" >> $1
    4.32 +		sort < $TMP_DIR/unresolved | uniq | \
    4.33 +		while read file; do
    4.34 +			_ 'WARNING: unknown dependency for %s' "$lib"
    4.35 +			echo -n " $file" >> $1
    4.36 +		done
    4.37 +		echo "\"" >> $1
    4.38 +	fi
    4.39 +}
    4.40 +
    4.41 +
    4.42 +# convert a .tar.bz2 package to .tazpkg
    4.43 +
    4.44 +convert_upkg() {
    4.45 +	mkdir -p $TMP_DIR/fs
    4.46 +	tar -xjf "$PACKAGE_FILE" -C $TMP_DIR/fs
    4.47 +	if [ -d "$TMP_DIR/fs/var/lib/upkg/packages" ]; then
    4.48 +		cd $TMP_DIR
    4.49 +		package="$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
    4.50 +		version="$(sed '/^Version:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
    4.51 +		url='http://www.paldo.org/'
    4.52 +		file="$package-$version"
    4.53 +		mkdir $file
    4.54 +		mv fs $file
    4.55 +		maintainer='nobody@slitaz.org'
    4.56 +		descrip="$package package from paldo."
    4.57 +		cat > $file/receipt <<EOT
    4.58 +# SliTaz package receipt.
    4.59 +# generated by tazpkg from package $(basename "$PACKAGE_FILE")
    4.60 +PACKAGE="$package"
    4.61 +VERSION="$version"
    4.62 +CATEGORY="misc"
    4.63 +SHORT_DESC="$descrip"
    4.64 +WEB_SITE="$url"
    4.65 +MAINTAINER="$maintainer"
    4.66 +DEPENDS="$(find_depends)"
    4.67 +EOT
    4.68 +		[ -s "$file/var/lib/upkg/files/*.config.bz2" ] &&
    4.69 +			cat >> $file/receipt <<EOT
    4.70 +CONFIG_FILES="$(bzcat $file/var/lib/upkg/files/*.config.bz2)"
    4.71 +EOT
    4.72 +		while read ext func ; do
    4.73 +			[ -s "$file/fs/var/lib/upkg/scripts/*.$ext" ] || continue
    4.74 +			cat >> $file/receipt <<EOT
    4.75 +
    4.76 +$func()
    4.77 +{
    4.78 +$(cat $file/fs/var/lib/upkg/scripts/*.$ext)
    4.79 +}
    4.80 +EOT
    4.81 +		done <<EOT
    4.82 +prerm	pre_remove
    4.83 +EOT
    4.84 +
    4.85 +		tazpkg pack $file
    4.86 +		mv $TMP_DIR/$file.tazpkg $TOP_DIR
    4.87 +	else
    4.88 +		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'upkg'
    4.89 +	fi
    4.90 +	cd $TOP_DIR
    4.91 +	rm -rf $TMP_DIR
    4.92 +}
    4.93 +
    4.94 +
    4.95 +# convert a .spack package to .tazpkg
    4.96 +
    4.97 +convert_spack() {
    4.98 +	mkdir -p $TMP_DIR
    4.99 +	( cd $TMP_DIR ; cpio -i ) < "$PACKAGE_FILE"
   4.100 +	cd $TMP_DIR
   4.101 +	package="$(sed '$!d;s/:.*//' about.txt)"
   4.102 +	version="$(basename "$PACKAGE_FILE" | sed "s/$package-\([^-]*\).*/\1/")"
   4.103 +	descrip="$(sed '$!d;s/.*: //' about.txt)"
   4.104 +	url='http://0linux.org/'
   4.105 +	maintainer='nobody@slitaz.org'
   4.106 +	file="$package-$version"
   4.107 +	mkdir -p $file/fs
   4.108 +	xzcat files.xz | ( cd $file/fs ; cpio -idmu )
   4.109 +	cat > $file/receipt <<EOT
   4.110 +# SliTaz package receipt.
   4.111 +# generated by tazpkg from package $(basename "$PACKAGE_FILE")
   4.112 +PACKAGE="$package"
   4.113 +VERSION="$version"
   4.114 +CATEGORY="misc"
   4.115 +SHORT_DESC="$descrip"
   4.116 +WEB_SITE="$url"
   4.117 +MAINTAINER="$maintainer"
   4.118 +DEPENDS="$(find_depends)"
   4.119 +EOT
   4.120 +	[ -s 'pre-install.sh' ] && cat >> $file/receipt <<EOT
   4.121 +
   4.122 +pre_install()
   4.123 +{
   4.124 +	cd /
   4.125 +$(sed 1d pre-install.sh)
   4.126 +}
   4.127 +EOT
   4.128 +	[ -s 'post-install.sh' ] && cat >> $file/receipt <<EOT
   4.129 +
   4.130 +post_install()
   4.131 +{
   4.132 +	cd /
   4.133 +$(sed '1,/^}/d' post-install.sh)
   4.134 +}
   4.135 +EOT
   4.136 +	tazpkg pack $file
   4.137 +	cd $TOP_DIR
   4.138 +	mv $TMP_DIR/$file.tazpkg .
   4.139 +	rm -rf $TMP_DIR
   4.140 +}
   4.141 +
   4.142 +
   4.143 +# convert a .ipk package to .tazpkg
   4.144 +
   4.145 +convert_ipk() {
   4.146 +	mkdir -p $TMP_DIR
   4.147 +	tar -xOzf "$PACKAGE_FILE" ./control.tar.gz | tar -xzf - -C $TMP_DIR
   4.148 +	package=$(sed '/^Package/!d;s/.*: //' $TMP_DIR/control)
   4.149 +	version=$(sed '/^Version/!d;s/.*: //' $TMP_DIR/control)
   4.150 +	maintainer="$(sed '/^Maintainer/!d;s/.*: //' $TMP_DIR/control)"
   4.151 +	target="$(sed '/^Architecture/!d;s/.*: //' $TMP_DIR/control)"
   4.152 +	descrip=$(sed '/^Description/!d;s/.*: //' $TMP_DIR/control)
   4.153 +	homepage=$(sed '/^Homepage/!d;s/.*: //' $TMP_DIR/control)
   4.154 +	url='http://openwrt.org/'
   4.155 +	case "$target" in
   4.156 +	i386|all)
   4.157 +		file="$package-$version"
   4.158 +		mkdir -p $TMP_DIR/$file/fs
   4.159 +		tar -xOzf "$PACKAGE_FILE" ./data.tar.gz | tar -xzf - -C $TMP_DIR/$file/fs
   4.160 +		cd $TMP_DIR
   4.161 +		cat > $file/receipt <<EOT
   4.162 +# SliTaz package receipt.
   4.163 +# generated by tazpkg from package $(basename "$PACKAGE_FILE")
   4.164 +PACKAGE="$package"
   4.165 +VERSION="$version"
   4.166 +CATEGORY="misc"
   4.167 +SHORT_DESC="$descrip"
   4.168 +WEB_SITE="${homepage:-$url}"
   4.169 +MAINTAINER="$maintainer"
   4.170 +DEPENDS="$(find_depends)"
   4.171 +EOT
   4.172 +		show_unresolved_lib $file/receipt
   4.173 +		[ -s 'conffiles' ] && cat >> $file/receipt <<EOT
   4.174 +CONFIG_FILES="$(cat conffiles)"
   4.175 +EOT
   4.176 +		show_unresolved_lib $file/receipt
   4.177 +		while read script func; do
   4.178 +			[ -s "$script" ] && cat >> $file/receipt <<EOT
   4.179 +
   4.180 +$func()
   4.181 +{
   4.182 +$(cat $script)
   4.183 +}
   4.184 +EOT
   4.185 +		done <<EOT
   4.186 +preinst		pre_install
   4.187 +postinst	post_install
   4.188 +prerm		pre_remove
   4.189 +postrm		post_remove
   4.190 +EOT
   4.191 +		awk '
   4.192 +{
   4.193 +   if (/^ / && show) print substr($0,2);
   4.194 +   else show=0;
   4.195 +   if (/^Description/) show=1;
   4.196 +}' < $TMP_DIR/control > $file/description.txt
   4.197 +		sed -i 's/^\.$//' $file/description.txt
   4.198 +		[ -s $file/description.txt ] || rm -f $file/description.txt
   4.199 +		tazpkg pack $file
   4.200 +		cd $TOP_DIR
   4.201 +		mv $TMP_DIR/$file.tazpkg .
   4.202 +		;;
   4.203 +	*)
   4.204 +		_ 'Invalid target: %s (expected i386)' "$target"
   4.205 +		;;
   4.206 +	esac
   4.207 +	rm -rf $TMP_DIR
   4.208 +}
   4.209 +
   4.210 +
   4.211 +# convert a .cards.tar.xz package to .tazpkg
   4.212 +
   4.213 +convert_nutyx() {
   4.214 +	mkdir -p $TMP_DIR/fs
   4.215 +	busybox tar -xf "$PACKAGE_FILE" -C $TMP_DIR/fs
   4.216 +	if [ -f "$TMP_DIR/fs/.META" ]; then
   4.217 +		package="$(sed '/^N/!d;s/^.//' fs/.META)"
   4.218 +		version="$(sed '/^V/!d;s/^.//' fs/.META)"
   4.219 +		descrip="$(sed '/^D/!d;s/^.//' fs/.META)"
   4.220 +		file="$package-$version"
   4.221 +		mkdir $file
   4.222 +		mv fs $file
   4.223 +		cat > $file/receipt <<EOT
   4.224 +# SliTaz package receipt.
   4.225 +# generated by tazpkg from NuTyX package $(basename "$PACKAGE_FILE")
   4.226 +PACKAGE="$package"
   4.227 +VERSION="$version"
   4.228 +CATEGORY="misc"
   4.229 +SHORT_DESC="$descrip"
   4.230 +WEB_SITE="http://www.nutyx.org/"
   4.231 +MAINTAINER="nobody@slitaz.org"
   4.232 +DEPENDS="$(find_depends)"
   4.233 +EOT
   4.234 +		show_unresolved_lib $file/receipt
   4.235 +		rm -f $file/fs/.[A-Z]*
   4.236 +		tazpkg pack $file
   4.237 +		mv $file.tazpkg $TOP_DIR
   4.238 +	else
   4.239 +		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'NuTyX'
   4.240 +	fi
   4.241 +	cd $TOP_DIR
   4.242 +	rm -rf $TMP_DIR
   4.243 +}
   4.244 +
   4.245 +
   4.246 +# convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg
   4.247 +
   4.248 +convert_arch() {
   4.249 +	mkdir -p $TMP_DIR/fs
   4.250 +	busybox tar -xf "$PACKAGE_FILE" -C $TMP_DIR/fs
   4.251 +	if [ -f "$TMP_DIR/fs/.PKGINFO" ]; then
   4.252 +		cd $TMP_DIR
   4.253 +		package="$(sed '/^pkgname/!d;s/.*= //' fs/.PKGINFO)"
   4.254 +		version="$(sed '/^pkgver/!d;s/.*= //'  fs/.PKGINFO)"
   4.255 +		descrip="$(sed '/^pkgdesc/!d;s/.*= //' fs/.PKGINFO)"
   4.256 +		url="$(sed '/^url/!d;s/.*= //' fs/.PKGINFO)"
   4.257 +		maintainer="$(sed '/^packager/!d;s/.*= //' fs/.PKGINFO)"
   4.258 +		file="$package-$version"
   4.259 +		mkdir $file
   4.260 +		mv fs $file
   4.261 +		cat > $file/receipt <<EOT
   4.262 +# SliTaz package receipt.
   4.263 +# generated by tazpkg from Archlinux package $(basename "$PACKAGE_FILE")
   4.264 +PACKAGE="$package"
   4.265 +VERSION="$version"
   4.266 +CATEGORY="misc"
   4.267 +SHORT_DESC="$descrip"
   4.268 +WEB_SITE="$url"
   4.269 +MAINTAINER="$maintainer"
   4.270 +DEPENDS="$(find_depends)"
   4.271 +EOT
   4.272 +		show_unresolved_lib $file/receipt
   4.273 +		rm -f $file/fs/.[A-Z]*
   4.274 +		tazpkg pack $file
   4.275 +		mv $file.tazpkg $TOP_DIR
   4.276 +	else
   4.277 +		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Archlinux/Alpine'
   4.278 +	fi
   4.279 +	cd $TOP_DIR
   4.280 +	rm -rf $TMP_DIR
   4.281 +}
   4.282 +
   4.283 +
   4.284 +# get package and version from PACKAGE_FILE
   4.285 +
   4.286 +parse_pkgname() {
   4.287 +	package=$(basename "${2:-$PACKAGE_FILE}" "$1")
   4.288 +	IFS='-'
   4.289 +	set -- $package
   4.290 +	unset IFS
   4.291 +	package="$1"
   4.292 +	version="$2"
   4.293 +	if [ -z "$version" ]; then
   4.294 +		package=${1%%[0-9\.]*}
   4.295 +		version=${1#$package}
   4.296 +	fi
   4.297 +	file="$package-$version"
   4.298 +	mkdir $file
   4.299 +}
   4.300 +
   4.301 +
   4.302 +finish_convert_puppy() {
   4.303 +	rm -f fs/*.specs
   4.304 +	mv fs $file
   4.305 +	cat > $file/receipt <<EOT
   4.306 +# SliTaz package receipt.
   4.307 +# generated by tazpkg from puppy package $(basename "$PACKAGE_FILE")
   4.308 +PACKAGE="$package"
   4.309 +VERSION="$version"
   4.310 +CATEGORY="misc"
   4.311 +SHORT_DESC="$desc"
   4.312 +WEB_SITE="http://puppylinux.org/"
   4.313 +MAINTAINER="nobody@slitaz.org"
   4.314 +DEPENDS="$(find_depends)"
   4.315 +EOT
   4.316 +	show_unresolved_lib $file/receipt
   4.317 +	for i in install uninstall ; do
   4.318 +		[ -f "$file/fs/p$i.sh" ] && cat >> $file/receipt <<EOM
   4.319 +
   4.320 +post_$i()
   4.321 +{
   4.322 +chroot \$1/ sh - << EOT
   4.323 +cd /
   4.324 +$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/p$i.sh ; rm -f $file/fs/p$i.sh)
   4.325 +EOT
   4.326 +}
   4.327 +EOM
   4.328 +	done
   4.329 +	sed -i 's/post_uninstall/post_remove/' $file/receipt
   4.330 +	tazpkg pack $file
   4.331 +	mv $file.tazpkg $TOP_DIR
   4.332 +	cd $TOP_DIR
   4.333 +	rm -rf $TMP_DIR
   4.334 +}
   4.335 +
   4.336 +
   4.337 +# convert a .sfs package to .tazpkg
   4.338 +
   4.339 +convert_sfs()
   4.340 +{
   4.341 +	[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
   4.342 +	if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/pet.specs$ ; then
   4.343 +		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Puppy'
   4.344 +		return 1
   4.345 +	fi
   4.346 +	mkdir -p $TMP_DIR 
   4.347 +	cd $TMP_DIR
   4.348 +	parse_pkgname .sfs
   4.349 +	unsquashfs "$PACKAGE_FILE"
   4.350 +	mv squashfs-root fs
   4.351 +	set -- $(cat fs/pet.specs)
   4.352 +	desc="$10"
   4.353 +	finish_convert_puppy
   4.354 +}
   4.355 +
   4.356 +
   4.357 +# convert a .pet package to .tazpkg
   4.358 +
   4.359 +convert_pet() {
   4.360 +	mkdir -p $TMP_DIR
   4.361 +	cd $TMP_DIR
   4.362 +	parse_pkgname .pet
   4.363 +	tar -xzf "$PACKAGE_FILE" 2>/dev/null
   4.364 +	. $package*/*.specs
   4.365 +	desc="$PETMENUDESCR"
   4.366 +	mv $package*/ fs
   4.367 +	finish_convert_puppy
   4.368 +}
   4.369 +
   4.370 +
   4.371 +# convert a .sb package to .tazpkg
   4.372 +
   4.373 +convert_sb() {
   4.374 +	[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
   4.375 +	if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/var/log/removed_scripts ; then
   4.376 +		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slax'
   4.377 +		return 1
   4.378 +	fi
   4.379 +	mkdir -p $TMP_DIR
   4.380 +	cd $TMP_DIR
   4.381 +	unsquashfs "$PACKAGE_FILE"
   4.382 +	mv squashfs-root fs
   4.383 +	parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//')
   4.384 +	desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')"
   4.385 +	cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > $file/description.txt
   4.386 +	mv fs $file
   4.387 +	cat > $file/receipt <<EOT
   4.388 +# SliTaz package receipt.
   4.389 +# generated by tazpkg from slax package $(basename "$PACKAGE_FILE")
   4.390 +PACKAGE="$package"
   4.391 +VERSION="$version"
   4.392 +CATEGORY="misc"
   4.393 +SHORT_DESC="$desc"
   4.394 +WEB_SITE="http://www.slax.org/"
   4.395 +MAINTAINER="nobody@slitaz.org"
   4.396 +DEPENDS="$(find_depends)"
   4.397 +EOT
   4.398 +	show_unresolved_lib $file/receipt
   4.399 +	[ -f "$file/fs/var/log/scripts/$package*" ] && cat >> $file/receipt <<EOM
   4.400 +
   4.401 +post_install()
   4.402 +{
   4.403 +chroot \$1/ sh - << EOT
   4.404 +cd /
   4.405 +$(cat $file/fs/var/log/scripts/$package* | sed -e 's/\\/\\\\/g' | sed -e 's/\$/\\$/g')
   4.406 +EOT
   4.407 +}
   4.408 +EOM
   4.409 +	tazpkg pack $file
   4.410 +	mv $file.tazpkg $TOP_DIR
   4.411 +	cd $TOP_DIR
   4.412 +	rm -rf $TMP_DIR
   4.413 +}
   4.414 +
   4.415 +
   4.416 +# convert a .tgz package to .tazpkg
   4.417 +
   4.418 +convert_tgz() {
   4.419 +	parse_pkgname
   4.420 +	mkdir -p $TMP_DIR/$file/fs
   4.421 +	case "$PACKAGE_FILE" in
   4.422 +	*.txz) tar -xJf "$PACKAGE_FILE" -C $TMP_DIR/$file/fs ;;
   4.423 +	*.tgz) tar -xzf "$PACKAGE_FILE" -C $TMP_DIR/$file/fs ;;
   4.424 +	esac
   4.425 +	cd $TMP_DIR
   4.426 +	if [ -d "$file/fs/install" ]; then
   4.427 +		descrip=$(sed "/^$package/!d;s/.*(\\(.*\\)).*/\\1/;q" \
   4.428 +			  $file/fs/install/slack-desc)
   4.429 +		cat > $file/receipt <<EOT
   4.430 +# SliTaz package receipt.
   4.431 +# generated by tazpkg from slackware package $(basename "$PACKAGE_FILE")
   4.432 +PACKAGE="$package"
   4.433 +VERSION="$version"
   4.434 +CATEGORY="misc"
   4.435 +SHORT_DESC="$descrip"
   4.436 +WEB_SITE="http://www.slackware.com/packages/"
   4.437 +MAINTAINER="nobody@slitaz.org"
   4.438 +DEPENDS="$(find_depends)"
   4.439 +EOT
   4.440 +		show_unresolved_lib $file/receipt
   4.441 +		[ -f "$file/fs/install/doinst.sh" ] && cat >> $file/receipt <<EOM
   4.442 +
   4.443 +post_install()
   4.444 +{
   4.445 +chroot \$1/ sh - << EOT
   4.446 +cd /
   4.447 +$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/install/doinst.sh)
   4.448 +EOT
   4.449 +}
   4.450 +EOM
   4.451 +		sed "/^$package/:d;s/^$package://" \
   4.452 +			$file/fs/install/slack-desc > $file/description.txt
   4.453 +		[ -s "$file/description.txt" ] || rm -f $file/description.txt
   4.454 +		rm -rf $file/fs/install
   4.455 +		tazpkg pack $file
   4.456 +		mv $file.tazpkg $TOP_DIR
   4.457 +	else
   4.458 +		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slackware'
   4.459 +	fi
   4.460 +	cd $TOP_DIR
   4.461 +	rm -rf $TMP_DIR
   4.462 +}
   4.463 +
   4.464 +
   4.465 +# convert a .deb package to .tazpkg
   4.466 +
   4.467 +convert_deb() {
   4.468 +	mkdir -p $TMP_DIR
   4.469 +	dpkg-deb -e "$PACKAGE_FILE" $TMP_DIR
   4.470 +	package=$(sed '/^ *Package:/!d;s/.*: //' $TMP_DIR/control)
   4.471 +	version=$(sed '/^ *Version:/!d;s/.*: //' $TMP_DIR/control)
   4.472 +	descrip=$(sed '/^ *Description:/!d;s/.*: //' $TMP_DIR/control)
   4.473 +	homepage=$(sed '/^ *Homepage:/!d;s/.*: //' $TMP_DIR/control)
   4.474 +	target="$(sed '/^ *Architecture:/!d;s/.*: //' $TMP_DIR/control)"
   4.475 +	case "$target" in
   4.476 +	i386|all)
   4.477 +		file="$package-$version"
   4.478 +		mkdir -p $TMP_DIR/$file/fs/
   4.479 +		dpkg-deb -x "$PACKAGE_FILE" $TMP_DIR/$file/fs
   4.480 +		cd $TMP_DIR
   4.481 +		cat > $file/receipt <<EOT
   4.482 +# SliTaz package receipt.
   4.483 +# generated by tazpkg from debian package $(basename "$PACKAGE_FILE")
   4.484 +PACKAGE="$package"
   4.485 +VERSION="$version"
   4.486 +CATEGORY="misc"
   4.487 +SHORT_DESC="$descrip"
   4.488 +WEB_SITE="${homepage:-http://packages.debian.org/search?keywords=$package}"
   4.489 +MAINTAINER="nobody@slitaz.org"
   4.490 +EOT
   4.491 +		LICENSE="$(grep /usr/share/common-licenses/ \
   4.492 +		  "$PACKAGE_FILE" $TMP_DIR/$file/fs/usr/share/doc/*/copyright | \
   4.493 +		  sed 's|.*common-licenses/\([-\.A-Za-z0-9]*\).*|\1|;s|[-\.]$||;q')"
   4.494 +		[ -n "$LICENSE" ] && echo "LICENSE=\"$LICENSE\"" >> $file/receipt
   4.495 +		echo "DEPENDS=\"$(find_depends)\"" >> $file/receipt
   4.496 +		[ -s 'conffiles' ] && cat >> $file/receipt <<EOT
   4.497 +CONFIG_FILES="$(cat conffiles)"
   4.498 +EOT
   4.499 +		show_unresolved_lib $file/receipt
   4.500 +		awk '
   4.501 +{
   4.502 +   if (/^ / && show) print substr($0,2);
   4.503 +   else show=0;
   4.504 +   if (/^Description/) show=1;
   4.505 +}' < $TMP_DIR/control > $file/description.txt
   4.506 +		sed -i 's/^\.$//' $file/description.txt
   4.507 +		[ -s "$file/description.txt" ] || rm -f $file/description.txt
   4.508 +		tazpkg pack $file
   4.509 +		mv $file.tazpkg $TOP_DIR
   4.510 +		;;
   4.511 +	*)
   4.512 +		_ 'Invalid target: %s (expected i386)' "$target"
   4.513 +		;;
   4.514 +	esac
   4.515 +	cd $TOP_DIR
   4.516 +	rm -rf $TMP_DIR
   4.517 +}
   4.518 +
   4.519 +
   4.520 +# convert a .rpm package to .tazpkg
   4.521 +
   4.522 +convert_rpm() {
   4.523 +	mkdir -p $TMP_DIR
   4.524 +	cp "$PACKAGE_FILE" $TMP_DIR
   4.525 +	PACKAGE_FILE="$TMP_DIR/$(basename "$PACKAGE_FILE")"
   4.526 +	rpm -qip "$PACKAGE_FILE" | awk -v pkg="$(basename "$PACKAGE_FILE")" '
   4.527 +BEGIN {
   4.528 +	goturl=0;
   4.529 +	printf "# SliTaz package receipt.\n";
   4.530 +	printf "# generated by tazpkg from rpm package %s\n",pkg;
   4.531 +}
   4.532 +{
   4.533 +	if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; }
   4.534 +	if (/^Version/) printf "VERSION=\"%s-",$3;
   4.535 +	if (/^Release/) printf "%s\"\n",$3;
   4.536 +	if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15);
   4.537 +	if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; }
   4.538 +}
   4.539 +END {
   4.540 +	if (goturl == 0)
   4.541 +		printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name;
   4.542 +	printf "CATEGORY=\"misc\"\n";
   4.543 +	printf "MAINTAINER=\"nobody@slitaz.org\"\n";
   4.544 +}
   4.545 +' > $TMP_DIR/receipt
   4.546 +	. $TMP_DIR/receipt
   4.547 +	file="$PACKAGE-$VERSION"
   4.548 +	mkdir -p $TMP_DIR/$file/fs/
   4.549 +	mv $TMP_DIR/receipt $TMP_DIR/$file
   4.550 +	rpm -qip "$PACKAGE_FILE" | awk '
   4.551 +BEGIN { show=0 }
   4.552 +{
   4.553 +  if (show) print;
   4.554 +  if (/^Description/) show=1;
   4.555 +}
   4.556 +' > $TMP_DIR/$file/description.txt
   4.557 +	cd $TMP_DIR/$file/fs/
   4.558 +	rpm2cpio "$PACKAGE_FILE" | cpio -idm --quiet
   4.559 +	# rpm2cpio can't extract some new RPMs
   4.560 +	if [ $? -eq 1 ]; then
   4.561 +		if [ ! -e $INSTALLED/p7zip-full/receipt ]; then
   4.562 +			boldify "$(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')"
   4.563 +			confirm "$(_n 'Do you want to install "%s" package? (y/N)' 'p7zip-full')"
   4.564 +			if [ $? -eq 0 ]; then
   4.565 +				tazpkg -gi p7zip-full
   4.566 +			else
   4.567 +				rm -rf $TMP_DIR
   4.568 +				exit 1
   4.569 +			fi
   4.570 +		fi
   4.571 +		# we may already have 7z or may have just installed it in the step above
   4.572 +		if [ -e "$INSTALLED/p7zip-full/receipt" ]; then
   4.573 +			7z x -so "$PACKAGE_FILE" | cpio -idm --quiet
   4.574 +		fi
   4.575 +	fi
   4.576 +	cd ../..
   4.577 +	echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt
   4.578 +	show_unresolved_lib $TMP_DIR/$file/receipt
   4.579 +	tazpkg pack $file
   4.580 +	mv $file.tazpkg $TOP_DIR
   4.581 +	cd $TOP_DIR
   4.582 +	rm -rf $TMP_DIR
   4.583 +}
   4.584 +
   4.585 +
   4.586 +# convert a .xbps package to .tazpkg (http://repo.voidlinux.eu/current/)
   4.587 +
   4.588 +xbpstag() {
   4.589 +	sed "/<key>$1<\/key>/!d{n;s/.*>\\(.*\\)<.*/\\1/}" \
   4.590 +		< fs/props.plist | sed \$!d
   4.591 +}
   4.592 +
   4.593 +convert_xbps() {
   4.594 +	mkdir -p $TMP_DIR/fs
   4.595 +	( xzcat "$PACKAGE_FILE" || bzcat "$PACKAGE_FILE" || zcat "$PACKAGE_FILE" ) | \
   4.596 +		tar -xf - -C $TMP_DIR/fs
   4.597 +
   4.598 +	cd $TMP_DIR
   4.599 +	HOST_ARCH="$(xbpstag architecture)"
   4.600 +	case "$HOST_ARCH" in
   4.601 +		i686)	HOST_ARCH='i486';;
   4.602 +		*)		_ 'Arch "%s" not supported.' "$HOST_ARCH"
   4.603 +				HOST_ARCH='';;
   4.604 +	esac
   4.605 +
   4.606 +	if [ -n "$HOST_ARCH" ]; then
   4.607 +		package="$(xbpstag pkgname)"
   4.608 +		version="$(xbpstag version)"
   4.609 +		file="$package-$version"
   4.610 +		mkdir $file
   4.611 +		cat > $file/receipt <<EOT
   4.612 +# SliTaz package receipt.
   4.613 +# generated by tazpkg from package $(basename "$PACKAGE_FILE")
   4.614 +PACKAGE="$package"
   4.615 +VERSION="$version"
   4.616 +CATEGORY="misc"
   4.617 +SHORT_DESC="$(xbpstag short_desc)"
   4.618 +WEB_SITE="$(xbpstag homepage)"
   4.619 +MAINTAINER="$(xbpstag maintainer | sed 's/&gt;/>/;s/&lt;/</')"
   4.620 +LICENSE="$(xbpstag license | sed 's/-//g')"
   4.621 +HOST_ARCH="$HOST_ARCH"
   4.622 +CONFIG_FILES="$(sed '/<key>conf_files<\/key>/,/<key>/!d;/array>/d;/<key>/d;s/.*>\(.*\)<.*/\1/' fs/props.plist)"
   4.623 +
   4.624 +DEPENDS="$(find_depends)"
   4.625 +
   4.626 +EOT
   4.627 +		while read script func ; do
   4.628 +			[ -s "fs/$script" ] && cat >> $file/receipt <<EOT
   4.629 +xbps_$func()
   4.630 +{
   4.631 +set +e
   4.632 +$(cat fs/$script)
   4.633 +}
   4.634 +
   4.635 +pre_$func()
   4.636 +{
   4.637 +	xbps_$func pre $package $version yes /etc/xbps.conf $HOST_ARCH
   4.638 +}
   4.639 +
   4.640 +post_$func()
   4.641 +{
   4.642 +	xbps_$func post $package $version yes /etc/xbps.conf $HOST_ARCH
   4.643 +}
   4.644 +
   4.645 +EOT
   4.646 +			rm -f fs/$script
   4.647 +		done <<EOT
   4.648 +INSTALL		install
   4.649 +REMOVE		remove
   4.650 +EOT
   4.651 +		rm -f fs/*.plist
   4.652 +		mv fs $package-$version
   4.653 +		tazpkg pack $package-$version
   4.654 +		mv $package-$version.tazpkg $TOP_DIR
   4.655 +	fi
   4.656 +	cd $TOP_DIR
   4.657 +	rm -rf $TMP_DIR
   4.658 +}
   4.659 +
   4.660 +
   4.661 +finish_convert_tinycore() {
   4.662 +	cat > $file/receipt <<EOT
   4.663 +# SliTaz package receipt.
   4.664 +# generated by tazpkg from tinycore package $(basename "$PACKAGE_FILE")
   4.665 +PACKAGE="$package"
   4.666 +VERSION="$version"
   4.667 +CATEGORY="misc"
   4.668 +SHORT_DESC="tinycore package $(basename "$PACKAGE_FILE")"
   4.669 +WEB_SITE="http://tinycorelinux.net/"
   4.670 +MAINTAINER="nobody@slitaz.org"
   4.671 +DEPENDS="$(find_depends)"
   4.672 +EOT
   4.673 +	show_unresolved_lib $file/receipt
   4.674 +	script="$file/fs/usr/local/tce.installed/$PACKAGE"
   4.675 +	[ -f "$script" ] && cat >> $file/receipt <<EOM
   4.676 +
   4.677 +post_install()
   4.678 +{
   4.679 +chroot \$1/ sh - << EOT
   4.680 +cd /
   4.681 +$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $script)
   4.682 +EOT
   4.683 +}
   4.684 +EOM
   4.685 +	[ -d "$file/fs/usr/local/tce.installed" ] &&
   4.686 +	rm -rf $file/fs/usr/local/tce.installed
   4.687 +	tazpkg pack $file
   4.688 +	mv $file.tazpkg $TOP_DIR
   4.689 +	cd $TOP_DIR
   4.690 +	rm -rf $TMP_DIR
   4.691 +}
   4.692 +
   4.693 +
   4.694 +# convert a .tce package to .tazpkg
   4.695 +
   4.696 +convert_tce() {
   4.697 +	if ! tar -tzf "$PACKAGE_FILE" | grep -q ^usr/local ; then
   4.698 +		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
   4.699 +		return 1
   4.700 +	fi
   4.701 +	mkdir -p $TMP_DIR
   4.702 +	cd $TMP_DIR
   4.703 +	case "$PACKAGE_FILE" in
   4.704 +		*.tcel) parse_pkgname .tcel ;;
   4.705 +		*.tcem) parse_pkgname .tcem ;;
   4.706 +		*)      parse_pkgname .tce ;;
   4.707 +	esac
   4.708 +	mkdir -p $file/fs
   4.709 +	tar -xzf "$PACKAGE_FILE" -C $file/fs
   4.710 +	finish_convert_tinycore
   4.711 +}
   4.712 +
   4.713 +
   4.714 +# convert a .tcz package to .tazpkg
   4.715 +
   4.716 +convert_tcz() {
   4.717 +	[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
   4.718 +	if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/$ ; then
   4.719 +		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
   4.720 +		return 1
   4.721 +	fi
   4.722 +	mkdir -p $TMP_DIR
   4.723 +	cd $TMP_DIR
   4.724 +	parse_pkgname .tcz
   4.725 +	unsquashfs "$PACKAGE_FILE"
   4.726 +	mv squashfs-root $file/fs
   4.727 +	finish_convert_tinycore
   4.728 +}
   4.729 +
   4.730 +
   4.731 +if [ "$(dd if="$PACKAGE_FILE" bs=8 count=1 skip=1 2>/dev/null)" == 'debian-b' ]; then
   4.732 +	convert_deb
   4.733 +else
   4.734 +	case "$PACKAGE_FILE" in
   4.735 +		*.deb|*.udeb)			convert_deb;;
   4.736 +		*.rpm)					convert_rpm;;
   4.737 +		*.sb)					convert_sb;;
   4.738 +		*.sfs)					convert_sfs;;
   4.739 +		*.pet)					convert_pet;;
   4.740 +		*.txz|*.tgz)				convert_tgz;;
   4.741 +		*.cards.tar.xz)			convert_nutyx;;
   4.742 +		*.apk|*.pkg.tar.gz|*.pkg.tar.xz)	convert_arch;;
   4.743 +		*.ipk|*.opk)			convert_ipk;;
   4.744 +		*.spack)				convert_spack;;
   4.745 +		*.tar.bz2)				convert_upkg;;
   4.746 +		*.xbps)					convert_xbps;;
   4.747 +		*.tce|*.tcel|*.tcem)	convert_tce;;
   4.748 +		*.tcz)					convert_tcz;;
   4.749 +		*)						_ 'Unsupported format';;
   4.750 +	esac
   4.751 +fi
   4.752 +
   4.753 +exit 0
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/modules/find-depends	Sat Jul 25 16:50:18 2015 +0300
     5.3 @@ -0,0 +1,85 @@
     5.4 +#!/bin/sh
     5.5 +# /usr/lib/tazpkg/tazpkg-find-depends: this program is a part of TazPkg.
     5.6 +# This file contains the functions that are common to tazpkg and tazpkg-convert,
     5.7 +# and sourced by them.
     5.8 +
     5.9 +
    5.10 +# Need by check_depends
    5.11 +TMPLOCALSTATE=
    5.12 +
    5.13 +
    5.14 +# Check for ELF file
    5.15 +
    5.16 +is_elf()
    5.17 +{
    5.18 +	[ "$(dd if="$1" bs=1 skip=1 count=3 2>/dev/null)" == "ELF" ]
    5.19 +}
    5.20 +
    5.21 +
    5.22 +# Print shared library dependencies
    5.23 +
    5.24 +ldd()
    5.25 +{
    5.26 +	LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so "$1" 2>/dev/null
    5.27 +}
    5.28 +
    5.29 +
    5.30 +# search dependencies for files in $TMP_DIR/$file/fs
    5.31 +
    5.32 +find_depends()
    5.33 +{
    5.34 +	DEFAULT_DEPENDS="glibc-base gcc-lib-base"
    5.35 +
    5.36 +	[ -n "$TMPLOCALSTATE" ] || TMPLOCALSTATE=$PKGS_DB
    5.37 +	[ -f $TMPLOCALSTATE/files.list.lzma ] || tazpkg recharge >/dev/null
    5.38 +	for i in $TMPLOCALSTATE/files.list.lzma \
    5.39 +		$TMPLOCALSTATE/undigest/*/files.list.lzma ; do
    5.40 +		[ -f $i ] && lzma d $i -so >> $TMP_DIR/files.list
    5.41 +	done
    5.42 +
    5.43 +	echo "Find depends..." 1>&2
    5.44 +	libs_found=""
    5.45 +	find ${1:-$TMP_DIR/$file/fs} -type f | \
    5.46 +	while read chkfile ; do
    5.47 +		is_elf "$chkfile" || continue
    5.48 +		case "$chkfile" in
    5.49 +			*.o|*.ko|*.ko.gz) continue;;
    5.50 +		esac
    5.51 +
    5.52 +		for lib in $(ldd "$chkfile" | sed '/=>/!d;s/ =>.*//') ; do
    5.53 +			case " $libs_found " in
    5.54 +				*\ $lib\ *) continue
    5.55 +			esac
    5.56 +			libs_found="$libs_found $lib"
    5.57 +			case "$lib" in
    5.58 +				statically|linux-gate.so*|ld-*.so|*/ld-*.so) continue;;
    5.59 +			esac
    5.60 +			find ${1:-$TMP_DIR/$file/fs} | grep -q /$lib$ && continue
    5.61 +
    5.62 +			echo -ne "for $lib                   \r" 1>&2
    5.63 +			for dep in $(fgrep $lib files.list | cut -d: -f1); do
    5.64 +				case " $DEFAULT_DEPENDS " in
    5.65 +					*\ $dep\ *) continue 2;;
    5.66 +				esac
    5.67 +				grep -qs "^$dep$" $TMP_DIR/depends && continue 2
    5.68 +			done
    5.69 +
    5.70 +			if [ -n "$dep" ]; then
    5.71 +				echo "$dep" >> $TMP_DIR/depends
    5.72 +			else
    5.73 +				grep -qs ^$lib$ $TMP_DIR/unresolved ||
    5.74 +					echo "$lib" >> $TMP_DIR/unresolved
    5.75 +			fi
    5.76 +		done
    5.77 +	done
    5.78 +
    5.79 +	spc=""
    5.80 +	[ -s $TMP_DIR/depends ] &&
    5.81 +	sort < $TMP_DIR/depends 2>/dev/null | uniq | \
    5.82 +	while read file; do
    5.83 +		echo -n "$spc$file"
    5.84 +		spc=" "
    5.85 +	done
    5.86 +}
    5.87 +
    5.88 +
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/modules/help	Sat Jul 25 16:50:18 2015 +0300
     6.3 @@ -0,0 +1,95 @@
     6.4 +#!/bin/sh
     6.5 +# TazPkg - Tiny autonomous zone packages manager.
     6.6 +# TazPkg help system
     6.7 +
     6.8 +. /lib/libtaz.sh
     6.9 +
    6.10 +T="${1#-}"
    6.11 +DOC='/usr/share/doc/tazpkg/tazpkg.html'
    6.12 +QUERY="$T"
    6.13 +
    6.14 +if [ -z "$T" ]; then
    6.15 +	tazpkg usage; exit 0
    6.16 +fi
    6.17 +
    6.18 +commands="\
    6.19 +:usage::help,h::activity,log,a::clean-cache,cc::shell::list,l::list-mirror,lm:\
    6.20 +:list-config::search,s::search-pkgname,sp::search-file,sf::get,g::install,i:\
    6.21 +:get-install,gi::install-list,get-install-list::remove,r::reconfigure::link:\
    6.22 +:set-release::add-flavor,install-flavor::info::desc,d::list-files,lf:\
    6.23 +:block,b,unblock,u,chblock::check::bugs::depends,rdepends::extract,e::pack:\
    6.24 +:repack::repack-config::recompress::convert,c::list-suggested::recharge:\
    6.25 +:upgrade,up::setup-mirror,sm::add-undigest,setup-undigest::list-undigest:\
    6.26 +:remove-undigest:"
    6.27 +
    6.28 +if [ ! $(echo $commands | grep -e "[:,]$T[:,]") ]; then
    6.29 +	try1=$(echo $commands | grep -oe ":[^:]*$T[^:]*:")
    6.30 +	if [ -z "$try1" ]; then
    6.31 +		_ 'Sorry, no help for "%s"' "$QUERY"; newline; exit 0
    6.32 +	fi
    6.33 +
    6.34 +	try2=$(echo "$try1" | tr -d : )
    6.35 +
    6.36 +	trynum=$(echo "$try2" | wc -l)
    6.37 +	if [ "$trynum" -ne 1 ]; then
    6.38 +		_p '%d help topic available:' '%d help topics available:' "$trynum" \
    6.39 +			"$trynum"; newline
    6.40 +		echo "$try2" | sed 's|^|  * &|; s|  ,|  |; s|,|, |g'
    6.41 +		exit 0
    6.42 +	else
    6.43 +		T="${try2%%,*}"
    6.44 +	fi
    6.45 +else
    6.46 +	try3=$(echo $commands | grep -oe "[:,]$T[:,]")
    6.47 +	case $try3 in
    6.48 +		:*)	try4="$try3";;
    6.49 +		,*)	try4=$(echo $commands | grep -oe ":[^:]*$try3" | cut -d, -f1);;
    6.50 +	esac
    6.51 +
    6.52 +	T=$(echo $try4 | tr -d ':,')
    6.53 +fi
    6.54 +
    6.55 +title=$(echo $commands | grep -oe ":$T\(,[^:]*\)*:" | tr -d : | sed 's|,|, |g')
    6.56 +
    6.57 +
    6.58 +# style: <h3 id="TOPIC">
    6.59 +HLP=$(sed "/id=\"$T\"/,/<h3/!d; /<h3/d; /<\/h3/d; /<h2/,\$d" $DOC)
    6.60 +if [ -z "$HLP" ]; then
    6.61 +	# style: <a name="TOPIC"></a>
    6.62 +	HLP=$(sed "/name=\"$T\"/,/name=/!d; /name=/d; /<h3/d; /<h2/,\$d" $DOC)
    6.63 +fi
    6.64 +
    6.65 +if [ -z "$HLP" ]; then
    6.66 +	_ 'Sorry, no help for "%s"' "$QUERY"
    6.67 +	exit 0
    6.68 +fi
    6.69 +
    6.70 +PRE=$(echo "$HLP" | sed "/^$/d; /<pre>/,/<\/pre\>/{s|.*|  &|; s| |·|g}; \
    6.71 +	s|^  </*pre>$||; s|<pre>||; s|</pre>||; s|  ·#|  #|;" | tr '\n' ' ' | \
    6.72 +	sed '/^[ 	]*$/d' | \
    6.73 +	sed 's|[ 	][ 	]*| |g;' | \
    6.74 +	sed 's|[ 	]*<dl>|O\n|g; s|[ 	]*</dl>|L\n|g; s|[ 	]*</*dt>||g;' | \
    6.75 +	sed 's|[ 	]*<dd>|	|g; s|</dd>|\n|g;' | \
    6.76 +	sed 's|<h4>|<b>|g; s|</h4>|</b>\n|g' | \
    6.77 +	sed 's|[ 	]*<p>[ 	]*||g; s|[ 	]*</p>|\n \n|g; s|  |\n  |g' | \
    6.78 +	sed 's|<a [^>]*>||g; s|</a>||g; s|·| |g' | \
    6.79 +	sed 's|</*nobr>||g; s|&shy;||g; s|^[ 	]*||' | \
    6.80 +	sed '/^$/d' | \
    6.81 +	sed 's|<tt>|A|g; s|<code>|A|g; s|<em>|B|g; s|<strong>|B|g; \
    6.82 +		s|</tt>|D|g; s|</code>|D|g; s|</em>|D|g; s|</strong>|C|g; \
    6.83 +		s|DD|D|g;')
    6.84 +
    6.85 +OPT=$(echo "$PRE" | sed '/O/,/L/!d; /[OL]/d')
    6.86 +OPTLIST=$(optlist "$OPT")
    6.87 +
    6.88 +OPT0=$(echo "$PRE" | tr '\n' '@')
    6.89 +OPTA=$(echo "$OPT" | tr '\n' '@')
    6.90 +OPTB=$(echo "$OPTLIST" | tr '\n' '@')
    6.91 +
    6.92 +PRE2=$(echo "$OPT0" | sed "s|$OPTA|$OPTB|" | tr '@' '\n' | sed '/O/d; s|L||')
    6.93 +
    6.94 +[ ! -z "$TA" ] && T="$T, $TA"
    6.95 +
    6.96 +title '$title'
    6.97 +emsg "$(longline "$PRE2" | sed 's|A|<c 33>|g; s|B|<c 36>|g; s|C|<b>|g; s|D|</c>|g; ')"
    6.98 +newline
     7.1 --- a/modules/tazpkg-convert	Fri Jul 24 17:13:16 2015 +0200
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,750 +0,0 @@
     7.4 -#!/bin/sh
     7.5 -
     7.6 -# This program is a part of TazPkg.
     7.7 -# /usr/bin/tazpkg-convert: toolset to convert alien package to the tazpkg format
     7.8 -
     7.9 -# Usage: tazpkg-convert alien_package [ target_directory ]
    7.10 -
    7.11 -
    7.12 -PACKAGE_FILE="$1"
    7.13 -TARGET_DIR="$2"
    7.14 -TMP_DIR=$(mktemp -d)
    7.15 -TOP_DIR="$(pwd)"
    7.16 -
    7.17 -. /etc/slitaz/slitaz.conf
    7.18 -. /lib/libtaz.sh
    7.19 -. /usr/lib/tazpkg/tazpkg-find-depends
    7.20 -
    7.21 -# Internationalization.
    7.22 -export TEXTDOMAIN='tazpkg'
    7.23 -
    7.24 -
    7.25 -# FIXME: what does this mean?
    7.26 -[ -n "$TARGET_DIR" -a -s "$TARGET_DIR/files.list.lzma" ] && TMPLOCALSTATE="$TARGET_DIR"
    7.27 -
    7.28 -
    7.29 -show_unresolved_lib() {
    7.30 -	if [ -s "$TMP_DIR/unresolved" ]; then
    7.31 -		echo -e "BUGS=\"$(_n 'No dependency for:')" >> $1
    7.32 -		sort < $TMP_DIR/unresolved | uniq | \
    7.33 -		while read file; do
    7.34 -			_ 'WARNING: unknown dependency for %s' "$lib"
    7.35 -			echo -n " $file" >> $1
    7.36 -		done
    7.37 -		echo "\"" >> $1
    7.38 -	fi
    7.39 -}
    7.40 -
    7.41 -
    7.42 -# convert a .tar.bz2 package to .tazpkg
    7.43 -
    7.44 -convert_upkg() {
    7.45 -	mkdir -p $TMP_DIR/fs
    7.46 -	tar -xjf "$PACKAGE_FILE" -C $TMP_DIR/fs
    7.47 -	if [ -d "$TMP_DIR/fs/var/lib/upkg/packages" ]; then
    7.48 -		cd $TMP_DIR
    7.49 -		package="$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
    7.50 -		version="$(sed '/^Version:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
    7.51 -		url='http://www.paldo.org/'
    7.52 -		file="$package-$version"
    7.53 -		mkdir $file
    7.54 -		mv fs $file
    7.55 -		maintainer='nobody@slitaz.org'
    7.56 -		descrip="$package package from paldo."
    7.57 -		cat > $file/receipt <<EOT
    7.58 -# SliTaz package receipt.
    7.59 -# generated by tazpkg from package $(basename "$PACKAGE_FILE")
    7.60 -PACKAGE="$package"
    7.61 -VERSION="$version"
    7.62 -CATEGORY="misc"
    7.63 -SHORT_DESC="$descrip"
    7.64 -WEB_SITE="$url"
    7.65 -MAINTAINER="$maintainer"
    7.66 -DEPENDS="$(find_depends)"
    7.67 -EOT
    7.68 -		[ -s "$file/var/lib/upkg/files/*.config.bz2" ] &&
    7.69 -			cat >> $file/receipt <<EOT
    7.70 -CONFIG_FILES="$(bzcat $file/var/lib/upkg/files/*.config.bz2)"
    7.71 -EOT
    7.72 -		while read ext func ; do
    7.73 -			[ -s "$file/fs/var/lib/upkg/scripts/*.$ext" ] || continue
    7.74 -			cat >> $file/receipt <<EOT
    7.75 -
    7.76 -$func()
    7.77 -{
    7.78 -$(cat $file/fs/var/lib/upkg/scripts/*.$ext)
    7.79 -}
    7.80 -EOT
    7.81 -		done <<EOT
    7.82 -prerm	pre_remove
    7.83 -EOT
    7.84 -
    7.85 -		tazpkg pack $file
    7.86 -		mv $TMP_DIR/$file.tazpkg $TOP_DIR
    7.87 -	else
    7.88 -		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'upkg'
    7.89 -	fi
    7.90 -	cd $TOP_DIR
    7.91 -	rm -rf $TMP_DIR
    7.92 -}
    7.93 -
    7.94 -
    7.95 -# convert a .spack package to .tazpkg
    7.96 -
    7.97 -convert_spack() {
    7.98 -	mkdir -p $TMP_DIR
    7.99 -	( cd $TMP_DIR ; cpio -i ) < "$PACKAGE_FILE"
   7.100 -	cd $TMP_DIR
   7.101 -	package="$(sed '$!d;s/:.*//' about.txt)"
   7.102 -	version="$(basename "$PACKAGE_FILE" | sed "s/$package-\([^-]*\).*/\1/")"
   7.103 -	descrip="$(sed '$!d;s/.*: //' about.txt)"
   7.104 -	url='http://0linux.org/'
   7.105 -	maintainer='nobody@slitaz.org'
   7.106 -	file="$package-$version"
   7.107 -	mkdir -p $file/fs
   7.108 -	xzcat files.xz | ( cd $file/fs ; cpio -idmu )
   7.109 -	cat > $file/receipt <<EOT
   7.110 -# SliTaz package receipt.
   7.111 -# generated by tazpkg from package $(basename "$PACKAGE_FILE")
   7.112 -PACKAGE="$package"
   7.113 -VERSION="$version"
   7.114 -CATEGORY="misc"
   7.115 -SHORT_DESC="$descrip"
   7.116 -WEB_SITE="$url"
   7.117 -MAINTAINER="$maintainer"
   7.118 -DEPENDS="$(find_depends)"
   7.119 -EOT
   7.120 -	[ -s 'pre-install.sh' ] && cat >> $file/receipt <<EOT
   7.121 -
   7.122 -pre_install()
   7.123 -{
   7.124 -	cd /
   7.125 -$(sed 1d pre-install.sh)
   7.126 -}
   7.127 -EOT
   7.128 -	[ -s 'post-install.sh' ] && cat >> $file/receipt <<EOT
   7.129 -
   7.130 -post_install()
   7.131 -{
   7.132 -	cd /
   7.133 -$(sed '1,/^}/d' post-install.sh)
   7.134 -}
   7.135 -EOT
   7.136 -	tazpkg pack $file
   7.137 -	cd $TOP_DIR
   7.138 -	mv $TMP_DIR/$file.tazpkg .
   7.139 -	rm -rf $TMP_DIR
   7.140 -}
   7.141 -
   7.142 -
   7.143 -# convert a .ipk package to .tazpkg
   7.144 -
   7.145 -convert_ipk() {
   7.146 -	mkdir -p $TMP_DIR
   7.147 -	tar -xOzf "$PACKAGE_FILE" ./control.tar.gz | tar -xzf - -C $TMP_DIR
   7.148 -	package=$(sed '/^Package/!d;s/.*: //' $TMP_DIR/control)
   7.149 -	version=$(sed '/^Version/!d;s/.*: //' $TMP_DIR/control)
   7.150 -	maintainer="$(sed '/^Maintainer/!d;s/.*: //' $TMP_DIR/control)"
   7.151 -	target="$(sed '/^Architecture/!d;s/.*: //' $TMP_DIR/control)"
   7.152 -	descrip=$(sed '/^Description/!d;s/.*: //' $TMP_DIR/control)
   7.153 -	homepage=$(sed '/^Homepage/!d;s/.*: //' $TMP_DIR/control)
   7.154 -	url='http://openwrt.org/'
   7.155 -	case "$target" in
   7.156 -	i386|all)
   7.157 -		file="$package-$version"
   7.158 -		mkdir -p $TMP_DIR/$file/fs
   7.159 -		tar -xOzf "$PACKAGE_FILE" ./data.tar.gz | tar -xzf - -C $TMP_DIR/$file/fs
   7.160 -		cd $TMP_DIR
   7.161 -		cat > $file/receipt <<EOT
   7.162 -# SliTaz package receipt.
   7.163 -# generated by tazpkg from package $(basename "$PACKAGE_FILE")
   7.164 -PACKAGE="$package"
   7.165 -VERSION="$version"
   7.166 -CATEGORY="misc"
   7.167 -SHORT_DESC="$descrip"
   7.168 -WEB_SITE="${homepage:-$url}"
   7.169 -MAINTAINER="$maintainer"
   7.170 -DEPENDS="$(find_depends)"
   7.171 -EOT
   7.172 -		show_unresolved_lib $file/receipt
   7.173 -		[ -s 'conffiles' ] && cat >> $file/receipt <<EOT
   7.174 -CONFIG_FILES="$(cat conffiles)"
   7.175 -EOT
   7.176 -		show_unresolved_lib $file/receipt
   7.177 -		while read script func; do
   7.178 -			[ -s "$script" ] && cat >> $file/receipt <<EOT
   7.179 -
   7.180 -$func()
   7.181 -{
   7.182 -$(cat $script)
   7.183 -}
   7.184 -EOT
   7.185 -		done <<EOT
   7.186 -preinst		pre_install
   7.187 -postinst	post_install
   7.188 -prerm		pre_remove
   7.189 -postrm		post_remove
   7.190 -EOT
   7.191 -		awk '
   7.192 -{
   7.193 -   if (/^ / && show) print substr($0,2);
   7.194 -   else show=0;
   7.195 -   if (/^Description/) show=1;
   7.196 -}' < $TMP_DIR/control > $file/description.txt
   7.197 -		sed -i 's/^\.$//' $file/description.txt
   7.198 -		[ -s $file/description.txt ] || rm -f $file/description.txt
   7.199 -		tazpkg pack $file
   7.200 -		cd $TOP_DIR
   7.201 -		mv $TMP_DIR/$file.tazpkg .
   7.202 -		;;
   7.203 -	*)
   7.204 -		_ 'Invalid target: %s (expected i386)' "$target"
   7.205 -		;;
   7.206 -	esac
   7.207 -	rm -rf $TMP_DIR
   7.208 -}
   7.209 -
   7.210 -
   7.211 -# convert a .cards.tar.xz package to .tazpkg
   7.212 -
   7.213 -convert_nutyx() {
   7.214 -	mkdir -p $TMP_DIR/fs
   7.215 -	busybox tar -xf "$PACKAGE_FILE" -C $TMP_DIR/fs
   7.216 -	if [ -f "$TMP_DIR/fs/.META" ]; then
   7.217 -		package="$(sed '/^N/!d;s/^.//' fs/.META)"
   7.218 -		version="$(sed '/^V/!d;s/^.//' fs/.META)"
   7.219 -		descrip="$(sed '/^D/!d;s/^.//' fs/.META)"
   7.220 -		file="$package-$version"
   7.221 -		mkdir $file
   7.222 -		mv fs $file
   7.223 -		cat > $file/receipt <<EOT
   7.224 -# SliTaz package receipt.
   7.225 -# generated by tazpkg from NuTyX package $(basename "$PACKAGE_FILE")
   7.226 -PACKAGE="$package"
   7.227 -VERSION="$version"
   7.228 -CATEGORY="misc"
   7.229 -SHORT_DESC="$descrip"
   7.230 -WEB_SITE="http://www.nutyx.org/"
   7.231 -MAINTAINER="nobody@slitaz.org"
   7.232 -DEPENDS="$(find_depends)"
   7.233 -EOT
   7.234 -		show_unresolved_lib $file/receipt
   7.235 -		rm -f $file/fs/.[A-Z]*
   7.236 -		tazpkg pack $file
   7.237 -		mv $file.tazpkg $TOP_DIR
   7.238 -	else
   7.239 -		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'NuTyX'
   7.240 -	fi
   7.241 -	cd $TOP_DIR
   7.242 -	rm -rf $TMP_DIR
   7.243 -}
   7.244 -
   7.245 -
   7.246 -# convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg
   7.247 -
   7.248 -convert_arch() {
   7.249 -	mkdir -p $TMP_DIR/fs
   7.250 -	busybox tar -xf "$PACKAGE_FILE" -C $TMP_DIR/fs
   7.251 -	if [ -f "$TMP_DIR/fs/.PKGINFO" ]; then
   7.252 -		cd $TMP_DIR
   7.253 -		package="$(sed '/^pkgname/!d;s/.*= //' fs/.PKGINFO)"
   7.254 -		version="$(sed '/^pkgver/!d;s/.*= //'  fs/.PKGINFO)"
   7.255 -		descrip="$(sed '/^pkgdesc/!d;s/.*= //' fs/.PKGINFO)"
   7.256 -		url="$(sed '/^url/!d;s/.*= //' fs/.PKGINFO)"
   7.257 -		maintainer="$(sed '/^packager/!d;s/.*= //' fs/.PKGINFO)"
   7.258 -		file="$package-$version"
   7.259 -		mkdir $file
   7.260 -		mv fs $file
   7.261 -		cat > $file/receipt <<EOT
   7.262 -# SliTaz package receipt.
   7.263 -# generated by tazpkg from Archlinux package $(basename "$PACKAGE_FILE")
   7.264 -PACKAGE="$package"
   7.265 -VERSION="$version"
   7.266 -CATEGORY="misc"
   7.267 -SHORT_DESC="$descrip"
   7.268 -WEB_SITE="$url"
   7.269 -MAINTAINER="$maintainer"
   7.270 -DEPENDS="$(find_depends)"
   7.271 -EOT
   7.272 -		show_unresolved_lib $file/receipt
   7.273 -		rm -f $file/fs/.[A-Z]*
   7.274 -		tazpkg pack $file
   7.275 -		mv $file.tazpkg $TOP_DIR
   7.276 -	else
   7.277 -		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Archlinux/Alpine'
   7.278 -	fi
   7.279 -	cd $TOP_DIR
   7.280 -	rm -rf $TMP_DIR
   7.281 -}
   7.282 -
   7.283 -
   7.284 -# get package and version from PACKAGE_FILE
   7.285 -
   7.286 -parse_pkgname() {
   7.287 -	package=$(basename "${2:-$PACKAGE_FILE}" "$1")
   7.288 -	IFS='-'
   7.289 -	set -- $package
   7.290 -	unset IFS
   7.291 -	package="$1"
   7.292 -	version="$2"
   7.293 -	if [ -z "$version" ]; then
   7.294 -		package=${1%%[0-9\.]*}
   7.295 -		version=${1#$package}
   7.296 -	fi
   7.297 -	file="$package-$version"
   7.298 -	mkdir $file
   7.299 -}
   7.300 -
   7.301 -
   7.302 -finish_convert_puppy() {
   7.303 -	rm -f fs/*.specs
   7.304 -	mv fs $file
   7.305 -	cat > $file/receipt <<EOT
   7.306 -# SliTaz package receipt.
   7.307 -# generated by tazpkg from puppy package $(basename "$PACKAGE_FILE")
   7.308 -PACKAGE="$package"
   7.309 -VERSION="$version"
   7.310 -CATEGORY="misc"
   7.311 -SHORT_DESC="$desc"
   7.312 -WEB_SITE="http://puppylinux.org/"
   7.313 -MAINTAINER="nobody@slitaz.org"
   7.314 -DEPENDS="$(find_depends)"
   7.315 -EOT
   7.316 -	show_unresolved_lib $file/receipt
   7.317 -	for i in install uninstall ; do
   7.318 -		[ -f "$file/fs/p$i.sh" ] && cat >> $file/receipt <<EOM
   7.319 -
   7.320 -post_$i()
   7.321 -{
   7.322 -chroot \$1/ sh - << EOT
   7.323 -cd /
   7.324 -$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/p$i.sh ; rm -f $file/fs/p$i.sh)
   7.325 -EOT
   7.326 -}
   7.327 -EOM
   7.328 -	done
   7.329 -	sed -i 's/post_uninstall/post_remove/' $file/receipt
   7.330 -	tazpkg pack $file
   7.331 -	mv $file.tazpkg $TOP_DIR
   7.332 -	cd $TOP_DIR
   7.333 -	rm -rf $TMP_DIR
   7.334 -}
   7.335 -
   7.336 -
   7.337 -# convert a .sfs package to .tazpkg
   7.338 -
   7.339 -convert_sfs()
   7.340 -{
   7.341 -	[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
   7.342 -	if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/pet.specs$ ; then
   7.343 -		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Puppy'
   7.344 -		return 1
   7.345 -	fi
   7.346 -	mkdir -p $TMP_DIR 
   7.347 -	cd $TMP_DIR
   7.348 -	parse_pkgname .sfs
   7.349 -	unsquashfs "$PACKAGE_FILE"
   7.350 -	mv squashfs-root fs
   7.351 -	set -- $(cat fs/pet.specs)
   7.352 -	desc="$10"
   7.353 -	finish_convert_puppy
   7.354 -}
   7.355 -
   7.356 -
   7.357 -# convert a .pet package to .tazpkg
   7.358 -
   7.359 -convert_pet() {
   7.360 -	mkdir -p $TMP_DIR
   7.361 -	cd $TMP_DIR
   7.362 -	parse_pkgname .pet
   7.363 -	tar -xzf "$PACKAGE_FILE" 2>/dev/null
   7.364 -	. $package*/*.specs
   7.365 -	desc="$PETMENUDESCR"
   7.366 -	mv $package*/ fs
   7.367 -	finish_convert_puppy
   7.368 -}
   7.369 -
   7.370 -
   7.371 -# convert a .sb package to .tazpkg
   7.372 -
   7.373 -convert_sb() {
   7.374 -	[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
   7.375 -	if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/var/log/removed_scripts ; then
   7.376 -		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slax'
   7.377 -		return 1
   7.378 -	fi
   7.379 -	mkdir -p $TMP_DIR
   7.380 -	cd $TMP_DIR
   7.381 -	unsquashfs "$PACKAGE_FILE"
   7.382 -	mv squashfs-root fs
   7.383 -	parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//')
   7.384 -	desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')"
   7.385 -	cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > $file/description.txt
   7.386 -	mv fs $file
   7.387 -	cat > $file/receipt <<EOT
   7.388 -# SliTaz package receipt.
   7.389 -# generated by tazpkg from slax package $(basename "$PACKAGE_FILE")
   7.390 -PACKAGE="$package"
   7.391 -VERSION="$version"
   7.392 -CATEGORY="misc"
   7.393 -SHORT_DESC="$desc"
   7.394 -WEB_SITE="http://www.slax.org/"
   7.395 -MAINTAINER="nobody@slitaz.org"
   7.396 -DEPENDS="$(find_depends)"
   7.397 -EOT
   7.398 -	show_unresolved_lib $file/receipt
   7.399 -	[ -f "$file/fs/var/log/scripts/$package*" ] && cat >> $file/receipt <<EOM
   7.400 -
   7.401 -post_install()
   7.402 -{
   7.403 -chroot \$1/ sh - << EOT
   7.404 -cd /
   7.405 -$(cat $file/fs/var/log/scripts/$package* | sed -e 's/\\/\\\\/g' | sed -e 's/\$/\\$/g')
   7.406 -EOT
   7.407 -}
   7.408 -EOM
   7.409 -	tazpkg pack $file
   7.410 -	mv $file.tazpkg $TOP_DIR
   7.411 -	cd $TOP_DIR
   7.412 -	rm -rf $TMP_DIR
   7.413 -}
   7.414 -
   7.415 -
   7.416 -# convert a .tgz package to .tazpkg
   7.417 -
   7.418 -convert_tgz() {
   7.419 -	parse_pkgname
   7.420 -	mkdir -p $TMP_DIR/$file/fs
   7.421 -	case "$PACKAGE_FILE" in
   7.422 -	*.txz) tar -xJf "$PACKAGE_FILE" -C $TMP_DIR/$file/fs ;;
   7.423 -	*.tgz) tar -xzf "$PACKAGE_FILE" -C $TMP_DIR/$file/fs ;;
   7.424 -	esac
   7.425 -	cd $TMP_DIR
   7.426 -	if [ -d "$file/fs/install" ]; then
   7.427 -		descrip=$(sed "/^$package/!d;s/.*(\\(.*\\)).*/\\1/;q" \
   7.428 -			  $file/fs/install/slack-desc)
   7.429 -		cat > $file/receipt <<EOT
   7.430 -# SliTaz package receipt.
   7.431 -# generated by tazpkg from slackware package $(basename "$PACKAGE_FILE")
   7.432 -PACKAGE="$package"
   7.433 -VERSION="$version"
   7.434 -CATEGORY="misc"
   7.435 -SHORT_DESC="$descrip"
   7.436 -WEB_SITE="http://www.slackware.com/packages/"
   7.437 -MAINTAINER="nobody@slitaz.org"
   7.438 -DEPENDS="$(find_depends)"
   7.439 -EOT
   7.440 -		show_unresolved_lib $file/receipt
   7.441 -		[ -f "$file/fs/install/doinst.sh" ] && cat >> $file/receipt <<EOM
   7.442 -
   7.443 -post_install()
   7.444 -{
   7.445 -chroot \$1/ sh - << EOT
   7.446 -cd /
   7.447 -$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/install/doinst.sh)
   7.448 -EOT
   7.449 -}
   7.450 -EOM
   7.451 -		sed "/^$package/:d;s/^$package://" \
   7.452 -			$file/fs/install/slack-desc > $file/description.txt
   7.453 -		[ -s "$file/description.txt" ] || rm -f $file/description.txt
   7.454 -		rm -rf $file/fs/install
   7.455 -		tazpkg pack $file
   7.456 -		mv $file.tazpkg $TOP_DIR
   7.457 -	else
   7.458 -		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slackware'
   7.459 -	fi
   7.460 -	cd $TOP_DIR
   7.461 -	rm -rf $TMP_DIR
   7.462 -}
   7.463 -
   7.464 -
   7.465 -# convert a .deb package to .tazpkg
   7.466 -
   7.467 -convert_deb() {
   7.468 -	mkdir -p $TMP_DIR
   7.469 -	dpkg-deb -e "$PACKAGE_FILE" $TMP_DIR
   7.470 -	package=$(sed '/^ *Package:/!d;s/.*: //' $TMP_DIR/control)
   7.471 -	version=$(sed '/^ *Version:/!d;s/.*: //' $TMP_DIR/control)
   7.472 -	descrip=$(sed '/^ *Description:/!d;s/.*: //' $TMP_DIR/control)
   7.473 -	homepage=$(sed '/^ *Homepage:/!d;s/.*: //' $TMP_DIR/control)
   7.474 -	target="$(sed '/^ *Architecture:/!d;s/.*: //' $TMP_DIR/control)"
   7.475 -	case "$target" in
   7.476 -	i386|all)
   7.477 -		file="$package-$version"
   7.478 -		mkdir -p $TMP_DIR/$file/fs/
   7.479 -		dpkg-deb -x "$PACKAGE_FILE" $TMP_DIR/$file/fs
   7.480 -		cd $TMP_DIR
   7.481 -		cat > $file/receipt <<EOT
   7.482 -# SliTaz package receipt.
   7.483 -# generated by tazpkg from debian package $(basename "$PACKAGE_FILE")
   7.484 -PACKAGE="$package"
   7.485 -VERSION="$version"
   7.486 -CATEGORY="misc"
   7.487 -SHORT_DESC="$descrip"
   7.488 -WEB_SITE="${homepage:-http://packages.debian.org/search?keywords=$package}"
   7.489 -MAINTAINER="nobody@slitaz.org"
   7.490 -EOT
   7.491 -		LICENSE="$(grep /usr/share/common-licenses/ \
   7.492 -		  "$PACKAGE_FILE" $TMP_DIR/$file/fs/usr/share/doc/*/copyright | \
   7.493 -		  sed 's|.*common-licenses/\([-\.A-Za-z0-9]*\).*|\1|;s|[-\.]$||;q')"
   7.494 -		[ -n "$LICENSE" ] && echo "LICENSE=\"$LICENSE\"" >> $file/receipt
   7.495 -		echo "DEPENDS=\"$(find_depends)\"" >> $file/receipt
   7.496 -		[ -s 'conffiles' ] && cat >> $file/receipt <<EOT
   7.497 -CONFIG_FILES="$(cat conffiles)"
   7.498 -EOT
   7.499 -		show_unresolved_lib $file/receipt
   7.500 -		awk '
   7.501 -{
   7.502 -   if (/^ / && show) print substr($0,2);
   7.503 -   else show=0;
   7.504 -   if (/^Description/) show=1;
   7.505 -}' < $TMP_DIR/control > $file/description.txt
   7.506 -		sed -i 's/^\.$//' $file/description.txt
   7.507 -		[ -s "$file/description.txt" ] || rm -f $file/description.txt
   7.508 -		tazpkg pack $file
   7.509 -		mv $file.tazpkg $TOP_DIR
   7.510 -		;;
   7.511 -	*)
   7.512 -		_ 'Invalid target: %s (expected i386)' "$target"
   7.513 -		;;
   7.514 -	esac
   7.515 -	cd $TOP_DIR
   7.516 -	rm -rf $TMP_DIR
   7.517 -}
   7.518 -
   7.519 -
   7.520 -# convert a .rpm package to .tazpkg
   7.521 -
   7.522 -convert_rpm() {
   7.523 -	mkdir -p $TMP_DIR
   7.524 -	cp "$PACKAGE_FILE" $TMP_DIR
   7.525 -	PACKAGE_FILE="$TMP_DIR/$(basename "$PACKAGE_FILE")"
   7.526 -	rpm -qip "$PACKAGE_FILE" | awk -v pkg="$(basename "$PACKAGE_FILE")" '
   7.527 -BEGIN {
   7.528 -	goturl=0;
   7.529 -	printf "# SliTaz package receipt.\n";
   7.530 -	printf "# generated by tazpkg from rpm package %s\n",pkg;
   7.531 -}
   7.532 -{
   7.533 -	if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; }
   7.534 -	if (/^Version/) printf "VERSION=\"%s-",$3;
   7.535 -	if (/^Release/) printf "%s\"\n",$3;
   7.536 -	if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15);
   7.537 -	if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; }
   7.538 -}
   7.539 -END {
   7.540 -	if (goturl == 0)
   7.541 -		printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name;
   7.542 -	printf "CATEGORY=\"misc\"\n";
   7.543 -	printf "MAINTAINER=\"nobody@slitaz.org\"\n";
   7.544 -}
   7.545 -' > $TMP_DIR/receipt
   7.546 -	. $TMP_DIR/receipt
   7.547 -	file="$PACKAGE-$VERSION"
   7.548 -	mkdir -p $TMP_DIR/$file/fs/
   7.549 -	mv $TMP_DIR/receipt $TMP_DIR/$file
   7.550 -	rpm -qip "$PACKAGE_FILE" | awk '
   7.551 -BEGIN { show=0 }
   7.552 -{
   7.553 -  if (show) print;
   7.554 -  if (/^Description/) show=1;
   7.555 -}
   7.556 -' > $TMP_DIR/$file/description.txt
   7.557 -	cd $TMP_DIR/$file/fs/
   7.558 -	rpm2cpio "$PACKAGE_FILE" | cpio -idm --quiet
   7.559 -	# rpm2cpio can't extract some new RPMs
   7.560 -	if [ $? -eq 1 ]; then
   7.561 -		if [ ! -e $INSTALLED/p7zip-full/receipt ]; then
   7.562 -			boldify "$(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')"
   7.563 -			confirm "$(_n 'Do you want to install "%s" package? (y/N)' 'p7zip-full')"
   7.564 -			if [ $? -eq 0 ]; then
   7.565 -				tazpkg -gi p7zip-full
   7.566 -			else
   7.567 -				rm -rf $TMP_DIR
   7.568 -				exit 1
   7.569 -			fi
   7.570 -		fi
   7.571 -		# we may already have 7z or may have just installed it in the step above
   7.572 -		if [ -e "$INSTALLED/p7zip-full/receipt" ]; then
   7.573 -			7z x -so "$PACKAGE_FILE" | cpio -idm --quiet
   7.574 -		fi
   7.575 -	fi
   7.576 -	cd ../..
   7.577 -	echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt
   7.578 -	show_unresolved_lib $TMP_DIR/$file/receipt
   7.579 -	tazpkg pack $file
   7.580 -	mv $file.tazpkg $TOP_DIR
   7.581 -	cd $TOP_DIR
   7.582 -	rm -rf $TMP_DIR
   7.583 -}
   7.584 -
   7.585 -
   7.586 -# convert a .xbps package to .tazpkg (http://repo.voidlinux.eu/current/)
   7.587 -
   7.588 -xbpstag() {
   7.589 -	sed "/<key>$1<\/key>/!d{n;s/.*>\\(.*\\)<.*/\\1/}" \
   7.590 -		< fs/props.plist | sed \$!d
   7.591 -}
   7.592 -
   7.593 -convert_xbps() {
   7.594 -	mkdir -p $TMP_DIR/fs
   7.595 -	( xzcat "$PACKAGE_FILE" || bzcat "$PACKAGE_FILE" || zcat "$PACKAGE_FILE" ) | \
   7.596 -		tar -xf - -C $TMP_DIR/fs
   7.597 -
   7.598 -	cd $TMP_DIR
   7.599 -	HOST_ARCH="$(xbpstag architecture)"
   7.600 -	case "$HOST_ARCH" in
   7.601 -		i686)	HOST_ARCH='i486';;
   7.602 -		*)		_ 'Arch "%s" not supported.' "$HOST_ARCH"
   7.603 -				HOST_ARCH='';;
   7.604 -	esac
   7.605 -
   7.606 -	if [ -n "$HOST_ARCH" ]; then
   7.607 -		package="$(xbpstag pkgname)"
   7.608 -		version="$(xbpstag version)"
   7.609 -		file="$package-$version"
   7.610 -		mkdir $file
   7.611 -		cat > $file/receipt <<EOT
   7.612 -# SliTaz package receipt.
   7.613 -# generated by tazpkg from package $(basename "$PACKAGE_FILE")
   7.614 -PACKAGE="$package"
   7.615 -VERSION="$version"
   7.616 -CATEGORY="misc"
   7.617 -SHORT_DESC="$(xbpstag short_desc)"
   7.618 -WEB_SITE="$(xbpstag homepage)"
   7.619 -MAINTAINER="$(xbpstag maintainer | sed 's/&gt;/>/;s/&lt;/</')"
   7.620 -LICENSE="$(xbpstag license | sed 's/-//g')"
   7.621 -HOST_ARCH="$HOST_ARCH"
   7.622 -CONFIG_FILES="$(sed '/<key>conf_files<\/key>/,/<key>/!d;/array>/d;/<key>/d;s/.*>\(.*\)<.*/\1/' fs/props.plist)"
   7.623 -
   7.624 -DEPENDS="$(find_depends)"
   7.625 -
   7.626 -EOT
   7.627 -		while read script func ; do
   7.628 -			[ -s "fs/$script" ] && cat >> $file/receipt <<EOT
   7.629 -xbps_$func()
   7.630 -{
   7.631 -set +e
   7.632 -$(cat fs/$script)
   7.633 -}
   7.634 -
   7.635 -pre_$func()
   7.636 -{
   7.637 -	xbps_$func pre $package $version yes /etc/xbps.conf $HOST_ARCH
   7.638 -}
   7.639 -
   7.640 -post_$func()
   7.641 -{
   7.642 -	xbps_$func post $package $version yes /etc/xbps.conf $HOST_ARCH
   7.643 -}
   7.644 -
   7.645 -EOT
   7.646 -			rm -f fs/$script
   7.647 -		done <<EOT
   7.648 -INSTALL		install
   7.649 -REMOVE		remove
   7.650 -EOT
   7.651 -		rm -f fs/*.plist
   7.652 -		mv fs $package-$version
   7.653 -		tazpkg pack $package-$version
   7.654 -		mv $package-$version.tazpkg $TOP_DIR
   7.655 -	fi
   7.656 -	cd $TOP_DIR
   7.657 -	rm -rf $TMP_DIR
   7.658 -}
   7.659 -
   7.660 -
   7.661 -finish_convert_tinycore() {
   7.662 -	cat > $file/receipt <<EOT
   7.663 -# SliTaz package receipt.
   7.664 -# generated by tazpkg from tinycore package $(basename "$PACKAGE_FILE")
   7.665 -PACKAGE="$package"
   7.666 -VERSION="$version"
   7.667 -CATEGORY="misc"
   7.668 -SHORT_DESC="tinycore package $(basename "$PACKAGE_FILE")"
   7.669 -WEB_SITE="http://tinycorelinux.net/"
   7.670 -MAINTAINER="nobody@slitaz.org"
   7.671 -DEPENDS="$(find_depends)"
   7.672 -EOT
   7.673 -	show_unresolved_lib $file/receipt
   7.674 -	script="$file/fs/usr/local/tce.installed/$PACKAGE"
   7.675 -	[ -f "$script" ] && cat >> $file/receipt <<EOM
   7.676 -
   7.677 -post_install()
   7.678 -{
   7.679 -chroot \$1/ sh - << EOT
   7.680 -cd /
   7.681 -$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $script)
   7.682 -EOT
   7.683 -}
   7.684 -EOM
   7.685 -	[ -d "$file/fs/usr/local/tce.installed" ] &&
   7.686 -	rm -rf $file/fs/usr/local/tce.installed
   7.687 -	tazpkg pack $file
   7.688 -	mv $file.tazpkg $TOP_DIR
   7.689 -	cd $TOP_DIR
   7.690 -	rm -rf $TMP_DIR
   7.691 -}
   7.692 -
   7.693 -
   7.694 -# convert a .tce package to .tazpkg
   7.695 -
   7.696 -convert_tce() {
   7.697 -	if ! tar -tzf "$PACKAGE_FILE" | grep -q ^usr/local ; then
   7.698 -		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
   7.699 -		return 1
   7.700 -	fi
   7.701 -	mkdir -p $TMP_DIR
   7.702 -	cd $TMP_DIR
   7.703 -	case "$PACKAGE_FILE" in
   7.704 -		*.tcel) parse_pkgname .tcel ;;
   7.705 -		*.tcem) parse_pkgname .tcem ;;
   7.706 -		*)      parse_pkgname .tce ;;
   7.707 -	esac
   7.708 -	mkdir -p $file/fs
   7.709 -	tar -xzf "$PACKAGE_FILE" -C $file/fs
   7.710 -	finish_convert_tinycore
   7.711 -}
   7.712 -
   7.713 -
   7.714 -# convert a .tcz package to .tazpkg
   7.715 -
   7.716 -convert_tcz() {
   7.717 -	[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
   7.718 -	if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/$ ; then
   7.719 -		_ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
   7.720 -		return 1
   7.721 -	fi
   7.722 -	mkdir -p $TMP_DIR
   7.723 -	cd $TMP_DIR
   7.724 -	parse_pkgname .tcz
   7.725 -	unsquashfs "$PACKAGE_FILE"
   7.726 -	mv squashfs-root $file/fs
   7.727 -	finish_convert_tinycore
   7.728 -}
   7.729 -
   7.730 -
   7.731 -if [ "$(dd if="$PACKAGE_FILE" bs=8 count=1 skip=1 2>/dev/null)" == 'debian-b' ]; then
   7.732 -	convert_deb
   7.733 -else
   7.734 -	case "$PACKAGE_FILE" in
   7.735 -		*.deb|*.udeb)			convert_deb;;
   7.736 -		*.rpm)					convert_rpm;;
   7.737 -		*.sb)					convert_sb;;
   7.738 -		*.sfs)					convert_sfs;;
   7.739 -		*.pet)					convert_pet;;
   7.740 -		*.txz|*.tgz)				convert_tgz;;
   7.741 -		*.cards.tar.xz)			convert_nutyx;;
   7.742 -		*.apk|*.pkg.tar.gz|*.pkg.tar.xz)	convert_arch;;
   7.743 -		*.ipk|*.opk)			convert_ipk;;
   7.744 -		*.spack)				convert_spack;;
   7.745 -		*.tar.bz2)				convert_upkg;;
   7.746 -		*.xbps)					convert_xbps;;
   7.747 -		*.tce|*.tcel|*.tcem)	convert_tce;;
   7.748 -		*.tcz)					convert_tcz;;
   7.749 -		*)						_ 'Unsupported format';;
   7.750 -	esac
   7.751 -fi
   7.752 -
   7.753 -exit 0
     8.1 --- a/modules/tazpkg-find-depends	Fri Jul 24 17:13:16 2015 +0200
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,84 +0,0 @@
     8.4 -# /usr/lib/tazpkg/tazpkg-find-depends: this program is a part of TazPkg.
     8.5 -# This file contains the functions that are common to tazpkg and tazpkg-convert,
     8.6 -# and sourced by them.
     8.7 -
     8.8 -
     8.9 -# Need by check_depends
    8.10 -TMPLOCALSTATE=
    8.11 -
    8.12 -
    8.13 -# Check for ELF file
    8.14 -
    8.15 -is_elf()
    8.16 -{
    8.17 -	[ "$(dd if="$1" bs=1 skip=1 count=3 2>/dev/null)" == "ELF" ]
    8.18 -}
    8.19 -
    8.20 -
    8.21 -# Print shared library dependencies
    8.22 -
    8.23 -ldd()
    8.24 -{
    8.25 -	LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so "$1" 2>/dev/null
    8.26 -}
    8.27 -
    8.28 -
    8.29 -# search dependencies for files in $TMP_DIR/$file/fs
    8.30 -
    8.31 -find_depends()
    8.32 -{
    8.33 -	DEFAULT_DEPENDS="glibc-base gcc-lib-base"
    8.34 -
    8.35 -	[ -n "$TMPLOCALSTATE" ] || TMPLOCALSTATE=$PKGS_DB
    8.36 -	[ -f $TMPLOCALSTATE/files.list.lzma ] || tazpkg recharge >/dev/null
    8.37 -	for i in $TMPLOCALSTATE/files.list.lzma \
    8.38 -		$TMPLOCALSTATE/undigest/*/files.list.lzma ; do
    8.39 -		[ -f $i ] && lzma d $i -so >> $TMP_DIR/files.list
    8.40 -	done
    8.41 -
    8.42 -	echo "Find depends..." 1>&2
    8.43 -	libs_found=""
    8.44 -	find ${1:-$TMP_DIR/$file/fs} -type f | \
    8.45 -	while read chkfile ; do
    8.46 -		is_elf "$chkfile" || continue
    8.47 -		case "$chkfile" in
    8.48 -			*.o|*.ko|*.ko.gz) continue;;
    8.49 -		esac
    8.50 -
    8.51 -		for lib in $(ldd "$chkfile" | sed '/=>/!d;s/ =>.*//') ; do
    8.52 -			case " $libs_found " in
    8.53 -				*\ $lib\ *) continue
    8.54 -			esac
    8.55 -			libs_found="$libs_found $lib"
    8.56 -			case "$lib" in
    8.57 -				statically|linux-gate.so*|ld-*.so|*/ld-*.so) continue;;
    8.58 -			esac
    8.59 -			find ${1:-$TMP_DIR/$file/fs} | grep -q /$lib$ && continue
    8.60 -
    8.61 -			echo -ne "for $lib                   \r" 1>&2
    8.62 -			for dep in $(fgrep $lib files.list | cut -d: -f1); do
    8.63 -				case " $DEFAULT_DEPENDS " in
    8.64 -					*\ $dep\ *) continue 2;;
    8.65 -				esac
    8.66 -				grep -qs "^$dep$" $TMP_DIR/depends && continue 2
    8.67 -			done
    8.68 -
    8.69 -			if [ -n "$dep" ]; then
    8.70 -				echo "$dep" >> $TMP_DIR/depends
    8.71 -			else
    8.72 -				grep -qs ^$lib$ $TMP_DIR/unresolved ||
    8.73 -					echo "$lib" >> $TMP_DIR/unresolved
    8.74 -			fi
    8.75 -		done
    8.76 -	done
    8.77 -
    8.78 -	spc=""
    8.79 -	[ -s $TMP_DIR/depends ] &&
    8.80 -	sort < $TMP_DIR/depends 2>/dev/null | uniq | \
    8.81 -	while read file; do
    8.82 -		echo -n "$spc$file"
    8.83 -		spc=" "
    8.84 -	done
    8.85 -}
    8.86 -
    8.87 -
     9.1 --- a/modules/tazpkg-help	Fri Jul 24 17:13:16 2015 +0200
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,95 +0,0 @@
     9.4 -#!/bin/sh
     9.5 -# TazPkg - Tiny autonomous zone packages manager.
     9.6 -# TazPkg help system
     9.7 -
     9.8 -. /lib/libtaz.sh
     9.9 -
    9.10 -T="${1#-}"
    9.11 -DOC='/usr/share/doc/tazpkg/tazpkg.html'
    9.12 -QUERY="$T"
    9.13 -
    9.14 -if [ -z "$T" ]; then
    9.15 -	tazpkg usage; exit 0
    9.16 -fi
    9.17 -
    9.18 -commands="\
    9.19 -:usage::help,h::activity,log,a::clean-cache,cc::shell::list,l::list-mirror,lm:\
    9.20 -:list-config::search,s::search-pkgname,sp::search-file,sf::get,g::install,i:\
    9.21 -:get-install,gi::install-list,get-install-list::remove,r::reconfigure::link:\
    9.22 -:set-release::add-flavor,install-flavor::info::desc,d::list-files,lf:\
    9.23 -:block,b,unblock,u,chblock::check::bugs::depends,rdepends::extract,e::pack:\
    9.24 -:repack::repack-config::recompress::convert,c::list-suggested::recharge:
    9.25 -:upgrade,up::setup-mirror,sm::add-undigest,setup-undigest::list-undigest:\
    9.26 -:remove-undigest:"
    9.27 -
    9.28 -if [ ! $(echo $commands | grep -e "[:,]$T[:,]") ]; then
    9.29 -	try1=$(echo $commands | grep -oe ":[^:]*$T[^:]*:")
    9.30 -	if [ -z "$try1" ]; then
    9.31 -		_ 'Sorry, no help for "%s"' "$QUERY"; newline; exit 0
    9.32 -	fi
    9.33 -
    9.34 -	try2=$(echo "$try1" | tr -d : )
    9.35 -
    9.36 -	trynum=$(echo "$try2" | wc -l)
    9.37 -	if [ "$trynum" -ne 1 ]; then
    9.38 -		_p '%d help topic available:' '%d help topics available:' "$trynum" \
    9.39 -			"$trynum"; newline
    9.40 -		echo "$try2" | sed 's|^|  * &|; s|  ,|  |; s|,|, |g'
    9.41 -		exit 0
    9.42 -	else
    9.43 -		T="${try2%%,*}"
    9.44 -	fi
    9.45 -else
    9.46 -	try3=$(echo $commands | grep -oe "[:,]$T[:,]")
    9.47 -	case $try3 in
    9.48 -		:*)	try4="$try3";;
    9.49 -		,*)	try4=$(echo $commands | grep -oe ":[^:]*$try3" | cut -d, -f1);;
    9.50 -	esac
    9.51 -
    9.52 -	T=$(echo $try4 | tr -d ':,')
    9.53 -fi
    9.54 -
    9.55 -title=$(echo $commands | grep -oe ":$T\(,[^:]*\)*:" | tr -d : | sed 's|,|, |g')
    9.56 -
    9.57 -
    9.58 -# style: <h3 id="TOPIC">
    9.59 -HLP=$(sed "/id=\"$T\"/,/<h3/!d; /<h3/d; /<\/h3/d; /<h2/,\$d" $DOC)
    9.60 -if [ -z "$HLP" ]; then
    9.61 -	# style: <a name="TOPIC"></a>
    9.62 -	HLP=$(sed "/name=\"$T\"/,/name=/!d; /name=/d; /<h3/d; /<h2/,\$d" $DOC)
    9.63 -fi
    9.64 -
    9.65 -if [ -z "$HLP" ]; then
    9.66 -	_ 'Sorry, no help for "%s"' "$QUERY"
    9.67 -	exit 0
    9.68 -fi
    9.69 -
    9.70 -PRE=$(echo "$HLP" | sed "/^$/d; /<pre>/,/<\/pre\>/{s|.*|  &|; s| |·|g}; \
    9.71 -	s|^  </*pre>$||; s|<pre>||; s|</pre>||; s|  ·#|  #|;" | tr '\n' ' ' | \
    9.72 -	sed '/^[ 	]*$/d' | \
    9.73 -	sed 's|[ 	][ 	]*| |g;' | \
    9.74 -	sed 's|[ 	]*<dl>|O\n|g; s|[ 	]*</dl>|L\n|g; s|[ 	]*</*dt>||g;' | \
    9.75 -	sed 's|[ 	]*<dd>|	|g; s|</dd>|\n|g;' | \
    9.76 -	sed 's|<h4>|<b>|g; s|</h4>|</b>\n|g' | \
    9.77 -	sed 's|[ 	]*<p>[ 	]*||g; s|[ 	]*</p>|\n \n|g; s|  |\n  |g' | \
    9.78 -	sed 's|<a [^>]*>||g; s|</a>||g; s|·| |g' | \
    9.79 -	sed 's|</*nobr>||g; s|&shy;||g; s|^[ 	]*||' | \
    9.80 -	sed '/^$/d' | \
    9.81 -	sed 's|<tt>|A|g; s|<code>|A|g; s|<em>|B|g; s|<strong>|B|g; \
    9.82 -		s|</tt>|D|g; s|</code>|D|g; s|</em>|D|g; s|</strong>|C|g; \
    9.83 -		s|DD|D|g;')
    9.84 -
    9.85 -OPT=$(echo "$PRE" | sed '/O/,/L/!d; /[OL]/d')
    9.86 -OPTLIST=$(optlist "$OPT")
    9.87 -
    9.88 -OPT0=$(echo "$PRE" | tr '\n' '@')
    9.89 -OPTA=$(echo "$OPT" | tr '\n' '@')
    9.90 -OPTB=$(echo "$OPTLIST" | tr '\n' '@')
    9.91 -
    9.92 -PRE2=$(echo "$OPT0" | sed "s|$OPTA|$OPTB|" | tr '@' '\n' | sed '/O/d; s|L||')
    9.93 -
    9.94 -[ ! -z "$TA" ] && T="$T, $TA"
    9.95 -
    9.96 -title '$title'
    9.97 -emsg "$(longline "$PRE2" | sed 's|A|<c 33>|g; s|B|<c 36>|g; s|C|<b>|g; s|D|</c>|g; ')"
    9.98 -newline
    10.1 --- a/tazpkg	Fri Jul 24 17:13:16 2015 +0200
    10.2 +++ b/tazpkg	Sat Jul 25 16:50:18 2015 +0300
    10.3 @@ -3051,7 +3051,7 @@
    10.4  		# convert misc package format to .tazpkg
    10.5  		check_for_package_file
    10.6  		shift
    10.7 -		tazpkg-convert $@
    10.8 +		@@MODULES@@/convert $@
    10.9  		;;
   10.10  
   10.11  
   10.12 @@ -3116,7 +3116,7 @@
   10.13  
   10.14  	help|-h)
   10.15  		# TazPkg help system
   10.16 -		shift; tazpkg-help $@ ;;
   10.17 +		shift; @@MODULES@@/help $@ ;;
   10.18  
   10.19  
   10.20  	'')