Summary: | FTBFS: переопределяет слово deprecated | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Evgenii Terechkov <evg> | ||||
Component: | icewm | Assignee: | Dmitriy Khanzhin <jinn> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | blocker | ||||||
Priority: | P2 | CC: | jinn, mike, php-coder, shrek | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Attachments: |
|
Description
Evgenii Terechkov
2008-05-13 20:10:23 MSD
Created attachment 2615 [details]
Часть диффа между pcm.h в 1.0.15 и 1.0.16, иллюстрирующая проблему.
ИМХО, надо где-то ДО использования давать пустое определение __attribute__
~$ R -qp --lastchange ~/.inst/Sisyphus/RPMS.classic/libalsa-devel_1.0.16-alt1_i586.rpm * Чтв Май 01 2008 Valery Inozemtsev <shrek@altlinux.ru> 1.0.16-alt1 - 1.0.16 const char *snd_pcm_start_mode_name(snd_pcm_start_t mode) __attribute__((deprecated)); и что здесь не понятного? Зачем вы используете gcc2.96? (In reply to comment #4) > Зачем вы используете gcc2.96? Ну, это же компонент "ALT Linux Sisyphus"? ~$ rpm -qa |egrep ^gcc gcc4.1-4.1.2-alt2 gcc-common-1.4.10-alt3 gcc-color-1.0.1-alt5 gcc4.1-c++-4.1.2-alt2 gcc-c++-common-1.4.10-alt3 gccmakedep-1.0.1-alt1 На сборочной машине ООО для Сизифа проблема та же (я, собственно, и разбираться то начал потому что beehave написал, что icewm перестал собираться. Проверил у себя, на свежем Сизифе - и правда не собирается. Откатываю libalsa-devel - собирается), а там никак не 2.96. (In reply to comment #3) > const char *snd_pcm_start_mode_name(snd_pcm_start_t mode) > __attribute__((deprecated)); > и что здесь не понятного? Непонятно либо почему gcc4 не отрабатывает __attribute__, либо почему нигде не определен пустой макрос __attribute__. Я думаю, что могу его определить и сам, но ИМХО нехорошо так запатчивать каждое приложение, собирающееся с alsa-ой. Странно, то что: - ругается на объявление ф-ции в хедере, а не на строчку, где используется ф-ция - выдаёт ошибку, а не warning - ругается "'deprecated' was not declared in this scope" в то время как должен "warning: 'foo' is deprecated" Именно по этим причинам и похоже, что баг именно в libalsa-devel, а не в icewm. Впрочем, icewm, в любом случае, лучше запатчить, чтобы он не использовал устаревшие ф-ции. (In reply to comment #7) > Странно, то что: > - ругается на объявление ф-ции в хедере, а не на строчку, где используется ф-ция Это и навело на альсу. > - выдаёт ошибку, а не warning > - ругается "'deprecated' was not declared in this scope" в то время как должен > "warning: 'foo' is deprecated" Это штатное поведение (расширение?) gcc начиная с какой-то версий (3.хх вроде). А тут ситуация нештатная какая-то. > Именно по этим причинам и похоже, что баг именно в libalsa-devel, а не в icewm. Может быть и так, что для сборки с новой альсой надо писать код не так, как для старой (объявлять какие-то #defun-ы и т.п...). Я же ничего в сборке и коде не менял. Почитав доки из пакетов 1.0.16 и сам pcm.h, я ничего такого не уловил. Может, кто-то знает? > Впрочем, icewm, в любом случае, лучше запатчить, чтобы он не использовал > устаревшие ф-ции. Это в процессе. (In reply to comment #6) > Непонятно либо почему gcc4 не отрабатывает __attribute__ Именно. Это вряд ли проблема libalsa. > либо почему нигде не определен пустой макрос __attribute__. Это не макрос. (In reply to comment #7) > Странно, то что: > - ругается на объявление ф-ции в хедере, а не на строчку, где используется ф- ция > - выдаёт ошибку, а не warning > - ругается "'deprecated' was not declared in this scope" в то время как должен > "warning: 'foo' is deprecated" Это формулируется одной фразой: "странно, что gcc не узнал __attribute__ ((deprecated))". src/base.h: #if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3 #define deprecated __attribute__((deprecated)) #else #define deprecated #endif Они идиоты. Ибо в итоге получается __attribute__((__attribute__((deprecated)))) Ну и да, чудес не бывает. Привыкайте. (In reply to comment #10) > Ну и да, чудес не бывает. Привыкайте. Бывают -- например, чудесным образом это оказалась не моя бага :) Fixed in icewm-1.2.35-alt3, thanks to wrar@ Пойду патч повешу в апстрим... |