Bug 22689 - Лишние пробелы --> невозможность сборки приложений
Summary: Лишние пробелы --> невозможность сборки приложений
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: scons (show other bugs)
Version: unstable
Hardware: all Linux
: P3 blocker
Assignee: Evgeny Sinelnikov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-01-06 00:44 MSK by mex3
Modified: 2010-01-13 00:36 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description mex3 2010-01-06 00:44:04 MSK
С новым питоном и (видимо) пересборкой scons-а как минимум сломалась сборка lprof. Отчёт о несобираемости пришёл в день попадания нового питона в сизиф.

Визуально это выглядит так:

Checking for C header file tiff.h... yes
Checking for C header file usb.h... yes
Checking for C++ header file vigra/impex.hxx... no
You need to have VIGRA installed.

В BuildRequires libvigra-devel, конечно, есть. Сам impex.hxx лежит на
месте и как раз тут всё хорошо. Плохо в том месте, где scons генерит тесты
на проверку использования этого самого impex.hxx.

Выглядит примерно так:
# check for VIGRA headers
if not config.CheckCXXHeader('vigra/impex.hxx'):
   print "You need to have VIGRA installed."
   print "On some Linux Distros you may need to install the devel package
   for VIGRA."
   Exit(1)

Получается файл conftest_3.cpp, содержащий:

#include "vigra/impex.hxx"

В 5.1 получается тоже самое. Далее начинается разное. В 5.1 этот файл
компилируется корректно, в Сизифе же нет (как следствие, conftest_3.o не
создаётся и т.п.).

Если поглядеть в config.log, то становится видно, что при формировании командной строки вызова g++ для CheckCXXHeader с какого-то перепугу для debug build (а по умолчанию он включен) добавляется не "-g", а "- g"! Именно так, с пробелом!

Это не единственное появление пробелов. Если выключить debug build и перейти к сборке, будет красивее. Спотыкается практически сразу же, вот на такой прекрасной строчке:

g++ -o build/linux/lprofqt/lprofmain.o -c -O3 -Wall -pipe
-DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII - D Q T _ T H R E A D _ S U P P O R T - D U N I X - D Q T _ T H R E A D _ S U P P O R T -O3 -Wall -pipe -D_FORTIFY_SOURCE=0 -DLPROF_ERROR_TRAP -DENABLE_USB -DO_BINARY -DUSE_FLOAT -DUNIX -DNON_WINDOWS -DLPROF_ERROR_TRAP -DENABLE_USB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_QT3SUPPORT_LIB -DQT_SHARED -DQT3_SUPPORT - /usr/include/QtAssistant -I/usr/include/qt4/QtAssistant -I/usr/include/qt4 -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtCore -I/usr/include/qt4/Qt3Support -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtSql -I/usr/include/qt4/QtAssistant -Isrc/lcms/include -Isrc/libqtlcmswidgets -Isrc/liblprof -Isrc/lprofqt -Isrc/checkerqt -Isrc/gammaqt -Isrc/IDqt -Isrc/monqt -Isrc/moncalqt -Isrc/moncalcontrolqt -Isrc/parmsqt -Isrc/reference_inst_qt -Isrc/argyll/rspl -Isrc/argyll/numlib -Isrc/solvopt -Isrc/argyll/h -Isrc/argyll/spectro -Isrc/argyll/xicc -Isrc/argyll/icc -Isrc/argyll/plot -Isrc/argyll/gamut -Isrc/argyll/profile -Isrc/argyll/cgats -Isrc/argyll/plot -Isrc/videoLUTutils - build/linux/libqtlcmswidgets -Ibuild/linux/lprofqt -Ibuild/linux/checkerqt -Ibuild/linux/gammaqt -Ibuild/linux/IDqt -Ibuild/linux/monqt - build/linux/parmsqt -Ibuild/linux/reference_inst_qt -Ibuild/linux/moncalqt -Ibuild/linux/moncalcontrolqt -Ibuild/linux/solvopt -I/usr/include -I/usr/pkg/include -I/usr/local/include -I/usr/local/pkg/include src/lprofqt/lprofmain.cpp

Обращаю внимание на извращение - D Q T _ T H R E A D _ S U P P O R T - D U N I X - D Q T _ T H R E A D _ S U P P O R T

К сожалению, с таким scons-ом собирать что-то если и получится, то это будет, скорее, удивительно :)
Comment 1 real@altlinux.org 2010-01-11 10:38:13 MSK
Это очень давно (с лета лично мне) известная проблема.

Лечится обычно превращением параметров типа CFLAGS из строк в массивы:

http://git.altlinux.org/people/real/packages/widelands.git?p=widelands.git;a=commitdiff;h=b4eb687f1bf0c7157f97661a8663e583cfdceeab

Либо вообще как-то через неприличные позы :(

Так что тут по-человечески выход один: собрать-таки новый scons, раз уж новый питон приехал.
Comment 2 karpov 2010-01-11 15:02:25 MSK
Подозреваю, что от скисшего scons сломались не только lprof и ardour. Неужели сборка новой версии настолько сложна? У меня это получилось не намного сложнее простой подмены исходников (какие-то непринципиальные проблемы были, сейчас, к сожалению, не вспомню, что-то в районе %files).
Comment 3 Evgeny Sinelnikov 2010-01-11 20:21:24 MSK
Новый scons уехал в сизиф.
Comment 4 mex3 2010-01-13 00:36:45 MSK
Как минимум в случае lprof помогло. Спасибо.