readme
This commit is contained in:
parent
b641cc3c96
commit
b07d0ea8a4
83
README.md
83
README.md
@ -1,17 +1,82 @@
|
||||
# AURCache
|
||||
A cache build server for Archlinux AUR packages and serving them
|
||||
|
||||
AURCache is a build server and repository for Archlinux packages sourced from the AUR (Arch User Repository). It features a Flutter frontend and Rust backend, enabling users to add packages for building and subsequently serves them as a pacman repository. Notably, AURCache automatically detects when a package is out of date and displays it within the frontend.
|
||||
|
||||
## Deployment with Docker and Docker-compose
|
||||
|
||||
To deploy AURCache using Docker and Docker-compose, you can use the following example docker-compose.yml file:
|
||||
|
||||
```yaml
|
||||
version: '3'
|
||||
services:
|
||||
aurcache:
|
||||
image: luki42/aurcache:latest
|
||||
ports:
|
||||
- "8080:8080"
|
||||
- "8081:8081"
|
||||
volumes:
|
||||
- ./aurcache/db:/app/db
|
||||
- ./aurcache/repo:/app/repo
|
||||
```
|
||||
|
||||
Make sure to define the db path and repo path as volumes.
|
||||
|
||||
The default Port 8081 serves the Frontend and Port 8080 serves the Repository.
|
||||
|
||||
To start AURCache with Docker-compose, run:
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Access AURCache through your web browser at http://localhost:8081.
|
||||
|
||||
You can now start adding packages for building and utilizing the AURCache repository.
|
||||
|
||||
Add the following to your `pacman.conf` on your target machine to use the repo:
|
||||
|
||||
```bash
|
||||
# nano /etc/pacman.conf
|
||||
[repo]
|
||||
SigLevel = Optional TrustAll
|
||||
Server = http://localhost:8080/
|
||||
```
|
||||
|
||||
## Build Info
|
||||
|
||||
The AURCache project comprises two main components: a Flutter frontend and a Rust backend.
|
||||
### Frontend (Flutter)
|
||||
|
||||
To build the Flutter frontend, ensure you have Flutter SDK installed. Then, execute the following commands:
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
flutter pub get
|
||||
flutter build web
|
||||
```
|
||||
|
||||
### Backend (Rust)
|
||||
|
||||
To build the Rust backend, make sure you have Rust installed. Then, navigate to the backend directory and run:
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
## Things still missing
|
||||
|
||||
* proper error return to api
|
||||
* package updates
|
||||
* multiple package versions
|
||||
* error checks if requested package does not exist
|
||||
* proper error return from api
|
||||
* proper logging
|
||||
* auto update packages
|
||||
* built package version differs from aur pkg version eg. mesa-git
|
||||
* implement repo-add in rust
|
||||
* cicd
|
||||
* build table where all version builds are with stdout
|
||||
* endpoint to get build log
|
||||
* keep older pkg versions in repo (repo-add limitation)
|
||||
|
||||
|
||||
## Contributors
|
||||
|
||||
Lukas-Heiligenbrunner
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License. Feel free to contribute and modify as per the guidelines outlined in the license agreement.
|
||||
|
@ -14,6 +14,8 @@ use crate::api::embed::CustomHandler;
|
||||
use crate::builder::types::Action;
|
||||
use crate::db::migration::Migrator;
|
||||
use crate::scheduler::aur_version_update::start_aur_version_checking;
|
||||
use flate2::read::GzEncoder;
|
||||
use flate2::Compression;
|
||||
use rocket::config::Config;
|
||||
use rocket::fs::FileServer;
|
||||
use rocket::futures::future::join_all;
|
||||
@ -21,6 +23,9 @@ use rocket_okapi::swagger_ui::{make_swagger_ui, SwaggerUIConfig};
|
||||
use sea_orm::{Database, DatabaseConnection};
|
||||
use sea_orm_migration::MigratorTrait;
|
||||
use std::fs;
|
||||
use std::fs::File;
|
||||
use tar::Archive;
|
||||
use tokio::fs::symlink;
|
||||
use tokio::sync::broadcast;
|
||||
|
||||
fn main() {
|
||||
@ -43,6 +48,22 @@ fn main() {
|
||||
// create repo folder
|
||||
if !fs::metadata("./repo").is_ok() {
|
||||
fs::create_dir("./repo").unwrap();
|
||||
|
||||
let tar_gz = File::create("./repo/repo.db.tar.gz").unwrap();
|
||||
let enc = GzEncoder::new(tar_gz, Compression::default());
|
||||
let mut tar = tar::Builder::new(enc);
|
||||
tar.finish().expect("failed to create repo archive");
|
||||
symlink("./repo/repo.db.tar.gz", "./repo/repo.db")
|
||||
.await
|
||||
.expect("failed to create repo symlink");
|
||||
|
||||
let tar_gz = File::create("./repo/repo.files.tar.gz").unwrap();
|
||||
let enc = GzEncoder::new(tar_gz, Compression::default());
|
||||
let mut tar = tar::Builder::new(enc);
|
||||
tar.finish().expect("failed to create repo archive");
|
||||
symlink("./repo/repo.files.tar.gz", "./repo/repo.files")
|
||||
.await
|
||||
.expect("failed to create repo symlink");
|
||||
}
|
||||
|
||||
let db2 = db.clone();
|
||||
|
Loading…
Reference in New Issue
Block a user