Difference between revisions of "TerrariumAssembler"

From Wiki4Intranet
Jump to: navigation, search
(β†’β€ŽΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° .)
 
(43 intermediate revisions by the same user not shown)
Line 2: Line 2:
  
 
=== ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ===
 
=== ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ===
βˆ’
ΠžΠΊΠΎΠ»ΠΎΠ½Π°ΡƒΡ‡Π½Ρ‹Π΅ прилоТСния:  
+
[[File:tesseract-expert.jpg|256px|right]]
βˆ’
* НСт Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ β€” Numpy+Scipy+OpenCV+…
+
ΠžΠΊΠΎΠ»ΠΎΠ½Π°ΡƒΡ‡Π½Ρ‹Π΅/высокотСхнологичныС прилоТСния:  
 +
* НСт Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ β€” Numpy+Scipy+OpenCV+Keras…
 
** {{@|gonum}}
 
** {{@|gonum}}
 
* ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΈΡˆΠ΅ΠΊ ΠΈ Π±Π°Ρ‚Π°Ρ€Π΅Π΅ΠΊ Python
 
* ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΈΡˆΠ΅ΠΊ ΠΈ Π±Π°Ρ‚Π°Ρ€Π΅Π΅ΠΊ Python
Line 17: Line 18:
 
** {{@|On Impossibility of Obfuscation}} [https://www.iacr.org/archive/crypto2001/21390001.pdf]
 
** {{@|On Impossibility of Obfuscation}} [https://www.iacr.org/archive/crypto2001/21390001.pdf]
 
** PYC-Ρ„Π°ΠΉΠ»Ρ‹, cx_freeze, py2exe β€” Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Π°Ρ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒ.
 
** PYC-Ρ„Π°ΠΉΠ»Ρ‹, cx_freeze, py2exe β€” Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Π°Ρ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒ.
 +
 +
==== Π‘ΠΌΠΎΡ‚Ρ€ΠΈ мСня . ====
 +
{{Vimeoembed|408659991|800|450}}
 +
[https://vimeo.com/408659991/d1627a5c67 πŸ“Ή]
  
 
=== Π”Π΅ΠΏΠ»ΠΎΠΉ Π½Π° Linux. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹. ===
 
=== Π”Π΅ΠΏΠ»ΠΎΠΉ Π½Π° Linux. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹. ===
 +
[[File:LotOfLinuxes.jpg|256px|right]]
 +
 
{{@|Нативная сборка}} ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дистрибутив
 
{{@|Нативная сборка}} ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дистрибутив
 
* Ад. 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|left|480px]]
 
* МоТно β€” Π½ΠΎ Π·Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ дСньги.
 
* МоТно β€” Π½ΠΎ Π·Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ дСньги.
 +
 +
 +
=== Π”Π΅ΠΏΠ»ΠΎΠΉ Π½Π° Linux. Π˜Ρ… слишком ΠΌΠ½ΠΎΠ³ΠΎ. ===
 +
[[File:periodic-table-of-distro.png|center|800px]]
 +
 +
=== Π”Π΅ΠΏΠ»ΠΎΠΉ Π½Π° Linux. БтатичСская Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ°. ===
 +
* Одна ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° β€” ОК.
 +
* Надо ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ всС.
 +
* Π‘Π°Π½Π΄Π»Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
 +
* ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ LGPL/QT-Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ.
 +
 +
=== Π”Π΅ΠΏΠ»ΠΎΠΉ Π½Π° Linux. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹. ===
 
----
 
----
 
{{@|Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹}}
 
{{@|Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹}}
 
* Масса Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²
 
* Масса Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²
βˆ’
** Docker
+
** [http://docker.io Docker], [https://linuxcontainers.org/lxd/introduction/ LXD]
βˆ’
** 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 50: Line 78:
  
  
βˆ’
=== CasketAssembler . ===
+
=== TerrariumAssembler . ===
βˆ’
* Casket β€” Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ ΡˆΠΊΠ°Ρ‚ΡƒΠ»ΠΊΠ°.
+
βˆ’
** Π½ΠΎ ΠΈ ΡƒΠ²Ρ‹, Π³Ρ€ΠΎΠ±. Надо Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ.
+
βˆ’
 
+
 
[[File:casketassembler-ikea.png|right|256px]]
 
[[File:casketassembler-ikea.png|right|256px]]
 +
* ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ CasketAssembler β€” Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ ΡˆΠΊΠ°Ρ‚ΡƒΠ»ΠΊΠ°.
 +
** Π½ΠΎ ΠΈ ΡƒΠ²Ρ‹, Π³Ρ€ΠΎΠ±.
  
 +
* https://github.com/belonesox/terrarium_assembler
  
βˆ’
=== НСдостатки . ===
+
[[File:Π’Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌ с ΠΏΠΈΡ‚ΠΎΠ½Π°ΠΌΠΈ.jpg|left|380px]]
βˆ’
ΠžΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Β«[https://habr.com/ru/post/433052/ Ρ‚Ρ€Π°Π³Π΅Π΄ΠΈΠΈ ΠΎΠ±Ρ‰ΠΈΠ½]Β»
+
βˆ’
* На порядок ΠΆΠΈΡ€Π½Π΅Π΅
+
βˆ’
* Π’Ρ€Π°Ρ‚Ρ‹ диска, памяти.
+
βˆ’
** ΠšΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ софтину Ρ‚Π°ΠΊ нСльзя.
+
βˆ’
* Уязвимости Π½Π°Π΄ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ
+
βˆ’
** НС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ для ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… сСрвисов.
+
  
 +
* Условная Π³Π΅Ρ€ΠΌΠ΅Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ.
 +
** НС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ изоляция для бСзопасности.
 +
 +
{{----}}
 +
 +
=== Π‘Π΅ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΈΠ½Π³Ρ€ΠΈΠ΄ΠΈΠ΅Π½Ρ‚ β€” Nuitka. ===
 +
[[File:Nuitka-4-Anuitka.png|256px|right]]
 +
* Python/CPython для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ
 +
** {{@|ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, дСкомпиляция}}
 +
** ΠšΡƒΡ‡Π° IDE, REPL-Ρ†ΠΈΠΊΠ», Jupyter-Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΈ, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹
 +
 +
* http://nuitka.net/
 +
* ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ: Python β€”β†’ C/C++ β†’ GCC/MSVC β†’ .EXE + [.DLLS]
 +
** {{@|Π”ΠΎΠ»Π³ΠΎ}}
 +
** {{@|НС всСгда ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ}}
 +
* Nuitka-компиляция
 +
** ΠšΡ€ΡƒΡ‚Π΅ΠΉΡˆΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. [https://pybenchmarks.org/u64q/benchmark.php?test=all&lang=nuitka&lang2=numba&data=u64q Π—Π°Ρ€ΡƒΠ»ΠΈΠ²Π°ΡŽΡ‚ Numba].
 +
*** {{@|Π•ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹}}
 +
**** ΠšΡƒΡ‡Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ-сборки ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ
 +
**** Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ (tesseract/imagick ΠΈ Ρ‚.ΠΏ.).
 +
 +
==== Π‘ΠΌΠΎΡ‚Ρ€ΠΈ мСня . ====
 +
{{vimeoembed|408659882|800|450}} [https://vimeo.com/408659882/c3e959604c πŸ“Ή]
 +
 +
 +
=== Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ° . ===
 +
;lib64: ВсС Π·Π°ΠΏΠ°Ρ‚Ρ‡Π΅Π½Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.
 +
;pbin: ВсС Π·Π°ΠΏΠ°Ρ‚Ρ‡Π΅Π½Π½Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свою <tt>ld.so</tt>, ΠΎΠ½Π° ΠΆΠ΅ Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΡƒΡ‚.
 +
;ebin: Π’Π½Π΅ΡˆΠ½ΠΈΠΉ интСрфСйс ΠΊ Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΡƒ β€” скрипты запуска Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ.
 +
ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΏΠΊΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ.
 +
 +
==== Π‘ΠΌΠΎΡ‚Ρ€ΠΈ мСня . ====
 +
{{vimeoembed|408659814|800|450}}
 +
 +
[https://vimeo.com/408659814/0d0a98f7ff πŸ“Ή]
 +
 +
=== YAML-Ρ„Π°ΠΉΠ» спСцификации . ===
 +
 +
{{vimeoembed|408659719|800|450}}
 +
* [https://vimeo.com/408659719/1296dcc21e πŸ“Ή]
 +
 +
==== Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ . ====
 +
 +
;src_dir: Π³Π΄Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ исходныС Ρ„Π°ΠΉΠ»Ρ‹.
 +
----
 +
;python_packages: НаполнСниС Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ° Β«ΠΏΠΈΡ‚ΠΎΠ½Π°ΠΌΠΈΒ»
 +
;pip: ΠŸΡ€ΠΎΡΡ‚ΠΎ список PIP-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
 +
;build: Бписок исходников для checkout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для сборки.
 +
;terra: Бписок исходников для checkout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π² Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ΅ для Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π°ΠΌ ΠΏΠΈΡ‚ΠΎΠ½Π°.
 +
 +
Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ просто git-urlΠΎΠΌ, Π»ΠΈΠ±ΠΎ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Π΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠ°Ρ‚Ρ‡Π°.
 +
    - git@gitlab.ispras.ru:fomin/komodo_python3_dbgp.git
 +
    - url: https://github.com/tomerfiliba/reedsolomon.git
 +
      branch: v1.5.3
 +
 +
-----
 +
 +
;templates_dirs: Π¨Π°Π±Π»ΠΎΠ½ Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ° (Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Β«jinja-ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌΒ»)
 +
 +
==== ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ для Linux OS . ====
 +
;packages: Бписки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для ОБ
 +
:;build: ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹, Π½Π΅Π±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сборки
 +
:;terra: ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹, Π½Π΅ΠΎΡ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Β«Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ°Β»
 +
 +
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ просто Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, Π»ΠΈΠ±ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΈ URLΠΎΠΌ
 +
 +
    - name: unitedrpms
 +
      url:  https://github.com/UnitedRPMs/unitedrpms/releases/download/17/unitedrpms-32-17.fc32.noarch.rpm
 +
 +
:;exclude_prefix: прСфиксы ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΈ.
 +
:;exclude_suffix: суффиксы ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΈ.
 +
 +
==== ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ . ====
 +
;nuitka:
 +
:;std_flags: стандартный Π½Π°Π±ΠΎΡ€ Ρ„Π»Π°Π³ΠΎΠ²
 +
:;force_packages: ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΎΡ‡Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ
 +
:;force_modules: ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΎΡ‡Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ
 +
:;block_packages: Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ.
 +
 +
----
 +
;builds: список ΠΏΠΈΡ‚ΠΎΠ½-исходников для компиляции
 +
:;folder: ΠΏΠ°ΠΏΠΊΠ°, ΠΎΡ‚Π½ΠΎΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° исходников.
 +
:;utility: Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ (Π±Π΅Π· Β«.pyΒ»)
 +
 +
 +
==== Π‘Π±ΠΎΡ€ΠΊΠ° с ΠΏΠ°Ρ‚Ρ‡ΠΈΠ½Π³ΠΎΠΌ . ====
 +
;templates_dirs: Π¨Π°Π±Π»ΠΎΠ½ Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ° (Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Β«jinja-ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌΒ»)
 +
 +
----
 +
;bin_regexps: РСгулярки, Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΡƒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹
 +
:;need_patch:  Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΡ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ снаруТи Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ°, ΠΈ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ.
 +
:;just_copy:  Π‘ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… просто Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.
 +
 +
=== Установка . ===
 +
pip install terrarium-assembler
 +
 +
git clone https://github.com/belonesox/terrarium_assembler/
 +
…
 +
python3 setup.py develop
 +
 +
 +
{{vimeoembed|408659644|800|450}}
 +
 +
[https://vimeo.com/408659644/cc494093c1 ∞]
 +
 +
=== Π’Ρ‹Π·ΠΎΠ² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ . ===
 +
 +
<pre>
 +
[stas@stasbox64gb demo]$ terrarium_assembler --help
 +
usage: terrarium_assembler [-h] [--debug] [--docs] [--stage-download-rpms] [--stage-download-sources-for-rpms] [--stage-checkout] [--stage-install-rpms]
 +
                          [--stage-download-wheels] [--stage-build-wheels] [--stage-install-wheels] [--stage-build-nuitka] [--stage-make-isoexe]
 +
                          [--stage-build-and-pack STAGE_BUILD_AND_PACK] [--stage-download-all] [--stage-all STAGE_ALL] [--stage-pack STAGE_PACK]
 +
                          specfile
 +
 +
Create a portable linux folder-application
 +
 +
positional arguments:
 +
  specfile              Specification File
 +
 +
optional arguments:
 +
  -h, --help            show this help message and exit
 +
  --debug              Debug version of release
 +
  --docs                Output documentation version
 +
  --stage-download-rpms
 +
                        Stage for download RPMs
 +
  --stage-download-sources-for-rpms
 +
                        Stage for download SRPMs β€” sources packages for RPMS
 +
  --stage-checkout      Stage for checkout sources
 +
  --stage-install-rpms  Stage for install downloaded RPMS
 +
  --stage-download-wheels
 +
                        Stage for download needed WHL-python packages
 +
  --stage-build-wheels  Stage for compile wheels for our python sources
 +
  --stage-install-wheels
 +
                        Stage for Install our and external Python wheels
 +
  --stage-build-nuitka  Stage for Compile Python packages to executable
 +
  --stage-make-isoexe  Stage for Also make self-executable install archive and ISO disk
 +
  --stage-build-and-pack STAGE_BUILD_AND_PACK
 +
                        Install, build and pack
 +
  --stage-download-all  Download all β€” sources, packages
 +
  --stage-all STAGE_ALL
 +
                        Install, build and pack
 +
  --stage-pack STAGE_PACK
 +
                        Stage pack to given destination directory
 +
</pre>
 +
 +
=== Π­Ρ‚Π°ΠΏΡ‹ сборки . ===
 +
==== Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ . ====
 +
* ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ (ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ)
 +
* Π’Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ исходники ΠΈ Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΡ‚ΡŒ зависимости, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ мСстС (для Π°ΡƒΠ΄ΠΈΡ‚Π°).
 +
* ВоспроизвСсти сборку ΠΏΠΎ прСдоставлСнным исходникам для Π°ΡƒΠ΄ΠΈΡ‚Π°.
 +
* Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°
 +
** Бборочная срСда с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎΠ³ΠΎ повторСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… этапов
 +
*** Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ тСстированиС
 +
*** ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ сборки β€” падСния компиляторов, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Ρ‚.ΠΏ.
 +
 +
==== Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° . ====
 +
 +
;--stage-all=: Β«Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ всС»
 +
:;--stage-download-all: Β«Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ всС Π½ΡƒΠΆΠ½ΠΎΠ΅Β» β€” ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, исходники
 +
::;--stage-download-rpms: Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ RPM-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹
 +
::;--stage-checkout: Π’Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ исходники
 +
::;--stage-download-wheels: Π’Ρ‹ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΈΡ‚ΠΎΠ½-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΏΠΎ зависимостям ΠΈΠ· исходников.
 +
:;--stage-build-and-pack=: Β«Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒΒ»
 +
::;--stage-install-rpms: Установка RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
 +
::;--stage-build-wheels: Π‘Π±ΠΎΡ€ΠΊΠ° WHL-ΠΏΠΈΡ‚ΠΎΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
 +
::;--stage-install-wheels: Установка Python-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
 +
::;--stage-build-nuitka: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Python-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ Π² выполняСмый Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· NUITKA
 +
::;--stage-pack=: Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° всСго Π² пСрСносной Β«Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΒ»
 +
:::;--stage-make-isoexe: Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ISO-диск с ΡΠ°ΠΌΠΎΡ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΡΡ shell-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌ.
 +
 +
=== Shell-Ρ„Π°ΠΉΠ»Ρ‹ для повторСния . ===
 +
<pre>
 +
01-download-rpms.sh
 +
02-install-rpms.sh
 +
03-checkout.sh
 +
05-download-wheels.sh
 +
09-build-wheels.sh
 +
15-install-wheels.sh
 +
40-build-nuitkas.sh
 +
  build_technodemo.sh
 +
50-pack.sh
 +
90-download-sources-for-rpms.sh
 +
</pre>
 +
 +
=== Getting Started . ===
 +
git clone https://github.com/belonesox/terrarium_assembler/
 +
 +
* https://github.com/belonesox/terrarium_assembler/tree/master/demo
 +
* ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€
 +
** Vagrant-инфраструктура β€” Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°-сборщи (FC32), Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°-тСстирования (Ubuntu12).
 +
** Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° https://github.com/belonesox/terrarium_assembler/blob/master/demo/utility/technodemo.py β€” элСмСнтарная, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΆΠΈΡ€Π½Ρ‹ΠΉ стСк.
 +
** ОписаниС сборки https://github.com/belonesox/terrarium_assembler/blob/master/demo/release.yml
 +
** Π¨Π°Π±Π»ΠΎΠ½ Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ° β†’ https://github.com/belonesox/terrarium_assembler/tree/master/demo/template
 +
*** Π‘ΠΊΡ€ΠΈΠΏΡ‚ инсталляции β†’ https://github.com/belonesox/terrarium_assembler/blob/master/demo/template/install.py
 +
 +
 +
=== ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° . ===
 +
{{vimeoembed|408659549|800|450}}
 +
[https://vimeo.com/408659549/1aeab7082b ∞]
 +
 +
==== Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ диск technodemo . ====
 +
cd demo
 +
 +
vagrant up ta-builder
 +
vagrant ssh ta-builder
 +
 +
sudo bash
 +
cd /vagrant/demo
 +
terrarium_assembler --stage-all=./out --stage-make-isoexe release.yml
 +
 +
 +
==== ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ΄ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ старым линуксом . ====
 +
vagrant up ta-test-ubuntu12; vagrant ssh ta-test-ubuntu12
 +
 +
{{vimeoembed|408659432|800|450}}
 +
[https://vimeo.com/408659432/39db5ee226 ∞]
 +
 +
== Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ . ==
 +
=== ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ нСдостатки . ===
 +
ΠžΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Β«[https://habr.com/ru/post/433052/ Ρ‚Ρ€Π°Π³Π΅Π΄ΠΈΠΈ ΠΎΠ±Ρ‰ΠΈΠ½]Β»
 +
* На порядок {{@|ΠΆΠΈΡ€Π½Π΅Π΅}}
 +
* Π’Ρ€Π°Ρ‚Ρ‹ диска, {{@|памяти}}.
 +
** ΠšΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ софтину {{@|Ρ‚Π°ΠΊ нСльзя}}.
 +
* {{@|Уязвимости}} Π½Π°Π΄ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Β«[https://flatkill.org/ Flatpak - a security nightmare]Β»
 +
** НС стоит для ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… сСрвисов.
  
 +
=== ПадСния компиляции. ===
 +
ВСроятностноС.
 +
<pre>
 +
{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
 +
</pre>
  
βˆ’
Как ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹?
+
Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:
 +
* Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² VagrantFile
 +
      v.memory = 16000
 +
* Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Β«--jobsΒ» Π² "build*.sh"

Latest revision as of 17:35, 8 August 2020

Title

TerrariumAssembler
Author
Stas Fomin
Subfooter

Stas Fomin, 17:35, 8 August 2020

Contents

 [hide

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Tesseract-expert.jpg

ΠžΠΊΠΎΠ»ΠΎΠ½Π°ΡƒΡ‡Π½Ρ‹Π΅/высокотСхнологичныС прилоТСния:

  • НСт Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ β€” 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-ikea.png
  • ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ CasketAssembler β€” Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ ΡˆΠΊΠ°Ρ‚ΡƒΠ»ΠΊΠ°.
    • Π½ΠΎ ΠΈ ΡƒΠ²Ρ‹, Π³Ρ€ΠΎΠ±.
Π’Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌ с ΠΏΠΈΡ‚ΠΎΠ½Π°ΠΌΠΈ.jpg
  • Условная Π³Π΅Ρ€ΠΌΠ΅Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ.
    • НС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ изоляция для бСзопасности.

Π‘Π΅ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΈΠ½Π³Ρ€ΠΈΠ΄ΠΈΠ΅Π½Ρ‚ β€” Nuitka.

Nuitka-4-Anuitka.png
  • Python/CPython для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ
    • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, дСкомпиляция
    • ΠšΡƒΡ‡Π° IDE, REPL-Ρ†ΠΈΠΊΠ», Jupyter-Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΈ, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹
  • http://nuitka.net/
  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ: Python β€”β†’ C/C++ β†’ GCC/MSVC β†’ .EXE + [.DLLS]
    • Π”ΠΎΠ»Π³ΠΎ
    • НС всСгда ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ
  • Nuitka-компиляция
    • ΠšΡ€ΡƒΡ‚Π΅ΠΉΡˆΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π—Π°Ρ€ΡƒΠ»ΠΈΠ²Π°ΡŽΡ‚ Numba.
      • Π•ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹
        • ΠšΡƒΡ‡Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ-сборки ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ
        • Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ (tesseract/imagick ΠΈ Ρ‚.ΠΏ.).

Π‘ΠΌΠΎΡ‚Ρ€ΠΈ мСня .

πŸ“Ή


Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ° .

lib64
ВсС Π·Π°ΠΏΠ°Ρ‚Ρ‡Π΅Π½Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.
pbin
ВсС Π·Π°ΠΏΠ°Ρ‚Ρ‡Π΅Π½Π½Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свою ld.so, ΠΎΠ½Π° ΠΆΠ΅ Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΡƒΡ‚.
ebin
Π’Π½Π΅ΡˆΠ½ΠΈΠΉ интСрфСйс ΠΊ Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΡƒ β€” скрипты запуска Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΏΠΊΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈ мСня .

πŸ“Ή

YAML-Ρ„Π°ΠΉΠ» спСцификации .

Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ .

src_dir
Π³Π΄Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ исходныС Ρ„Π°ΠΉΠ»Ρ‹.

python_packages
НаполнСниС Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ° Β«ΠΏΠΈΡ‚ΠΎΠ½Π°ΠΌΠΈΒ»
pip
ΠŸΡ€ΠΎΡΡ‚ΠΎ список PIP-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
build
Бписок исходников для checkout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для сборки.
terra
Бписок исходников для checkout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π² Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ΅ для Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π°ΠΌ ΠΏΠΈΡ‚ΠΎΠ½Π°.

Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ просто git-urlΠΎΠΌ, Π»ΠΈΠ±ΠΎ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Π΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠ°Ρ‚Ρ‡Π°.

   - git@gitlab.ispras.ru:fomin/komodo_python3_dbgp.git 
   - url: https://github.com/tomerfiliba/reedsolomon.git
     branch: v1.5.3

templates_dirs
Π¨Π°Π±Π»ΠΎΠ½ Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ° (Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Β«jinja-ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌΒ»)

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ для Linux OS .

packages
Бписки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для ОБ
build
ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹, Π½Π΅Π±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сборки
terra
ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹, Π½Π΅ΠΎΡ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Β«Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ°Β»

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ просто Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, Π»ΠΈΠ±ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΈ URLΠΎΠΌ

   - name: unitedrpms
     url:  https://github.com/UnitedRPMs/unitedrpms/releases/download/17/unitedrpms-32-17.fc32.noarch.rpm
exclude_prefix
прСфиксы ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΈ.
exclude_suffix
суффиксы ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΈ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ .

nuitka
std_flags
стандартный Π½Π°Π±ΠΎΡ€ Ρ„Π»Π°Π³ΠΎΠ²
force_packages
ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΎΡ‡Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ
force_modules
ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΎΡ‡Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ
block_packages
Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ.

builds
список ΠΏΠΈΡ‚ΠΎΠ½-исходников для компиляции
folder
ΠΏΠ°ΠΏΠΊΠ°, ΠΎΡ‚Π½ΠΎΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° исходников.
utility
Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ (Π±Π΅Π· Β«.pyΒ»)


Π‘Π±ΠΎΡ€ΠΊΠ° с ΠΏΠ°Ρ‚Ρ‡ΠΈΠ½Π³ΠΎΠΌ .

templates_dirs
Π¨Π°Π±Π»ΠΎΠ½ Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ° (Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Β«jinja-ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌΒ»)

bin_regexps
РСгулярки, Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΡƒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹
need_patch
Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΡ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ снаруТи Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΠ°, ΠΈ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ.
just_copy
Π‘ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… просто Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Установка .

pip install terrarium-assembler
git clone https://github.com/belonesox/terrarium_assembler/
…
python3 setup.py develop


∞

Π’Ρ‹Π·ΠΎΠ² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ .

[stas@stasbox64gb demo]$ terrarium_assembler --help
usage: terrarium_assembler [-h] [--debug] [--docs] [--stage-download-rpms] [--stage-download-sources-for-rpms] [--stage-checkout] [--stage-install-rpms]
                           [--stage-download-wheels] [--stage-build-wheels] [--stage-install-wheels] [--stage-build-nuitka] [--stage-make-isoexe]
                           [--stage-build-and-pack STAGE_BUILD_AND_PACK] [--stage-download-all] [--stage-all STAGE_ALL] [--stage-pack STAGE_PACK]
                           specfile

Create a portable linux folder-application

positional arguments:
  specfile              Specification File

optional arguments:
  -h, --help            show this help message and exit
  --debug               Debug version of release
  --docs                Output documentation version
  --stage-download-rpms
                        Stage for download RPMs
  --stage-download-sources-for-rpms
                        Stage for download SRPMs β€” sources packages for RPMS
  --stage-checkout      Stage for checkout sources
  --stage-install-rpms  Stage for install downloaded RPMS
  --stage-download-wheels
                        Stage for download needed WHL-python packages
  --stage-build-wheels  Stage for compile wheels for our python sources
  --stage-install-wheels
                        Stage for Install our and external Python wheels
  --stage-build-nuitka  Stage for Compile Python packages to executable
  --stage-make-isoexe   Stage for Also make self-executable install archive and ISO disk
  --stage-build-and-pack STAGE_BUILD_AND_PACK
                        Install, build and pack
  --stage-download-all  Download all β€” sources, packages
  --stage-all STAGE_ALL
                        Install, build and pack
  --stage-pack STAGE_PACK
                        Stage pack to given destination directory

Π­Ρ‚Π°ΠΏΡ‹ сборки .

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ .

  • ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ (ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ)
  • Π’Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ исходники ΠΈ Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΡ‚ΡŒ зависимости, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ мСстС (для Π°ΡƒΠ΄ΠΈΡ‚Π°).
  • ВоспроизвСсти сборку ΠΏΠΎ прСдоставлСнным исходникам для Π°ΡƒΠ΄ΠΈΡ‚Π°.
  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°
    • Бборочная срСда с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎΠ³ΠΎ повторСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… этапов
      • Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ тСстированиС
      • ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ сборки β€” падСния компиляторов, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Ρ‚.ΠΏ.

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° .

--stage-all=
Β«Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ всС»
--stage-download-all
Β«Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ всС Π½ΡƒΠΆΠ½ΠΎΠ΅Β» β€” ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, исходники
--stage-download-rpms
Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ RPM-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹
--stage-checkout
Π’Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ исходники
--stage-download-wheels
Π’Ρ‹ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΈΡ‚ΠΎΠ½-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΏΠΎ зависимостям ΠΈΠ· исходников.
--stage-build-and-pack=
Β«Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒΒ»
--stage-install-rpms
Установка RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
--stage-build-wheels
Π‘Π±ΠΎΡ€ΠΊΠ° WHL-ΠΏΠΈΡ‚ΠΎΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
--stage-install-wheels
Установка Python-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
--stage-build-nuitka
ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Python-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ Π² выполняСмый Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· NUITKA
--stage-pack=
Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° всСго Π² пСрСносной Β«Ρ‚Π΅Ρ€Ρ€Π°Ρ€ΠΈΡƒΠΌΒ»
--stage-make-isoexe
Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ISO-диск с ΡΠ°ΠΌΠΎΡ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΡΡ shell-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌ.

Shell-Ρ„Π°ΠΉΠ»Ρ‹ для повторСния .

01-download-rpms.sh
02-install-rpms.sh
03-checkout.sh
05-download-wheels.sh
09-build-wheels.sh
15-install-wheels.sh
40-build-nuitkas.sh
   build_technodemo.sh
50-pack.sh
90-download-sources-for-rpms.sh

Getting Started .

git clone https://github.com/belonesox/terrarium_assembler/


ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° .

∞

Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ диск technodemo .

cd demo
vagrant up ta-builder
vagrant ssh ta-builder
sudo bash
cd /vagrant/demo
terrarium_assembler --stage-all=./out --stage-make-isoexe release.yml


ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ΄ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ старым линуксом .

vagrant up ta-test-ubuntu12; vagrant ssh ta-test-ubuntu12

∞

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ .

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ нСдостатки .

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Β«Ρ‚Ρ€Π°Π³Π΅Π΄ΠΈΠΈ ΠΎΠ±Ρ‰ΠΈΠ½Β»

  • На порядок ΠΆΠΈΡ€Π½Π΅Π΅
  • Π’Ρ€Π°Ρ‚Ρ‹ диска, памяти.
    • ΠšΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ софтину Ρ‚Π°ΠΊ нСльзя.
  • Уязвимости Π½Π°Π΄ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Β«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"