#!/bin/sh # MakePkg Repo-Add fn () { if ! { [ -f PKGBUILD ] || [ -h PKGBUILD ];}; then exit 1 fi find . -maxdepth 1 -type f -name "*.pkg.tar.$ext*" -delete # Maybe failed to sign because I forget to input gpg password for a long time, maybe also because terminal window too small cause gpg tui that ask password can't show? # May cause invalid database signature which cause invalid signature error when trying to download from repo # If this happened, maybe can be fixed by `mpra -c ~/programs/repos/fly/any/fsh-git; sudo pacman -Syy` # Maybe also need some more commands before: `cd ~/programs/repos/fly/any/repo || exit; rm fly-any* && repo-add -s -v fly-any.db.tar.gz *.zst; mpra -c ~/programs/repos/fly/any/fsh-git; sudo pacman -Syy` # So I choose to exit 1 if failed makepkg --sign -sf || exit 1 newpkg="$(find . -maxdepth 1 -type f -name "*.pkg.tar.$ext")" [ -d ../repo ] || mkdir ../repo mv "$newpkg" "$newpkg.sig" ../repo # need manually repo-add new database for first time initialization repo-add -s -v -R "$(find ../repo -maxdepth 1 -type f -name '*.db.tar.gz')" "../repo/$newpkg" # seems no need to delete *.old and *.old.sig, see https://mirror.fcix.net/archlinux/core/os/x86_64/ it do include *.old #find ../repo -maxdepth 1 -type f \( -name '*.old' -o -name '*.old.sig' \) -delete } ext=zst copy_any= copy= while getopts acC opt; do case $opt in # arch linux arm still using .xz instead of .zst as package compression format a) ext=xz;; # copy arch linux fly-any repo c) copy_any=1;; # Copy arch linux fly repo, needed because of pacman 7.0's # `DownloadUser = alpm` new feature in /etc/pacman.conf, else this # error: "error: failed retrieving file 'fly.db' from disk : Couldn't # open file /home/xyz/programs/repos/fly/x86_64/repo/fly.db". More see # https://archlinux.org/news/manual-intervention-for-pacman-700-and-local-repositories-required/. # I think it is due to now pacman try download as alpm:alpm user, but # my old repo is inside /home/xyz. The url's solution is not enough # because /home/xyz is 700, so I choose to mkdir a new dir in /var/lib. # I'm currently using fly repo for xyzinsp computer only, which has # native optimizations enabled in /etc/makepkg.conf. for backward # compatibility, I keep -c, but it maybe better if I make copying to # other directories the default behavior, or other ways. C) copy=1;; \?) exit 1;; esac done shift $((OPTIND-1)) if [ $# -eq 0 ]; then fn else for dir; do cd -- "$(realpath -- "$dir")" || exit fn done fi [ "$copy_any" ] && sudo rsync -vPrlu --delete ../repo/ /srv/http/mirrors/archlinux/fly/os/any if [ "$copy" ]; then if ! [ -d /var/lib/mpra ]; then # If then `sudo chown xyz:wheel /var/lib/mpra`, no need sudo to copy to # that dir, but not sure if this is safe. Because /var/cache/pacman is # root:root 755 permission, I choose to follow its permission and leave # it as default. sudo mkdir /var/lib/mpra fi # now only xyzinsp computer need this, but in the future maybe consider # following fly/os/any like naming conventions for different repo and # architecture. sudo rsync -vPrlu --delete ../repo/ /var/lib/mpra fi