summaryrefslogtreecommitdiff
path: root/debian/pypy.postinst.in
blob: 237fece749e92820934a7602c16cd53f40e04145 (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
#!/bin/sh

if [ '#ARCH#' = 'i386' ]; then
    pypy -c '' 2>/dev/null
    if [ $? -eq 132 ]; then
        echo "PyPy doesn't appear to support this CPU." >&2
        echo "SSE2 is required." >&2
        exit 1
    fi
fi

set -e

hook() {
    local action old new
    hook=$1
    action=$2
    old_v=$3
    new_v=$4
    old=pypy
    new=pypy
    echo "running pypy $action hooks for $new_v"
    for script in /usr/lib/pypy/runtime.d/*."$hook"; do
        [ -x "$script" ] || continue
        if ! "$script" "$action" "$old" "$new"; then
            echo >&2 "error running pypy $action hook $(basename "$script")"
            return 1
        fi
    done
}

case "$1" in
    configure)
        if [ -n "$2" ] && dpkg --compare-versions "$2" le 2.2; then
            # We weren't running pypyclean in prerm in versions before 2.2
            pypyclean /usr/lib/pypy/lib-python /usr/lib/pypy/lib_pypy
        fi

        pypycompile -p pypy -p 'pypy-lib:#ARCH#'

        old_version=$(echo $2 | sed 's/\([[:digit:]]*\.[[:digit:]]*\).*/\1/')
        new_version=$(echo "#VERSION#" | sed 's/\([[:digit:]]*\.[[:digit:]]*\).*/\1/')
        if [ "$old_version" != "$new_version" ]; then
            hook rtupdate rtupdate "$old_version" "$new_version" || exit 4
            hook rtupdate post-rtupdate "$old_version" "$new_version" || exit 5
        elif [ -n "$2" ] && dpkg --compare-versions "$2" le 4.0.0+dfsg-1; then
            # Force a re-byte-compile. PyPy 4.0.0+dfsg-1 had tag pypy-40, but
            # 4.0.0+dfsg-2 goes back to pypy-26 #803689
            /usr/lib/pypy/runtime.d/public_modules.rtupdate rtupdate
        fi
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

#DEBHELPER#

exit 0
# vim:set et ts=4 sw=4: