From e3a154e67d3997b04ba7ec5ee749b3d109908575 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Sat, 18 Mar 2017 12:58:04 +0100 Subject: bin/get-package-updates point 4 done --- bin/get-package-updates | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) (limited to 'bin/get-package-updates') diff --git a/bin/get-package-updates b/bin/get-package-updates index d4e826f..119f41d 100755 --- a/bin/get-package-updates +++ b/bin/get-package-updates @@ -36,22 +36,44 @@ for repo in "${!repo_paths[@]}"; do old_repo_revisions["${repo}"]="$(cat ${base_dir}/work/${repo}.revision)" done -# TODO: -# Check modified packages from the last update, and put them to the build list. -# If a package is updated, but already on the rebuild list, then just update the git revision number. -# If a package is deleted, remove from the rebuild list, and add it to the deletion list. -# If a new package is added, then ensure that it's not on the deletion list. +# Check modified packages from the last update, and put them to the build list. +# If a package is updated, but already on the rebuild list, then just update the git revision number. +# If a package is deleted, remove from the rebuild list, and add it to the deletion list. +# If a new package is added, then ensure that it's not on the deletion list. for repo in "${!repo_paths[@]}"; do current_HEAD="$( git -C "${repo_paths["${repo}"]}" rev-parse HEAD )" - git -C "${repo_paths["${repo}"]}" diff --name-only "${old_repo_revisions["${repo}"]}" HEAD | \ - grep '^[^/]\+/repos/[^/]\+/PKGBUILD$' | \ - sed 's|^\([^/]\+\)/repos/\([^/]\+\)-[^/-]\+/PKGBUILD$|\1 '"${current_HEAD}"' \2|' | \ + git -C "${repo_paths["${repo}"]}" diff --name-status "${old_repo_revisions["${repo}"]}" HEAD | \ + grep '^.\s[^/]\+/repos/[^/]\+/PKGBUILD$' | \ + sed 's|^\(.\)\t\([^/]\+\)/repos/\([^/]\+\)-[^/-]\+/PKGBUILD$|\1 \2 '"${current_HEAD}"' \3|' | \ grep -v '\(staging\|testing\)$' done | \ - sort -u + sort -u | \ + while read -r mode package git_revision repository; do + case "${mode}" in + + "A"|"M") + sed -i "/^${package} /d" "${base_dir}/work/build-list" + echo "${package} ${git_revision} ${repository}" >> \ + "${base_dir}/work/build-list" + sed -i "/^${package}/d" "${base_dir}/work/deletion-list" + ;; + + "D") + echo "${package}" >> \ + "${base_dir}/work/deletion-list" + sed -i "/^${package} /d" "${base_dir}/work/build-list" + ;; + + *) + >&2 echo "unknown git diff mode '${mode}'" + exit 1 + ;; + + esac + done # TODO: # Put the list in the proper build order. -- cgit v1.2.3-70-g09d2