Opened 8 years ago

Last modified 7 years ago

#373 assigned улучшение

При старте программы проверять, должным ли образом собраны ее зависимости

Reported by: alx Owned by: alx
Priority: minor Milestone: 2 очередь
Component: ПО MC04-Dispatcher. Пульт диспетчера/техника Keywords: complitation, dependences
Cc: san

Description

Сейчас программа, насколько мне известно, не делает никаких проверок на то, поддерживают ли ее зависимости необходимые программе функции или нет. Например, не делается проверка, собран ли PJSIP с поддержкой ресэмплинга, которая, как выяснилось, программе требуется (см. #367).

Предлагается при старте программы, по возможности (а, например, для упомянутого PJSIP это возможно) проверять наличие поддержки требуемых функций и в случае обнаружения отсутствия чего-либо необходимого, как минимум выдавать предупреждение.

Change History (6)

comment:1 by dimag, 8 years ago

Keywords: complitation dependences added
Resolution: fixed
Status: newclosed

r428
Добавил проверку на наличие макроса PJMEDIA_RESAMPLE_IMP, и на то, чтобы библиотека ресэмплинга не была равна PJMEDIA_RESAMPLE_NONE.

in reply to:  1 comment:2 by alx, 8 years ago

Resolution: fixed
Status: closedreopened

Replying to dimag:

Добавил проверку на наличие макроса PJMEDIA_RESAMPLE_IMP, и на то, чтобы библиотека ресэмплинга не была равна PJMEDIA_RESAMPLE_NONE.

Как нетрудно понять из сделанных изменений, данная проверка выполняется вовсе не при старте программы, как предложено в описании тикета, а при ее сборке. Очевидно, что такая проверка никак не решает проблему, приведенную в качестве примера в описании тикета: библиотека, установленная на BUILD-хосте, может быть собрана со всеми требемыми фичами, в результате все препроцессорные проверки, добавленные в r428, успешно выполнятся. А потом программу запустят на компьютере, где установлена библиотека, собранная без ресэмплинга, и в результате наша программа упадет (см. #367).

Поэтому я настаиваю на проверке в рантайме.

Last edited 8 years ago by alx (previous) (diff)

comment:3 by dimag, 8 years ago

Как вы рекомендуете делать проверку во время исполнения?

in reply to:  3 comment:4 by alx, 8 years ago

Replying to dimag:

Как вы рекомендуете делать проверку во время исполнения?

Зависит от того, что именно мы хотим проверить. Я бы действовал следующим образом:

  1. Проанализировал используемые библиотеки и составил бы список фичей, которые требуются нашей программе, но могут отсутствовать (см. #372).
  2. Для каждой из "фичей" списка постараться найти способ проверки ее наличия. Например для случая, пример которого приведен в описании тикета, можно вызвать pjmedia_resample_create(NULL,...). Если libpjmedia собрана без ресэмплинга, вызов вернет PJ_EINVALIDOP (или, возможно, в библиотеке просто не будет такого символа). Если поддержка ресэмплинга есть, вызов вернет PJ_EINVAL.

comment:5 by san, 7 years ago

Milestone: Текущее2 очередь

Milestone renamed

comment:6 by san, 7 years ago

Owner: changed from dimag to alx
Status: reopenedassigned
Note: See TracTickets for help on using tickets.