Summary: | У brp-debuginfo проблемы с пробелами | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Ivan A. Melnikov <iv> | ||||
Component: | rpm-build | Assignee: | placeholder <placeholder> | ||||
Status: | ASSIGNED --- | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P5 | CC: | arseny, glebfm, imz, ldv, placeholder, vt | ||||
Version: | unstable | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
Attachments: |
|
Пока писал репорт заметил, что у одного xargs там есть `--delimeter='\n'`, а у другого нет. Пойду попробую сделать патч. Конечно, тогда останутся проблемы с переносом строки в имени, но это уже не так актуально. Тривиальный фикс достаточно тривиален https://git.altlinux.org/people/iv/packages/rpm.git?a=commitdiff;h=f983dc085c41f3790dee026286a873b5855e7994 но явно не достаточен: [...] Finding debuginfo files (using /usr/lib/rpm/find-debuginfo-files) Executing: /bin/sh -e /tmp/.private/iv/rpm-tmp.lC8hA9 Creating spaces-debuginfo package Processing files: spaces-debuginfo-0.1-alt1 error: Two files on one line: /usr/lib/debug/usr/bin/space error: File must begin with "/": test.debug RPM build errors: Two files on one line: /usr/lib/debug/usr/bin/space File must begin with "/": test.debug В качестве workaround'а можно воспользоваться %add_debuginfo_skiplist. А разве в rpm можно запаковать файлы с пробелами. (In reply to Vitaly Chikunov from comment #4) > А разве в rpm можно запаковать файлы с пробелами. А почему нет? [iv@team ~]$ grep -c ' ' /ALT/sisyphus/{x86_64,noarch}/base/contents_index /ALT/sisyphus/x86_64/base/contents_index:13097 /ALT/sisyphus/noarch/base/contents_index:67962 Если добавить в начало тестового спека `%add_debuginfo_skiplist %_bindir`, он соберётся; с установкой и удалением тоже вроде проблем никаких. Возможно, я тестировал как раз на бинарниках и принял эту ошибку за то, что "вообще не работает". Так же, Арсений упоминал https://bugzilla.altlinux.org/show_bug.cgi?id=51874#c6 что есть какая-то проблема с пробелами, но пояснения не дал, я решил тогда, что она относится к предложенному там патчу. Ну да, если указать в спеке имя файла с пробелом %files %_bindir/test generated то ошибка rpm-build: "Two files on one line". То что запаковывается - это по glob или по вложенным в диры файлам. Может кто знает как это решается в апстримах? В смысле разрешено ли там указывать файлы с пробелами в %files, может для этого требуется \ или " ". (In reply to Vitaly Chikunov from comment #7) > То что запаковывается - это по > glob или по вложенным в диры файлам. Внезапно, ещё вот так работает: %files "%_bindir/space test" А экранирование `\` или `[ ]` нет. Разбор проблем: https://github.com/rpm-software-management/rpm/issues/1749#issuecomment-1020420616 До конца по ссылке пока не дочитал читал. (In reply to Ivan A. Melnikov from comment #10) > Разбор проблем: > > https://github.com/rpm-software-management/rpm/issues/1749#issuecomment- > 1020420616 > > До конца по ссылке пока не дочитал читал. Спасибо. Апстрим захотели как можно больше приблизить формат строки к shell и сделали большие изменения для этого. Мы можем пока просто заключать эти генеренные имена файлов в кавычки. Тестовое задание https://git.altlinux.org/tasks/376351/ (пока еще собирается) > Тестовое задание https://git.altlinux.org/tasks/376351/
С rpm-build их этого задания пакеты -- и тестовый спек, и тот, на котором я вчера наткнулся на эту проблему -- успешно собрались. Debuginfo для spaces из тестового спека ставится и работает в gdb.
При этом, насколько я понимаю работу и применение strtokWithQuotes, сломать эти изменения ничего не должны.
Надо подумать может не так сложно отключить поддержку glob внутри кавычек, это решит и баг #51874. |
Created attachment 17840 [details] соберите этот спек чтобы воспроизвести проблему Так получилось, что мне очень понадобилось собрать библиотеку с пробелом в имени. Так я узнал, что у нас brp-debuginfo вообще не способен справиться с бинарниками с пробельными символами в именах. Для воспроизведения ошибки проще всего попробовать запаковать тривиальную программу (самодостаточный спек в приложении). Содержательная чать buildroot получается такой: $ find /tmp/.private/iv/spaces-buildroot/usr/ /tmp/.private/iv/spaces-buildroot/usr/ /tmp/.private/iv/spaces-buildroot/usr/bin /tmp/.private/iv/spaces-buildroot/usr/bin/space test То есть, пакуется исполняемый файл "/usr/bin/space test". Ошибка выглядит так: date: ./usr/bin/space: No such file or directory date: test: No such file or directory error: Bad exit status from /tmp/.private/iv/rpm-tmp.35317 (%install)