mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-11 08:13:04 +00:00
5984fe2daa
svn path=/nixpkgs/trunk/; revision=20348
66 lines
1.9 KiB
Bash
Executable File
66 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
if [ $# -ne 2 ]; then
|
|
echo Run this in the kde expressions directory
|
|
echo usage: $0 oldversion newversion
|
|
echo example: $0 4.3.4 4.3.5
|
|
echo
|
|
echo This will not update the l10n expressions, which have their own generator.
|
|
echo This code supposes that the sha* assignations happen in the immediately next
|
|
echo line to the url assignation.
|
|
exit 1
|
|
fi
|
|
|
|
OLD=$1
|
|
NEW=$2
|
|
|
|
|
|
# Regexp to match for the old version
|
|
regexp_old="$(echo $OLD | sed -e 's/\./\\./g')"
|
|
|
|
|
|
# stdin: the result of grep -1 "\<url" $filename
|
|
# $1: the filename grepped, because this will modify it.
|
|
function updateinfile() {
|
|
local newhash oldhash
|
|
local file=$1
|
|
echo File: $file
|
|
while read line; do
|
|
if echo "$line" | grep -q -e "$regexp_old"; then
|
|
url=$(echo "$line" | sed 's/.*\<url *= *"\?\(.*\)"\?.*;.*/\1/')
|
|
echo - Url: "$url"
|
|
newurl=$(echo $url | sed s/"$regexp_old"/$NEW/g)
|
|
echo - New Url: "$newurl"
|
|
newhash=$(nix-prefetch-url "$newurl")
|
|
if [ $? -ne 0 ]; then
|
|
echo Error downloading
|
|
exit 1;
|
|
fi
|
|
echo - New Hash: "$newhash"
|
|
elif echo "$line" | grep -q -e '\<sha[0-9]\+ *='; then
|
|
oldhash=$(echo "$line" | sed 's/.*"\(.*\)".*/\1/')
|
|
echo - Oldhash: $oldhash
|
|
# Update the old hash in the file for the new hash
|
|
sed -i 's/\(.*\)sha.*'$oldhash'.*/\1sha256 = "'$newhash'";/g' $file
|
|
fi
|
|
done
|
|
sed -i s/"$regexp_old"/$NEW/g $file
|
|
}
|
|
|
|
|
|
# stdin: the nix files, which have 'fetchurl' calls downloading the old version files
|
|
function updatefiles() {
|
|
while read A; do
|
|
# If the file has the old version in it...
|
|
if grep -q -e "$regexp_old" $A; then
|
|
|
|
# Pass the url parameters and the surrounding shaXXX = expression to updateinfile
|
|
grep -1 "\<url\>" $A > tmp;
|
|
< tmp updateinfile $A
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Apply the version update to all nix files but l10n from '.'
|
|
find . -\( -name *.nix -and -not -path "*l10n*" -\) | updatefiles
|