Author: Ne02ptzero <email@example.com>
Date: Mon, 21 Nov 2016 16:50:05 +0100
1 file changed, 53 insertions(+), 2 deletions(-)
diff --git a/Infrastructure.md b/Infrastructure.md
@@ -11,7 +11,7 @@ Morphux Server Infrastructure
-Website that list all the packages available on the distribution.
+oWebsite that list all the packages available on the distribution.
Languages: PHP / HTML / CSS
@@ -24,6 +24,7 @@ Languages: PHP / HTML / CSS
System that build new packages / new versions of packages, on multiple
arch through VMs.
Languages: Python ?
@@ -35,6 +36,7 @@ Languages: Python ?
Server that respond to an user request to install a package.
Languages: C, Go, C++ ?
@@ -46,10 +48,22 @@ Languages: C, Go, C++ ?
Server that stores informations about packages
+│ Git Server │
+Server that stores maintainers and previous versions of a package.
-# Life of a package
+# Life of a package in a nutshell
- Maintainer create a package
- Package is send to the build system
@@ -60,3 +74,40 @@ Language: SQL
- Files installed by the package
- Extract the binaries installed by the package
- The build system add the package to the Package database
+# Step by step
+## Creation of a package
+- If the package is new to Morphux, the maintainer / admin create a new Git
+- The master branch is the dev version of the package
+- The git repository should contain the all package, sources included
+- As soon as the maintainer / admin push the data into a branch like `version-XX.XX`,
+the build system automatically test the package.
+## Test a package
+- The build system is mostly 'Vanilla' VMs of Morphux
+- The build system test the package by cloning the maintainer repository, and execute
+a test mpm binary.
+- This binary will try to compile the package, with the informations provided by the maintainer in `package.json`
+- If the compilation works, the system will try to deduce some information:
+ - Size of the installed package
+ - Compilation time
+ - Files installed and modified by the package
+ - Extract the binaries installed by the package
+- Then, the build system will add these informations into the package
+- If all of those steps are sucessfull, the version is marked as good,
+and the database server will take over
+## Add a package to the database
+- Some basic informations is extracted from the package, in order to respond quickly
+on an install request:
+ - Name of the package
+ - Version of the package
+ - Dependencies of the package
+ - Compilation time of the package
+ - Installed size of the package
+ - Files installed by the package
+- Once that's done, the package will be compressed and encrypted, and moved to a