From 73dd2af79f4695e658f56ad8e1fd1429e074238c Mon Sep 17 00:00:00 2001 From: KunoiSayami Date: Mon, 1 Nov 2021 22:30:19 +0800 Subject: refactor(script): Change the way of retrieve aur dependencies and gpg key Signed-off-by: KunoiSayami --- .gitlab-ci.yml | 9 ++++---- docker/dockerbuild.sh | 8 ++++++++ docker/dockerfile | 6 +++++- pkgbuild.sh | 35 +++++++++++++++++++++----------- repo/.gpg_keys/linux-zen-x86-64-v3 | 2 ++ repo/.yaydeps/obs-linuxbrowser-bin | 1 + repo/.yaydeps/pam_ssh_agent_auth_patched | 1 + 7 files changed, 44 insertions(+), 18 deletions(-) create mode 100755 repo/.gpg_keys/linux-zen-x86-64-v3 create mode 100644 repo/.yaydeps/obs-linuxbrowser-bin create mode 100644 repo/.yaydeps/pam_ssh_agent_auth_patched diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index de7e558..a9a922e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,17 +19,16 @@ build: - repo/**/* script: - - pacman --noconfirm --needed -Syu base-devel gnupg git + - echo -e "\n[archlinuxcn]\nServer = https://repo.archlinuxcn.org/$$arch\n" >> /etc/pacman.conf + - pacman --noconfirm --needed -Syu archlinuxcn-keyring base-devel gnupg git yay - git submodule update --init - useradd -m build - echo 'build ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers #- cp -r ../$CI_PROJECT_TITLE /home/build/ #- cd /home/build/$CI_PROJECT_TITLE - - chown -R build:build ../$CI_PROJECT_TITLE - - su -c "bash -c 'cd repo/pod2man && makepkg -si --noconfirm'" build - - su -c "bash -c 'cd repo/gconf && makepkg -si --noconfirm'" build + - chown -R build:build ../$CI_PROJECT_TITLE - su -c 'echo $GPG_PRIV_KEY | base64 -d | gpg --import' build - - su -c 'BUILD_ONLY='' ./pkgbuild.sh' build + - su -c './pkgbuild.sh' build - rm -rf build/ # only push to master master trigger push diff --git a/docker/dockerbuild.sh b/docker/dockerbuild.sh index 5ae4880..ec933f5 100755 --- a/docker/dockerbuild.sh +++ b/docker/dockerbuild.sh @@ -5,16 +5,23 @@ set -Eeuo pipefail cd /home/build git clone --depth=3 https://github.com/kunoisayami/repos +pushd repos +git submodule update --init +popd + if [ $UID -eq 0 ]; then chown -R build:build repos + echo "$TARGET_HOSTS" | base64 -d >> /etc/hosts else + echo -e "\n[archlinuxcn]\nServer = https://repo.archlinuxcn.org/$$arch\n" | sudo tee -a /etc/pacman.conf echo "$TARGET_HOSTS" | base64 -d | sudo tee -a /etc/hosts >/dev/null fi pushd repos if [ $UID -eq 0 ]; then + su -c "echo $GPG_PRIV_KEY | base64 -d | gpg --import" build pushd repo/pod2man @@ -24,6 +31,7 @@ if [ $UID -eq 0 ]; then su -c 'BUILD_ONLY="" ./pkgbuild.sh' build su -e -c './ci-upload.sh' build + else echo $GPG_PRIV_KEY | base64 -d | gpg --import diff --git a/docker/dockerfile b/docker/dockerfile index 4ae53aa..f831a36 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -1,6 +1,10 @@ FROM repobuildbase:latest -RUN pacman --noconfirm --needed -Syu base-devel gnupg git +RUN echo -e "\n[archlinuxcn]\nServer = https://repo.archlinuxcn.org/$$arch\n" >> /etc/pacman.conf + +RUN pacman --noconfirm --needed -Sy archlinuxcn-keyring + +RUN pacman --noconfirm --needed -Su base-devel gnupg git yay RUN useradd -m build diff --git a/pkgbuild.sh b/pkgbuild.sh index c7c3888..be9bd79 100755 --- a/pkgbuild.sh +++ b/pkgbuild.sh @@ -7,13 +7,12 @@ set -Eeuo pipefail trap cleanup SIGINT SIGTERM ERR EXIT cleanup() { trap - SIGINT SIGTERM ERR EXIT - unset PACKAGE_NAME + 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,7 +26,6 @@ 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" TMPCONF=$(mktemp -t makepkg.$ARCH.conf.XXXXXXXXXX) || exit 1 @@ -35,7 +33,6 @@ 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 @@ -61,24 +58,38 @@ 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 + 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 [ -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" diff --git a/repo/.gpg_keys/linux-zen-x86-64-v3 b/repo/.gpg_keys/linux-zen-x86-64-v3 new file mode 100755 index 0000000..f3cd26a --- /dev/null +++ b/repo/.gpg_keys/linux-zen-x86-64-v3 @@ -0,0 +1,2 @@ +#!/bin/bash +gpg --recv-keys --keyserver pgp.mit.edu 3B94A80E50A477C7 \ No newline at end of file diff --git a/repo/.yaydeps/obs-linuxbrowser-bin b/repo/.yaydeps/obs-linuxbrowser-bin new file mode 100644 index 0000000..d1b719d --- /dev/null +++ b/repo/.yaydeps/obs-linuxbrowser-bin @@ -0,0 +1 @@ +gconf \ No newline at end of file diff --git a/repo/.yaydeps/pam_ssh_agent_auth_patched b/repo/.yaydeps/pam_ssh_agent_auth_patched new file mode 100644 index 0000000..b40da9a --- /dev/null +++ b/repo/.yaydeps/pam_ssh_agent_auth_patched @@ -0,0 +1 @@ +pod2man \ No newline at end of file -- cgit v1.3.1