aboutsummaryrefslogtreecommitdiff
path: root/pkgbuild.sh
diff options
context:
space:
mode:
authorKunoiSayami <[email protected]>2021-11-07 13:48:41 +0800
committerKunoiSayami <[email protected]>2021-11-07 13:48:41 +0800
commit254846d3da3f6c7fb70b316f5ebdf2ce4215309f (patch)
tree67b310059f2825fc0555e05704706b5dc7e5d710 /pkgbuild.sh
parentd1e83791bd44afe1c74ba6bd0c4ede86852005bc (diff)
refactor(script): Move all script to utils folder
* feat(script): Build test package not request signing for now Signed-off-by: KunoiSayami <[email protected]>
Diffstat (limited to 'pkgbuild.sh')
-rwxr-xr-xpkgbuild.sh145
1 files changed, 0 insertions, 145 deletions
diff --git a/pkgbuild.sh b/pkgbuild.sh
deleted file mode 100755
index 7be46ab..0000000
--- a/pkgbuild.sh
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/bin/bash
-
-# end up when failed
-set -Eeuo pipefail
-
-# clean up when exit
-trap cleanup SIGINT SIGTERM ERR EXIT
-cleanup() {
- trap - SIGINT SIGTERM ERR EXIT
- unset UNSUCCESSFUL
- unset SKIP_VERIFIED
- unset FOLDER_NAME
- unset PKGDEST
- unset SRCDEST
- unset CONFDEST
- unset REPO_DEST
- rm -f "$TMPCONF"
- if ! { [ $# -gt 0 ] && [ "$1" = "--diff" ]; }; then
- rm -f "$REPO_DIFF"
- fi
- unset TMPCONF
- unset REPO_PENDING
- unset REPO_DIFF
- unset PKGBUILD_DIRECTORY_BASE
- unset ARCH
-}
-
-function hook {
- if [ -r ../.hook/"$1" ]; then
- echo "Running $1 Hook script"
- . ../.hook/"$1"
- fi
-}
-
-ARCH=$(uname -m)
-PKGBUILD_DIRECTORY_BASE="repo"
-PKGDEST="${PWD}/packages/$ARCH"
-SRCDEST="${PWD}/build"
-CONFDEST="${PWD}/makepkg.d/makepkg.$ARCH.conf"
-REPO_DIFF="${PWD}/packages/$ARCH/DIFF"
-SKIP_VERIFIED=1
-UNSUCCESSFUL=0
-
-TMPCONF=$(mktemp -t makepkg.$ARCH.conf.XXXXXXXXXX) || exit 1
-cat "${PWD}/makepkg.d/makepkg.base.conf" > "$TMPCONF"
-cat "$CONFDEST" >> "$TMPCONF"
-
-touch "$REPO_DIFF"
-
-function get_diff_list {
- git diff --name-only HEAD^ | while read line; do
- if [[ $line =~ $PKGBUILD_DIRECTORY_BASE/\..+ ]] && [ "$line" != "$PKGBUILD_DIRECTORY_BASE/.verified_repos" ]; then
- echo "$line" | cut -d'/' -f3 >> "$REPO_DIFF"
- elif [[ $line =~ $PKGBUILD_DIRECTORY_BASE ]]; then
- echo "$line" | cut -d'/' -f2 >> "$REPO_DIFF"
- fi
- done
- cp "$REPO_DIFF" "${REPO_DIFF}_tmp"
- sort -u "${REPO_DIFF}_tmp" > "$REPO_DIFF"
- rm -f "${REPO_DIFF}_tmp"
-}
-
-if [ $# -gt 0 ] && [ "$1" = "--diff" ]; then
- get_diff_list
- exit 0
-fi
-
-if [ "$EUID" -eq 0 ] ; then
- echo "\033[0;32mPlease run this script as non-root\033[0m"
- exit 3
-fi
-
-if [ $# -gt 0 ] && [ "$1" = "--all" ] || [ -n "$CI_COMMIT_TITLE" ] && [[ $CI_COMMIT_TITLE =~ fix\(repo\)|REBUILD ]]; then
- if [ -z "${FORCE_ALL+x}" ] || [ -n "$CI_COMMIT_TITLE" ] && [[ $CI_COMMIT_TITLE =~ REBUILD(\ |_)ALL ]]; then
- SKIP_VERIFIED=0
- fi
- ls $PKGBUILD_DIRECTORY_BASE > "$REPO_DIFF"
-else
- get_diff_list
- echo "Next"
-fi
-
-pushd $PKGBUILD_DIRECTORY_BASE || ( echo -e "\033[0;31mError, can't switch to pkgbuild directory\033[0m" && exit 1 )
-
-while read -r FOLDER_NAME ; do
- if [ ! -d "$FOLDER_NAME" ]; then
- echo -e "\033[0;32mSkip folder $FOLDER_NAME\033[0m"
- continue
- fi
- echo -e "\033[0;32mProcessing $FOLDER_NAME\033[0m"
- pushd "$FOLDER_NAME" || { echo -e "\033[1;33mWarning, can't chdir to $FOLDER_NAME, skipped\033[0m"; continue; }
-
- # hook must run before other checker
- hook "$FOLDER_NAME"
-
- # Check PKGBUILD architecture
- if ! ( pcregrep -M 'arch=\([^\)]*\)' PKGBUILD | grep -E "$ARCH|any" >/dev/null ); then
- echo -e "\033[0;32mSkip folder $FOLDER_NAME (Architecture not match)\033[0m"
- popd
- continue
- fi
-
- if [ -n "$CI_COMMIT_TITLE" ] && [[ $CI_COMMIT_TITLE =~ fix\(repo\)|REBUILD ]] && \
- [ $SKIP_VERIFIED -eq 1 ] && grep -Fxq "$FOLDER_NAME" "../.verified_repos"; then
- echo -e "\033[0;32mSkip folder $FOLDER_NAME (verified repository)\033[0m"
- popd
- continue
- fi
-
- if [ -r ../.yaydeps/"$FOLDER_NAME" ]; then
- while read -r YAYDEP ; do
- if [ -d "../$YAYDEP" ]; then
- pushd "../$YAYDEP"
- hook "$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"
- # source: https://stackoverflow.com/a/53886735
- gpg --list-keys --fingerprint | grep pub -A 1 | grep -Ev "pub|--" | tr -d ' ' \
- | awk 'BEGIN { FS = "\n" } ; { print $1":6:" } ' | gpg --import-ownertrust
- fi
-
- SRCPKGDEST=$SRCDEST SRCDEST=$SRCDEST PKGDEST=$PKGDEST MAKEPKG_CONF="$TMPCONF" makepkg --clean -s --asdeps --noconfirm --needed --noprogressbar || { echo -e "\033[0;31mSkip folder $FOLDER_NAME\033[0m"; UNSUCCESSFUL=1; }
- popd
-done < "$REPO_DIFF"
-
-popd
-
-date +%s > "$PKGDEST/LASTBUILD"
-
-if [ $UNSUCCESSFUL -eq 1 ]; then
- if [ -n "$CI_DEFAULT_BRANCH" ] && [ -n "$CI_DEFAULT_BRANCH" ] && [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
- touch .fail
- else
- echo -e "\033[0;31mExit due makepkg failed\033[0m"
- exit 2
- fi
-fi