cookutils annotate modules/cdeps @ rev 1078

cook: allow multi-set & no-src receipts (sources may be downloaded inside compile_rules() individually for each set), allow change SHORT_DESC & WEB_SITE in genpkg_rules() (for differents sets);
lighttpd/cooker.css: add style for log line "Switching to the set...";
lighttpd/index.cgi: remove false-positive coloring with word "fatal", mark line "Switching to the set...", don't hide "Logs" button (fresh log initially empty and it may lasts for many seconds due to buffered "lazy write";
modules/compressor: better remove unwanted Perl files;
modules/mk_pkg_receipt: follow changed SHORT_DESC & WEB_SITE, improve condition speed (from 10 sec to 0.01 sec) when SPLIT is relatively long - looks like ${A/ $B /} is slow.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Thu Jun 21 12:57:52 2018 +0300 (2018-06-21)
parents
children
rev   line source
al@890 1 #!/bin/sh
al@890 2 #
al@890 3 # cdeps - module of the SliTaz Cook
al@890 4 # Copyright (C) SliTaz GNU/Linux - GNU GPL v3
al@890 5 #
al@890 6
al@890 7 . /usr/lib/slitaz/libcook.sh
al@890 8
al@890 9
al@890 10 # Search file in mirrored packages
al@890 11
al@890 12 search_file_mirror() {
al@890 13 busybox unlzma -c $DB/files.list.lzma | grep $1\$ | cut -d: -f1 | sort -u
al@890 14 }
al@890 15
al@890 16
al@890 17 # Search file in local wok packages
al@890 18
al@890 19 search_file_local() {
al@890 20 # existing packages have precedence over the package/taz folder
al@890 21 srch=$1
al@890 22 { for package in $(find $PKGS -name '*.tazpkg'); do
al@890 23 if [ -n "$(busybox cpio --to-stdout --quiet -i files.list < $package | \
al@890 24 grep /$srch\$)" ]; then
al@890 25 busybox cpio -i receipt < $package | fgrep PACKAGE | cut -d\" -f2
al@890 26 fi
al@890 27 done } | sort -u
al@890 28 }
al@890 29
al@890 30
al@890 31 # Ask in multiple choice
al@890 32
al@890 33 ask_multiple() {
al@890 34 local multiples first my_choice
al@890 35 multiples="$1"
al@890 36 first=$(echo "$multiples" | head -n1)
al@890 37 newline; _ 'Multiple choice:'; echo "$multiples"; newline
al@890 38 _ 'Select one [%s]: ' "$first"; read my_choice
al@890 39 found="${my_choice:-$first}"
al@890 40 }
al@890 41
al@890 42
al@890 43 # Search file in local cache (fast), local wok packages, mirrored packages
al@890 44
al@890 45 search_file() {
al@890 46 local srch cache missing
al@890 47 srch="$1"
al@890 48 cache='/var/cache/ldsearch.cache'
al@890 49 missing='/var/cache/missing.file'
al@890 50 touch $cache $missing
al@890 51 found=$(grep $srch $cache | cut -d$'\t' -f2)
al@890 52 if [ -z "$found" ]; then
al@890 53 found=$(search_file_local $srch)
al@890 54 if [ -n "$found" ]; then
al@890 55 if [ $(echo "$found" | wc -l) -gt 1 ]; then
al@890 56 ask_multiple "$found"
al@890 57 fi
al@890 58 echo -e "$srch\t$found" >> $cache
al@890 59 else
al@890 60 found=$(search_file_mirror $srch)
al@890 61 if [ -n "$found" ]; then
al@890 62 if [ $(echo "$found" | wc -l) -gt 1 ]; then
al@890 63 ask_multiple "$found"
al@890 64 fi
al@890 65 echo -e "$srch\t$found" >> $cache
al@890 66 else
al@890 67 echo "$srch" >> $missing
al@890 68 fi
al@890 69 fi
al@890 70 fi
al@890 71 }
al@890 72
al@890 73
al@890 74
al@890 75
al@890 76
al@890 77
al@890 78 if [ ! -d $WOK/$pkg/taz ]; then
al@890 79 _ 'Need to build "%s"' "$pkg"
al@890 80 exit 0
al@890 81 fi
al@890 82
al@890 83 title 'Checking depends'
al@890 84 lddlist='/tmp/lddlist'; touch $lddlist
al@890 85 missing='/var/cache/missing.file'
al@890 86
al@890 87 # find all deps using ldd
al@890 88 for exe in $(find $WOK/$pkg/taz -type f -perm +111); do
al@890 89 [ "x$(dd if=$exe bs=4 count=1 2>/dev/null)" == "xELF" ] && #"
al@890 90 ldd $exe | sed 's| ||' | cut -d' ' -f1 >> $lddlist
al@890 91 done
al@890 92
al@890 93 # remove exe/so duplicates
al@890 94 sort -u $lddlist > $lddlist.sorted
al@890 95
al@890 96 # search packages
al@890 97 for exefile in $(cat $lddlist.sorted); do
al@890 98 search_file $exefile
al@890 99 echo "$found" >> $lddlist.pkgs
al@890 100 echo -n '.'
al@890 101 done
al@890 102 echo
al@890 103
al@890 104 # remove packages duplicates
al@890 105 sort -u $lddlist.pkgs > $lddlist.final
al@890 106 sort -u $missing > $missing.final
al@890 107 rm -f $lddlist $lddlist.sorted $lddlist.pkgs $missing
al@890 108 exit 0