Показаны сообщения с ярлыком Хозяйке на заметку. Показать все сообщения
Показаны сообщения с ярлыком Хозяйке на заметку. Показать все сообщения

CMake-ковский CPack в Debian “wheezy” не справляется с созданием deb-пакета, если в RPATH прописан $ORIGIN. CMake вываливается с ошибкой вида:
$ORIGIN используется в RPATH (...)  и соответствующий каталог невозможно определить из-за отсутствия подкаталога DEBIAN в корне дерева сборки пакета
Или, для CLANG=C:
CPackDeb: dpkg-shlibdeps: dpkg-shlibdeps: warning: $ORIGIN is used in RPATH of ... and the corresponding directory could not be identified due to lack of DEBIAN sub-directory in the root of   package's build tree
Беда в том, что каталог "debian" есть, но название его состоит из маленьких букв, а не больших, как того хочет dpkg-shlibdeps.

Есть простенький патч для модуля CPackDeb.cmake, решающий эту проблему.

Однако, если нет возможности пропатчить CMake, то обойти проблему можно следующим, хоть и довольно грязным, костылем: прописать установку какого-нибудь файла, можно даже пустого, в каталог /DEBIAN:
install(FILES dirty_fix.txt DESTINATION /DEBIAN)
Вполне допускаю, что на основе этого костыля можно соорудить костыль поизящней, например удалять файл во время сборки, чтобы он не попадал в deb-пакет. В этом смысле совет выше можно рассматривать как направление, куда в дальнейшем копать.

В свежеустановленной Astra Linux не работала функция gtk_show_uri() с URI типа ghelp.

В GError при этом можно было увидеть ошибку:
'Действие не поддерживается'.
Или, с LANG=C:
'Operation not supported'.

Естественно, yelp был установлен.
Вопреки некоторым советам из интернетов, gvfs тут ни при чем.
Проблема решилась установкой пакета desktop-file-utils.

"Хозяйке на заметку": прочитать данные (переменные, целые, с плавающей точкой и т.п.) из бинарного файла на Vala можно и нужно с помощью GVariant, например так:


{
    uint8[] buf = new uint8[sizeof(uint32) + sizeof(uint32) +
        sizeof(double) + sizeof(double)];

    {
        var data_stream = new DataInputStream(file.read());
        data_stream.read(buf);
    }

    Variant variant = Variant.new_from_data<uint8>(
        new VariantType("(uudd)"), buf, true);

    uint32 int1 = variant.get_child_value(0).get_uint32();
    uint32 int2 = variant.get_child_value(1).get_uint32();
    double double1 = variant.get_child_value(2).get_double();
    double double2 = variant.get_child_value(3).get_double();

    stdout.printf("int 1 = %u\n", int1);
    stdout.printf("int 2 = %u\n", int2);
    stdout.printf("double 1 = %f\n", double1);
    stdout.printf("double 2 = %f\n", double2);
}


"Хозяюшке на заметку": автоматически откадрировать отсканированные изображения, удалив темные области по краям, можно простой командой (выполнять в директории с изображениями):

for file in $(ls); do mogrify -fuzz 75% -trim $file; echo $file'        [DONE]' ; done

Было:

Стало:

Оптимальный эффект достигается подбором чувствительности ("fuzz") в процентах.
Конечно, не забудьте сделать backup директории, т.к. mogrify в отличие от convert переписывает исходные файлы (для подробностей см. сайт ImageMagick).


 

Copyright © 2007 DamnSmallBlog. Content is licensed under Creative Commons Attribution-Noncommercial.

Design: GeckoandFly and Blogcrowds.