?

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) (Expand)
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) (Expand)
[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) (Expand)
[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) (Expand)