All Projects → vodik → Repose

vodik / Repose

Licence: gpl-2.0
an archlinux repo poking tool

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Repose

Archuseriso
Build Arch Linux iso images, create live usb drives, install on usb drives.
Stars: ✭ 36 (-66.97%)
Mutual labels:  archlinux
Jlivecd
Live cd/dvd customization tool
Stars: ✭ 72 (-33.94%)
Mutual labels:  archlinux
Alwsl
Install archlinux as the WSL (Windows Subsystem for Linux) host.
Stars: ✭ 1,332 (+1122.02%)
Mutual labels:  archlinux
Abs cd
CI/CD for the Arch build system with webinterface.
Stars: ✭ 48 (-55.96%)
Mutual labels:  archlinux
Mkinitcpio Systemd Tool
Provisioning tool for systemd in initramfs (systemd-tool)
Stars: ✭ 60 (-44.95%)
Mutual labels:  archlinux
Paru
Feature packed AUR helper
Stars: ✭ 1,240 (+1037.61%)
Mutual labels:  archlinux
My Favorite Things
Moved to: https://gitlab.com/brennovich/my-favorite-things
Stars: ✭ 30 (-72.48%)
Mutual labels:  archlinux
Dots
A Repository For Config Files / Dotfiles / Themes / Color Schemes / Etc...
Stars: ✭ 100 (-8.26%)
Mutual labels:  archlinux
Bspwm Dotfiles
My Arch+Bspwm dotfiles
Stars: ✭ 61 (-44.04%)
Mutual labels:  archlinux
Kindd
A kindful dd, written in qt-quick.
Stars: ✭ 93 (-14.68%)
Mutual labels:  archlinux
Dots
Dotfiles for Arch Linux and OS X (branched)
Stars: ✭ 54 (-50.46%)
Mutual labels:  archlinux
.dot Org Files
Dotfiles, Emacs + Org-mode with babel and Literate programming.
Stars: ✭ 57 (-47.71%)
Mutual labels:  archlinux
Baru
A system monitor written in Rust and C
Stars: ✭ 87 (-20.18%)
Mutual labels:  archlinux
Dockerfiles
Docker Projects Collection
Stars: ✭ 43 (-60.55%)
Mutual labels:  archlinux
My Raspberry
My Archlinux Raspberry PI setup
Stars: ✭ 98 (-10.09%)
Mutual labels:  archlinux
Aur Out Of Date
Determines out-of-date AUR packages w.r.t. upstream version
Stars: ✭ 33 (-69.72%)
Mutual labels:  archlinux
Ctlosiso
Ctlos Linux source. Arch based distro x86-64(64-bit).
Stars: ✭ 74 (-32.11%)
Mutual labels:  archlinux
Mal
MAL: A MyAnimeList Command Line Interface [BROKEN: BLAME MyAnimeList]
Stars: ✭ 104 (-4.59%)
Mutual labels:  archlinux
Dotfiles
My dotfiles managed by GNU Stow - Arch, i3-gaps, bspwm, ncmpcpp, (neo)vim, zsh etc.
Stars: ✭ 99 (-9.17%)
Mutual labels:  archlinux
Aurdroid
Android AUR [Arch Linux user Repository] packages browser
Stars: ✭ 88 (-19.27%)
Mutual labels:  archlinux

repose

Travis CI Status Coverity Scan Build Status

Owning more than one Archlinux machine, I operate my own repository to distribute customized and/or extra packages between the various machines. repo-add, the provided tool for repository management, is frustratingly limited. Updating the repository after building a series of packages quickly turned into a slow monstrous bash script: either I had to have rather complex logic to figure out which packages are new, or I had to do the expensive operation of rebuilding the repository each time. Surly, though, this was something that could be automated.

repose is an Archlinux repository compiler.

Generally, it operates by building up two package caches: one that represents the contents of the database and another that represents the various packages sitting in the root directory of the database. Updating, then, is simply a sync operation operation between the two.

To sync, it takes advantage of several rules of Archlinux repositories to automate as much logic as possible:

  1. Repositories typically only hold one version of a package (and we're interesting in the newest version).
  2. Repositories typically only hold only one architecture.
  3. Repositories and packages are expected to be in the same directory.

Updating/Removing

Most simplistically:

repose -z foo
  1. Parse the contents of foo.db if it exists.
  2. If we find a new package in the database's folder, add it to the database.
  3. If we can't find a corresponding package to a database entry, remove it from the database.
  4. Write out an updated database.

To explicitly remove a package:

repose -zd foo [pkgs]

Removes the specified packages from the database.

To generate a complementary foo.files file, add the -f flags

repose -zf foo

Globbing

Its possible to use globbing. repose uses the following logic for finding/filtering packages:

  1. Does it match the package's filename
  2. Does it match the package's name
  3. Does it glob pkgname-pkgver

This allows for operations like:

Add latest detected version systemd to a repo:

repose foo systemd

Add a specific version of systemd to a repo:

repose foo systemd-209-1

Drop all git packages from the repo:

repose -zd foo '*-git-*'
     __
    '. \
     '- \
      / /_         .---.
     / | \\,.\/--.//    )
     |  \//        )/  /
      \  ' ^ ^    /    )____.----..  6
       '.____.    .___/            \._)
          .\/.                      )
           '\                       /
           _/ \/    ).        )    (
          /#  .!    |        /\    /
          \  C// #  /'-----''/ #  /
       .   'C/ |    |    |   |    |mrf  ,
       \), .. .'OOO-'. ..'OOO'OOO-'. ..\(,
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].