blob: 0e44d2632138a5fc866b3f57af20e5c1a669ead6 (
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
|
#!/bin/sh
# $Id$
# ports/Tools/scripts/BDB-upgrade-helper.sh
#
# A helper script to upgrade applications that used to depend on
# BerkeleyDB ports 4.0...4.7 to use a newer version of BerkeleyDB.
#
# Written by Matthias Andree in 2014, and placed under the same
# license as FreeBSD itself, see /COPYRIGHT or /usr/src/COPYRIGHT.
set -eu
: ${PREFIX:=/usr/local}
: ${LOCALBASE:=${PREFIX}}
# check requisites
tool=
if [ -x ${LOCALBASE}/sbin/portmaster ] ; then tool=portmaster ;
elif [ -x ${LOCALBASE}/sbin/portupgrade ]; then tool=portupgrade;
else
echo >&2 "Neither portmaster nor portupgrade installed. Cannot continue."
echo >&2 "Please install ports-mgmt/portmaster before proceeding."
exit 1
fi
# check BerkeleyDB 4.0...4.7 versions
rx='db4[1-7]?(-nocrypto)?-4'
if pkg -N 2>/dev/null ; then pkg=yes ; else pkg= ; fi
if [ -n "$pkg" ] ; then
# pkg
dbnames=$(pkg info -x "$rx")
else
# old pkg_*
dbnames=$(pkg_info -E -X "$rx")
fi
# due to set -e, the script will not reach this point
# unless there have been matched packages - without packages,
# pkg_info or pkg will exit with failure.
# check if we need to pass in origins or package names
if [ "$tool" = portupgrade ] ; then
if [ -n "$pkg" ] ; then
dbnames=$(printf '%s\n' "$dbnames" | xargs -n1 pkg info -q -o)
else
dbnames=$(printf '%s\n' "$dbnames" | xargs -n1 pkg_info -q -o)
fi
fi
# generate the upgrade command
case "$tool" in
portmaster)
cmd="portmaster -R"
for i in $dbnames ; do cmd="$cmd -r $i" ; done
;;
portupgrade)
cmd="portupgrade -f -r"
for i in $dbnames ; do cmd="$cmd -x $i" ; done
for i in $dbnames ; do cmd="$cmd $i" ; done
;;
*)
echo >&2 "Internal error in $0." ; exit 1
;;
esac
echo "+ $cmd"
$cmd
# due to set -e, the script will not reach this point
# if there was an error or failure with the upgrade tool
if [ -n "$pkg" ] ; then
pkg delete $dbnames
else
pkg_delete $dbnames
fi
echo "Success."
|