mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-06-17 23:44:17 +08:00
Redox: A Rust Operating System
|
|
||
|---|---|---|
| .cargo | ||
| bin | ||
| docgen@c9525c4761 | ||
| pkgar@7a31644304 | ||
| pkgutils@410b9b0761 | ||
| recipes | ||
| src | ||
| .gitignore | ||
| .gitmodules | ||
| Cargo.lock | ||
| Cargo.toml | ||
| clean.sh | ||
| config.sh | ||
| cook.sh | ||
| fetch.sh | ||
| LICENSE | ||
| README.md | ||
| repo.sh | ||
| setup.sh | ||
| status_origin.sh | ||
| status_upstream.sh | ||
| status.sh | ||
| unfetch.sh | ||
Cookbook
Package system of Redox.
This repository contains the system source code and packages inside the recipes folder.
- A recipe can be a software port or system package (they use
pkgarortar.gzformats).
Read this page before porting programs to Redox
In order for this repository to be useful, it must be set up with an environment from the redox repository.
Recipe Categories
The categories inside the recipes folder.
backends- Middlewares, like SDL2core- System components (included onserverbuild)demos- Software with demosdevelopment- Any software used for development, like compilers and dependency managersdocumentation- Software used for documentationemulators- Console emulators or compatibility/translation layersexamples- Softwares with examplesgames- Any kind of gamegui- Graphical interfacesicons- Icon packslibraries- Software with functions for other softwares, like OpenSSLnetwork- Networking toolsother- Software that can't fit on other categoriesshells- Terminal interpreterssound- Software used for sound processing/productiontests- Software used to test other softwarestoolkits- Software used to create other softwares with a framework-like approachtools- Text editors, terminal tools and any other kind of toolstui- Graphical terminal interfacesvideo- Video players and video processing/production toolswip- Software that needs porting or incomplete recipes
Package Policy
Before sending your recipe to upstream (to become a public package), you must follow these rules:
Cross-Compilation
- All recipes must use our cross-compilers, a Cookbook template does this automatically but it's not always possible, study the build system of your program/library to find these options or patch the configuration files.
- Don't hardcode the CPU architecture on the recipe script.
Tarballs
- Don't use the auto-generated tarballs from GitHub, they aren't static and don't verify the archive integrity.
Library Linking
- Keep the static linking of libraries, there's an exception if the package become bigger than 100MB, big libraries/runtimes like LLVM can be dynamically linked.
ABI stability
- Respect the ABI separation of the libraries, for example, if
openssl1is available and some program needopenssl3, you will create a recipe foropenssl3and not rename theopenssl1, as it will break the dependent packages.
Checksum
- If your recipe download a tarball, you will need to create a BLAKE3 hash for it. You can learn how to do it here.
License
- Don't package programs/libraries lacking a license.
- Verify if the program has some license violation, in case of doubt ask us on the chat.
Testing Area
Work-in-progress software ports goes to the wip category, be aware of these items during your packaging process:
- A recipe is considered ready if it's mostly working inside of Redox.
- All WIP recipes must have a
#TODOon the beginning of therecipe.tomland explain what is missing. - BLAKE3 hashes for tarballs are optional (quick testing workflow)
- Try to keep the recipe with the latest stable version of the program (the porting process can take months).
- Once the recipe is ready, add the BLAKE3 hash if needed and move the folder to the appropriate category.
Suggestions for TODOs
These TODOs improve the packagers cooperation and understanding.
not compiled or tested- It means that your recipe is fully configured and don't lack necessary dependencies.missing script for x, see insert-the-link-for-build-instructions-here- It means that your recipe is lacking the cross-compilation script for some build system, wherexis the build system name. Afterseeyou will insert the link for the build instructions of the program or library, it will help other packagers to insert the script for you.missing dependencies, see insert-the-link-for-required-dependencies-here- It means that thedependencies = []section is incomplete.probably wrong script, see insert-the-link-for-build-instructions-here- It means that you don't know if your script will work.probably wrong template, see insert-the-link-for-build-instructions-here- It means that you don't know if the Cookbook template will work.probably missing dependencies, see insert-the-link-for-required-dependencies-here- It means that you don't know if the required dependencies are satisfied.
Other TODOs are specific and won't be covered on this list.
Repository Layout
.cargo- Cargo configuration.bin- LLVM and pkg-config CPU targets.recipes- Package configuration files.src- Package system source code.
TODO
- Convert old recipes to TOML, see this tracking issue.
- Remove the scripts after full TOML conversion.