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.
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 |