summaryrefslogtreecommitdiff
path: root/glib-patches/update-glib.sh
blob: 62608e4dc5bb58b14be0429309b8802a50a2ddca (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
#!/bin/sh

GIT=${GIT-git}
PATCH=${PATCH-patch}
SED=${SED-sed}
repo=
tag=2.32.2
commit=n

usage()
{
    cat << EOF
Usage:
 $0 [OPTIONS] REPO [TAG]
Fetch archive of TAGged version of glib from local checkout at REPO

Options:
 -c, --commit       commit snapshot after each change
 -h, --help         display this help and exit

If TAG is not specified, $tag is used
EOF
}

while [ -n "$1" ]; do
    case "$1" in
    -c|--commit)
        commit=y
        ;;
    -h|--help)
        usage
        exit
        ;;
    -*)
        echo "$0: unrecognized option '$1'" >&2
        echo "Try '$0 --help' for more information." >&2
        exit 1
        ;;
    *)
        # end of options
        break
        ;;
    esac
    shift
done

repo=$1
[ -z "$2" ] || tag=$2

# Remove previous snapshot
if [ -d glib ]; then
    echo "removing previous glib snapshot"
    rm -rf glib
fi

# Create new snapshot
echo "creating new snapshot of $repo tag $tag"
(cd "$repo" && $GIT archive --format=tar --prefix=glib/ "$tag") | \
    tar -xf - || exit $?
if [ $commit = y ]; then
    $GIT add glib
    $GIT commit -q \
        -m "glib: creating new snapshot of $repo tag $tag" -- glib
fi

# Prune parts we don't want
echo "removing unneeded directories and files"
rm -rf \
    glib/debian \
    glib/docs \
    glib/po \
    glib/tests \
    glib/glib/tests \
    glib/build \
    glib/gmodule \
    glib/gthread \
    glib/gobject \
    glib/gio \
    glib/glib/pcre \
    glib/glib/update-pcre
rm -f \
    glib/autogen.sh \
    glib/INSTALL.in \
    glib/README.commits \
    glib/HACKING \
    glib/NEWS.pre-1-3 \
    glib/README.win32 \
    glib/config.h.win32.in \
    glib/glib-zip.in \
    glib/sanity_check \
    glib/glib/glib.stp \
    glib/glib/glib_probes.d \
    glib/glib/glibconfig.h.win32.in \
    glib/msvc_recommended_pragmas.h \
    glib/win32-fixup.pl
find glib -name 'makefile.msc*' | xargs rm -f
find glib -name 'ChangeLog*' | xargs rm -f
find glib -name '*.pc.in' | xargs rm -f
[ $commit = y ] && $GIT commit -q \
    -m "glib: removing unneeded directories and files" -- glib

# Apply patches
patches=`grep '^[^#]' glib-patches/patchlist 2>/dev/null`
for p in $patches; do
    echo "applying patch glib-patches/$p"
    $PATCH -p1 -i glib-patches/$p || exit $?
    [ $commit = y ] && $GIT commit -q \
        -m "glib: applying patch glib-patches/$p" -- glib
done

echo "snapshot successfully updated"