#!/bin/bash # kdeupdate.sh # # Copyright © 2018 Luca Giambonini # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . _script_name="kde update" # load functions for subroutine in $_needed_functions ; do source ~/bin/functions/$subroutine done # Get package information function _package_info() { local package="${1}" local properties=("${@:2}") for property in "${properties[@]}"; do local -n nameref_property="${property}" nameref_property=($( #source "${package}/PKGBUILD" source "PKGBUILD" declare -n nameref_property="${property}" echo "${nameref_property[@]}")) done } build() { while read -r pkg; do [[ $pkg =~ ^[:blank:]*$ ]] && continue local comment_re="^[:blank:]*#" [[ $pkg =~ $comment_re ]] && continue local pkgrel_re="^[:blank:]*\+" if [[ $pkg =~ $pkgrel_re ]]; then echo "Pkgrel ++ '${pkg//+}'" pushd "${pkg//+}" &>/dev/null git reset HEAD PKGBUILD git checkout PKGBUILD _rel=$(cat PKGBUILD | grep pkgrel= | cut -d= -f2) sed -i -e "s/pkgrel=$_rel/pkgrel=$(($_rel+1))/" PKGBUILD git add PKGBUILD popd &>/dev/null continue fi echo "Processing: '$pkg'" pushd "$pkg" &>/dev/null # update version sed -r "s|pkgver=.*|pkgver=$Version|g" -i PKGBUILD sed -r "s|pkgrel=.*|pkgrel=1|g" -i PKGBUILD sed -r 's|"extra-cmake-modules>=[^"]*"|"extra-cmake-modules>='${Version}'"|g' -i PKGBUILD # update source link sed -r "s|https://download.kde.org/.*stable/|https://download.kde.org/${Branch}/|g" -i PKGBUILD # update sha256 sums local pkgver pkgname source _pkgname _pkgbase _package_info "$pkg" pkgver pkgname source _pkgname _pkgbase if [ ! -z "$_pkgname" ]; then pkgname=$_pkgname fi if [ ! -z "$_pkgbase" ]; then pkgname=$_pkgbase fi # check if the external file reference is set if [ ! -z "$REVISIONS_AND_HASHES" ]; then _sha256sum=$(curl "$REVISIONS_AND_HASHES" | grep "sources/$pkgname-$pkgver" | cut -c-64) else _url=$source _sha256sum=$(curl "$_url.sha256" | cut -c-64) fi sed -r "s|sha256sums=.*|sha256sums=('$_sha256sum'|g" -i PKGBUILD echo $_sha256sum unset pkgver pkgname source _pkgname _pkgbase #updpkgsums git add PKGBUILD popd &>/dev/null done < "$1" } title "$_script_name" if [ ! -f $1.conf ]; then echo "$1.conf: File not found!" exit 1 fi # load the configurations source $1.conf time build "$1.order"