Bug 59555 - gear-store-tags: ложное предупреждение "Unrecognized option exclude=" для директивы tar
Summary: gear-store-tags: ложное предупреждение "Unrecognized option exclude=" для дир...
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: gear (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 minor
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-06-16 12:17 MSK by Ajrat Makhmutov
Modified: 2026-06-16 12:17 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ajrat Makhmutov 2026-06-16 12:17:13 MSK
gear-store-tags (он же gear-update-tag) сканирует .gear/rules, чтобы
определить, какие git-теги используются, и при этом игнорирует опции
директив, не относящиеся к тегам. Однако для tar-директив функция
find_tags_in_tar_options не считает опцию exclude= известной и выдаёт
диагностическое сообщение "Unrecognized option ... ignored", хотя:

* сам gear обрабатывает exclude= для tar корректно (см. parse_exclude_option);
* для diff-директив exclude= уже распознаётся
(find_tags_in_diff_options: ветка name=*|exclude=*).

То есть exclude= просто забыли добавить в список распознаваемых опций
для tar при добавлении его поддержки.

Сообщение безвредно (rules_info -> message, не fatal), теги сохраняются
корректно, но мусорит в выводе и сбивает с толку.

Steps to reproduce:

1. Создать пакет с .gear/rules, содержащим tar-директиву с exclude=:

tar.zst: .gear/vendor/chromium name=chromium \
exclude=.gear/vendor/chromium/third_party

2. Выполнить:

gear-update-tag -ac

Actual result:

gear-update-tag: .gear/rules line 3: Unrecognized option
"exclude=.gear/vendor/chromium/third_party" ignored

Expected result:

опция exclude= молча игнорируется при сканировании тегов
(как это уже сделано для diff-директив), без предупреждения.

Предлагаемое исправление — добавить exclude=* в ветку распознаваемых
опций find_tags_in_tar_options в gear-store-tags:

name=*|base=*|suffix=*|exclude=*)
;;