aboutsummaryrefslogtreecommitdiff
path: root/pkgbuild.sh
diff options
context:
space:
mode:
authorKunoi Sayami <[email protected]>2021-11-01 23:13:09 +0800
committerGitHub <[email protected]>2021-11-01 23:13:09 +0800
commit9a3255c44047fcea27f6922639585aa5ddae32e6 (patch)
treeb1bff8073139f5a2643e4643ebb8fb7b7ed2ae0c /pkgbuild.sh
parent1e6b0bcbde4cc242269997065e8ddab26ca5dbc6 (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-xpkgbuild.sh50
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"