blob: ef8388f8f71579ba2fb2c0260eced15bf14e6fa1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
#!/bin/bash
# upgpkg: Upgrades package versions in PKGBUILD and starts build.
# Author: Abhishek Dasgupta <abhidg@gmail.com>
# Thanks to cactus, profjim and daenyth for all the sed help!
# Edited: Florian Pritz <flo@xinu.at>
# I place this script in the public domain.
VERSION=0.5
# from makepkg
unset ALL_OFF BOLD BLUE GREEN RED YELLOW
if [[ -t 2 ]]; then
# prefer terminal safe colored and bold text when tput is supported
if tput setaf 0 &>/dev/null; then
ALL_OFF="$(tput sgr0)"
BOLD="$(tput bold)"
BLUE="${BOLD}$(tput setaf 4)"
GREEN="${BOLD}$(tput setaf 2)"
RED="${BOLD}$(tput setaf 1)"
YELLOW="${BOLD}$(tput setaf 3)"
else
ALL_OFF="\033[1;0m"
BOLD="\033[1;1m"
BLUE="${BOLD}\033[1;34m"
GREEN="${BOLD}\033[1;32m"
RED="${BOLD}\033[1;31m"
YELLOW="${BOLD}\033[1;33m"
fi
fi
readonly ALL_OFF BOLD BLUE GREEN RED YELLOW
die() {
local message="$1"
shift
printf "$RED==> $(gettext "Error"):$ALL_OFF $(gettext "$message")\n" "$@"
exit 1
}
warn() {
local message="$1"
shift
printf "$YELLOW==> $(gettext "Warning"):$ALL_OFF $(gettext "$message")\n" "$@"
}
scriptlet() {
if [ -f "upgpkg" ]; then
if [[ $(type -t upgpkg_$1) = "function" ]]; then
upgpkg_$1 || die "\"%s\" scriptlet failed" $1
fi
fi
}
help() {
echo "upgpkg $VERSION"
printf "$(gettext "usage: upgpkg [options] newver")\n"
printf "$(gettext " -h this help")\n"
printf "$(gettext " -g generate a template ./upgpkg file")\n"
exit 2
}
if [ -z "$1" ]; then
help
fi
_newpkgver=$1
while getopts "gh" OPTION; do
case $OPTION in
g)
cat > upgpkg <<EOF
upgpkg_pre_upgrade() {
# You might want to remove old sources here
# The new pkgver can be accessed using \$_newpkgver
true
}
upgpkg_build() {
makepkg
}
EOF
exit;
;;
h) help;
esac
done
[ ! -f PKGBUILD ] && die "No \"%s\" in %s" "PKGBUILD" "$PWD"
if [ -f "upgpkg" ]; then
source ./upgpkg
fi
source PKGBUILD
scriptlet pre_upgrade
if [[ $(vercmp $1 $pkgver) -le 0 ]]; then
warn "New version (%s) older or equal to current %s" "$1" "$pkgver"
fi
sed -i "s/pkgver=.*$/pkgver=$1/g" PKGBUILD
sed -i "s/pkgrel=.*$/pkgrel=1/g" PKGBUILD
makepkg -g || exit 1
# replace the first checksum line with all checksums, remove all other checksums
# TODO: this doesn't work if there are no checksum lines or if the makepkg call
# inside the awk script doesn't return anything
# original awk by Pierre https://projects.archlinux.de/kde-build.git/tree/common/updpkg
awk <PKGBUILD '
$0 ~ /^(md5|sha[0-9]+)sums/ {
i = 1;
if(!run==1) {system("makepkg -g 2>/dev/null")};
run=1;
};
!i {print};
$0 ~ /\)/ {i = 0}' | sponge PKGBUILD
source PKGBUILD
if [ -f "upgpkg" ]; then
source ./upgpkg
fi
scriptlet build
|