55 lines
1.4 KiB
Bash
Executable File
55 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
package=$1
|
|
variant=$2
|
|
official_packages=${OFFICIAL_PACKAGES:-/run/media/files3/other_projects/arch-packages}
|
|
|
|
current_variant_file=$package/$variant/PKGBUILD
|
|
source "$current_variant_file"
|
|
variantver=$pkgver
|
|
echo "variant version: $variantver"
|
|
|
|
regular_dir=$official_packages/$package
|
|
if [[ ! -e $regular_dir ]]; then
|
|
pushd "$official_packages"
|
|
pkgctl repo clone "$package"
|
|
popd
|
|
else
|
|
git -C "$regular_dir" pull --rebase origin main
|
|
fi
|
|
|
|
regular_file=$regular_dir/PKGBUILD
|
|
source "$regular_file"
|
|
regularver=$pkgver
|
|
echo "regular version: $regularver"
|
|
|
|
if [[ $variantver == "$regularver" ]]; then
|
|
echo "nothing to do, versions are the same"
|
|
exit 0
|
|
fi
|
|
|
|
commits=($(git -C "$regular_dir" log -n 8 --pretty=format:%H HEAD~1 "PKGBUILD"))
|
|
tempfile=/tmp/regular-pkgbuild
|
|
basecomit=
|
|
for commit in "${commits[@]}"; do
|
|
echo "checking diff as of commit $commit"
|
|
git -C "$regular_dir" show "$commit:PKGBUILD" > "$tempfile"
|
|
source "$tempfile"
|
|
if [[ $variantver != "$pkgver" ]]; then
|
|
continue
|
|
fi
|
|
echo "commit $commit is last commit of regular package with version $pkgver"
|
|
basecomit=$commit
|
|
break
|
|
done
|
|
|
|
if [[ ! $basecomit ]]; then
|
|
echo "unable to find commit of regular package with variant version"
|
|
exit 1
|
|
fi
|
|
|
|
cd "$package/$variant"
|
|
git -C "$regular_dir" diff "$basecomit..origin/main" -- "PKGBUILD" > regular.diff
|
|
patch -p1 -i regular.diff
|