2 # Update GeoIP packages to new version provided by MaxMind.
4 # Author: Elan Ruusamäe <glen@pld-linux.org>
5 # 2012-07-04 Created initial version
6 # 2014-03-04 Rewritten to be smarter when checking for updates avoiding full download if no changes.
7 # 2014-06-06 Fix finding new versions if multiple previous archives were present
13 while [ $# -gt 0 ]; do
15 update|-u|-update|--update)
19 status|-s|-status|--status)
29 # get file DATE in GMT timezone
32 TZ=GMT stat -c '%y' "$file" | awk '{print $1}'
35 # get package, no sources
38 out=$(builder -g -ns $pkg 2>&1) || echo "$out"
42 local specfile=$1 t url
45 builder -su $specfile 2>/dev/null > $t
59 local specfile=$1 url fn z
62 # take output filename (anything after last slash)
64 # remove querystring for mtime match to work
66 test -e "$fn" && z= || unset z
67 curl ${z+-z "$fn"} -o "$fn" "$url" -R -s
71 # set version to $version in $specfile and build the package
73 local specfile="$1" version="$2" out
77 s/^\(Version:[ \t]\+\)[.0-9]\+\$/\1$version/
78 s/^\(Release:[ \t]\+\)[.0-9]\+\$/\11/
82 out=$(md5 -p1 $specfile 2>&1) || echo "$out"
85 out=$(builder -bb $specfile 2>&1) || echo "$out"
88 # get version from package files
89 # set $version variable
90 version_from_files() {
91 local pkg=$1 url fn dt d
95 # take output filename (anything after last slash)
97 # skip inexistent files
98 test -e "$fn" || continue
101 if [ "$(echo $d | tr -d -)" -gt "$(echo $dt | tr -d -)" ]; then
108 version=$(echo "$dt" | tr -d -)
111 version=$(echo "$dt" | tr - .)
117 APPDIR=$(d=$0; [ -L "$d" ] && d=$(readlink -f "$d"); dirname "$d")
121 pkgs='GeoIP-db-City GeoIP-db-Country GeoIP-db-IPASNum xtables-geoip'
122 for pkg in ${*:-$pkgs}; do
130 urls=$(get_urls $specfile)
132 version_from_files $pkg $urls
133 oldvers=$(awk '/^Version:[ ]+/{print $NF}' $specfile)
134 if [ "$oldvers" != "$version" ]; then
135 update_version $specfile $version
140 # report each package git status
141 for pkg in ${*:-$pkgs}; do
144 git status --porcelain