5f072b8b67
Thanks to leveraging Bash arrays, we are now able to use parameter expansion to perform every package installation as one rpm-ostree operation instead of individual ones. This will give us a huge build speedup. Bash properly expands every array element as safely quoted arguments, complete with support for spaces and special characters.
59 lines
1.9 KiB
Bash
59 lines
1.9 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Tell build process to exit if there are any errors.
|
|
set -oue pipefail
|
|
|
|
# Helper functions.
|
|
get_yaml_array() {
|
|
mapfile -t "$1" < <(yq "$2" < /usr/etc/ublue-recipe.yml)
|
|
}
|
|
|
|
# Add custom repos.
|
|
get_yaml_array repos '.extrarepos[]'
|
|
if [[ ${#repos[@]} -gt 0 ]]; then
|
|
echo "-- Adding repos defined in recipe.yml --"
|
|
for repo in "${repos[@]}"; do
|
|
wget "$repo" -P /etc/yum.repos.d/
|
|
done
|
|
echo "---"
|
|
fi
|
|
|
|
# Run scripts.
|
|
get_yaml_array buildscripts '.scripts[]'
|
|
if [[ ${#buildscripts[@]} -gt 0 ]]; then
|
|
echo "-- Running scripts defined in recipe.yml --"
|
|
for script in "${buildscripts[@]}"; do
|
|
echo "Running: ${script}"
|
|
/tmp/scripts/"$script"
|
|
done
|
|
echo "---"
|
|
fi
|
|
|
|
# Remove the default firefox (from fedora) in favor of the flatpak.
|
|
rpm-ostree override remove firefox firefox-langpacks
|
|
|
|
# Install RPMs.
|
|
get_yaml_array install_rpms '.rpms[]'
|
|
if [[ ${#install_rpms[@]} -gt 0 ]]; then
|
|
echo "-- Installing RPMs defined in recipe.yml --"
|
|
echo "Installing: ${install_rpms[@]}"
|
|
rpm-ostree install "${install_rpms[@]}"
|
|
echo "---"
|
|
fi
|
|
|
|
# Install yafti to install flatpaks on first boot, https://github.com/ublue-os/yafti.
|
|
pip install --prefix=/usr yafti
|
|
|
|
# Add a new yafti "package group" called Custom, for the packages defined in recipe.yml.
|
|
# Only adds the package group if some flatpaks are defined in the recipe.
|
|
get_yaml_array flatpaks '.flatpaks[]'
|
|
if [[ ${#flatpaks[@]} -gt 0 ]]; then
|
|
echo "-- yafti: Adding Flatpaks defined in recipe.yml --"
|
|
yq -i '.screens.applications.values.groups.Custom.description = "Flatpaks defined by the image maintainer"' /usr/etc/yafti.yml
|
|
yq -i '.screens.applications.values.groups.Custom.default = true' /usr/etc/yafti.yml
|
|
for pkg in "${flatpaks[@]}"; do
|
|
echo "Adding to yafti: ${pkg}"
|
|
yq -i ".screens.applications.values.groups.Custom.packages += [{\"$pkg\": \"$pkg\"}]" /usr/etc/yafti.yml
|
|
done
|
|
echo "---"
|
|
fi
|