ALPM Scripts
This crate contains development integration for testing and interacting with Arch Linux Package Management. Currently supported features:
- Download current live data from an Arch Linux Mirror.
- Test existing parsers against downloaded data.
Documentation
- https://alpm.archlinux.page/rustdoc/dev_scripts/ for development version of the crate
Prerequisites
rsyncfor package and database downloads.tarto extract packages.git- A registered Arch Linux GitLab account and a configured environment to pull from it via
ssh. - Disk space (around ~100GB). Especially the package download is quite big:
packages: ~90GBdatabases: ~1GBpkg-src-repositories: ~3GBaur: ~1GB
Workflow
As an example, this is how you would test the .BUILDINFO validation:
- Sync all current packages to a cache location.
This implicitly extracts their metadata for use in tests.
Successive calls sync the local cache directory with the remote state.
cargo run -- test-files download packages - Validate the current metadata in the local cache:
cargo run -- test-files test build-info
You can use the --repository flag for specifying repositories. The available package repositories are core, extra and multilib.
Tests against live data
The test-files subcommand of the scripts binary downloads live data from Arch mirrors and Arch’s GitLab to test the parser binaries on them.
Providing test integration for all file types is in scope of this crate, as soon as components for them exist.
Currently the following file types are supported:
- ALPM-DB-DESC
- ALPM-DB-FILES
- ALPM-MTREE
- ALPM-REPO-DESC
- ALPM-REPO-FILES
- BUILDINFO
- PKGINFO
- SRCINFO
Download
There are three different data sources, which can be downloaded individually:
Mirror Databases
Calling test-files download databases downloads the current repository sync databases from a given mirror and extracts them.
The default destination is ~/.cache/alpm/testing/databases. A dedicated folder will be created for each package repository.
Mirror Packages
Calling test-files download packages downloads the current packages from a given mirror and extracts all metadata files from them.
The default destination is ~/.cache/alpm/testing/packages. A dedicated folder will be created for each package repository.
Packages Source Repository
Calling test-files download pkg-src-repositories downloads the package source repositories for all active packages and extracts all package metadata files from them.
The default destination is ~/.cache/alpm/testing/pkgsrc.
AUR
Calling test-files download aur downloads the current AUR packages and extracts all package metadata files from them.
The default destination is ~/.cache/alpm/testing/aur.
Testing
To run the parser tests for a specific file type run test-files test $FILE_TYPE. For instance: test-files test build-info.
Depending on which file type you want to test, you need to download the respective data first.
test-files download databases will contain the following file types:
descfiles
test-files download packages will contain the following file types:
.INSTALL.BUILDINFO.MTREE.PKGINFO
test-files download pkg-src-repositories will contain the following file types:
.SRCINFOPKGBUILD
test-files download aur will contain the following file types:
.SRCINFOPKGBUILD