Difference between revisions of "TerrariumAssembler"

From Wiki4Intranet
Jump to: navigation, search
(TerrariumAssembler .)
Line 23: Line 23:
 
{{@|Нативная сборка}} под каждый дистрибутив
 
{{@|Нативная сборка}} под каждый дистрибутив
 
* Ад. RPM. DEB. RPM v4, v5, v4+, RPM on APT.
 
* Ад. RPM. DEB. RPM v4, v5, v4+, RPM on APT.
* Все старое.
+
* Dependency hell. API/ABI hell.
 +
* Package policy hell. [https://www.toofishes.net/media/extra/arch-packages-gephi.pdf Deps]
 +
* Сертифицированные дистрибутивы — все ископаемое.
 
* Нет контроля над библиотеками.  
 
* Нет контроля над библиотеками.  
 
** «Ограниченная поддержка» — «мы только собрали, не помним как, а поддержка — »
 
** «Ограниченная поддержка» — «мы только собрали, не помним как, а поддержка — »
 
* Комбинаторный взрыв вариантов тестирования.
 
* Комбинаторный взрыв вариантов тестирования.
 +
 +
[[File:maintaining-is-complex.png|right|256px]]
 
* Можно — но за отдельные деньги.
 
* Можно — но за отдельные деньги.
  
Line 32: Line 36:
 
=== Деплой на Linux. Их слишком много. ===
 
=== Деплой на Linux. Их слишком много. ===
 
[[File:periodic-table-of-distro.png|center|800px]]
 
[[File:periodic-table-of-distro.png|center|800px]]
 +
 +
=== Деплой на Linux. Статическая линковка. ===
 +
* Одна утилита — ОК.
 +
* Надо пересобирать все.
 +
* Бандлы приложений
 +
* Нарушение LGPL/QT-лицензий.
  
 
=== Деплой на Linux. Контейнеры. ===
 
=== Деплой на Linux. Контейнеры. ===
Line 37: Line 47:
 
{{@|Стандартные контейнеры}}
 
{{@|Стандартные контейнеры}}
 
* Масса вариантов
 
* Масса вариантов
** Docker
+
** [http://docker.io Docker]
** Flatpack
+
** [https://flatpak.org/ Flatpak]
** Snap
+
** [https://snapcraft.io/ Snappy]
** AppImages
+
** [https://appimage.org/ AppImages]
 
* {{!|Хорошая идея}}
 
* {{!|Хорошая идея}}
 
* {{@|Нет стандартов}}
 
* {{@|Нет стандартов}}
 
* {{@|Нет на ряде дистрибутивов}}
 
* {{@|Нет на ряде дистрибутивов}}
 +
** Нужны клиенты-демоны
 +
*** AppImage — не обязательно.
  
 
Ожидания заказчика — «папка, копировать, просто работает»
 
Ожидания заказчика — «папка, копировать, просто работает»
 +
* Intel X64 везде, ну ладно, пусть будет Win/Lin отдельно.
  
 
=== Деплой на Linux. Просто папка? . ===
 
=== Деплой на Linux. Просто папка? . ===
 
* «Нельзя просто взять и скопировать»©
 
* «Нельзя просто взять и скопировать»©
 
* Неочевидно для Windows-пользователей — «работает же с Win95…»
 
* Неочевидно для Windows-пользователей — «работает же с Win95…»
** Там это специально добиваются, и это недешево.
+
** Там это специально добиваются, и это недешево. [https://ru.wikipedia.org/wiki/Side-by-side_assembly SxS]
 
* libc-совместимость →  major-изменения в API каждые пару лет.
 
* libc-совместимость →  major-изменения в API каждые пару лет.
 +
** Да, с этим можно бороться → «[https://github.com/wheybags/glibc_version_header эмуляция старого glibc]» + [https://github.com/sulix/bingcc bingcc], но это недешево,
 +
пересобирать все.
 
* ld-image.so — базовый кирпич «в дженге»
 
* ld-image.so — базовый кирпич «в дженге»
 
* ELF — все захардкожено жестко, по путям. «RPATH»…
 
* ELF — все захардкожено жестко, по путям. «RPATH»…
Line 73: Line 88:
 
* Траты диска, {{@|памяти}}.
 
* Траты диска, {{@|памяти}}.
 
** Каждую популярную софтину {{@|так нельзя}}.
 
** Каждую популярную софтину {{@|так нельзя}}.
* {{@|Уязвимости}} надо отслеживать
+
* {{@|Уязвимости}} надо отслеживать. «[https://flatkill.org/ Flatpak - a security nightmare]»
 
** Не стоит для открытых сервисов.
 
** Не стоит для открытых сервисов.
  

Revision as of 02:25, 5 August 2020

Title

TerrariumAssembler
Author
Stas Fomin
Subfooter

Stas Fomin, 17:35, 8 August 2020

Проблема.

Околонаучные/высокотехнологичные приложения:

  • Нет альтернативы — Numpy+Scipy+OpenCV+Keras…
    • gonum
  • Множество других фишек и батареек Python
  • Быстрый цикл экспериментов и разработки
  • Связь с бандлами приложений (Tesseract, Imagick)

Надо

  • Деплой на
    • Все версии Windows
    • Все версии Linux (включая очень странные)
  • Работало быстро
  • Секретные алгоритмы
    • On Impossibility of Obfuscation [1]
    • PYC-файлы, cx_freeze, py2exe — абсолютная открытость.

Деплой на Linux. Стандартные варианты.

LotOfLinuxes.jpg

Нативная сборка под каждый дистрибутив

  • Ад. RPM. DEB. RPM v4, v5, v4+, RPM on APT.
  • Dependency hell. API/ABI hell.
  • Package policy hell. Deps
  • Сертифицированные дистрибутивы — все ископаемое.
  • Нет контроля над библиотеками.
    • «Ограниченная поддержка» — «мы только собрали, не помним как, а поддержка — »
  • Комбинаторный взрыв вариантов тестирования.
Maintaining-is-complex.png
  • Можно — но за отдельные деньги.


Деплой на Linux. Их слишком много.

Periodic-table-of-distro.png

Деплой на Linux. Статическая линковка.

  • Одна утилита — ОК.
  • Надо пересобирать все.
  • Бандлы приложений
  • Нарушение LGPL/QT-лицензий.

Деплой на Linux. Контейнеры.


Стандартные контейнеры

  • Масса вариантов
  • Хорошая идея
  • Нет стандартов
  • Нет на ряде дистрибутивов
    • Нужны клиенты-демоны
      • AppImage — не обязательно.

Ожидания заказчика — «папка, копировать, просто работает»

  • Intel X64 везде, ну ладно, пусть будет Win/Lin отдельно.

Деплой на Linux. Просто папка? .

  • «Нельзя просто взять и скопировать»©
  • Неочевидно для Windows-пользователей — «работает же с Win95…»
    • Там это специально добиваются, и это недешево. SxS
  • libc-совместимость → major-изменения в API каждые пару лет.

пересобирать все.

  • ld-image.so — базовый кирпич «в дженге»
  • ELF — все захардкожено жестко, по путям. «RPATH»…

Технически решаемо, но это не просто «скопировать».


TerrariumAssembler .

  • Первый вариант CasketAssembler — вообще-то шкатулка.
    • но и увы, гроб.
Casketassembler-ikea.png


Террариум с питонами.jpg

Возможные проблемы .

Концептуальные недостатки .

Очевидные проблемы «трагедии общин»

  • На порядок жирнее
  • Траты диска, памяти.
    • Каждую популярную софтину так нельзя.
  • Уязвимости надо отслеживать. «Flatpak - a security nightmare»
    • Не стоит для открытых сервисов.

Падения компиляции.

Вероятностное.

{standard input}: Assembler messages:
{standard input}:1898: Warning: end of file not at end of a line; newline inserted
{standard input}:3538: Error: number of operands mismatch for `movq'
{standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive
gcc: fatal error: Killed signal terminated program cc1

Что можно сделать:

  • Увеличить память в VagrantFile
     v.memory = 16000
  • Уменьшить «--jobs» в "build*.sh"