LINUX.ORG.RU

Сообщения CYB3R

 

Travis CI и лимит по времени

Форум — Development

У Travis CI есть ограничение по времени (50 минут для некоммерческих проектов, 120 для коммерческих). Для большинства поделок этого времени выше крыши, но не в том случае, если я хочу собирать тулчейн (да ещё и в один поток).
Если обратиться к документации, понятно, что ограничение по времени можно обойти:

It is very common for test suites or build scripts to hang. Travis CI has specific time limits for each job, and will stop the build and add an error message to the build log in the following situations:

  • A job produces no log output for 10 minutes
  • A job on travis-ci.org takes longer than 50 minutes
  • A job on travis-ci.com takes longer than 120 minutes

Some common reasons why builds might hang:

  • Waiting for keyboard input or other kind of human interaction
  • Concurrency issues (deadlocks, livelocks and so on)
  • Installation of native extensions that take very long time to compile

There is no timeout for a build; a build will run as long as all the jobs do as long as each job does not timeout.

Правильно я понимаю, что если поставить десяток команд сборки подряд и запустить фоновый процесс, который будет раз в полчаса убивать один процесс сборки, то такими проциями можно компилять на трависе, сколько душа пожелает (каждая следующая команда после убитой продолжает с того, на чём остановилась предыдущая, а те, которые были запущены после удачного окончания сборки, сразу же завершаются, так как им нечего делать). Или я не прав?

 , ,

CYB3R
()

Как можно использовать встроенный в GNOME Screencast для стримов?

Форум — Desktop

Хочу вещать часть своего экрана, нашёл для этого подходящий метод:

    <!--
        ScreencastArea:
        @x: the X coordinate of the area to capture
        @y: the Y coordinate of the area to capture
        @width: the width of the area to capture
        @height: the height of the area to capture
        @file_template: the template for the filename to use
        @options: a dictionary of optional parameters
        @success: whether the screencast was started successfully
        @filename_used: the file where the screencast is being saved
        Records a screencast of the passed in area and saves it
        (by default) as webm video under a filename derived from
        @file_template. The template is either a relative or absolute
        filename which may contain some escape sequences - %d and %t
        will be replaced by the start date and time of the recording.
        If a relative name is used, the screencast will be saved in the
        $XDG_VIDEOS_DIR if it exists, or the home directory otherwise.
        The actual filename of the saved video is returned in @filename_used.
        The set of optional parameters in @options currently consists of:
            'draw-cursor'(b): whether the cursor should be included in the
                              recording (true)
            'framerate'(i): the number of frames per second that should be
                            recorded if possible (30)
            'pipeline'(s): the GStreamer pipeline used to encode recordings
                           in gst-launch format; if not specified, the
                           recorder will produce vp8 (webm) video (unset)
    -->
    <method name="ScreencastArea">
      <arg type="i" direction="in" name="x"/>
      <arg type="i" direction="in" name="y"/>
      <arg type="i" direction="in" name="width"/>
      <arg type="i" direction="in" name="height"/>
      <arg type="s" direction="in" name="file_template"/>
      <arg type="a{sv}" direction="in" name="options"/>
      <arg type="b" direction="out" name="success"/>
      <arg type="s" direction="out" name="filename_used"/>
</method>
Каким должен быть pipeline для GStreamer, чтобы передавать видео по сети? Какой использовать сервер?

 , , , ,

CYB3R
()

real_shmctl отсутствует при сборке compiler-rt

Форум — Development

Возможно, у кого-то здесь больше опыта с LLVM, потому запощу сюда свою проблему со сборкой, которая появилась не так давно. Собираю compiler-rt с musl, ещё в начале зимы всё работало, но сейчас что-то сломали.
Не найден real_shmctl, который используется тут. В musl shmctl есть. В чём может быть проблема?

llvm/projects/compiler-rt/lib/msan/msan_interceptors.cc:1446:15: error: no member named 'real_shmctl' in namespace '__interception'; did you mean 'real_ioctl'?
    int res = REAL(shmctl)(shmid, shmctl_ipc_stat, &ds);
              ^~~~~~~~~~~~
llvm/projects/compiler-rt/lib/msan/../interception/interception.h:162:34: note: expanded from macro 'REAL'
# define REAL(x) __interception::PTR_TO_REAL(x)
                 ~~~~~~~~~~~~~~~~^
llvm/projects/compiler-rt/lib/msan/../interception/interception.h:161:25: note: expanded from macro 'PTR_TO_REAL'
# define PTR_TO_REAL(x) real_##x
                        ^
<scratch space>:70:1: note: expanded from here
real_shmctl
^
llvm/projects/compiler-rt/lib/msan/../sanitizer_common/sanitizer_common_interceptors.inc:1706:1: note: 'real_ioctl' declared here
INTERCEPTOR(int, ioctl, int d, unsigned long request, ...) {
^
llvm/projects/compiler-rt/lib/msan/../interception/interception.h:213:3: note: expanded from macro 'INTERCEPTOR'
  DEFINE_REAL(ret_type, func, __VA_ARGS__) \
  ^
llvm/projects/compiler-rt/lib/msan/../interception/interception.h:194:23: note: expanded from macro 'DEFINE_REAL'
      FUNC_TYPE(func) PTR_TO_REAL(func); \
                      ^
llvm/projects/compiler-rt/lib/msan/../interception/interception.h:161:25: note: expanded from macro 'PTR_TO_REAL'
# define PTR_TO_REAL(x) real_##x
                        ^
<scratch space>:108:1: note: expanded from here
real_ioctl
^

 , , , ,

CYB3R
()

А как сейчас модно писать под STM32?

Форум — Development

Хочу снова вкатиться в STM32, но наевшись в прошлые разы SPL и STM32Cube, хочу сразу начать писать хорошо и правильно.
Посему спрашиваю наиболее православные версии тулчейна для C (желательно clang), билд-системы (желательно cmake), программатора и отладчика и альтернативной библиотеки периферии (раньше использовал LibOpenCM3, но вдруг есть что-то лучше).
А если вдруг знаете какой-нибудь хороший тулчейн для Rust, стандартную библиотеку или RTOS, то тоже пишите. Эти три пункта мне не особо нужны, да и хорошие кандидаты на каждый из них у меня есть свои (llvm_baremetal, newlib и ChibiOS).
Или не стоит в 2018 пинать STM32? Пора переходить на SiFive?

 , , , ,

CYB3R
()

GetDeb всё?

Форум — General

Сабж. Говорят, последнее обновление было 14 сентября. Год подходит к концу, обновлений всё нет. Попытался найти PPA с virt-manager 1.4.3 (вышел 19 сентября), но самое близкое, что нашёл — это 1.4.2 в GetDeb. Какую альтернативу посоветуете, кроме собирать свой софт самому и поднимать локальные репы?

 , , , ,

CYB3R
()

expat и libxml2 — есть ли прослойка совместимости?

Форум — Development

Есть две конкурирующих библиотеки для парсинга xml — expat и libxml2. А существует ли прослойка совместимости между ними? Я это вижу как простой expat.h, в котором прописаны вызовы функций libxml2 (или наоборот). Если такое решение есть, не нужно держать в системе (или даже в репах) две библиотеки, делающие одно и то же. Если же нет такой прослойки совместимости, то что выбрать? Сравнения уже читал, хочу узнать, что выбрали настоящие программисты.

 , , , ,

CYB3R
()

Молодцы vs Балбесы

Форум — Talks

Итак, настало время для очередной викторины.

Требуется ответить: что на фото и где это применяется.

Фото (опознавательные знаки удалены). Если долго никто не угадывает, публикую подсказку.

Кто ответит подробно и со знанием дела, тот молодец, а остальные балбесы. Удачи!

 

CYB3R
()

Возобновляю работу над nenuzhnix

Форум — Talks

Прошло три года и ещё один месяц с публикации моего первого и до текущего момента последнего топика про nenuzhnix. С тех пор мои взгляды на то, каким должен быть прекрасный дистрибутив будущего слегка поменялись.
Основные идеи остались те же:

  • забыть о поделиях Поттеринга;
  • заменить иксы вейлендом;
  • выкинуть перлопитоновые костыли.

Но к ним добавились и новые:

  • использовать мой clang+musl тулчейн;
  • не включать в дистрибутив ничего из проекта GNU;
  • прекратить насиловать Debian.

С такими изменениями в идеологии хоть какой-то нормальный релиз можно отложить ещё на пару лет: ядро моим тулчейном пока не собирается, переход с утилит GNU на альтернативу может оказаться не очень приятным, мне будет лень этим заниматься, особенно учитывая, как мне было лень последние 3 года.

Но у меня уже есть кое-что, что я могу показать: минимальная система, собранная моим компилятором.
Скачать можно тут: nenuzhnix-light.tar.gz (1,5Мб).
Бинарники собраны для x86_64, ядра там нет, так что используйте своё. Можете чрутнуться в это окружение, для удобства я включил в архив статически слинкованный proot, с ним это должно быть очень просто: ./proot -S nenuzhnix /bin/sh -E -i -l
Ничего особенного в моих бинарниках нет, кроме того, что там нет ничего от GNU. Совсем. Так что если вдруг вам скажут, что в любом линуксовом бинарнике есть частичка GNU, у вас будет железный аргумент.

 ,

CYB3R
()

Дистрибуция с autotools

Форум — Development

Есть один проект, использующий autotools. Задача: собрать его на компьютере, не устанавливая туда autotools. Я уверен, что это что-то тривиальное и распространённое, но могу ничего внятного нагуглить.
Как я собираюсь это сделать: скачать исходники на компьютер, где установлен autotools, (???), перенести полученные исходники на компьютер без autotools, выполнить ./configure, который нормально сработает, не требуя поставить autotools.
Прошу помощи со вторым пунктом. На данный момент я выполняю:

libtoolize --force
aclocal
autoheader
automake --force-missing --add-missing
autoconf
После чего создаются симлинки на файлы, которых, естественно, на целевой машине нет. Я уверен, что у autotools есть какие-то опции, чтобы вместо создания симлинков просто добавить нужные файлы в директорию проекта, но я их не могу нагуглить.

 ,

CYB3R
()

Почему git такой жирный и насколько он в действительности портабелен?

Форум — Development

На GNU/Linux и macOS проблем с git нет, кроме веса пакета и неповоротливости на слабом железе, а на венде проблемы ограничиваются этим только на первый взгляд. Если копнуть чуть глубже, окажется, что на самом деле git работает на венде не нативно, а использует MSYS2, который тащит за собой кучу бинарников, раньше так вообще единственным вариантом был cygwin.
Всех устраивает этот вопиющий костыль? Никто не осилил собрать git в той же вижуалстудии? А виноват, скорее всего autotools.
Сейчас глянул несколько клиентов: в большинстве дистрибутивов пакет git в распакованном виде занимает около 35Мб и имеет в зависимостях жирный перл, примерно так же обстоят дела на FreeBSD, Solaris и macOS, официальный же клиент для Windows основан на MSYS2 (форк Cygwin), весит этот клиент более 250Мб, вижуалстудия использует официальный клиент, GitHub Desktop вообще основан на электроне...
Я просто не понимаю, почему нет альтернативных реализаций? Ведь есть же libgit2 — лёгкая и портабельная библиотека! Неужели никто до сих пор не сделал на ней лёгкий и портабельный клиент? Или всех устраивает тяжёлый и неповоротливый?

 , , ,

CYB3R
()

Alpine в PRoot

Форум — Linux-install

Пытаюсь поставить Alpine Linux (Edge) в директорию при помощи PRoot. Использую именно PRoot потому что хочу сделать установку без прав суперпользователя. Делаю так:

$ mkdir alpine
$ cp apk.static alpine
$ ./proot -S alpine /apk.static -X http://dl-cdn.alpinelinux.org/alpine/edge/main -U --allow-untrusted --initdb add alpine-base
fetch http://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz
(1/16) Installing musl (1.1.16-r15)
(2/16) Installing busybox (1.27.0-r2)
Executing busybox-1.27.0-r2.post-install
ERROR: busybox-1.27.0-r2.post-install: script exited with error 127
(3/16) Installing alpine-baselayout (3.0.4-r0)
Executing alpine-baselayout-3.0.4-r0.pre-install
ERROR: alpine-baselayout-3.0.4-r0.pre-install: script exited with error 127
Executing alpine-baselayout-3.0.4-r0.post-install
ERROR: alpine-baselayout-3.0.4-r0.post-install: script exited with error 127
(4/16) Installing openrc (0.24.1-r2)
Executing openrc-0.24.1-r2.post-install
ERROR: openrc-0.24.1-r2.post-install: script exited with error 127
(5/16) Installing alpine-conf (3.6.0-r0)
(6/16) Installing libressl2.5-libcrypto (2.5.5-r0)
(7/16) Installing libressl2.5-libssl (2.5.5-r0)
(8/16) Installing zlib (1.2.11-r0)
(9/16) Installing apk-tools (2.7.2-r0)
(10/16) Installing busybox-suid (1.27.0-r2)
(11/16) Installing busybox-initscripts (3.1-r1)
Executing busybox-initscripts-3.1-r1.post-install
ERROR: busybox-initscripts-3.1-r1.post-install: script exited with error 127
(12/16) Installing scanelf (1.2.2-r0)
(13/16) Installing musl-utils (1.1.16-r15)
(14/16) Installing libc-utils (0.7.1-r0)
(15/16) Installing alpine-keys (2.1-r1)
(16/16) Installing alpine-base (3.6.0-r0)
Executing busybox-1.27.0-r2.trigger
ERROR: busybox-1.27.0-r2.trigger: script exited with error 127
4 errors; 6 MiB in 16 packages
4 ошибки при исполнении скриптов. В скриптах всё выглядит довольно безобидно, отдельно эти скрипты выполняются успешно. Как можно отладить установку? Я попытался пересобрать пакеты, добавив в скрипты set -x, но установить из не удалось из-за проблем с цифровой подписью. Как можно легче понять, почему скрипты не работают? То же самое от рута работает нормально.

 , , ,

CYB3R
()

Как запретить kconfig пересобирать файл?

Форум — General

Пытаюсь, собрать ядро при помощи clang. Пока упёрся вот в этот баг. Итог: arch/x86/entry/entry_32.o не собирается.
Сначала я подумал, что ничего страшного в этом нет. Скопирую команду, которую фейлит clang, заменю clang на gcc и буду надеяться, что получившийся бинарник слинкуется. Но не тут-то было. Kconfig оказался умнее меня. Я скомпилировал arch/x86/entry/entry_32.o, запустил make ещё раз и он благополучно удалил результат предыдущей компиляции и попытался ещё раз скомпилировать clang'ом (естественно, ничего не вышло).
Сейчас думаю написать костыль — обёртку, которая ничего не будет делать, если последний аргумент равен arch/x86/entry/entry_32.S, иначе просто передаст все аргументы настоящему clang'у. Но я задумался, может, есть какой-то стандартный способ, чтобы обойтись без костылей?

 , , ,

CYB3R
()

Несколько одновременных подключений SPICE

Форум — General

В qemu невозможно запустить больше одного spice-сервера для одной виртуальной машины, зато можно подключить несколько spice-клиентов к одному серверу.
Использую spice 0.12 (по ссылке выше target release 0.10). Добавил в /etc/environment SPICE_DEBUG_ALLOW_MC=1.
Первое подключение проходит нормально, второе обрывает первое, третье обрывает второе и так далее. Так быть не должно. У кого-нибудь работает?

 , ,

CYB3R
()

Возможно ли запустить виртуалку с 3D на удалённом компьютере?

Форум — General

Любые мануалы по настройке virgl, которые я находил, предполагали запуск виртуалки и SPICE-клиента на одной машине (через unix socket, а не tcp). Без 3D всё работает хорошо, красиво, но у QXL фреймбуффер гораздо быстрее, но я хочу 3D, а у QXL его нет. Может, virgl и не должен работать через TCP и я хочу от него чего-то не того?
Версии ядра, qemu, libvirt, spice, virglrenderer актуальные, поддержка virgl в ядре включена. При разных конфигурациях получаю такие ошибки:

unsupported configuration: virtio 3d acceleration is not supported
unsupported configuration: This QEMU doesn't support spice OpenGL
Из конфигов:
    <graphics type='spice' autoport='yes'>
      <listen type='address'/>
      <gl enable='yes'/>
    </graphics>
    <video>
      <model type='virtio' heads='1' primary='yes'>
        <acceleration accel3d='yes'/>
      </model>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
При загрузке без 3D:
[    4.578115] [drm] Initialized
[    4.614695] [drm] pci: virtio-vga detected at 0000:00:02.0
[    4.614698] fb: switching to virtiodrmfb from EFI VGA
[    4.614938] [drm] virgl 3d acceleration not available
[    4.615796] [drm] virtio vbuffers: 96 bufs, 192B each, 18kB total.
[    4.616087] [drm] number of scanouts: 1
[    4.616103] [drm] number of cap sets: 0
[    4.625981] virtio_gpu virtio0: fb0: virtiodrmfb frame buffer device
[    4.645667] [drm] Initialized virtio_gpu 0.0.1 0 on minor 0

 , , , ,

CYB3R
()

Как реализовать автофокус?

Форум — Linux-hardware

У меня есть:

  • матрица с известным контроллером, с которой я могу получать цифровое изображение в /dev/video0
  • подвижная линза перед этой матрицей
  • шаговый двигатель, подключённый к gpio, который может эту линзу двигать

Вопрос: как лучше всего реализовать автофокус?
Как детектировать то, что объект перед камерой не в фокусе? Как узнать, находится ли он слишком близко или слишком далеко, чтобы понять, в какую сторону двигать линзу? Нужно ли для этого получать с камеры «сырые» данные или сойдёт картинка в MJPEG/H.264? Какова в таком случае будет задержка автоматической фокусировки? Обязательно ли использовать шаговый двигатель? Может, есть варианты проще и компактнее?
Уверен, что про это уже много всего написано. Буду благодарен, если кинете в меня ссылкой.

 , , ,

CYB3R
()

Дешёвые китайские лазерные плоттеры

Форум — Linux-hardware

Сейчас есть довольно много китайских мощных (от 40W) лазерных плоттеров с ценником до $1000. Проблема в том, что контроллеры, с которыми они поставляются, отстой. Обычно они используются в связке с проприетарным софтом типа Moshidraw, LaserDRW, CorelLaser, который, естественно, есть только под венду и использовать его — сплошная боль.
Очевидным вариантом была бы замена электронной начинки устройства на что-то с RAMPS (или GRBL) и использование без головной боли с Inkscape в GNU/Linux.
Интересно, кто-то на ЛОРе занимался переделыванием дешёвого лазерного плоттера с контроллером LIHUIYU, MOSHI или подобным на что-то, работающее с линуксом?

 , , ,

CYB3R
()

Отладка DBus — как это вообще делают?

Форум — Development

Понадобилось отладить немного нестандартную конфигурацию dbus. Полез гуглить, все примеры какие-то дико перегруженные. Можно ведь сделать простой чат на dbus-monitor и dbus-send? Как это проще всего сделать?
Суть: на одной машине запускается dbus-daemon, слушающий определённый TCP-порт. К нему с других машин могут подключаться dbus-monitor'ы, чтобы получать сообщения и dbus-send'ы, чтобы отправить сообщения. Как это должно работать? Или я что-то делаю не так?

 , , ,

CYB3R
()

DBus и Wine

Форум — Desktop

Есть приложения, скомпилированные под винду, использующие dbus. С ними вместе идут dbus-1.dll, dbus-daemon.exe и конфиги.
Цель — запустить эти приложения в Wine (2.0). Не важно, будет использоваться нативный dbus или dbus в вайне (но нативный, конечно, лучше).
При выключенном системном dbus пробую запустить одно из приложений:

Failed to start message bus: Failed to lookup host/port: "localhost:0": Host not found (11001)
Похоже, что dbus в вайне не стартует. Может, и не должен.
Запускаю системный dbus, пытаюсь снова запустить приложение:
Failed to start message bus: Failed to bind socket "localhost:6305": Address already in use
Кто-нибудь занимался подобными извращениями? Что можете посоветовать?

 , , , ,

CYB3R
()

clang + musl = segfault?

Форум — Development

Собрал clang, собрал musl, запускаю — Segmentation fault.
Как это дебажить? Что такое странное этот musl пытается сделать?

(gdb) run
Starting program: /path/to/ld-musl-x86_64.so.1 

Program received signal SIGSEGV, Segmentation fault.
0x00000000000e1ae6 in ?? ()
(gdb) where
#0  0x00000000000e1ae6 in ?? ()
#1  0x000055555563063d in find_sym (dso=0x55555563e110 <ldso>, s=0x5555555904e5 «memset», need_def=1) at ../ldso/dynlink.c:263
#2  0x000055555563481b in do_relocs (dso=0x55555563e110 <ldso>, rel=0x555555595cf0, rel_size=16872, stride=3) at ../ldso/dynlink.c:337
#3  0x00005555556304ae in reloc_all (p=0x55555563e110 <ldso>) at ../ldso/dynlink.c:1151
#4  0x00005555556300af in __dls2 (base=0x555555554000 «\177ELF\002\001\001», sp=0x7fffffffe0e0) at ../ldso/dynlink.c:1375
#5  0x000055555562f6df in _dlstart_c (sp=0x7fffffffe0e0, dynv=0x5555556393c0) at ../ldso/dlstart.c:147
#6  0x000055555562f27a in _dlstart ()
(gdb) list
1	#define _GNU_SOURCE
2	#include <stdio.h>
3	#include <stdlib.h>
4	#include <stdarg.h>
5	#include <stddef.h>
6	#include <string.h>
7	#include <unistd.h>
8	#include <stdint.h>
9	#include <elf.h>
10	#include <sys/mman.h>
(gdb) c
Continuing.

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.

 , , , ,

CYB3R
()

Посоветуйте статью о компиляции

Форум — Development

Ищу небольшую статью (желательно, на английском), где бы объяснялось что такое препроцессор, компилятор, линкер, статическая линковка, библиотеки... Хорошо, если также будут затронуты системы сборки.
Книги с более 100 страниц не советуйте, их я и сам найти могу. Хочется что-то по объёму и стилю повествования примерно как "From Power Up To Bash Prompt", только про компиляцию (и чуть более up-to-date).

 , , ,

CYB3R
()

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