sup rev 42

Improvment and fixes after some usage/testing
author Christophe Lincoln <pankso@slitaz.org>
date Wed Mar 08 00:15:04 2017 +0100 (2017-03-08)
parents 2b701f1364b2
children 53527d66b446
files Makefile libsup.sh server/sup/sup-admin.cgi server/sup/sup.cgi sup
line diff
     1.1 --- a/Makefile	Wed Mar 01 00:06:21 2017 +0100
     1.2 +++ b/Makefile	Wed Mar 08 00:15:04 2017 +0100
     1.3 @@ -38,15 +38,18 @@
     1.4  install:
     1.5  	install -m 0755 -d $(DESTDIR)$(PREFIX)/bin
     1.6  	install -m 0755 -d $(DESTDIR)$(PREFIX)/lib/slitaz
     1.7 +	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/sup
     1.8  	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/applications
     1.9  	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/locale
    1.10  	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/mime/packages
    1.11 +	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/doc/slitaz
    1.12 +	
    1.13  	install -m 0755 sup $(DESTDIR)$(PREFIX)/bin
    1.14  	install -m 0755 libsup.sh $(DESTDIR)$(PREFIX)/lib/slitaz
    1.15  	install -m 0644 data/*.desktop $(DESTDIR)$(PREFIX)/share/applications
    1.16  	install -m 0644 data/mime/sup.xml $(DESTDIR)$(PREFIX)/share/mime/packages
    1.17 -	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/sup
    1.18 -	install -m 0644 README $(DESTDIR)$(PREFIX)/share/sup
    1.19 +	
    1.20 +	cp -f README $(DESTDIR)$(PREFIX)/share/doc/slitaz/sup.txt
    1.21  	cp -rf sup-demo $(DESTDIR)$(PREFIX)/share/sup
    1.22  	cp -rf po/clients/mo/* $(DESTDIR)$(PREFIX)/share/locale
    1.23  
     2.1 --- a/libsup.sh	Wed Mar 01 00:06:21 2017 +0100
     2.2 +++ b/libsup.sh	Wed Mar 08 00:15:04 2017 +0100
     2.3 @@ -29,13 +29,21 @@
     2.4  # Functions
     2.5  #
     2.6  
     2.7 -# Set ttysize= # stty will not work if called from GTK box or CGI script
     2.8 +# --> get_cols
     2.9  tty_size() {
    2.10  	if ! stty size | cut -d " " -f 2; then
    2.11  		echo 80
    2.12  	fi
    2.13  }
    2.14  
    2.15 +# Print info a la status way: info [color] [content]
    2.16 +info() {
    2.17 +	local info="$2"
    2.18 +	local char="$(echo $info | wc -L)"
    2.19 +	local in=$((7 + ${char}))
    2.20 +	indent $(($(get_cols) - ${in})) "[ $(colorize $1 $info) ]"
    2.21 +}
    2.22 +
    2.23  # Pretty Busybox wget output. Usage: download [name] [url] [dest]
    2.24  # Download in current dir if $3 is not set
    2.25  download() {
    2.26 @@ -86,6 +94,16 @@
    2.27  	status
    2.28  }
    2.29  
    2.30 +# System dependencies: exit on missing system deps ?
    2.31 +check_sys_deps() {
    2.32 +	. /etc/slitaz/slitaz.conf # PKGS_DB
    2.33 +	for dep in ${DEPENDS}; do
    2.34 +		if [ ! -d "$PKGS_DB/installed/$dep" ]; then
    2.35 +			gettext "Missing dependency:"; colorize 31 " $dep"; return 1
    2.36 +		fi
    2.37 +	done
    2.38 +}
    2.39 +
    2.40  # Install a sup package
    2.41  install_sup() {
    2.42  	pkg="$(basename ${1%.sup})"
    2.43 @@ -98,24 +116,19 @@
    2.44  	cpio -i receip --quiet < ${supfile}
    2.45  	. receip
    2.46  	
    2.47 -	# Install sup deps || exit on missing system deps ?
    2.48 +	# Install sup deps
    2.49  	gettext "Checking package dependencies"
    2.50 -	deps="$(echo $SUP_DEPS $DEPENDS | wc -L)"
    2.51 +	deps="$(echo $SUP_DEPS $DEPENDS | wc -w)"
    2.52  	in=$((8 + ${deps}))
    2.53  	indent $(($(tty_size) - ${in})) "[ $(colorize 033 $deps) ]"
    2.54  	
    2.55  	for dep in ${SUP_DEPS}; do
    2.56 -		if [ ! "$installed/$dep" ]; then
    2.57 +		if [ ! -d "$installed/$dep" ]; then
    2.58  			gettext "Missing dependency:"; colorize 35 " $dep"
    2.59  			sup -i "$dep"
    2.60  		fi
    2.61  	done
    2.62 -	. /etc/slitaz/slitaz.conf # PKGS_DB
    2.63 -	for dep in ${DEPENDS}; do
    2.64 -		if [ ! "$PKGS_DB/installed/$dep" ]; then
    2.65 -			gettext "Missing dependency:"; colorize 31 " $dep"
    2.66 -		fi
    2.67 -	done
    2.68 +	check_sys_deps
    2.69  	
    2.70  	# Remove existing package files to avoid untracked files
    2.71  	if [ -d "$installed/$PACKAGE" ]; then
    2.72 @@ -149,7 +162,7 @@
    2.73  	files_list="${cache}/install/${PACKAGE}-${VERSION}/files.list"
    2.74  	find . -type f -print > ${files_list}
    2.75  	find . -type l -print >> ${files_list}
    2.76 -	sed -i s/'^.'/''/g ${files_list}
    2.77 +	sed -i sed s'/^.//'g ${files_list}
    2.78  	
    2.79  	# Back to pkg tree
    2.80  	cd ${cache}/install/${PACKAGE}-${VERSION}
     3.1 --- a/server/sup/sup-admin.cgi	Wed Mar 01 00:06:21 2017 +0100
     3.2 +++ b/server/sup/sup-admin.cgi	Wed Mar 08 00:15:04 2017 +0100
     3.3 @@ -157,9 +157,18 @@
     3.4  				# SUP SQLite commands testsuite
     3.5  				echo "<pre>"
     3.6  				
     3.7 +				echo -n "Running: sqlite3 ANALYZE..."
     3.8 +				sqlite3 ${pkgsdb} 'ANALYZE'
     3.9 +				status
    3.10 +				
    3.11  				echo "Running: <span class='value'>SELECT name FROM pkgs LIMIT 4</span>"
    3.12  				sqlite3 ${pkgsdb} 'SELECT name FROM pkgs LIMIT 4' && newline
    3.13  				
    3.14 +				# sqlite_master .schema
    3.15 +				echo "<span class='value'>sqlite_master schema</span>"
    3.16 +				echo "-----------------"
    3.17 +				sqlite3 ${pkgsdb} '.schema sqlite_master'; newline
    3.18 +				
    3.19  				# .schema
    3.20  				echo "<span class='value'>CREATE statements</span>"
    3.21  				echo "-----------------"
     4.1 --- a/server/sup/sup.cgi	Wed Mar 01 00:06:21 2017 +0100
     4.2 +++ b/server/sup/sup.cgi	Wed Mar 08 00:15:04 2017 +0100
     4.3 @@ -19,7 +19,7 @@
     4.4  	. paths.conf
     4.5  fi
     4.6  
     4.7 -# Custom paths.conf for easier development /avoid commiting this file 
     4.8 +# Custom paths.conf for easier development avoid commit this file 
     4.9  # with wrong paths like Pankso does! Full paths are needed for upload
    4.10  # to work properly.
    4.11  [ -f "${plugins}/sup/paths.conf" ] && . ${plugins}/sup/paths.conf
     5.1 --- a/sup	Wed Mar 01 00:06:21 2017 +0100
     5.2 +++ b/sup	Wed Mar 08 00:15:04 2017 +0100
     5.3 @@ -42,10 +42,11 @@
     5.4  $(boldify $(gettext "Options:"))
     5.5    --install  update  $(gettext "Install all updates from mirror")
     5.6    --force    update  $(gettext "Force recharging packages database")
     5.7 +  --db       list    $(gettext "List all packages in database")
     5.8    --init     cook    $(gettext "Initialize sup cook environment")
     5.9    --verbose  all     $(gettext "Display more output messages")
    5.10  
    5.11 -$(colorize 33 README)               /usr/share/sup/README
    5.12 +$(colorize 33 Manual)               man sup
    5.13  $(colorize 33 Documentation)        http://scn.slitaz.org/?d=en/sup
    5.14  
    5.15  EOT
    5.16 @@ -187,6 +188,11 @@
    5.17  		[ "$clean" ] && rm -rf ${workdir}
    5.18  		mkdir -p ${workdir} && cd ${workdir}
    5.19  		. ${wok}/${pkg}/receip
    5.20 +		gettext "Checking package dependencies"
    5.21 +		deps="$(echo $DEPENDS | wc -w)"
    5.22 +		in=$((8 + ${deps}))
    5.23 +		indent $(($(tty_size) - ${in})) "[ $(colorize 033 $deps) ]"
    5.24 +		check_sys_deps || exit 1
    5.25  		sup_install
    5.26  		separator 
    5.27  		gettext "Working folder:"; echo " $workdir"
    5.28 @@ -302,6 +308,7 @@
    5.29  				| awk '{printf $1 " " $2}')
    5.30  			gettext "Database timestamp:"
    5.31  			indent $(($(tty_size) - 23)) "[ $(colorize 30 $timestamp) ]"
    5.32 +			log "$(gettext 'Updated packages database: $timestamp') "
    5.33  		fi
    5.34  		
    5.35  		# Scan installed packages
    5.36 @@ -325,16 +332,19 @@
    5.37  			
    5.38  			# MD5sum not matching: new version our new build ?
    5.39  			if [ "$md5_sum" != "$db_sum" ]; then
    5.40 +			
    5.41  				vers=$(sqlite3 ${pkgsdb} \
    5.42  					"SELECT version FROM pkgs WHERE name = '$pkg'")
    5.43 +				
    5.44  				if [ "$VERSION" != "$vers" ]; then
    5.45 -					status="$(colorize 032 $(gettext "update"))"
    5.46 +					status="$(colorize 032 $(gettext "update") )"
    5.47  				else
    5.48  					status="$(colorize 035 $(gettext "rebuilt"))"
    5.49  				fi
    5.50  				echo "$pkg $(indent 30 $VERSION) $(indent 60 $status)"
    5.51  				echo "$pkg" >> ${cache}/updates
    5.52  			fi
    5.53 +			
    5.54  		done
    5.55  		
    5.56  		if [ -f "$cache/updates" ]; then
    5.57 @@ -365,10 +375,37 @@
    5.58  			exit 1
    5.59  		fi ;;
    5.60  	
    5.61 +	-s|search)
    5.62 +		# TODO: better :-)
    5.63 +		query="$2"
    5.64 +		newline
    5.65 +		echo -n "$(colorize 33 $(gettext 'Searching for:'))"
    5.66 +		boldify " $query"
    5.67 +		separator
    5.68 +		sqlite3 ${pkgsdb} << EOT
    5.69 +.headers on
    5.70 +.mode column
    5.71 +SELECT name, version, short_desc FROM pkgs WHERE name = '$2';
    5.72 +EOT
    5.73 +		newline ;;
    5.74 +	
    5.75  	-l|list)
    5.76 +		# only --db
    5.77 +		if [ "$db" ]; then
    5.78 +			newline
    5.79 +			echo -n "$(colorize 33 $(gettext 'SUP packages in database:'))"
    5.80 +			boldify " $(sqlite3 ${pkgsdb} 'SELECT COUNT(name) FROM pkgs')"
    5.81 +			separator
    5.82 +			sqlite3 ${pkgsdb} << EOT
    5.83 +.mode column
    5.84 +SELECT name, short_desc FROM pkgs;
    5.85 +EOT
    5.86 +			newline; exit 0
    5.87 +		fi
    5.88 +		
    5.89  		installed_nb=$(ls ${installed} | wc -l)
    5.90  		newline
    5.91 -		echo -n "$(colorize 36 $(gettext 'Installed sup packages:'))"
    5.92 +		echo -n "$(colorize 36 $(gettext 'Installed SUP packages:'))"
    5.93  		boldify " $installed_nb"
    5.94  		separator
    5.95  		for pkg in $(ls ${installed}); do
    5.96 @@ -380,7 +417,7 @@
    5.97  		fi
    5.98  		newline
    5.99  		if [ -d "$wok" ]; then
   5.100 -			echo -n "$(colorize 35 $(gettext 'Sup packages in your wok:'))"
   5.101 +			echo -n "$(colorize 35 $(gettext 'SUP packages in your wok:'))"
   5.102  			boldify " $(ls ${wok} | wc -l)"
   5.103  			separator
   5.104  			for pkg in $(ls ${wok}); do
   5.105 @@ -388,7 +425,10 @@
   5.106  				echo "$pkg $(indent 26 $VERSION) $(indent 42 $MAINTAINER)"
   5.107  			done
   5.108  			newline 
   5.109 -		fi ;;
   5.110 +		fi
   5.111 +		echo -n "$(colorize 33 $(gettext 'SUP packages in database:'))"
   5.112 +		boldify " $(sqlite3 ${pkgsdb} 'SELECT COUNT(name) FROM pkgs')"
   5.113 +		newline ;;
   5.114  	
   5.115  	""|-h|help) help ;;
   5.116