# Making a tarinstall ## Detailed creation process 1. A temporary directory is created, from now it will be referred to as `tmp/` 2. Inside `tmp/` the structure is created (`bin/`, `lib/`, `env`, etc.) 3. The file `tmp/id` gets written 4. `tmp/bin/` gets populated with the executables listed in the `deps` file 5. The binaries inside `tmp/bin/` get read and the list of shared libraries gets written to `liblist` 6. The `liblist` file gets read and all the necessary libraries get downloaded and/or copied to `tmp/lib/`, then `liblist` gets deleted 7. The `tmp/env` gets generated 8. The `tmp/man/` and `tmp/ext/` directories get populated with the right files 9. The checksum for the files inside `tmp` gets calculated and written to `tmp/checksum` 10. The `tmp` directory gets compressed as a tar archive 11. The decompressor and loader programs get applied to the tar archive 12. The archive gets renamed `.ti` and granted executable permission ## The project's root directory structure The project's root directory has to contain a subdirectory called `tarinstall` which has to contain the following elements: - `id` file: contains the id name of the program - `type` file: contains the type of project - `deps` file: contains a list of the binary files that the program uses ## Types of project The `type` file may contain one or more of these option separated by a newline in order to determine which binaries/libraries to download or copy from the system and in order to generate the right `env` file. This requirement may be removed in favour of automatic recognition. - C (also the option for C++) - python - go - perl