LINUX.ORG.RU

Сообщения AF

 

ARM + gcc = недогоняю

Пишу небольшую числодробилку на неоне. Все вроде ок, кргоме команды vbic

пишу vbic.i8 d0, #0x0f, а gcc мне в ответ - «{standard input}:4792: Error: immediate value out of range — `vbic.u8 d0,#0x0f'»

Пишу: `vbic.i16 d0,#0x0f0f' - получаю ответ «{standard input}:4792: Error: immediate value out of range — `vbic.i16 d0,#0x0f0f'»

Как таки заставить gcc скомпилить этот vbic ?

 , ,

AF ()

Как указать cmake нужную сборку qt5?

Есть кросплатформенная софтина, которая зависит от qt5 и собирается с помощью cmake.
Все работает просто отлично, но захотелось мне собрать эту софтину в линухе но под винду. В качестве виндового тулчейна использую MXE. Все нужные компиляторы, библиотеки и т д и т п собраны и работают. Ясен пень, что подсовываю cmake нужный CMAKE_TOOLCHAIN_FILE. Но эта хрень с маниакальной настойчивостью юзает cmake-модули из хоста!
Собсно вопрос - как cmake указать, какой билд qt5 мне нужен?

Пока захардкодил пути вида:
set(Qt5Core_DIR «/bla-bla-bla/mxe/usr/i686-w64-mingw32.shared/qt5/lib/cmake/Qt5Core»)

Может есть ли другой, более кошерный метод?

Dendy




 , ,

AF ()

ebuild + cmake в кастомном каталоге

Наваял только что мелкий ebuild для библиотечки которая собирается ч-з cmake.
Все вроде просто, понятно и должно работать. Но!

В библиотечке СMakeList.txt лежит не в корне, а в кастомном каталоге. Ебилд же ищет СMakeList.txt исключительно в корне.

Как объяснить cmake-utils, чего я от него хочу?

 ,

AF ()

Ход мыслей дебияновцев

Есть такой пакет, как coreutils, который сожержит дофигища мелких и полезных комманд. Среди которых есть и realpath.

Но вот дебияновцы почемуто из пакета coreutils этот самый realpath выкинули и запилили его в отдельном пакете.

Вот сижу, ломаю моск - нафига они так сделали???

ЗЫ: Наткнулся совершенно случайно, после того как на убунте отказался работать скрипт, который замечательно работал на генте. Вот нафига ломать совместимость даже в таких простых местах?

 , ,

AF ()

Ebuild на основе cmake для кросбилда

Есть самопальная библиотека, которая собирается с помощью cmake по х86, amd64, arm.
Хочу написать для нее ebuild. Собсно с х86, amd64 проблем нет.
А вот что делать с кросбилдом под arm?

Просьба ткнуть носом в пример.

 , ,

AF ()

Глюк где-то в драйвере - успех

Сижу я значится за компом, ковыряюсь в исходниках, и вдруг хрясь - и черный экран!
Через пару секунд снова вижу приклашение ввести пароль от kdm.
Логинюсь, смотрю выхлоп dmesg, а там - «[drm:i915_gem_execbuffer2] *ERROR* copy 1 exec entries failed 56»

Вот теперь думаю, а если бы драйвер так глюконул под оффтопиком, то система бы выжила, или нет?

 

AF ()

Библиотека для лексического анализа

Разыскивается библиотека, которая может делать практически тоже самое, что и Lex но в рантайме. Язык С/С++

 ,

AF ()

Gentoo vs Ubuntu

Вот не знаю куда запостить- сюда или в девеломент? Поскольку проблема не в сборке, пусть будет тут.

Вобщем в 0х39 царстве в 0х3А государстве в компании СуперЛапти-Софт трудились два программиста. Ежи и Петруччо. Ежи любил виндовс а Петруччо на всех своих компах любил ставить Генту.

На дворе во всю шел 21 век. Руководство СуперЛапти-Софт наконец то обратило свое внимание в сторону Линукса и приказало Ежи и Петруччо написать некую софтину. Петруччо очень обрадовался. Ура! наконец то на рабочем компе можно снести виндовс и накатить люибимый Линукс, что он собственно незамедлительно и сделал. Ежи тоже не особо расстроился. В конце концов он был професионалом и навыками програмирования под Линукс владел достаточно хорошо. В результате, Ежи поставил себе Убунту, как самый популярный и дружелюбный к пользователю дистрибутив. А компьютер Петруччо принялся греметь винтом и увеличивать темепературу помещения, перемалывая очередную порцию исходников в оптимизированный исключительно под его комп код.

Возможно, что мне не пришлось бы писать эту историю, да случилось так, что Ежи и Петруччо решили использовать в своем проекте sqlite. Вроде бы ничего особенного, скажите вы? Да случился у них спор. Ежи, как виндузятник, утверждал, что исходники sqlite надо положить в свой репозиторий и собирать их исключительно вместе с своим приложением. Дескать тот sqlite, который находится в системе штука ненадежная. Сегодня он один, а завтра обновится на что-то другое. А вдруг обновление сломает ихнюю программу? Петруччо же в ответ утверждал, что обновление sqlite способно сломать только изначально кривую программу. И вообще! Обновление фиксит баги, уязвимости. И вообще, держать в системе несколько одинаковых библиотек - это не юниксвейно!

То ли Ежи не особо сопротивлялся, то ли Петруччо был особо убедителен, но решили они использовать системный sqlite. Весь месяц Ежи и Петруччо трудились не покладая рук. А под конец месяца решили они, что sqlite им нужен не простой, а с поддержкой icu.

А вот теперь - внимание! Оказалось, что в Генте поддержка icu добавляется с помощью одного юза. А в убунте sqlite только один, и собран он без поддержки чего бы то ни было!

Вопрос. Как вообще в Убунте принято решать такие проблемы? Неужели, как и в винде, путем вкомпиливания своей версии sqlite в каждое приложение?

UPD: Народ, у кого бинарный дистр, у вас sqlite icu, fts или еще какие либо екстеншены поддерживает?

AF ()

curl build

Собираю curl 7.28.1 из исходников. Сборка валится в самом начале с сообщением:

buildconf: autoconf version 2.69 (ok)
buildconf: autom4te version 2.69 (ok)
buildconf: autoheader version 2.69 (ok)
buildconf: automake not found.
            You need automake version 1.7 or newer installed.
Че за фигня, думаю, automake у меня есть! И таки правда:
$ automake --version
automake (GNU automake) 1.11.6
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Tom Tromey <tromey@redhat.com>
       and Alexandre Duret-Lutz <adl@gnu.org>.

Но вот в каталоге с иходниками curla:

tmp-curl/curl-7.28.1 $ automake --version
am-wrapper: automake: /usr/bin/automake-1.9 is missing or not executable.
        Please try emerging the correct version of automake.

Вобщем у automake прогрессирующая шизофрения - то он есть, то его нет.

Я так понимаю, что для местных аналитиков, которые считают автолулзы единственно верной и православной системой сборки, не составит труда объяснить, как все это поправить.

 ,

AF ()

Как натравить автолулзы на нужную библиотеку

Кроскомпилю djvulibre для офтопика.

Имею собранный pthreads-win32. Ну и хидеры WinAPI тож присутствуют.

Проблема в том, шо долбаный configure детектит pthreads-win32 и настраивается на него. Я собсно ничего не имею против, да вот только djvulibre расчитывает, что pthread_t - это typedef на чето размером с int, а pthreads-win32 дефайнит pthread_t, как небольшую структуру.

Вопрос собсно такой - как обьяснить аутолулзам, какие треды исспользовать?

Оно конечно можно спрятать от него pthreads-win32, но это же костыль!

 , ,

AF ()

Сборка под Андроид с помощью CMake

Понадобилось собрать пару плюсовых библиотек под андроид.

Скачал android-ndk-r7-crystax-5.beta2, ибо официальный NDK С++0х не умеет, а мне оно нужно.

Из проекта OpenCV спер android.toolchain.cmake

При попытке собрать пример из NDK все работает, но там исходники только на С, а мне нужен С++.

При компиляции срр получаю сообщение - «fatal error: thread: No such file or directory»

Чего оно хочет как-бы понятно. Проблема в том, что в ключах компилера только:

-isystem /opt/android-ndk-r7-crystax-5.beta2/platforms/android-8/arch-arm/usr/include
-isystem /opt/android-ndk-r7-crystax-5.beta2/sources/cxx-stl/gnu-libstdc++/include

Ну ясно дело, попробовал подокидывать путей для не найденых хидеров. Да что-то их сильно много. То c++config.h не находит, то wchar.h...

Может кто в курсе как оно вообще в gcc плюсовые библиотеки по каталогам раскиданы? Ну или какие пути захаркоджены в gcc для сборки на хосте?

 , ,

AF ()

Гента - закат солнца вручную

В образовательных целях пытаюсь собрать генту с нуля. пишу:

emerge -pv baselayot

в ответ получаю:

Calculating dependencies... done! [ebuild R ] sys-apps/baselayout-2.0.3 USE="-build" 0 kB

Тут все ОК

а вот при

emerge -pv baselayot --root ~/new_root

emerge предлагает собрать 314 пакетов О_о

Собсно вопрос - откуда столько лишнего и ЧЯДНТ?

 , ,

AF ()

[ffmpeg] быдлокод детектед

Пытаюсь затянуть сабж в андроид. Попутно нарыл следующий код:

static int64_t nut_read_timestamp(AVFormatContext *s, int stream_index, int64_t *pos_arg, int64_t pos_limit){
    NUTContext *nut = s->priv_data;
    AVIOContext *bc = s->pb;
    int64_t pos, pts, back_ptr;
av_log(s, AV_LOG_DEBUG, "read_timestamp(X,%d,%"PRId64",%"PRId64")\n", stream_index, *pos_arg, pos_limit);

    pos= *pos_arg;
    do{
        pos= find_startcode(bc, SYNCPOINT_STARTCODE, pos)+1;
        if(pos < 1){
            assert(nut->next_startcode == 0);
            av_log(s, AV_LOG_ERROR, "read_timestamp failed.\n");
            return AV_NOPTS_VALUE;
        }
    }while(decode_syncpoint(nut, &pts, &back_ptr) < 0);
    *pos_arg = pos-1;
    assert(nut->last_syncpoint_pos == *pos_arg);

    av_log(s, AV_LOG_DEBUG, "return %"PRId64" %"PRId64"\n", pts,back_ptr );
    if     (stream_index == -1) return pts;
    else if(stream_index == -2) return back_ptr;

assert(0);
}

Оно как бы интуитивно понятно, что после assert(0); возвращаемое значение смысла не имеет, но компилеру то это невдомек.

Неужели было тяжело в этом месте написать чето такое, чтобы все компилеры не вопспринимали это место, как ошибку?

AF ()

Gstreamer plugin инициализация

Разбираюсь с сабжем по GStreamer Plugin Writer's Guide Дошел до примера:

static gboolean
plugin_init (GstPlugin *plugin)
{
  return gst_element_register (plugin, "my_filter",
			       GST_RANK_NONE,
			       GST_TYPE_MY_FILTER);
}

GST_PLUGIN_DEFINE (
  GST_VERSION_MAJOR,
  GST_VERSION_MINOR,
  "my_filter",
  "My filter plugin",
  plugin_init,
  VERSION,
  "LGPL",
  "GStreamer",
  "http://gstreamer.net/"
)

Я понимаю как рантайм ЖеСтремера находит шареную библиотеку, и как из шаренной библиотеки можно получить плагин.

Но как имея указатель на плагин можно создать какой либо фильтр из этого плагина!?

Пока у меня есть только одна версия - имена методов фильтра не могут быть произвольными. Они должны начитаться с префикса, указанного при вызове gst_element_register и остальная часть имени должна быть точно такая, как указанно вдокументации. Неужели это так и есть? О_о

AF ()

initrd.img + mkf.reiser4

Пытаюсь поставить каррент слаки на райзер-4

Ядро,libaal, reiser4progs - собрал

в initrd.img для инсталятора все это засунул.

При запуске в инсталяторе mkfs.reiser4 получаю:

-/bin/sh: mkfs.reiser4: not found

При этом этот файл и все необходимые библиотеки есть!

В выводе dmesg ничего интересного по этому поводу нету.

как бы диагностировать проблему?

AF ()

[CMake] install из подкаталогов

Есть проект на CMake.

Внутри два каталога с подпроектами. В корневом CMakeLists.txt на каждый подпроект пишу - add_subdirectory( имя_каталога_с_подпроектом )

В CMakeLists.txt для подпроекта пишу: install(TARGETS проект DESTINATION куда_мне_надо )

В результате все успешно собирается, но при инстале реально инсталятся только те цели, которые соответствуют только одному подпроекту. Это подпроект, который быль последним добавлен в корневой CMakeLists.txt

Хочу, чтобы инсталилось все!

ЧЯДН?

AF ()

[Qt&qmake]

Курю *.pro *.pri файлы от qtmmlwidget-2.4

Тихо офигеваю от того, что вижу.

Кто нить может объяснить, что значит

TEMPLATE += fakelib

В официальной документации я такого в упор не вижу!

AF ()

RSS подписка на новые темы