GithubHelp home page GithubHelp logo

tranzystorek-io / anda Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fyralabs/anda

0.0 1.0 0.0 534 KB

A Source-based meta-package manager

License: MIT License

Shell 14.05% Rust 73.15% Dockerfile 0.56% HTML 0.24% JavaScript 0.17% TypeScript 11.74% SCSS 0.09%

anda's Introduction

Andaman Project

Andaman

Andaman is a build system (and soon, a package manager) written in Rust. It is inspired by Ultramarine Linux's umpkg project, and allows you to quickly build multiple types of projects into different artifacts.

NOTE: Currently, Andaman only supports building RPM packages. Support for other artifact types will be added soon. Currently OCI/Docker is our secondary goal.

Andaman is planned to have the following features:

  • Building artifact
  • resolving and installing RPM packages
  • Signing packages
  • Build artifacts for:
    • Disk images and live media (powered by Lorax)
    • OSTree composes
    • RPM-OSTree composes
    • Docker images
    • Flatpak
  • Generating whole repositories and composes from the above mentioned artifacts
  • An extra user repository for packages that cannot be included in the main repositories (like the AUR)

It is planed to be the centerpiece of Ultramarine Linux (and tauOS) and its ecosystem, and a replacement for the existing Koji system.

Why?

Currently, Ultramarine Linux uses the Koji system to build packages.

The build system itself is a bit of a mess, and requires a lot of manual setup to get a working system. Koji contains a lot of legacy code and while flexible, it is very hard to use and maintain. Fedora's packaging stack consists of many complicated services such as Bodhi and Pungi to add extra functionality to the system. Which means that small communities like Ultramarine cannot use the same large stack of services.

The case is the same for Fyra Labs, who simply resorted to a series of very hacky solutions using Teleport to automatically build packages and push them to their own repositories. This is not very robust however, and scalability will become an issue when the number of repositories grows.

We want to create a stable, robust, and scalable build system that is easy to use and easy to maintain as an alternative to the Koji project.

The architecture

Andaman is a build system written in Rust, and is powered by the following components:

  • Minio (and S3 powered by the AWS Rust SDK) for storing artifacts
  • Rocket for the server
  • React for the web interface
  • TailwindCSS for the web interface
  • RPM the RPM package manager for building RPM packages
  • DNF for resolving RPM packages and installing them (until we have a proper RPM frontend)
  • Kubernetes for build orchestration
  • PostgreSQL for storing build metadata
  • SeaORM for database access

Roadmap

  • Building RPM packages
  • Build artifact management
  • Task scheduling for builds
  • Full repository composition
  • Build artifact signing
  • OCI containers
  • OSTree composes (Flatpak and RPM-OSTree)
  • Building RPMs using an alternative package spec format

anda's People

Contributors

korewachino avatar lleyton avatar madonuko avatar tranzystorek-io avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.