diff options
| author | Kunoi Sayami <[email protected]> | 2021-11-01 23:13:09 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-11-01 23:13:09 +0800 |
| commit | 9a3255c44047fcea27f6922639585aa5ddae32e6 (patch) | |
| tree | b1bff8073139f5a2643e4643ebb8fb7b7ed2ae0c /pkgbuild.sh | |
| parent | 1e6b0bcbde4cc242269997065e8ddab26ca5dbc6 (diff) | |
feat(build): [REBUILD] Enhance AUR dependencies resolve way (#11)
* refactor(script): Change the way of retrieve aur dependencies and gpg key
* fix(docker): Fix docker not init pacman keys
* feat(build): Add a way to reduce rebuild workload
Signed-off-by: KunoiSayami <[email protected]>
Diffstat (limited to 'pkgbuild.sh')
| -rwxr-xr-x | pkgbuild.sh | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/pkgbuild.sh b/pkgbuild.sh index c7c3888..3779a57 100755 --- a/pkgbuild.sh +++ b/pkgbuild.sh @@ -7,13 +7,13 @@ set -Eeuo pipefail trap cleanup SIGINT SIGTERM ERR EXIT cleanup() { trap - SIGINT SIGTERM ERR EXIT - unset PACKAGE_NAME + unset SKIP_VERIFIED + unset FOLDER_NAME unset PKGDEST unset SRCDEST unset CONFDEST unset REPO_DEST rm -f "$TMPCONF" - rm -f "$REPO_PENDING" rm -f "$REPO_DIFF" unset TMPCONF unset REPO_PENDING @@ -27,15 +27,14 @@ PKGBUILD_DIRECTORY_BASE="repo" PKGDEST="${PWD}/packages/$ARCH" SRCDEST="${PWD}/build" CONFDEST="${PWD}/makepkg.d/makepkg.$ARCH.conf" -REPO_PENDING="${PWD}/packages/$ARCH/PENDING" REPO_DIFF="${PWD}/packages/$ARCH/DIFF" +SKIP_VERIFIED=0 TMPCONF=$(mktemp -t makepkg.$ARCH.conf.XXXXXXXXXX) || exit 1 cat "${PWD}/makepkg.d/makepkg.base.conf" > "$TMPCONF" cat "$CONFDEST" >> "$TMPCONF" touch "$REPO_DIFF" -touch "$REPO_PENDING" function get_diff_list { git diff --name-only HEAD^ | while read line; do @@ -53,7 +52,10 @@ if [ $# -gt 0 ] && [ "$1" = "--diff" ]; then exit 0 fi -if [ $# -gt 0 ] && [ "$1" = "--all" ] || [ -n "$CI_COMMIT_TITLE" ] && [[ $CI_COMMIT_TITLE =~ "fix(repo)" ]]; then +if [ $# -gt 0 ] && [ "$1" = "--all" ] || [ -n "$CI_COMMIT_TITLE" ] && [[ $CI_COMMIT_TITLE =~ fix\(repo\)|REBUILD ]]; then + if [ -z "${SKIP_SOME+x}" ] || [ -n "$CI_COMMIT_MESSAGE" ] && [[ $CI_COMMIT_MESSAGE =~ \[SKIP\ SOME\] ]]; then + SKIP_VERIFIED=1 + fi ls $PKGBUILD_DIRECTORY_BASE > "$REPO_DIFF" else get_diff_list @@ -61,24 +63,46 @@ fi pushd $PKGBUILD_DIRECTORY_BASE || ( echo "Error, can't switch to pkgbuild directory" && exit 1 ) -while read PACKAGE_NAME ; do - #PACKAGE_NAME=$(printf $folder | sed 's/.$//') - pushd "$PACKAGE_NAME" || continue +while read FOLDER_NAME ; do + if [ ! -d "$FOLDER_NAME" ]; then + continue + fi + pushd "$FOLDER_NAME" || continue + # Check PKGBUILD architecture if ! ( pcregrep -M 'arch=\([^\)]*\)' PKGBUILD | grep -E "$ARCH|any" >/dev/null ); then popd continue fi - SRCPKGDEST=$SRCDEST SRCDEST=$SRCDEST PKGDEST=$PKGDEST MAKEPKG_CONF="$TMPCONF" makepkg --clean -s --asdeps --noconfirm --needed --noprogressbar - echo "$PACKAGE_NAME" >> "$REPO_PENDING" + + if [ $SKIP_VERIFIED -eq 1 ] && grep -Fxq "$FOLDER_NAME" "../.verified_repos"; then + popd + continue + fi + + if [ -r ../.yaydeps/"$FOLDER_NAME" ]; then + while read YAYDEP ; do + if [ -d "../$YAYDEP" ]; then + pushd "../$YAYDEP" + SRCPKGDEST=$SRCDEST SRCDEST=$SRCDEST PKGDEST=$PKGDEST MAKEPKG_CONF="$TMPCONF" makepkg --clean -si --asdeps --noconfirm --needed --noprogressbar + popd + else + yay -S --noconfirm --needed --asdeps "$YAYDEP" + fi + done < ../.yaydeps/"$FOLDER_NAME" + fi + + if [ -r ../.gpg_keys/"$FOLDER_NAME" ]; then + . ../.gpg_keys/"$FOLDER_NAME" + fi + + SRCPKGDEST=$SRCDEST SRCDEST=$SRCDEST PKGDEST=$PKGDEST MAKEPKG_CONF="$TMPCONF" makepkg --clean -s --asdeps --noconfirm --needed --noprogressbar || echo "Skip $FOLDER_NAME" popd done < "$REPO_DIFF" popd if [ -z "${BUILD_ONLY+x}" ]; then - ./repodb.sh < "$REPO_PENDING" -else - echo "Add package to database is skipped" + echo "This option is depreacted, this script isn't process repository database now" fi date +%s > "$PKGDEST/LASTBUILD" |
