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/>/>/;s/</</')" 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|­||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/>/>/;s/</</')" 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|­||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 '')