cucumber-sp / yandex-music-linux

Linux client of Yandex Music
Other
345 stars 8 forks source link

Switching to .asar distribution #10

Closed cucumber-sp closed 8 months ago

cucumber-sp commented 8 months ago

Переключение на распространение через .asar файлы значительно ускорит процесс распространения, позволит сократить размер пакета до 10 раз (за счет вынесения electron и других модулей в зависимые пакеты системы), а также сделает возможной публикацию в репозиториях пакетов, таких как AUR, APT и тд.

Необходимо сделать:

cucumber-sp commented 8 months ago

@ein-shved вы сможете реализовать поддержку NixOS? По факту нужно лишь скопировать сгенерированный .asar пакет в папку /lib/yandexmusic и далее запускать с помощью electron yandexmusic.asar.

ein-shved commented 8 months ago

@cucumber-sp, конечно! Жду патча с asar. Там посмотрим, что с этим можно будет делать.

cucumber-sp commented 8 months ago

@ein-shved сделал. Можете пробовать и посмотреть как это происходит например у меня в PKGBUILD для арча. https://github.com/cucumber-sp/yandex-music-linux/commit/9bf42b7675b081ade9805ca687af0b84bea4df66

ein-shved commented 8 months ago

@cucumber-sp, мне кажется, вы переворачиваете вещи с ног на голову. Зачем делать скрипт, из которого вызывать pkbuild? Почему бы всю процедуру не включить напрямую в процесс сборки пакета? Источником для сборки можно сделать exe-шник и ваш скрипт, который распакует exe-шник и сделает .asar пакет. Тогда можно будет в разных рецептах под разные системы сборки делать одинаковую процедуру:

по факту именно это и сделано в предложенным мною рецепте для Nix. Я могу получить готовый пакет за один шаг nix build Тут будет скачано все необходимое системой сборки, никакой ручной подготовки не нужно будет. Я думаю так же можно делать и с pkbuild и c Rpm и с Deb.

cucumber-sp commented 8 months ago

@cucumber-sp, мне кажется, вы переворачиваете вещи с ног на голову. Зачем делать скрипт, из которого вызывать pkbuild? Почему бы всю процедуру не включить напрямую в процесс сборки пакета? Источником для сборки можно сделать exe-шник и ваш скрипт, который распакует exe-шник и сделает .asar пакет. Тогда можно будет в разных рецептах под разные системы сборки делать одинаковую процедуру:

  • выкачивать ваш скрипт
  • выкачивать exe-шник
  • собирать вашим скриптом asar пакет
  • собирать пакет под конкретную платформу

по факту именно это и сделано в предложенным мною рецепте для Nix. Я могу получить готовый пакет за один шаг nix build Тут будет скачано все необходимое системой сборки, никакой ручной подготовки не нужно будет. Я думаю так же можно делать и с pkbuild и c Rpm и с Deb.

Обычно это так устроено в арче, и я считаю более правильным вариантом. PKGBUILD который будет лежать в AUR будет указывать сразу на файлы с гитхаба. Если человеку нужно под себя собрать он после этого использует makepkg и получает бинарник со всем необходимым. Да и я принципиально не хочу где-то прокидывать ссылки на файлы Яндекса, люди сами пусть скачивают если нужно самому собрать.

ein-shved commented 8 months ago

Хорошо, не буду пытаться тут вас переубедить. Но на мой взгляд, подход "люди пусть делают что-то сами" обречен на провал со временем. Если что-то можно автоматизировать - это нужно автоматизировать.

Однако поясните, я правильно понимаю, что PKBUILD в AUR будет не такой как здесь?

cucumber-sp commented 8 months ago

@cucumber-sp, мне кажется, вы переворачиваете вещи с ног на голову. Зачем делать скрипт, из которого вызывать pkbuild? Почему бы всю процедуру не включить напрямую в процесс сборки пакета? Источником для сборки можно сделать exe-шник и ваш скрипт, который распакует exe-шник и сделает .asar пакет. Тогда можно будет в разных рецептах под разные системы сборки делать одинаковую процедуру:

  • выкачивать ваш скрипт
  • выкачивать exe-шник
  • собирать вашим скриптом asar пакет
  • собирать пакет под конкретную платформу

по факту именно это и сделано в предложенным мною рецепте для Nix. Я могу получить готовый пакет за один шаг nix build Тут будет скачано все необходимое системой сборки, никакой ручной подготовки не нужно будет. Я думаю так же можно делать и с pkbuild и c Rpm и с Deb.

вообще если делать максимально правильно то делать два PKGBUILD, yandexmusic (с репаком на локальной машине) и yandexmusic-bin (с загрузкой готового asar)

ein-shved commented 8 months ago

Наверное из-за того что в арче это считается правильно, я и перешел на NixOS =)

cucumber-sp commented 8 months ago

Наверное из-за того что в арче это считается правильно, я и перешел на NixOS =)

Да, я немного почитал и впринципе вы правы, можно прям в PKGBUILD собирать все. С арчом я разберусь, Nix на вас возложу а потом пойду изучать deb и как-то пытаться на него делать что-то похожее. Единственное о чем попрошу это попробовать собрать и проверить работает ли вообще .desktop файл если есть возмжность, а то у меня только консолька)

ein-shved commented 8 months ago

На самом деле deb и rpm можно собирать nix'ом , если они сами не умеют подтягивать свои ресурсы.

cucumber-sp commented 8 months ago

Добавил сборку для debian систем с https://github.com/cucumber-sp/yandex-music-linux/commit/e7cb5e9afbbb6bb66017d83630072ddca7721dbc Теперь нужно обновить readme и добавить информацию по сборке и установке пакетов.