TGViewer
ТохЫч. Не только Linux ТохЫч. Не только Linux @toxblh_linux · 2.59K subscribers
Post #1237 1.96K
Spot - Spotify клиент на GTK4

Дописал часть про fork, как оно бывает когда нужно портировать. Попробовал собрать Spot, аналогично пришлось поднимать версии некоторых библиотек руками и я упрёся снова в необходимость форка теперь уже aws-lc-rs и понеслась.

Клонурем себе репозиторий, он с сабмодулями:

git clone --recurse-submodules -j8 https://github.com/aws/aws-lc-rs
cd aws-lc-rs


Теперь нужно добавить его в наш ~/.cargo/config.toml в конец. Только теперь мы будем использовать path до нашей локальной папки, у меня это /home/toxblh/git/aws-lc-rs/, но так как сам пакет, это под-папка, то указываем ещё и её на хвосте aws-lc-sys

nix = { git = 'https://github.com/helce/nix', branch = 'devel_e2k_24' }
+ aws-lc-sys = { path = '/home/toxblh/git/aws-lc-rs/aws-lc-sys' }


А дальше начинается довольно длинное путешествие устранения ошибок.
Работает это так. Мы исправляем что-то в aws-lc-sys и сразу пробуем пересобрать Spot уже который его использует. Можно ли иначе? Наверное с cargo test, но у лучше всего вышло через использование сразу.

Для примеров рекомендую использовать уже портированые пакеты Helce. Я например быстро нашёл патч для OpenSSL
https://github.com/helce/ring/commit/06856e11e7c0342ebdf473da137e8c12cdc700c3

И ещё есть https://github.com/ilyakurdyukov/e2k-ports от Ильи Курдюкова куда тоже можно и нужно подглядывать

По итогу имеем исправления в двух местах, это в сабмодуле aws-lc-sys/aws-lc/include/openssl/target.h:

--- a/include/openssl/target.h
+++ b/include/openssl/target.h
@@ -34,6 +34,8 @@
#elif defined(__ARMEL__) || defined(_M_ARM)
#define OPENSSL_32_BIT
#define OPENSSL_ARM
+#elif defined(__e2k__)
+#define OPENSSL_64_BIT
#elif (defined(__PPC64__) || defined(__powerpc64__)) && defined(_LITTLE_ENDIAN)
#define OPENSSL_64_BIT
#define OPENSSL_PPC64LE


и нужно немного расслабить правила сборки LCC прокидывая флаги сборки сабмодулей:

--- a/aws-lc-sys/builder/cmake_builder.rs
+++ b/aws-lc-sys/builder/cmake_builder.rs
@@ -166,6 +166,14 @@ impl CmakeBuilder {
// We only consider compiler CFLAGS when no cmake toolchain is set
self.apply_universal_build_options(&mut cmake_cfg);

+ cmake_cfg.cflag("-Wno-error=deprecated-declarations");
+ cmake_cfg.cflag("-Wno-error=sign-compare");
+ cmake_cfg.cflag("-Wno-error=signed-one-bit-field");
+ cmake_cfg.cxxflag("-Wno-error=deprecated-declarations");
+ cmake_cfg.cxxflag("-Wno-error=sign-compare");
+ cmake_cfg.cxxflag("-Wno-error=signed-one-bit-field");


И вот такими не хитрыми изменениями на которые ушло пара-тройка часов. Библиотека собралась и работает.
Далее сам Spot. Так как пришлось поднять по версиям zbus, а он потребовал небольшую миграцию кода на новую версию: https://github.com/xou816/spot/pull/754/files

Теперь не только Я.Музыка Cassetta работает на e2k но и Spotify в Spot!

@toxblh_linux
  • ❤ 10
  • 🔥 3
  • 🤮 3
  • 👍 1
More from @toxblh_linux
  1. Oct 7, 2026photo post
  2. Oct 7, 2026Что вы знаете о БЕЗУМИИ???
  3. Oct 7, 2026[Hyprland] https://github.com/samine825/Hypr3D "Где там коллеги лежат?" (Про созвон) Зато…
  4. Oct 6, 2026Новая неделя - новый подпивас! В этом выпуске обсуждаем Dots от OpenAI, "Суперинтеллект" о…
  5. Oct 5, 2026мы там опять в эфире если что) https://t.me/belaruskij_podpivas в телеге) (были)
  6. Oct 4, 2026MGLRU-FG обеспечивает до 10–40% более высокую производительность Linux в некоторых тестах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →