Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.UNIX.BSD
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.UNIX.BSD с датами от 18 Jan 11 22:51:00 до 18 Jan 24 18:16:22, всего сообщений: 10753
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 8415 из 10753 ===================================== RU.UNIX.BSD =
От   : Eugene Grosbein                  2:5006/1           29 Dec 18 11:05:46
Кому : Victor Sudakov                                      29 Dec 18 11:05:46
Тема : Re: Чем сейчас мод(ж)но смотреть полное дерево зависимостей порта?
FGHI : area://RU.UNIX.BSD?msgid=grosbein.net+8dacd942
На   : area://RU.UNIX.BSD?msgid=2:5005/49+5c264847
= Кодировка сообщения определена как: IBM866 =================================
Ответ: area://RU.UNIX.BSD?msgid=2:5005/49+5c274e8b
Ответ: area://RU.UNIX.BSD?msgid=2:5005/49+5c332a2b
==============================================================================
28 дек. 2018, пятница, в 22:49 NOVT, Victor Sudakov написал(а):

VS> Во-вторых и главных, просили дерево зависимостей, а не линейный список
VS> зависимостей данного порта. Т.е. хотелось выяснить, какая непрямая зависимость
VS> данного пакета вдруг требует пакета X в качестве своей зависимости. Часто ведь
VS> есть скромный список из нескольких прямых зависимостей, а на поверку их
VS> оказывается огромная гора непрямых.

Искать глазками в огромном дереве зависимостей - плохой способ,
поэтому рисовать дерево зависимостей и избыточно, и не поможет.

Правильная формулировка задачи - половина решения.

Если на самом деле нужен путь по дереву зависимостей,
начинающийся с одного заданного порта и заканчивающийся на другом
заданном, то это вовсе не рисование дерева, а как раз таки линейный
список и он делается довольно несложно:

#!/bin/sh

skip() {
  k=$(echo -n "$1" | tr -c [:alnum:] _)
  eval v=\"\$h_$k\"
  [ -n "$v" ] && return 0 || eval h_$k=1 && return 1
}

dpath() {
  local l p
  for p
  do
     skip "$p" && continue
     l=$(pkg query %rn-%rv "$p")
     [ -z "$l" ] && continue
     case " $goal " in
    *\ $l\ *) res="$p $goal"; return 0;;
     esac
     dpath $l && res="$p $res" && return 0
  done
  return 1
}

goal="$2"
dpath "$1" && echo $res && return 0
return 1
# EOF

$ ./deps pcre-8.40 vlc-2.2.6,4; echo $?
pcre-8.40 libslang2-2.3.1 libcaca-0.99.b19_2 vlc-2.2.6,4
0
$ ./deps pcre-8.40 vlc-2.2.6,5; echo $?
1

Eugene
--- slrn/1.0.3 (FreeBSD)
* Origin: RDTC JSC (2:5006/1@fidonet)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.080820 секунды