Add AUR helper script, README, conf, and LICENSE
This commit is contained in:
parent
bc65185edf
commit
ba34f4735e
4 changed files with 1642 additions and 0 deletions
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 Stephen Seo
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
99
README.md
Normal file
99
README.md
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
# Another AUR Helper (incomplete)
|
||||||
|
|
||||||
|
AUR is the Arch User Repository, where anyone can upload a PKGBUILD and
|
||||||
|
supplementary sources to allow others to build their own packages for use in the
|
||||||
|
Arch Linux distribution.
|
||||||
|
|
||||||
|
I made an incomplete AUR Helper in Python, and decided to put it in a public
|
||||||
|
repository. It's messy, and it requires a significant amount of set-up, but it
|
||||||
|
works for me. It always builds in a CHROOT, and it lets the user check the
|
||||||
|
PKGBUILD (by default) prior to building. There is no automatic dependency
|
||||||
|
management. That must be done in the config. An example config is provided.
|
||||||
|
|
||||||
|
# Setting up the AUR Helper
|
||||||
|
|
||||||
|
The AUR Helper requires several things:
|
||||||
|
|
||||||
|
- A CHROOT to build in
|
||||||
|
- A "checking GNUPG" directory that contains the GPG public keys that will be
|
||||||
|
checked when building the PKGBUILD
|
||||||
|
- A "singing GNUPG" directory that contains the GPG private key that will sign
|
||||||
|
the built packages and repository database.
|
||||||
|
- SUDO privileges to be able to use `makechrootpkg`
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
The `devtools` package is required.
|
||||||
|
|
||||||
|
The `python-packaging` and `python-toml` packages are required for the Python
|
||||||
|
script to run.
|
||||||
|
|
||||||
|
## Create the CHROOT
|
||||||
|
|
||||||
|
Use `/usr/bin/mkarchroot` to create your CHROOT in a directory.
|
||||||
|
|
||||||
|
mkarchroot $HOME/mychroot base base-devel
|
||||||
|
|
||||||
|
You must refer to the CHROOT as `$HOME/mychroot` if you used the same name as in
|
||||||
|
the previous example.
|
||||||
|
|
||||||
|
## Set up the GNUPG dirs
|
||||||
|
|
||||||
|
### Checking GNUPG
|
||||||
|
|
||||||
|
Just create the directory anywhere, and store it in the `config.toml`. You must
|
||||||
|
manually add public keys to it if a package requires checking source files with
|
||||||
|
GNUPG.
|
||||||
|
|
||||||
|
GNUPGHOME=$HOME/myCheckingGNUPGDir gpg --recv-keys A_DEV_KEYS_FINGERPRINT
|
||||||
|
|
||||||
|
### Signing GNUPG
|
||||||
|
|
||||||
|
You will need to set up a GPG public/private key pair. GNUPG always respects the
|
||||||
|
`GNUPGHOME` environment variable as the `.gnupg` dir, so set the variable first,
|
||||||
|
then set up your keys. The keys will be used to sign the packages you build and
|
||||||
|
the custom repository that stores the package metadata.
|
||||||
|
|
||||||
|
Set the `signing_gpg_key_fp` variable in the config to the output fingerprint
|
||||||
|
from of:
|
||||||
|
|
||||||
|
GNUPGHOME=mySigningGNUPGDir gpg --fingerprint
|
||||||
|
|
||||||
|
Note that you must remove the spaces between each part of the fingerprint, like
|
||||||
|
in the example config.
|
||||||
|
|
||||||
|
Keep note of the password you store for this GNUPG key, as you will enter it
|
||||||
|
every time you use the Python script.
|
||||||
|
|
||||||
|
## Set up the config dir
|
||||||
|
|
||||||
|
See the `example_config.toml` for more configuration. It should be commented
|
||||||
|
enough for figuring out how to use it.
|
||||||
|
|
||||||
|
# Using the AUR Helper
|
||||||
|
|
||||||
|
Typically, you will invoke:
|
||||||
|
|
||||||
|
./update.py --config my_config.toml
|
||||||
|
|
||||||
|
If you want to build in the CHROOT without updating the CHROOT, add the
|
||||||
|
`--no-update` flag.
|
||||||
|
|
||||||
|
If you want to check only specific packages in the list of packages in the
|
||||||
|
config use something like `-p <package-name>`. You can use `-p <package_name>`
|
||||||
|
multiple times if you want to check a handful of packages only.
|
||||||
|
|
||||||
|
If you want to not skip a package marked with `skip_branch_up_to_date` in the
|
||||||
|
config, then use `--no-skip <package-name>`, and the script will act as if
|
||||||
|
`skip_branch_up_to_date` was not specified for the named package.
|
||||||
|
|
||||||
|
When building, the script will not directly output to the terminal it is run in,
|
||||||
|
but rather appends to log files in the log directory specified in the config. To
|
||||||
|
see the output while building, you can use something like:
|
||||||
|
|
||||||
|
tail -f $MY_LOG_DIR/google-chrome_stdout_2022-06-02_05-27-49_UTC
|
||||||
|
|
||||||
|
It may be helpful to periodically clear out the logs directory in between
|
||||||
|
invocations of the AUR Helper script.
|
||||||
|
|
||||||
|
It is recommended to use the script with a prepared config.
|
319
example_config.toml
Normal file
319
example_config.toml
Normal file
|
@ -0,0 +1,319 @@
|
||||||
|
########## MANDATORY VARIABLES
|
||||||
|
custom_cache = "/home/custompkgs"
|
||||||
|
chroot = "/home/stephen/Downloads/aur/chroot"
|
||||||
|
pkg_dir = "/home/custompkgs"
|
||||||
|
repo = "/home/custompkgs/custom.db.tar"
|
||||||
|
dirs_dir = "/home/stephen/Downloads/aur"
|
||||||
|
gpg_dir = "/home/stephen/Downloads/aur/checkingGPG"
|
||||||
|
logs_dir = "/home/stephen/Downloads/aur/logs"
|
||||||
|
signing_gpg_dir = "/home/stephen/Downloads/aur/signingGPG"
|
||||||
|
signing_gpg_key_fp = "04D9E3A2880F6418EC4BA70EA0F3F8FAA2088E62"
|
||||||
|
########## END OF MANDATORY VARIABLES
|
||||||
|
|
||||||
|
# Each [[entry]] needs a "name".
|
||||||
|
# it is expected that the name matches a repo's name at https://aur.archlinux.org/
|
||||||
|
# For example, "aurutils" repo is fetched from https://aur.archlinux.org/aurutils.git
|
||||||
|
#
|
||||||
|
# It may be handy to specify "skip_branch_up_to_date" for packages that do not
|
||||||
|
# build directly from a git repository (packages ending in "-git").
|
||||||
|
# Packages with this setting will not prompt to check the PKGBUILD if the
|
||||||
|
# .SRCINFO version is not newer than the current latest package in the custom
|
||||||
|
# repo, and it will be skipped.
|
||||||
|
#
|
||||||
|
# For AUR dependencies, an "aur_deps" array needs to be specified.
|
||||||
|
# AUR dependencies must appear before the package that depends on them in this
|
||||||
|
# list. If building these dependencies for the first time, the dependent package
|
||||||
|
# may fail checks until the dependencies are built and stored in the repo.
|
||||||
|
#
|
||||||
|
# There is support for "ccache" and "sccache".
|
||||||
|
# Make a directory somewhere, then specify its path with the "ccache_dir"
|
||||||
|
# or "sccache_dir" variables.
|
||||||
|
# sccache supports the additional "sccache_cache_size" variable, which can be
|
||||||
|
# set to a string such as "5G". If "sccache_cache_size' is not specified, then
|
||||||
|
# "5G" is used.
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "arcanist-git"
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "aurutils"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "cef-minimal"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "cpufetch-git"
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "f3"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "flamegraph-git"
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "g810-led-git"
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "glfw-git"
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "gnome-icon-theme-symbolic"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "gnome-icon-theme"
|
||||||
|
aur_deps = [
|
||||||
|
"gnome-icon-theme-symbolic"
|
||||||
|
]
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "gnvim"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "perl-file-rename"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "icecat"
|
||||||
|
aur_deps = [
|
||||||
|
"perl-file-rename"
|
||||||
|
]
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "ion-git"
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "ly"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "nouveau-fw"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "ncurses5-compat-libs"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "opencl-amd"
|
||||||
|
aur_deps = [
|
||||||
|
"ncurses5-compat-libs"
|
||||||
|
]
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "epson-inkjet-printer-escpr"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "epson-inkjet-printer-escpr2"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "google-chrome"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "ifuse"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "libva-vdpau-driver-chromium"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mate-screensaver-hacks"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mcrcon"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "minecraft-launcher"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-environment"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-glm"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-lua"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-pkg-config"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-cmake"
|
||||||
|
aur_deps = [
|
||||||
|
"mingw-w64-pkg-config",
|
||||||
|
"mingw-w64-environment"
|
||||||
|
]
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-configure"
|
||||||
|
aur_deps = [
|
||||||
|
"mingw-w64-pkg-config",
|
||||||
|
"mingw-w64-environment"
|
||||||
|
]
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-zlib"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-libpng"
|
||||||
|
aur_deps = [
|
||||||
|
"mingw-w64-pkg-config",
|
||||||
|
"mingw-w64-environment",
|
||||||
|
"mingw-w64-configure",
|
||||||
|
"mingw-w64-zlib"
|
||||||
|
]
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-make"
|
||||||
|
aur_deps = [
|
||||||
|
"mingw-w64-environment"
|
||||||
|
]
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-libsodium"
|
||||||
|
aur_deps = [
|
||||||
|
"mingw-w64-environment",
|
||||||
|
"mingw-w64-configure",
|
||||||
|
"mingw-w64-pkg-config"
|
||||||
|
]
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-glfw"
|
||||||
|
aur_deps = [
|
||||||
|
"mingw-w64-pkg-config",
|
||||||
|
"mingw-w64-environment",
|
||||||
|
"mingw-w64-cmake"
|
||||||
|
]
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-raylib"
|
||||||
|
aur_deps = [
|
||||||
|
"mingw-w64-pkg-config",
|
||||||
|
"mingw-w64-environment",
|
||||||
|
"mingw-w64-cmake",
|
||||||
|
"mingw-w64-glfw"
|
||||||
|
]
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "mingw-w64-ldd"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "moonscript"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "nginx-mainline-mod-fancyindex"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "non-mixer-lv2-git"
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "obs-studio-git"
|
||||||
|
aur_deps = [
|
||||||
|
"cef-minimal"
|
||||||
|
]
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "obs-v4l2sink"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "pasystray-git"
|
||||||
|
aur_deps = [
|
||||||
|
"gnome-icon-theme"
|
||||||
|
]
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "pikaur"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "qjoypad"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "qt5-wayland-bugfixport-git"
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "quaternion"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "samsung-unified-driver"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "stdman"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "sunvox"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "wlroots-git"
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "swaybg-git"
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "sway-git"
|
||||||
|
aur_deps = [
|
||||||
|
"wlroots-git",
|
||||||
|
"swaybg-git"
|
||||||
|
]
|
||||||
|
other_deps = [
|
||||||
|
"mesa"
|
||||||
|
]
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "texlive-tikz-uml"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "ttf-clear-sans"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "umlet"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "ungoogled-chromium"
|
||||||
|
ccache_dir = "/home/stephen/Downloads/aur/ccache_ungoogled_chromium"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "wev"
|
||||||
|
skip_branch_up_to_date = true
|
||||||
|
|
||||||
|
[[entry]]
|
||||||
|
name = "wlhangul-git"
|
Loading…
Reference in a new issue