# HG changeset patch # User Christophe Lincoln # Date 1488928504 -3600 # Node ID 5fd828b6743f71c97645b609ffa4127c205dc301 # Parent 2b701f1364b29622fbf0373c379d339914340acd Improvment and fixes after some usage/testing diff -r 2b701f1364b2 -r 5fd828b6743f Makefile --- a/Makefile Wed Mar 01 00:06:21 2017 +0100 +++ b/Makefile Wed Mar 08 00:15:04 2017 +0100 @@ -38,15 +38,18 @@ install: install -m 0755 -d $(DESTDIR)$(PREFIX)/bin install -m 0755 -d $(DESTDIR)$(PREFIX)/lib/slitaz + install -m 0755 -d $(DESTDIR)$(PREFIX)/share/sup install -m 0755 -d $(DESTDIR)$(PREFIX)/share/applications install -m 0755 -d $(DESTDIR)$(PREFIX)/share/locale install -m 0755 -d $(DESTDIR)$(PREFIX)/share/mime/packages + install -m 0755 -d $(DESTDIR)$(PREFIX)/share/doc/slitaz + install -m 0755 sup $(DESTDIR)$(PREFIX)/bin install -m 0755 libsup.sh $(DESTDIR)$(PREFIX)/lib/slitaz install -m 0644 data/*.desktop $(DESTDIR)$(PREFIX)/share/applications install -m 0644 data/mime/sup.xml $(DESTDIR)$(PREFIX)/share/mime/packages - install -m 0755 -d $(DESTDIR)$(PREFIX)/share/sup - install -m 0644 README $(DESTDIR)$(PREFIX)/share/sup + + cp -f README $(DESTDIR)$(PREFIX)/share/doc/slitaz/sup.txt cp -rf sup-demo $(DESTDIR)$(PREFIX)/share/sup cp -rf po/clients/mo/* $(DESTDIR)$(PREFIX)/share/locale diff -r 2b701f1364b2 -r 5fd828b6743f libsup.sh --- a/libsup.sh Wed Mar 01 00:06:21 2017 +0100 +++ b/libsup.sh Wed Mar 08 00:15:04 2017 +0100 @@ -29,13 +29,21 @@ # Functions # -# Set ttysize= # stty will not work if called from GTK box or CGI script +# --> get_cols tty_size() { if ! stty size | cut -d " " -f 2; then echo 80 fi } +# Print info a la status way: info [color] [content] +info() { + local info="$2" + local char="$(echo $info | wc -L)" + local in=$((7 + ${char})) + indent $(($(get_cols) - ${in})) "[ $(colorize $1 $info) ]" +} + # Pretty Busybox wget output. Usage: download [name] [url] [dest] # Download in current dir if $3 is not set download() { @@ -86,6 +94,16 @@ status } +# System dependencies: exit on missing system deps ? +check_sys_deps() { + . /etc/slitaz/slitaz.conf # PKGS_DB + for dep in ${DEPENDS}; do + if [ ! -d "$PKGS_DB/installed/$dep" ]; then + gettext "Missing dependency:"; colorize 31 " $dep"; return 1 + fi + done +} + # Install a sup package install_sup() { pkg="$(basename ${1%.sup})" @@ -98,24 +116,19 @@ cpio -i receip --quiet < ${supfile} . receip - # Install sup deps || exit on missing system deps ? + # Install sup deps gettext "Checking package dependencies" - deps="$(echo $SUP_DEPS $DEPENDS | wc -L)" + deps="$(echo $SUP_DEPS $DEPENDS | wc -w)" in=$((8 + ${deps})) indent $(($(tty_size) - ${in})) "[ $(colorize 033 $deps) ]" for dep in ${SUP_DEPS}; do - if [ ! "$installed/$dep" ]; then + if [ ! -d "$installed/$dep" ]; then gettext "Missing dependency:"; colorize 35 " $dep" sup -i "$dep" fi done - . /etc/slitaz/slitaz.conf # PKGS_DB - for dep in ${DEPENDS}; do - if [ ! "$PKGS_DB/installed/$dep" ]; then - gettext "Missing dependency:"; colorize 31 " $dep" - fi - done + check_sys_deps # Remove existing package files to avoid untracked files if [ -d "$installed/$PACKAGE" ]; then @@ -149,7 +162,7 @@ files_list="${cache}/install/${PACKAGE}-${VERSION}/files.list" find . -type f -print > ${files_list} find . -type l -print >> ${files_list} - sed -i s/'^.'/''/g ${files_list} + sed -i sed s'/^.//'g ${files_list} # Back to pkg tree cd ${cache}/install/${PACKAGE}-${VERSION} diff -r 2b701f1364b2 -r 5fd828b6743f server/sup/sup-admin.cgi --- a/server/sup/sup-admin.cgi Wed Mar 01 00:06:21 2017 +0100 +++ b/server/sup/sup-admin.cgi Wed Mar 08 00:15:04 2017 +0100 @@ -157,9 +157,18 @@ # SUP SQLite commands testsuite echo "
"
 				
+				echo -n "Running: sqlite3 ANALYZE..."
+				sqlite3 ${pkgsdb} 'ANALYZE'
+				status
+				
 				echo "Running: SELECT name FROM pkgs LIMIT 4"
 				sqlite3 ${pkgsdb} 'SELECT name FROM pkgs LIMIT 4' && newline
 				
+				# sqlite_master .schema
+				echo "sqlite_master schema"
+				echo "-----------------"
+				sqlite3 ${pkgsdb} '.schema sqlite_master'; newline
+				
 				# .schema
 				echo "CREATE statements"
 				echo "-----------------"
diff -r 2b701f1364b2 -r 5fd828b6743f server/sup/sup.cgi
--- a/server/sup/sup.cgi	Wed Mar 01 00:06:21 2017 +0100
+++ b/server/sup/sup.cgi	Wed Mar 08 00:15:04 2017 +0100
@@ -19,7 +19,7 @@
 	. paths.conf
 fi
 
-# Custom paths.conf for easier development /avoid commiting this file 
+# Custom paths.conf for easier development avoid commit this file 
 # with wrong paths like Pankso does! Full paths are needed for upload
 # to work properly.
 [ -f "${plugins}/sup/paths.conf" ] && . ${plugins}/sup/paths.conf
diff -r 2b701f1364b2 -r 5fd828b6743f sup
--- a/sup	Wed Mar 01 00:06:21 2017 +0100
+++ b/sup	Wed Mar 08 00:15:04 2017 +0100
@@ -42,10 +42,11 @@
 $(boldify $(gettext "Options:"))
   --install  update  $(gettext "Install all updates from mirror")
   --force    update  $(gettext "Force recharging packages database")
+  --db       list    $(gettext "List all packages in database")
   --init     cook    $(gettext "Initialize sup cook environment")
   --verbose  all     $(gettext "Display more output messages")
 
-$(colorize 33 README)               /usr/share/sup/README
+$(colorize 33 Manual)               man sup
 $(colorize 33 Documentation)        http://scn.slitaz.org/?d=en/sup
 
 EOT
@@ -187,6 +188,11 @@
 		[ "$clean" ] && rm -rf ${workdir}
 		mkdir -p ${workdir} && cd ${workdir}
 		. ${wok}/${pkg}/receip
+		gettext "Checking package dependencies"
+		deps="$(echo $DEPENDS | wc -w)"
+		in=$((8 + ${deps}))
+		indent $(($(tty_size) - ${in})) "[ $(colorize 033 $deps) ]"
+		check_sys_deps || exit 1
 		sup_install
 		separator 
 		gettext "Working folder:"; echo " $workdir"
@@ -302,6 +308,7 @@
 				| awk '{printf $1 " " $2}')
 			gettext "Database timestamp:"
 			indent $(($(tty_size) - 23)) "[ $(colorize 30 $timestamp) ]"
+			log "$(gettext 'Updated packages database: $timestamp') "
 		fi
 		
 		# Scan installed packages
@@ -325,16 +332,19 @@
 			
 			# MD5sum not matching: new version our new build ?
 			if [ "$md5_sum" != "$db_sum" ]; then
+			
 				vers=$(sqlite3 ${pkgsdb} \
 					"SELECT version FROM pkgs WHERE name = '$pkg'")
+				
 				if [ "$VERSION" != "$vers" ]; then
-					status="$(colorize 032 $(gettext "update"))"
+					status="$(colorize 032 $(gettext "update") )"
 				else
 					status="$(colorize 035 $(gettext "rebuilt"))"
 				fi
 				echo "$pkg $(indent 30 $VERSION) $(indent 60 $status)"
 				echo "$pkg" >> ${cache}/updates
 			fi
+			
 		done
 		
 		if [ -f "$cache/updates" ]; then
@@ -365,10 +375,37 @@
 			exit 1
 		fi ;;
 	
+	-s|search)
+		# TODO: better :-)
+		query="$2"
+		newline
+		echo -n "$(colorize 33 $(gettext 'Searching for:'))"
+		boldify " $query"
+		separator
+		sqlite3 ${pkgsdb} << EOT
+.headers on
+.mode column
+SELECT name, version, short_desc FROM pkgs WHERE name = '$2';
+EOT
+		newline ;;
+	
 	-l|list)
+		# only --db
+		if [ "$db" ]; then
+			newline
+			echo -n "$(colorize 33 $(gettext 'SUP packages in database:'))"
+			boldify " $(sqlite3 ${pkgsdb} 'SELECT COUNT(name) FROM pkgs')"
+			separator
+			sqlite3 ${pkgsdb} << EOT
+.mode column
+SELECT name, short_desc FROM pkgs;
+EOT
+			newline; exit 0
+		fi
+		
 		installed_nb=$(ls ${installed} | wc -l)
 		newline
-		echo -n "$(colorize 36 $(gettext 'Installed sup packages:'))"
+		echo -n "$(colorize 36 $(gettext 'Installed SUP packages:'))"
 		boldify " $installed_nb"
 		separator
 		for pkg in $(ls ${installed}); do
@@ -380,7 +417,7 @@
 		fi
 		newline
 		if [ -d "$wok" ]; then
-			echo -n "$(colorize 35 $(gettext 'Sup packages in your wok:'))"
+			echo -n "$(colorize 35 $(gettext 'SUP packages in your wok:'))"
 			boldify " $(ls ${wok} | wc -l)"
 			separator
 			for pkg in $(ls ${wok}); do
@@ -388,7 +425,10 @@
 				echo "$pkg $(indent 26 $VERSION) $(indent 42 $MAINTAINER)"
 			done
 			newline 
-		fi ;;
+		fi
+		echo -n "$(colorize 33 $(gettext 'SUP packages in database:'))"
+		boldify " $(sqlite3 ${pkgsdb} 'SELECT COUNT(name) FROM pkgs')"
+		newline ;;
 	
 	""|-h|help) help ;;