This is for active development.
New funtionalities are to be added actively.
Revision | fa3bd204612e89de3fe1e01d2b73cf9b609c2ed2 (tree) |
---|---|
Time | 2022-04-14 01:09:51 |
Author | ![]() |
Commiter | Mamoru Sakaue |
Fixed bugs caused by incomplete corrections related to function pkg_info_flavored_originsi().
modified: lib/libpkgsys.sh
@@ -497,11 +497,14 @@ pkgsys_def_pkgtools () | ||
497 | 497 | } |
498 | 498 | pkg_info_gen_pkg_origin_table () |
499 | 499 | { |
500 | + local pkgname origin | |
500 | 501 | # pkg query -g '%n-%v\t%o' \* 2> /dev/null > ${DBDIR}/installed_ports:pkg_vs_origin.tbl |
501 | - pkg info -qa 2> /dev/null | while read pkgname | |
502 | + for pkgname in `pkg info -qa 2> /dev/null` | |
502 | 503 | do |
503 | - origin=`pkg_info_flavored_origin "$pkgname"` | |
504 | - printf '%s\t%s\n' "$pkgname" "$origin" | |
504 | + for origin in `pkg_info_flavored_origins "$pkgname"` | |
505 | + do | |
506 | + printf '%s\t%s\n' "$pkgname" "$origin" | |
507 | + done | |
505 | 508 | done |
506 | 509 | } |
507 | 510 | pkg_create_b () |
@@ -880,7 +883,7 @@ pkgsys_def_pkgtools () | ||
880 | 883 | pkg_info -qe "$@" 2> /dev/null && echo |
881 | 884 | : |
882 | 885 | } |
883 | - pkg_info_flavored_origin () | |
886 | + pkg_info_flavored_origins () | |
884 | 887 | { |
885 | 888 | local glob_unflavored tmp_stdout |
886 | 889 | glob_unflavored=$1 |
@@ -1221,9 +1224,10 @@ pkgsys_get_my_current_pkg () | ||
1221 | 1224 | # ============= Get the flavored origin of this utility ============= |
1222 | 1225 | pkgsys_get_my_origin () |
1223 | 1226 | { |
1224 | - pkgsys_get_my_current_pkg | while read pkgname | |
1227 | + local pkgname | |
1228 | + for pkgname in `pkgsys_get_my_current_pkg` | |
1225 | 1229 | do |
1226 | - pkg_info_flavored_origin "$pkgname" | |
1230 | + pkg_info_flavored_origins "$pkgname" | |
1227 | 1231 | done |
1228 | 1232 | } |
1229 | 1233 |
@@ -1232,9 +1236,9 @@ pkgsys_init_pkg_orig_by_ambiguous_matching () | ||
1232 | 1236 | { |
1233 | 1237 | local pkg origin tmporigin ambsuffix len_pkg pkg_regexp norigins |
1234 | 1238 | pkg=$1 |
1235 | - origin=`pkg_info_flavored_origin "$pkg"` | |
1236 | - [ -n "$origin" ] && { echo "$origin"; return; } | |
1237 | 1239 | tmporigin=${TMPDIR}/pkgsys_init_pkg_orig_by_ambiguous_matching::origin |
1240 | + pkg_info_flavored_origins "$pkg" > $tmporigin | |
1241 | + [ `wc -l < $tmporigin` -gt 0 ] && { cat "$tmporigin"; return; } | |
1238 | 1242 | ambsuffix= |
1239 | 1243 | norigins=0 |
1240 | 1244 | len_pkg=`echo -n "$pkg" | wc -c` |
@@ -1390,9 +1394,9 @@ pkgsys_eval_ports_glob () | ||
1390 | 1394 | glob_regexp2=`echo "$glob_regexp" | sed -E 's/\$*$//' 2>&1 || :`'[[:space:]]' |
1391 | 1395 | env LANG=C grep -E "$glob_regexp2" "${DBDIR}/installed_ports:pkg_vs_origin.tbl" 2> /dev/null \ |
1392 | 1396 | | cut -f 2 || : |
1393 | - pkg_info_Ex "$glob_regexp" | while read pkgname | |
1397 | + for pkgname in `pkg_info_Ex "$glob_regexp"` | |
1394 | 1398 | do |
1395 | - pkg_info_flavored_origin "$pkgname" | |
1399 | + pkg_info_flavored_origins "$pkgname" | |
1396 | 1400 | done |
1397 | 1401 | fi |
1398 | 1402 | done | sort -u |
@@ -1406,45 +1410,47 @@ pkgsys_create_backup_pkg () | ||
1406 | 1410 | dstdir=$2 |
1407 | 1411 | rm -rf "${TMPDIR}"/package.tmp |
1408 | 1412 | mkdir "${TMPDIR}"/package.tmp |
1409 | - origin=`pkg_info_flavored_origin "$pkgname"` | |
1410 | - if backup_pkg_old=`pkgsys_get_backup_pkg "$origin"` && \ | |
1411 | - [ ! -e "${DBDIR}/requires/$origin/installed_timestamp" -o \ | |
1412 | - "$backup_pkg_old" -nt "${DBDIR}/requires/$origin/installed_timestamp" ] | |
1413 | - then | |
1414 | - echo "$backup_pkg_old" | |
1415 | - return | |
1416 | - fi | |
1417 | - if ( cd "${TMPDIR}"/package.tmp && pkg_create_b "$pkgname" > /dev/null ) | |
1418 | - then | |
1419 | - pkgname_ptn=`str_escape_regexp "$pkgname"` | |
1420 | - backup_pkg=`ls "${TMPDIR}"/package.tmp | \ | |
1421 | - env LANG=C grep -m 1 -E "^${pkgname_ptn}\.(txz|tbz|tgz|tar|pkg)$"` || : | |
1422 | - fi | |
1423 | - if [ -z "$backup_pkg" ] | |
1424 | - then | |
1425 | - message_echo "WARNING: Failed to create backup package for $pkgname." >&2 | |
1426 | - return 1 | |
1427 | - fi | |
1428 | - dbpath=${DBDIR}/backup/$origin | |
1429 | - mkdir -p "$dbpath" | |
1430 | - pkg_info_qL "$pkgname" > $dbpath/previously_installed_files | |
1431 | - mkdir -p "$dstdir" | |
1432 | - mv "${TMPDIR}/package.tmp/$backup_pkg" "$dstdir" | |
1433 | - pkgpath=$dstdir/$backup_pkg | |
1434 | - cat "${DBDIR}/backup_pkgarcs.lst" 2> /dev/null | \ | |
1435 | - while read origin_cur pkgpath_cur | |
1436 | - do | |
1437 | - [ "$pkgpath_cur" = "$pkgpath" ] && continue | |
1438 | - if [ "$origin_cur" = "$origin" ] | |
1439 | - then | |
1440 | - rm -f "$pkgpath_cur" | |
1441 | - else | |
1442 | - printf '%s\t%s\n' "$origin_cur" "$pkgpath_cur" | |
1443 | - fi | |
1444 | - done > ${DBDIR}/backup_pkgarcs.lst.tmp | |
1445 | - printf '%s\t%s\n' "$origin" "$pkgpath" >> ${DBDIR}/backup_pkgarcs.lst.tmp | |
1446 | - mv "${DBDIR}/backup_pkgarcs.lst.tmp" "${DBDIR}/backup_pkgarcs.lst" | |
1447 | - echo "$pkgpath" | |
1413 | + for origin in `pkg_info_flavored_origins "$pkgname"` | |
1414 | + do | |
1415 | + if backup_pkg_old=`pkgsys_get_backup_pkg "$origin"` && \ | |
1416 | + [ ! -e "${DBDIR}/requires/$origin/installed_timestamp" -o \ | |
1417 | + "$backup_pkg_old" -nt "${DBDIR}/requires/$origin/installed_timestamp" ] | |
1418 | + then | |
1419 | + echo "$backup_pkg_old" | |
1420 | + return | |
1421 | + fi | |
1422 | + if ( cd "${TMPDIR}"/package.tmp && pkg_create_b "$pkgname" > /dev/null ) | |
1423 | + then | |
1424 | + pkgname_ptn=`str_escape_regexp "$pkgname"` | |
1425 | + backup_pkg=`ls "${TMPDIR}"/package.tmp | \ | |
1426 | + env LANG=C grep -m 1 -E "^${pkgname_ptn}\.(txz|tbz|tgz|tar|pkg)$"` || : | |
1427 | + fi | |
1428 | + if [ -z "$backup_pkg" ] | |
1429 | + then | |
1430 | + message_echo "WARNING: Failed to create backup package for $pkgname." >&2 | |
1431 | + return 1 | |
1432 | + fi | |
1433 | + dbpath=${DBDIR}/backup/$origin | |
1434 | + mkdir -p "$dbpath" | |
1435 | + pkg_info_qL "$pkgname" > $dbpath/previously_installed_files | |
1436 | + mkdir -p "$dstdir" | |
1437 | + mv "${TMPDIR}/package.tmp/$backup_pkg" "$dstdir" | |
1438 | + pkgpath=$dstdir/$backup_pkg | |
1439 | + cat "${DBDIR}/backup_pkgarcs.lst" 2> /dev/null | \ | |
1440 | + while read origin_cur pkgpath_cur | |
1441 | + do | |
1442 | + [ "$pkgpath_cur" = "$pkgpath" ] && continue | |
1443 | + if [ "$origin_cur" = "$origin" ] | |
1444 | + then | |
1445 | + rm -f "$pkgpath_cur" | |
1446 | + else | |
1447 | + printf '%s\t%s\n' "$origin_cur" "$pkgpath_cur" | |
1448 | + fi | |
1449 | + done > ${DBDIR}/backup_pkgarcs.lst.tmp | |
1450 | + printf '%s\t%s\n' "$origin" "$pkgpath" >> ${DBDIR}/backup_pkgarcs.lst.tmp | |
1451 | + mv "${DBDIR}/backup_pkgarcs.lst.tmp" "${DBDIR}/backup_pkgarcs.lst" | |
1452 | + echo "$pkgpath" | |
1453 | + done | |
1448 | 1454 | } |
1449 | 1455 | |
1450 | 1456 | # ============= Delete a back-up package archive for a flavored port origin ============= |
@@ -1677,17 +1683,19 @@ pkgsys_sanitychk_pkgcontents () | ||
1677 | 1683 | fi |
1678 | 1684 | done |
1679 | 1685 | eval "$var_is_reinstall_encouraged=\$_is_reinstall_encouraged" |
1680 | - origin=`pkg_info_flavored_origin "$pkg"` | |
1681 | - if [ $opt_batch_mode = no ] | |
1682 | - then | |
1683 | - message_echo "[$pkg ($origin)]" | |
1684 | - sed 's/^/ /' "$tmp_sanity" | |
1685 | - message_echo | |
1686 | - else | |
1687 | - pkg_replace=`str_escape_replaceval "$pkg"` | |
1688 | - origin_replace=`str_escape_replaceval "$origin"` | |
1689 | - sed "s/^/$pkg_replace\\\\$origin_replace\\\\$_is_reinstall_encouraged\\\\/" "$tmp_sanity" | tr '\\' '\t' | |
1690 | - fi | |
1686 | + for origin in `pkg_info_flavored_origins "$pkg"` | |
1687 | + do | |
1688 | + if [ $opt_batch_mode = no ] | |
1689 | + then | |
1690 | + message_echo "[$pkg ($origin)]" | |
1691 | + sed 's/^/ /' "$tmp_sanity" | |
1692 | + message_echo | |
1693 | + else | |
1694 | + pkg_replace=`str_escape_replaceval "$pkg"` | |
1695 | + origin_replace=`str_escape_replaceval "$origin"` | |
1696 | + sed "s/^/$pkg_replace\\\\$origin_replace\\\\$_is_reinstall_encouraged\\\\/" "$tmp_sanity" | tr '\\' '\t' | |
1697 | + fi | |
1698 | + done | |
1691 | 1699 | return 1 |
1692 | 1700 | } |
1693 | 1701 |