?

Log in

No account? Create an account
Ненависть и потрошение - Журнал Восставшей Машины [entries|archive|friends|userinfo]
ArkanoiD

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Ненависть и потрошение [Jul. 21st, 2011|05:50 pm]
ArkanoiD
[Tags|, ]
[Current Location |Dvartzy Kur Miaf]
[mood |cynicalcynical]

cmake и pkgconfig, дети, это такие штуки, чтобы все само находилось и само собиралось. Ну да вы знаете, что я об этом думаю. А вот и иллюстрация:

%build

%if 0%{?el4}
  export LDFLAGS="-L/usr/gnutls2/lib -L/lib -L/usr/evolution28/lib/ -L/usr/evolution28/lib64/"
  export CFLAGS="-I/usr/gnutls2/include -L/usr/gnutls2/lib"
  export GNUTLS_LIBS=/usr/gnutls2/lib
  export PKG_CONFIG_PATH=/usr/gnutls2/lib/pkgconfig/:/usr/evolution28/lib/pkgconfig:/usr/lib/pkgconfig/
  %ifarch x86_64
    export GLIB_LIBS=/usr/evolution28/lib64/libglib-2.0.so
    export PKG_CONFIG_PATH=/usr/evolution28/lib64/pkgconfig:/usr/lib64/pkgconfig/:/usr/gnutls2/lib/pkgconfig/
  %else
    export GLIB_LIBS=/usr/evolution28/lib/libglib-2.0.so
    export PKG_CONFIG_PATH=/usr/evolution28/lib/pkgconfig:/usr/lib/pkgconfig/
  %endif
%endif

%if 0%{?el5}
  export LDFLAGS="-L/usr/gnutls2/lib -L/lib -L/usr/evolution28/lib/ -L/usr/evolution28/lib64/"
  export CFLAGS="-I/usr/gnutls2/include -L/usr/gnutls2/lib"
  export GNUTLS_LIBS=/usr/gnutls2/lib
  export PKG_CONFIG_PATH=/usr/gnutls2/lib/pkgconfig/
%endif

cmake -DCMAKE_VERBOSE_MAKEFILE=ON \
        -DCMAKE_INSTALL_PREFIX=%{_prefix} \
        -DSYSCONFDIR=%{_sysconfdir} \
        -DLOCALSTATEDIR=%{_localstatedir}


%if 0%{?el4}0%{?el5}
perl -p -i -e "s[^include= ][include= -I/usr/gnutls2/include -L/usr/gnutls2/lib ]" openvas.tmpl
%endif


Блеать, и эти люди запрещают мне ковыряться в носу и жепят ебрило при виде старого доброго Makefile!
linkReply

Comments:
[User Picture]From: zinal
2011-07-21 01:59 pm (UTC)
С давних пор ненавижу autoconf, automake и иже с ними. Если среда сборки хоть чуток отличается от "общепринятой", мучения с допиливанием конфигурации оных auto* гарантированы однозначно.

С cmake/pkgutil никогда не работал, но всегда подозревал, что гадость та же.
(Reply) (Thread)
From: luarvique
2011-07-21 02:28 pm (UTC)
autoconf/automake - это средства решения проблемы, которой вот уже 5-10 лет как не существует, после того как мир как-то сам собой ограничился двумя компиляторами C/C++ - GCC и MSVC. Но autoconf, как ни странно, никуда не делся и продолжает отравлять.
(Reply) (Parent) (Thread)
[User Picture]From: blacklion
2011-07-21 02:33 pm (UTC)
Ну, мир не стоит на месте. во-первых, Sun'овский компилятор никуда не девался. во-вторых, что-то собирают и интелом. И, в третьих, в ближайшем будущем -- clang.
(Reply) (Parent) (Thread)
From: luarvique
2011-07-21 02:40 pm (UTC)
Sunовский компилятор модно смело списать после покупки Sunа Oraclом. Что же касается интеловского компилятора, то тут я корпоративным причинам промолчу, только посмеюсь тихонечко :)
(Reply) (Parent) (Thread)
[User Picture]From: blacklion
2011-07-21 02:42 pm (UTC)
На сколько я знаю, Oracle не тронул команду компиляторную. Много что перекроил -- а этих нет. Пока?
(Reply) (Parent) (Thread)
From: luarvique
2011-07-21 03:00 pm (UTC)
Пока, все пока...
(Reply) (Parent) (Thread)
[User Picture]From: blacklion
2011-07-21 03:00 pm (UTC)
Посмотрим. Друзей у меня там работает достаточно, что бы быть в курсе всех перестановок :)
(Reply) (Parent) (Thread)
[User Picture]From: blacklion
2011-07-21 03:09 pm (UTC)
Впрочем, остаётся вопрос -- что, gcc будет базовым компилятором под SPARC на Solaris? Ни SPARС ни Solaris нифига закрывать не собираются явно -- новые камни, новые системы, новые релизы.
(Reply) (Parent) (Thread)
[User Picture]From: arkanoid
2011-07-21 03:14 pm (UTC)
Не будет, он на спарке до сих пор генерирует отвратительный код. Но все проще -- это никого не волнует, потому что спарк будет "железка под oracle", этакий типа as/400.

Edited at 2011-07-21 03:15 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: blacklion
2011-07-21 03:16 pm (UTC)
Я на это и намекаю.
(Reply) (Parent) (Thread)
[User Picture]From: rdia
2011-07-21 03:29 pm (UTC)
Раб. станций новых на SPARC нет, поддержки старых в новом Solaris'е не будет. Поэтому совершенно непонятно, кто будет использовать SunStudio, и зачем. Всё, конец кина - из Соляриса делают OpenVMS №2, только с бесплатными конкурентами.
(Reply) (Parent) (Thread)
[User Picture]From: blacklion
2011-07-21 03:31 pm (UTC)
Под сервер компилировать не надо?
(Reply) (Parent) (Thread)
[User Picture]From: rdia
2011-07-22 05:27 am (UTC)
Это путь OpenVMS, даже хуже - FreeVMS не допилили, а "FreeSolaris" - давно :-).
(Reply) (Parent) (Thread)
From: luarvique
2011-07-21 02:26 pm (UTC)
Изобретатели билд-систем в моем расстрельном списке занимают первое место, перед изобретателями аудио-фреймворков и адептами виртуальных машин. Кстати, Леннарт еще не сочинил свою билд-систему? =)
(Reply) (Thread)
[User Picture]From: d1f
2011-07-21 04:02 pm (UTC)
меня добавьте на первое место.
(Reply) (Parent) (Thread)
From: blog.vnaum.com
2011-07-21 04:30 pm (UTC)
Вот ничего себе - в top3 расстрельного не попали изобретатели новых клавиатурных раскладок - с передвинутыми PgUp/PgDn и всякими power/sleep. Считаю, надо минимум подвинуть виртуальщиков на четвёртое ради такого дела.
(Reply) (Parent) (Thread)
From: luarvique
2011-07-21 04:40 pm (UTC)
Да эти уже практически вымерли сами по себе, куда их...
(Reply) (Parent) (Thread)
[User Picture]From: mds
2011-07-21 06:20 pm (UTC)
ваятели клиент-банков.
(Reply) (Parent) (Thread)
[User Picture]From: 3apa3a_b_ta3e
2011-07-21 06:40 pm (UTC)
Есть ещё "Ссущие в бассейн".
(Reply) (Parent) (Thread)
[User Picture]From: ico
2011-07-21 02:28 pm (UTC)
ДА!!!!!
(Reply) (Thread)
[User Picture]From: alexott
2011-07-21 02:58 pm (UTC)
если странные люди кладут описания для pkgconfig в непонятные места - то кто им злобный буратино?
у нас cmake все находит и собирает из коробки + есть приятные плюшки, типа кросс-платформенности (винда и юниксы) и генерации не только makefiles но и проектов для разных IDE...
(Reply) (Thread)
[User Picture]From: arkanoid
2011-07-21 03:06 pm (UTC)
Я хочу заметить, что в данном случае, например, мейнтейнеры пакетов gnutls2-compat-devel и рассматриваемого (openvas) это одни и те же люди.

Мало того, повторюсь, что ни на одном коммерческом юниксе gnome/gtk как sane build environment не существует.

Sane в моем понимании это когда все разложено где надо и configure/cmake/pkgconfig/whatever не требуют никаких дополнительных параметров.

А так как любой современный софт зависит от немалого количества third-party компонентов, всем жопку подтирать не набегаешься.

Особенно мило бывает предположение автоконфигурилок, что все раскладывается по принципу $prefix/$name/{include,lib,..}, а мейнтейнеры пакета в системе решили сделать красиво и разложили как $prefix/{include,lib..}/$name. И уебись потом объяснять, как там что размазало и что нужно забыть аргументы типа with-что-то=здесь.

Edited at 2011-07-21 03:13 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: alexott
2011-07-21 03:35 pm (UTC)
я вот запустил сейчас pkg-config на макоси, и получил полный список нужных мне флагов. Если мейнтейнеры пакета разложили файлы руками уже после конфигурации и генерации .pc для pkg-config, то это они идиоты, а не pkg-config.

то же самое и с другими вещами, FindSomething в cmake у меня в большинстве случаев работает нормально, если я конечно не ставил пакет руками, куда-нибудь в нестандартное место, но и тогда, пары переменных хватает чтобы это место добавить в пути поиска
(Reply) (Parent) (Thread)
[User Picture]From: kika
2011-07-21 09:20 pm (UTC)
+1
(Reply) (Parent) (Thread)
[User Picture]From: msh
2011-07-21 02:59 pm (UTC)
Мне тут попалась вершина эволюции билд-систем - в конце-концов авторы настолько в ней запутались, что не могут поменять toolchain и для кросс-компиляции она просто запускает target под qemu
(Reply) (Thread)
From: luarvique
2011-07-21 03:00 pm (UTC)
Scratchbox? =)
(Reply) (Parent) (Thread)
[User Picture]From: d1f
2011-07-21 04:04 pm (UTC)
дебилизм в вопросах кросс-компиляции - широко распространённое явление.
(Reply) (Parent) (Thread)
[User Picture]From: rblaze
2011-07-21 07:49 pm (UTC)
Я, кстати, после дурацких экспериментов пришел к такому же простому решению: vmware и если надо собрать что-то с базовой ос FreeBSD 6.2, то и собираем под 6.2.
Жить стало реально проще.
(Reply) (Parent) (Thread)
[User Picture]From: msh
2011-07-21 08:21 pm (UTC)
Ага, только у меня target - не x86, поэтому все работает в полной эмуляции. Жизнь становится не только простой, но еще и очень неторопливой.
(Reply) (Parent) (Thread)
[User Picture]From: rblaze
2011-07-21 08:27 pm (UTC)
А чего спешить-то, чайку попей -)
(Reply) (Parent) (Thread)
[User Picture]From: zinal
2011-07-22 05:31 am (UTC)
"Настоящего программиста не волнует плохое время отклика - он получает возможность вздремнуть между трансляциями".
(C)
(Reply) (Parent) (Thread)