#!/bin/bash # check for packages that need to be built, and build a list in the proper build order # Details: # https://github.com/archlinux32/builder/wiki/Build-system#get-package-updates set -e lock_file="/tmp/get-package-updates.lock" # TODO: # include repository of package customizations declare -A repo_paths repo_paths["packages"]="/usr/src/archlinux/packages" repo_paths["community"]="/usr/src/archlinux/community" base_dir="$(dirname "$(readlink -f "$0")")/.." # Create a lock file for build list. exec 9>"${lock_file}" flock -n 9 || exit # Update git repositories (official packages, community packages and the repository of package customizations). for repo in "${repo_paths[@]}"; do git -C "${repo}" pull done # Read previous git revision numbers from files. declare -A old_repo_revisions 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. # TODO: # Put the list in the proper build order. # Write the current git revision numbers to files. for repo in "${!repo_paths[@]}"; do git -C "${repo_paths["${repo}"]}" rev-parse HEAD > \ "${base_dir}/work/${repo}.revision" done rm -f "${lock_file}"