all: bin lib
X := BIN
bin:
@echo 'Hello $(X)'
X := LIB
lib:
@echo 'Hello $(X)'
Вывод:
Hello LIB <--- а мечтался BIN
Hello LIB
ЧЯДНТ?
Проблему поймал когда попытался заюзать временные переменные внутри define ... endef, который потом подавался на вход $(eval $(call ...)). Т.е. исходный вопрос на самом деле ещё замороченнее: как юзать временные переменные внутри таких вот самодельных «функций»?
В доках GCC (ссылку не дам, уже потерял) прямым текстом сказано, что CMI (Compiled Module Interface) – формат не портабельный и может использоваться только для кеширования в процессе сборки. Он может меняться даже в зависимости от версии компилятора и целевой архитектуры, его смысл и scope примерно тот же что у precompiler headers. Что в общем естественно: компилятор сериализует туда свои внутренние структуры.
Следовательно, деплоить интерфейс модуля можно исключительно исходником. Т.е. если раньше было .h + .cpp, то теперь вместо .h у нас будет какой-нибудь .cppm – интерфейс модуля, который тоже надо деплоить вместе с либой, а в сорцах опять два исходника на модуль: .cppm + .cpp. Что поменялось? Расширение интерфейсного файла. Который теперь ещё и замусорен новыми кейвордами export и import.
Никаких намёков на попытки разработчиков компиляторов договориться о портабельном формате CMI и о расположении CMI-файлов внутри .a-архивов – не нагуглилось. Есть разве что вот такой пропозал в т.ч. про стандартный маппинг имён модулей на имена файлов, но читать его печально. Ну, может моим правнукам, работающим в поле пока светло, голубиная почта принесёт добрые вести.
Тьфу. Ни одну фичу не могут сразу нормально и ДО КОНЦА проработать.
Т.е. открыл я /run/my-socket, сишу слушаю, акцептю, пишу-читаю, всё non-blocking (select(2)).
Полагаю, внутри ядра такое accepted connection для локального unix domain socket – реализовано как обычный pipe?
Когда одна сторона пишет, мгновенно ли другой стороне прилетают данные (non-blocking просыпается из select(), клиентский blocking read() возвращает управление), или там может буферизация какая или ещё какая дичь?
Можно конечно тупо сконвертнуть весь буфер в wstring и потом работать с ним как белый человек. Но мой внутренний байтодрочер ужасается от sizeof(wchar_t) и подозревает, что посимвольно читать буфер будет быстрее.
Чтобы, значит, и рунглишом ни себя ни других не мучить, и чтобы, значит, своим распрекрасным и сверхнужным кодом поддержать отечественных программистов в их трудной борьбе конкуренции с буржуями.
Отговорите.
Кстати 1: а разрабы Astra Linux (или что там у нас для госорганов сертифицировано) в своём коде по-английски каментят?
Кстати 2, чтобы 2 раза не вставать: а внутри РФ вообще имеют смысл такие слова как GPL? В т.ч. с точки зрения суда.
Обновил wine 6.22 на 7.7. (Долго тянул т.к. глючная дрянь этот ваш wine.) Вид всех контролов в прогах (дочерних окон в MDI, кнопок, таблиц и т.п.) стал отвратительным: бьющим по глазам ярко белым и плоским. Весь гуй превратился в равномерно-ярко-белое пятно. В т.ч. в самом winecfg: тут не вполне белый, но светло-серый и тоже плоский (e.g. кнопки того же цвета что фон окна). Как вернуть взад?
fstab:
tmpfs /a/b tmpfs size=1M 0 0
/a1 /a auto bind 0 0
/a2 /a auto bind 0 0
Независимо от того, монтирую я /a/b до или после /a1 и /a2, оно не видно в /a1/b и /a2/b/. Т.е. делаю touch /a/b/xxx – и xxx не виден в /a1/b и /a2/b. А хочется чтобы был виден, т.е. чтобы /a/b, /a1/b и /a2/b ссылались на один и тот же tmpfs. Можно ли как-нибудь вылечить?
На полминуты при открытии любого ролика, за исключением недавно уже открывавшихся.
Версия 3.0.16.
Галка «Allow Metadata Network Access» в настройках снята.
Инет запрещён через iptables: -A OUTPUT -m owner --uid-owner 1000 -j DROP
Чё делать?
Предложения вида «снести его нахрен» просьба сопровождать указанием удобных альтернатив. Помнится, что smplayer меня морозил громоздкостью и аляповатостью морды.
В итоге определены все операции сравнения кроме ==. (Во, теперь ещё и != неопределён. Только что ж пробовал.) Наличие constructor/assignment не влияет.
И самое смешное, в точно такой же структуре (с конструкторами, объявлена внутри namespace dimgel и по-другому называется) в моём проекте не определён ещё и operator<(). Что это за долбаная магия?
И звука, соответственно, нет. Откатился – прекрасненько висят процессы под nice -11, что нихрена не удивительно: я в группе realtime, для которой в /etc/security выставлен этот лимит.
Что ни обновление – то досвидос. Зато эти черти в ченжлоге новой версии гордо заявили что что-то там соптимизировали с латентностью. Молодцы.
Об названия команд пакетного менеджера пальцы сломаешь.
И команды, и опции – менее интуитивные, чем в pacman. Примеры: (1) automatic вместо dependency; (2) для поиска какому пакету принадлежит файл вызываем xlocate, который ищет не конкретный файл (я ему между прочим абсолютный путь подсовываю), а всё сколько-нибудь похожее; других способов не гуглится.
Ну там ещё по мелочам, например параллельной скачки нет, но она и в pacman по слухам не так давно появилась. Фигня конечно. Но в целом не покидало ощущение чего-то сырого, не то чтобы корявого но скорее некомфортного, и непонятно на кой чёрт нужного.
И главное. Дистр – бинарный. Инфраструктура xbps-src интегрируется в систему отнюдь не бесшовно: (1) обновление пакетов, собранных из сорцов (с другими билд-опциями, иначе какой смысл?), требует дополнительных приседаний; (2) а самих этих билд-опций – кот наплакал, в большинстве пакетов их нет вообще, т.е. почти всё собрано с рекомендованными апстримом настройками; (3) так что если нужно что-то более гибкое gentoo-style, то добро пожаловать в копирование/редактирование template, т.е. в создание своего пакета; после чего поддержание его актуальности становится обыкновенным мейнтейнерским гимором.
Т.е. это бинарный дистр с выставленной на всеобщее обозрение и задокументированной системой сборки пакетов. Не более того. И это – современная-правильная-без-легаси «лучше чем гента»? Я таки вас умоляю.
Товарищи эстеты, чё вы в этом void вообще находите?
«GP106 High Definition Audio Controller» (полагаю что-то на nvidia 1060), Profile = «Digital Stereo (HDMI 2) Output» (там куча профилей, но остальные unavailable). Она мне не нужна.
«Family 17h (Models 00h-0fh) HD Audio Controller», Profile = «Off». В выпадающем списке есть ещё один профиль, который мне и нужен: «Default (unavailable)».
При каждом старте иксов:
Открываю из систрея этот pavucontrol, выбираю профиль «Default (unavailable)», затем на вкладке «Output Devices» ставлю галку «Set as fallback» у «Family 17h (Models 00h-0fh) HD Audio Controller Line Out» (там в выпадающем списке «Port» – единственное значение «Line Out (unplugged)») и снимаю эту галку у «GP106…»; и даже после этого на вкладке «Playback» приходится вручную выставлять source для индивидуальных приложений; хорошо хоть она запоминает ранее выставленное.
Перетащил я witcher3 под другого юзера (захотелось). Прям весь wineprefix. Запускается, но при каждом запуске заново компиляет шейдеры.
У меня нвидия блоб. Файл witcher3.dxvk-cache (в каталоге witcher3/bin/x64) – 12 байт; так было всегда, никогда не понимал что это и зачем. Каталога ~/.nv и раньше не было. Куда копать? Может какую-нибудь нужную env-переменную не протаскиваю в xsudo (моя утилитка, протаскивающая .XAuthority, DISPLAY и ещё что-то выборочно), но среди них нету ничего с путями в значениях.
Символы miRegion* импортируются /usr/lib/xorg/modules/drivers/nvidia_drv.so. Прочие mi* импортируемые разнообразными x11-драйверами (nvidia, amd, intel) лежат в /usr/lib/Xorg, а этот не могу найти. И при этом видяха-то работает.