amprolla is an apt repository merger originally intended for use with the Devuan infrastructure. This version is the third iteration of the software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Mark Hindley 869d243f25 Fix quoting of heredoc for loop variables. 4 months ago
contrib [release] Add aliases. 5 months ago
doc refactor sign_release to use gnupg directly via subprocess 3 years ago
gnupg add example gnupg dir 3 years ago
lib Add --no-lock-I-am-sure to all amprolla steps. 4 months ago
.gitignore implement basics of checking the remote for updates 3 years ago
LICENSE Implement dependency alternatives parsing. 2 years ago
README.md [release] Update README with release instructions 5 months ago
TODO.md Remove Translation files from TODO list. 4 months ago
amprolla_init.py Add --no-lock-I-am-sure to all amprolla steps. 4 months ago
amprolla_merge.py Add --no-lock-I-am-sure to all amprolla steps. 4 months ago
amprolla_merge_contents.py Add --no-lock-I-am-sure to all amprolla steps. 4 months ago
amprolla_merge_translations.py Ensure field order is constant throughout Translations file. 4 months ago
amprolla_update.py Add --no-lock-I-am-sure to all amprolla steps. 4 months ago
orchestrate.sh Fix quoting of heredoc for loop variables. 4 months ago

README.md

amprolla

amprolla is an apt repository merger originally intended for use with the Devuan infrastructure. This version is the third iteration of the software. The original version of amprolla was not performing well in terms of speed, and the second version was never finished - therefore this version has emerged.

amprolla is a tool that will merge a number of different apt-based repositories into one, while giving control over (not) including given packages, architectures, or any specific package metadata. Upon completing the merge, amprolla will generate and optionally create GnuPG signatures of the according Release files.

Dependencies

amprolla requires Python 3, the lowest version it’s been tested on was Python 3.4. It also requires the python-requests library.

Devuan/Debian

rsync gnupg2 python3-requests

Gentoo:

net-misc/rsync app-crypt/gnupg dev-python/requests

Basic usage

Copy lib/config.def.py to lib/config.py and edit lib/config.py to your needs, and then run amprolla_init.py. This will download the repositories we will merge afterwards. When this is done, you can run amprolla_merge.py which will perform the actual merge, and finally sign the Release files needed. The first time this is done, it is advisable to run the script found in contrib/populate_aliases.sh so it can fill in the needed symlinks to the different suites. Make sure you set the correct paths and names in the script.

To perform incremental updates, run orchestrate.sh with a cron job in your desired intervals. Edit the script to set the correct paths.

nginx and lighttpd configurations can be found in contrib.

More documentation should be found in the doc directory.

Adding a suite

If, once set up, you need to add a suite, this general process seems to work:

  • Change the config file
  • Run amprolla_init.py
  • Run something like cp -a spool/devuan/dists/${SUITEDIR} merged-volatile/dists/${SUITEDIR}
  • Run amprolla_merge_contents.py
  • Pray to the amprolla gods
  • Run amprolla_merge.py
  • Check that things look alright, specifically that things were indeed merged in the suite.
  • If sth goes wrong, it might be due to unreasonable assumptions in the code. Please do open an issue / shoot an email / ping on IRC

Releasing

  • Adapt lib/config.py so that all aliases are up to date.
  • Check contrib/populate_aliases.sh and adapt it if necessary.
  • Backup the spool directory: mv spool spool.old
  • Re-create the spool directory: amprolla_init.py
  • Ensure there is a suite dir in merged-volatile for each suite in spool: for dist in $(ls spool/devuan/dists/); do ls "merged-volatile/dists/${dist}"; done (Watch out for warnings about non-existing directories)
  • Proceed as if you were adding a suite (after amprolla_init.py)