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)
follow-up: 2 comment:1 by , 8 years ago
Keywords: | complitation dependences added |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:2 by , 8 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Replying to dimag:
Добавил проверку на наличие макроса PJMEDIA_RESAMPLE_IMP, и на то, чтобы библиотека ресэмплинга не была равна PJMEDIA_RESAMPLE_NONE.
Как нетрудно понять из сделанных изменений, данная проверка выполняется вовсе не при старте программы, как предложено в описании тикета, а при ее сборке. Очевидно, что такая проверка никак не решает проблему, приведенную в качестве примера в описании тикета: библиотека, установленная на BUILD-хосте может быть собрана со всеми требемыми фичами, в результате все препроцессорные проверки, добавленные в r428, успешно выполнятся. А потом программу запустят на компьютере, где установлена библиотека, собранная без ресэмплинга, и в результате наша программа упадет (см. #367).
Поэтому я настаиваю на проверке в рантайме.
comment:4 by , 8 years ago
Replying to dimag:
Как вы рекомендуете делать проверку во время исполнения?
Зависит от того, что именно мы хотим проверить. Я бы действовал следующим образом:
- Проанализировал используемые библиотеки и составил бы список фичей, которые требуются нашей программе, но могут отсутствовать (см. #372).
- Для каждой из "фичей" списка постараться найти способ проверки ее наличия. Например для случая, пример которого приведен в описании тикета, можно вызвать
pjmedia_resample_create(NULL,...)
. Если libpjmedia собрана без ресэмплинга, вызов вернет PJ_EINVALIDOP (или, возможно, в библиотеке просто не будет такого символа). Если поддержка ресэмплинга есть, вызов вернет PJ_EINVAL.
comment:6 by , 7 years ago
Owner: | changed from | to
---|---|
Status: | reopened → assigned |
r428
Добавил проверку на наличие макроса PJMEDIA_RESAMPLE_IMP, и на то, чтобы библиотека ресэмплинга не была равна PJMEDIA_RESAMPLE_NONE.