https://developers.google.com/open-source/gsoc/faq#are_participants_from_ukraine_russia_or_belarus_allowed_to_participate_in_gsoc_2022
А действительно, зачем проводить GSoC на территории стран, в которые нельзя заплатить?
———
#quake
Я тут, для проверки работоспособности opengl и vulkan решил собрать себе quake2. Все шло очень хорошо, пока не пошло совсем наперекосяк.
Очень грубо, клиент quake загружает в себя 2 .so(на самом деле, больше, но для понимания сути рассказа это неважно), каждая из которых устроена примерно так:
client.so = 1.o + 2.o
game.so = 2.o + 3.o
При этом, fun fact - 1.o и 3.o содержат в себе некоторую функцию, с одинаковым именем, которая реально зовется в 2.o, и должна иметь разную семантику в client.so, и в game.so
Ну, для примера, пусть это будет функция printf(), только в одном случае она пишет на экран, а в другом - отправляет сообщение по сети на сервер. Влинковать две функции printf с разной семантикой в одну программу не представляется возможным.
Я тут, конечно, встрял, потому что повторить такую семантику без радикального переписывания системы сборки казалось невозможным.
В конце-концов, я нашел решение, симулировав поведение hidden symbols с помощью objcopy. Конкретно - добавляем к каждому экспортируему символу уникальный для архива префикс - скажем, client_ для client.a, и game_ для game.a, после чего их можно безопасно влинковать в одну и ту же программу.
https://git.sr.ht/~pg/mix/tree/main/item/pkgs/bin/quake/2/yamagi/mix.sh#L34
+ немного магии в моем псевдо-динамеческом загрузчике по переадресации вызовов:
https://git.sr.ht/~pg/mix/tree/main/item/pkgs/bin/quake/2/yamagi/mix.sh#L36
Да, в этот раз я не показал кишки, я показал как это будет выглядеть для конечного мейнтейнера пакета. Кажется не очень всратым.
Думаю, до меня статический бинарник для quake2 не изготовлял никто, потому что это гениальное решение можно проследить еще в исходниках от id software.
Кстати, раз уж начал про quake.
Я редко играю в игрухи, но раз в 2 - 3 года на меня находит желание погонять в первый или второй quake. Вообще, я вам так скажу - софтверный рендер второго quake - это самый красивый графоний в играх, без дурацкого блюра и прочих наворотов. Прекрасные, четкие, квадратные пиксели, сделанные с душой.
Вся эта современная тенденция про увеличение числа полигонов и разрешения текстур - ну это ни о чем, души бы лучше добавили побольше.
А действительно, зачем проводить GSoC на территории стран, в которые нельзя заплатить?
———
#quake
Я тут, для проверки работоспособности opengl и vulkan решил собрать себе quake2. Все шло очень хорошо, пока не пошло совсем наперекосяк.
Очень грубо, клиент quake загружает в себя 2 .so(на самом деле, больше, но для понимания сути рассказа это неважно), каждая из которых устроена примерно так:
client.so = 1.o + 2.o
game.so = 2.o + 3.o
При этом, fun fact - 1.o и 3.o содержат в себе некоторую функцию, с одинаковым именем, которая реально зовется в 2.o, и должна иметь разную семантику в client.so, и в game.so
Ну, для примера, пусть это будет функция printf(), только в одном случае она пишет на экран, а в другом - отправляет сообщение по сети на сервер. Влинковать две функции printf с разной семантикой в одну программу не представляется возможным.
Я тут, конечно, встрял, потому что повторить такую семантику без радикального переписывания системы сборки казалось невозможным.
В конце-концов, я нашел решение, симулировав поведение hidden symbols с помощью objcopy. Конкретно - добавляем к каждому экспортируему символу уникальный для архива префикс - скажем, client_ для client.a, и game_ для game.a, после чего их можно безопасно влинковать в одну и ту же программу.
https://git.sr.ht/~pg/mix/tree/main/item/pkgs/bin/quake/2/yamagi/mix.sh#L34
+ немного магии в моем псевдо-динамеческом загрузчике по переадресации вызовов:
https://git.sr.ht/~pg/mix/tree/main/item/pkgs/bin/quake/2/yamagi/mix.sh#L36
Да, в этот раз я не показал кишки, я показал как это будет выглядеть для конечного мейнтейнера пакета. Кажется не очень всратым.
Думаю, до меня статический бинарник для quake2 не изготовлял никто, потому что это гениальное решение можно проследить еще в исходниках от id software.
Кстати, раз уж начал про quake.
Я редко играю в игрухи, но раз в 2 - 3 года на меня находит желание погонять в первый или второй quake. Вообще, я вам так скажу - софтверный рендер второго quake - это самый красивый графоний в играх, без дурацкого блюра и прочих наворотов. Прекрасные, четкие, квадратные пиксели, сделанные с душой.
Вся эта современная тенденция про увеличение числа полигонов и разрешения текстур - ну это ни о чем, души бы лучше добавили побольше.
Google for Developers
Frequently Asked Questions | Google Summer of Code | Google for Developers
👍15
Читал тут, на ночь глядя, unixporn. Нет, это не pornhub, и не xvideos.
Я оттуда ничего не использую, потому что обычно, если сфотать не под тем углом, что фотал автор, оно все разваливается.
Глаз зацепился за https://www.reddit.com/r/unixporn/comments/ut0g7u/kde_catppucin_with_mac_fonts/
Там коллега, на голубом глазу, утверждал, что использует под Linux шрифты из macOS.
Я удивился, потому что думал, что эти шрифты не отчуждаемы.
Но нет, вот они, любой желающий может скачать - https://developer.apple.com/fonts/
Маленькая загвоздка - они в dmg формате, а это, по сути своей, образ HFS+, если я ничего не путаю.
Гугление подсказало, что с dmg умеет справляться 7z - https://askubuntu.com/questions/38112/how-can-i-open-a-dmg-file
Проблема в том, что с dmg умеет справляться только "большой" 7z, а 7za - не умеет. 7z у меня не был собран, потому что он в процессе работы использует две подгружаемые .so - 7z.so, и rar.so.
Когда я в первый раз подходил к снаряду, у меня не получилось это сделать, но сейчас я уже умею больше и сильнее.
Короче, TL;DR - по моей классификации, это "всратейшая" система с #plugin, потому что там экспортируются какие-то левые символы с данными, функциями, .so при загрузке выполняет конструкторы, которые себя где-то регистрируют, и так далее.
Так же, как у меня уже было в #quake 2, обе .so и main driver пересекаются по обжам и по символам. Я и поступил так же - переименовал все символы, написал mapping для моего загрузчика, и все! https://git.sr.ht/~pg/mix/tree/main/item/pkgs/bin/p7zip/z/mix.sh#L29
Забавно, по мере роста пакетной базы и развития инструментария, все это становится все проще и проще. Правда, мой идеал - по compile database вывести все нужные правила для перелинковки, пока еще далеко.
А что шрифты? А шрифты я загрузил, там, внутри dmg лежит pkg, который тоже нужно разжать с помощью 7z. А внутре лежит какой-то файл, который можно разжать только с помощью bsdtar.
Вот такая вот смерть кащея. https://git.sr.ht/~pg/mix/tree/main/item/pkgs/aux/fonts/sf/pro/mix.sh
Шрифты мне не понравились, #freetype рендерит их не очень. Правовой статус мне не очень понятен, при закачке ничего сказано не было, при установке тоже.
Я оттуда ничего не использую, потому что обычно, если сфотать не под тем углом, что фотал автор, оно все разваливается.
Глаз зацепился за https://www.reddit.com/r/unixporn/comments/ut0g7u/kde_catppucin_with_mac_fonts/
Там коллега, на голубом глазу, утверждал, что использует под Linux шрифты из macOS.
Я удивился, потому что думал, что эти шрифты не отчуждаемы.
Но нет, вот они, любой желающий может скачать - https://developer.apple.com/fonts/
Маленькая загвоздка - они в dmg формате, а это, по сути своей, образ HFS+, если я ничего не путаю.
Гугление подсказало, что с dmg умеет справляться 7z - https://askubuntu.com/questions/38112/how-can-i-open-a-dmg-file
Проблема в том, что с dmg умеет справляться только "большой" 7z, а 7za - не умеет. 7z у меня не был собран, потому что он в процессе работы использует две подгружаемые .so - 7z.so, и rar.so.
Когда я в первый раз подходил к снаряду, у меня не получилось это сделать, но сейчас я уже умею больше и сильнее.
Короче, TL;DR - по моей классификации, это "всратейшая" система с #plugin, потому что там экспортируются какие-то левые символы с данными, функциями, .so при загрузке выполняет конструкторы, которые себя где-то регистрируют, и так далее.
Так же, как у меня уже было в #quake 2, обе .so и main driver пересекаются по обжам и по символам. Я и поступил так же - переименовал все символы, написал mapping для моего загрузчика, и все! https://git.sr.ht/~pg/mix/tree/main/item/pkgs/bin/p7zip/z/mix.sh#L29
Забавно, по мере роста пакетной базы и развития инструментария, все это становится все проще и проще. Правда, мой идеал - по compile database вывести все нужные правила для перелинковки, пока еще далеко.
А что шрифты? А шрифты я загрузил, там, внутри dmg лежит pkg, который тоже нужно разжать с помощью 7z. А внутре лежит какой-то файл, который можно разжать только с помощью bsdtar.
Вот такая вот смерть кащея. https://git.sr.ht/~pg/mix/tree/main/item/pkgs/aux/fonts/sf/pro/mix.sh
Шрифты мне не понравились, #freetype рендерит их не очень. Правовой статус мне не очень понятен, при закачке ничего сказано не было, при установке тоже.
Reddit
From the unixporn community on Reddit: [KDE] Catppucin with Mac Fonts
Explore this post and more from the unixporn community
👍10💩1