Fix generation of built_$repo_packages.txt

This commit is contained in:
Yaksh Bariya 2022-04-18 15:53:47 +05:30
parent 7669ea0e3b
commit 98fff5b520
No known key found for this signature in database
GPG Key ID: F7486BA7D3D27581
1 changed files with 44 additions and 39 deletions

View File

@ -79,67 +79,72 @@ jobs:
fi
for repo_path in $(jq --raw-output 'keys | .[]' < repo.json); do
repo=$(jq --raw-output '.["'$repo_path'"]' < repo.json)
repo=$(jq --raw-output '.["'${repo_path}'"]' < repo.json)
# Parse changed files and identify new packages and deleted packages.
# Create lists of those packages that will be passed to upload job for
# further processing.
while read -r file; do
if ! [[ $file == $repo_path/* ]]; then
if ! [[ $file == ${repo_path}/* ]]; then
# This file does not belong to a package, so ignore it
continue
fi
if [[ $file =~ ^$repo_path/([.a-z0-9+-]*)/([.a-z0-9+-]*).subpackage.sh$ ]]; then
if [[ $file =~ ^${repo_path}/([.a-z0-9+-]*)/([.a-z0-9+-]*).subpackage.sh$ ]]; then
# A subpackage was modified, check if it was deleted or just updated
pkg=${BASH_REMATCH[1]}
subpkg=${BASH_REMATCH[2]}
if [ ! -f "${repo_path}/${pkg}/${subpkg}.subpackage.sh" ]; then
echo "$subpkg" >> ./deleted_$repo_packages.txt
echo "$subpkg" >> ./deleted_${repo}_packages.txt
fi
elif [[ $file =~ ^$repo_path/([.a-z0-9+-]*)/.*$ ]]; then
elif [[ $file =~ ^${repo_path}/([.a-z0-9+-]*)/.*$ ]]; then
# package, check if it was deleted or updated
pkg=${BASH_REMATCH[1]}
if [ ! -d "${repo_path}/${pkg}" ]; then
echo "$pkg" >> ./deleted_$repo_packages.txt
else
echo "$pkg" >> ./built_$repo_packages.txt
if [ -d "${repo_path}/${pkg}" ]; then
echo "$pkg" >> ./built_${repo}_packages.txt
# If there are subpackages we want to create a list of those
# as well
for file in $(find "${repo_path}/${pkg}/" -maxdepth 1 -type f -name \*.subpackage.sh | sort); do
echo "$(basename "${file%%.subpackage.sh}")" >> ./built_$repo_subpackages.txt
echo "$(basename "${file%%.subpackage.sh}")" >> ./built_${repo}_subpackages.txt
done
else
echo "$pkg" >> ./deleted_${repo}_packages
fi
fi
done<<<${CHANGED_FILES}
done
else
for pkg in ${{ github.event.inputs.packages }}; do
for repo_path in $(jq --raw-output 'keys | .[]' < repo.json); do
repo=$(jq --raw-output '.["'$repo_path'"]' < repo.json)
if [ -d "${repo}/${pkg}" ]; then
echo "$pkg" >> ./built_$repo_packages.txt
for subpkg in $(find "${repo}/${pkg}/" -maxdepth 1 -type f -name \*.subpackage.sh | sort); do
echo "$(basename "${subpkg%%.subpackage.sh}")" >> ./built_$repo_subpackages.txt
repo_paths=$(jq --raw-output 'keys | .[]' < repo.json)
found=false
for repo_path in $repo_paths; do
repo=$(jq --raw-output '.["'${repo_path}'"]' < repo.json)
if [ -d "${repo_path}/${pkg}" ]; then
found=true
echo "$pkg" >> ./built_${repo}_packages.txt
for subpkg in $(find "${repo_path}/${pkg}/" -maxdepth 1 -type f -name \*.subpackage.sh | sort); do
echo "$(basename "${subpkg%%.subpackage.sh}")" >> ./built_${repo}_subpackages.txt
done
else
echo "Package '${pkg}' not found in any of the repo"
fi
done
if [ "$found" != true ]; then
echo "Package '${pkg}' not found in any of the repo"
exit 1
fi
done
fi
for repo in $(jq --raw-output '.[]' < repo.json); do
# Fix so that lists do not contain duplicates
if [ -f ./built_$repo_packages.txt ]; then
uniq ./built_$repo_packages.txt > ./built_$repo_packages.txt.tmp
mv ./built_$repo_packages.txt.tmp ./built_$repo_packages.txt
if [ -f ./built_${repo}_packages.txt ]; then
uniq ./built_${repo}_packages.txt > ./built_${repo}_packages.txt.tmp
mv ./built_${repo}_packages.txt.tmp ./built_${repo}_packages.txt
fi
if [ -f ./built_$repo_subpackages.txt ]; then
uniq ./built_$repo_subpackages.txt > ./built_$repo_subpackages.txt.tmp
mv ./built_$repo_subpackages.txt.tmp ./built_$repo_subpackages.txt
if [ -f ./built_${repo}_subpackages.txt ]; then
uniq ./built_${repo}_subpackages.txt > ./built_${repo}_subpackages.txt.tmp
mv ./built_${repo}_subpackages.txt.tmp ./built_${repo}_subpackages.txt
fi
if [ -f ./deleted_$repo_packages.txt ]; then
uniq ./deleted_$repo_packages.txt > ./deleted_$repo_packages.txt.tmp
mv ./deleted_$repo_packages.txt.tmp ./deleted_$repo_packages.txt
if [ -f ./deleted_${repo}_packages.txt ]; then
uniq ./deleted_${repo}_packages.txt > ./deleted_${repo}_packages.txt.tmp
mv ./deleted_${repo}_packages.txt.tmp ./deleted_${repo}_packages.txt
fi
done
@ -155,11 +160,11 @@ jobs:
- name: Lint packages
run: |
package_recipes=
declare -a package_recipes
for repo_path in $(jq --raw-output 'keys | .[]' < repo.json); do
repo=$(jq --raw-output '.["'$repo_path'"]' < repo.json)
if [ -f ./built_$repo_packages.txt ]; then
package_recipes+=$(cat ./built_$repo_packages.txt | repo_path=$repo_path awk '{print ENVIRON["repo_path"]"/"$1"/build.sh"}')
repo=$(jq --raw-output '.["'${repo_path}'"]' < repo.json)
if [ -f ./built_${repo}_packages.txt ]; then
package_recipes="$package_recipes $(cat ./built_${repo}_packages.txt | repo_path=${repo_path} awk '{print ENVIRON["repo_path"]"/"$1"/build.sh"}')"
fi
done
@ -167,12 +172,12 @@ jobs:
- name: Build packages
run: |
packages=
declare -a packages
for repo_path in $(jq --raw-output 'keys | .[]' < repo.json); do
repo=$(jq --raw-output '.["'$repo_path'"]' < repo.json)
repo=$(jq --raw-output '.["'${repo_path}'"]' < repo.json)
if [ -f ./built_$repo_packages.txt ]; then
packages+=$(cat ./build_$repo_packages.txt)
if [ -f ./built_${repo}_packages.txt ]; then
packages="$packages $(cat ./built_${repo}_packages.txt)"
fi
done
@ -189,10 +194,10 @@ jobs:
mkdir debs
# Put package lists into directory with *.deb files so they will be transferred to
# upload job.
test -f ./built_$repo_packages.txt && mv ./built_$repo_packages.txt ./debs/built_packages.txt
test -f ./built_$repo_subpackages.txt && cat ./built_$repo_subpackages.txt >> ./debs/built_packages.txt \
&& rm ./built_$repo_subpackages.txt
test -f ./deleted_$repo_packages.txt && mv ./deleted_$repo_packages.txt ./debs/deleted_packages.txt
test -f ./built_${repo}_packages.txt && mv ./built_${repo}_packages.txt ./debs/built_packages.txt
test -f ./built_${repo}_subpackages.txt && cat ./built_${repo}_subpackages.txt >> ./debs/built_packages.txt \
&& rm ./built_${repo}_subpackages.txt
test -f ./deleted_${repo}_packages.txt && mv ./deleted_${repo}_packages.txt ./debs/deleted_packages.txt
# Move only debs from built_packages into debs/ folder before
# creating an archive.