aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rwxr-xr-xutils/aur/aur-check-update.py (renamed from utils/aur-check-update.py)0
-rwxr-xr-xutils/aur/check-aur.py (renamed from utils/check-aur.py)0
-rwxr-xr-xutils/ci-upload.sh38
-rwxr-xr-xutils/deploy.sh18
-rwxr-xr-xutils/pkgbuild.sh152
-rwxr-xr-xutils/repodb.sh34
6 files changed, 242 insertions, 0 deletions
diff --git a/utils/aur-check-update.py b/utils/aur/aur-check-update.py
index 3188aea..3188aea 100755
--- a/utils/aur-check-update.py
+++ b/utils/aur/aur-check-update.py
diff --git a/utils/check-aur.py b/utils/aur/check-aur.py
index 6749f69..6749f69 100755
--- a/utils/check-aur.py
+++ b/utils/aur/check-aur.py
diff --git a/utils/ci-upload.sh b/utils/ci-upload.sh
new file mode 100755
index 0000000..69f19cd
--- /dev/null
+++ b/utils/ci-upload.sh
@@ -0,0 +1,38 @@
+#!/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 ARCH
+ unset PKGDEST
+}
+
+ARCH=$(uname -m)
+PKGDEST="${PWD}/packages/$ARCH"
+
+if [ $(find $PKGDEST -name \*.pkg\* | wc -l) -eq 0 ]; then
+ echo -e "\033[0;31mCould not find any packaged packages, skip upload\033[0m"
+ exit 0
+fi
+
+curl -d "token=$UPLOAD_TOKEN&action=REQUIRE_CLEAN&arch=$ARCH" -fsSL "$REMOTE_PATH"
+
+pushd $PKGDEST
+
+for file in *.pkg*; do
+ echo "Start upload package $file size: $(ls -lh $file | awk '{print $5}')..."
+ curl -F "file=@$file" -F "token=$UPLOAD_TOKEN" -F "arch=$ARCH" -fsSL "$REMOTE_PATH"
+ #echo "Stop upload package $file"
+done
+
+popd
+
+curl -d "token=$UPLOAD_TOKEN&action=UPLOADED&arch=$ARCH" -fsSL "$REMOTE_PATH"
+
+if [ -r .fail ]; then
+ exit 2;
+fi
diff --git a/utils/deploy.sh b/utils/deploy.sh
new file mode 100755
index 0000000..462cfdf
--- /dev/null
+++ b/utils/deploy.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# end up when failed
+set -Eeuo pipefail
+
+if [ $# -eq 0 ]; then
+ echo 'Should provide least one argument'
+ exit 1
+fi
+
+if [ -z ${SSH_CLIENT+x} ]; then
+ ADDITIONAL_PARAM="--partial"
+else
+ ADDITIONAL_PARAM="-Pv"
+fi
+
+/usr/bin/date +%s > "packages/LASTSYNC"
+/usr/bin/rsync $ADDITIONAL_PARAM -r -c --update --links --delete --exclude=.gitignore "packages/" $1:/var/www/repo/
diff --git a/utils/pkgbuild.sh b/utils/pkgbuild.sh
new file mode 100755
index 0000000..86965dd
--- /dev/null
+++ b/utils/pkgbuild.sh
@@ -0,0 +1,152 @@
+#!/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 SIGNING_ARG
+ 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
+SIGNING_ARG=""
+
+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
+fi
+
+if [ -n "$CI_DEFAULT_BRANCH" ] && [ -n "$CI_DEFAULT_BRANCH" ] && [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
+ SIGNING_ARG="-s"
+else
+ echo -e "\033[0;32mSkip signing package\033[0m"
+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 -i $SIGNING_ARG --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 $SIGNING_ARG --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
diff --git a/utils/repodb.sh b/utils/repodb.sh
new file mode 100755
index 0000000..212b137
--- /dev/null
+++ b/utils/repodb.sh
@@ -0,0 +1,34 @@
+#!/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 ARCH
+ unset PKGDEST
+ unset REPO_DEST
+ unset GPG_KEY
+ unset PACKAGE_NAME
+ unset LATEST
+}
+
+if [ -z $ARCH ]; then
+ ARCH=$(uname -m)
+ echo "Warning: You should specify arch environment variable, use current platform: $ARCH"
+fi
+
+REPO_BASE_NAME="kunoisayami"
+#ARCH=$(uname -m)
+REPO_DEST="${PWD}/packages/$ARCH/$REPO_BASE_NAME.db.tar.xz"
+GPG_KEY="4A0F0C8BC709ACA4341767FB243975C8DB9656B9"
+
+while read PACKAGE_NAME; do
+ #LATEST=$(ls -t "$PKGDEST/$PACKAGE_NAME"* | grep -v ".sig" | head -n 1 | cut -d' ' -f1)
+ if [ -z $PACKAGE_NAME ]; then
+ continue
+ fi
+ repo-add "$REPO_DEST" "$PACKAGE_NAME" -s -v -R -k $GPG_KEY
+done