Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

ARGVUS Workflow

This repository provides the central, Make-based workflow for the ARGVUS Linux desktop ecosystem. It creates a predictable local workspace for the independent ARGVUS repositories, clones projects from the configured Git provider, builds Arch Linux packages, collects the resulting artifacts, installs them on the host, and provides cleanup and multi-remote push helpers.

The workflow is intentionally lightweight: the repository itself contains orchestration only. Each cloned project remains an independent checkout with its own Makefile, build system, package metadata, and Git history.

Workspace layout

Running a clone target creates the following directories when needed:

.
├── de/       # ARGVUS desktop-environment projects
├── web/      # Website and web-infrastructure projects
├── misc/     # Miscellaneous repositories
└── builds/   # Packages collected for installation

The desktop projects listed in PROJECTS_DE are the installable projects by default. A project is expected to provide a build target and to place its package in build/dist/ (or in the directory configured through PROJECTS_DE_DIST).

Requirements

The host should provide:

  • GNU Make
  • Git and access to the configured remote repositories
  • The build dependencies required by each ARGVUS project
  • Arch Linux makepkg tooling for package-producing projects
  • pacman and sudo for installation

The install target installs packages with pacman, so it must be run on an Arch Linux system with permission to elevate privileges.

Quick start

Clone all configured repositories, build every installable desktop project, and install the collected packages:

make clone-all
make build
make install

The install target depends on collect, so a separate collection step is not required. The shorter build-and-install workflow is therefore:

make build && make install

Before building, make sure the repositories have already been cloned with make clone-de or make clone-all.

Commands

Command Purpose
make help Show the available commands and configurable variables.
make clone-de Clone all desktop-environment repositories into de/. Existing directories are left untouched.
make clone-web Clone web projects into web/.
make clone-misc Clone miscellaneous projects into misc/.
make clone-all Run all three clone groups.
make build Remove old package artifacts from each project and invoke its build target.
make build-selected Build only the projects in SELECTABLE_PROJECTS_DE.
make collect Remove stale collected package files and copy the newest package from every installable project into builds/.
make install Collect packages and install the resulting argvus-*.pkg.tar.zst files with pacman.
make clean:dist Remove per-project package output directories for installable desktop projects.
make clean:all Run available clean targets and remove generated package output, node_modules, and builds/ across all cloned project groups.
make push:<branch> Push the selected branch of each desktop checkout to the configured lab and gitea remotes when available.

Build and collection are deliberately strict: collect fails if an installable project has no expected package. This prevents install from silently installing only a partial desktop environment.

Configuration

Variables can be overridden on the command line without editing the Makefile:

Variable Default Description
BASE_URL git@gitlab:argvus Base Git URL used to construct clone URLs such as $(BASE_URL)/argvus-shell.git.
PROJECTS_DE_DIST build/dist Package output directory inside each desktop project.
BUILD_DIR builds Local directory used to collect packages before installation.
SELECTABLE_PROJECTS_DE argvus-control-center Projects built by build-selected.
REMOTES_PUSH lab gitea Git remotes used by push:<branch>.

Examples:

make clone-all BASE_URL=git@github.com:argvus
make build-selected
make collect BUILD_DIR=/tmp/argvus-builds
make install BUILD_DIR=/tmp/argvus-builds

Package handling

For each installable project, collect selects the newest file matching:

<project-name>-[0-9]*.pkg.tar.zst

An adjacent .sig file is copied when present. Previously collected package and signature files are removed before collection, avoiding stale packages from older builds. install passes only package archives to pacman; signature files are not included in the installation argument list.

Git behavior

Clone targets skip any project directory that already exists. They do not fetch, reset, or modify an existing checkout. The push helper operates only on desktop projects, skips repositories without the requested local branch or configured remote, and stops if an actual push fails.

Scope and ownership

This repository owns the cross-project workflow and directory layout. Individual ARGVUS repositories own their source code, package versions, dependencies, and project-specific build and clean implementations. When those contracts change, update the corresponding workflow variables or project Makefiles together.

About

🛠️📦🔄🐧 ΛRGVUS — Central Make-based workflow for building and managing the ΛRGVUS ecosystem

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages