GithubHelp home page GithubHelp logo

fyralabs / anda Goto Github PK

View Code? Open in Web Editor NEW
34.0 5.0 1.0 2.25 MB

A modern Build/CI System

Home Page: https://crates.io/crates/anda

License: MIT License

Rust 85.80% Shell 13.32% Dockerfile 0.54% HCL 0.34%
ci rust docker-image flatpak mock packaging-tool rpm-spec

anda's Introduction

Andaman Project

Andaman

Andaman is a package build toolchain written in Rust. It is designed to simplify building various types of packages.

It is inspired by umpkg and aims to be a more modern and flexible alternative. It is also designed for monorepos in mind, so you can define multiple projects with multiple package formats in a single repository.

You can look into the Fyra Wiki page and the Terra Devdocs for more technical details.

Installation

On systems with Terra, you can install it with sudo dnf5 in anda (or dnf).

On systems with Cargo, you can install it with cargo install anda.

Alternatively you can also manually download the sources from GitHub:

git clone https://github.com/FyraLabs/anda
cd anda
git checkout 0.1.18
cargo install --path .

How it works

Andaman is simply a meta-build system that calls upon other build systems to build and distribute packages. It works by reading a project manifest in anda.hcl and then calling the appropriate build system to build the package.

Features

  • Building RPMs
  • Building Docker/Podman/OCI images
  • Building Flatpak packages

How we use it at Fyra Labs

We use Andaman to quickly build packages for our distributions, Ultramarine Linux and TauOS. Another notable usage is the Terra repository, which provides more than 1000 packages for Fedora-based distributions. The artifacts generated by Andaman are then sent to Subatomic, our compose and repository manager.

History

The Andaman project has gone through many forms. We initially wrote Andaman as a custom RPM frontend as an alternative to DNF that is similar to that of an AUR helper. However, there were issues with rust and RPM support and we decided to move to a more general CI server based on BuildKit. This however turned into a massive feature creep of projects and so we decided to simply write a build system that can build artifacts for various package formats.

anda's People

Contributors

dependabot[bot] avatar imgbotapp avatar korewachino avatar lleyton avatar madonuko avatar tranzystorekk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

htgazurex1212

anda's Issues

Run mock inside rootless Podman container

This change will allow andaman to run on any distro, since all you need is podman and a base OCI image

Tasks

No tasks being tracked yet.

Rhai: Runtime error: No version preamble in spec (line 7, position 6)

i'm getting this error here (here)[https://github.com/terrapkg/packages/actions/runs/5340646352/jobs/9680694508#step:5:1] when an updated is attempted for prismlauncher-nightly/prismlauncher-qt5-nightly in terrapkg. i'm not really sure what's going on here, and this seems to have only started recently

Error messages are non-descriptive

For example, when building an RPM without mock installed, Anda panics with:

Building RPMs in anda-build/rpm
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/util.rs:127:36
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

We should probably attach some context to these errors, since they're currently a bit confusing.

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.