#!/bin/sh # input in versions.txt is with v1 < v2. # v1 and v2 are of the form --, where includes: # - 2.0.0 # - 2.0.0-10-gabcdef freebsd_sanitize_version () { post=$(echo $1 | rev | cut -d '-' -f 1-2 | rev | sed -e 's/-/./g') v=$(echo $1 | rev | cut -d '-' -f 3- | rev | sed -e 's/-/./g') version_good=$(echo $v | grep -c '^[0-9]\+\.[0-9]\+\.[0-9]\+$') version_with_commit=$(echo $v | grep -c '^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\.g[0-9a-fA-f]\+$') if [ $version_good -eq 0 -a $version_with_commit -eq 0 ]; then echo "invalid version $v"; exit 1; fi if [ $version_with_commit -eq 0 ]; then v="${v}.0.g0000000.${post}" else v="${v}.${post}" fi echo $v } echo "using FreeBSD pkg to compare versions now:" while read version_a version_b; do version_a=$(freebsd_sanitize_version $version_a) version_b=$(freebsd_sanitize_version $version_b) result=$(pkg version -t "$version_a" "$version_b") printf "%s %s %s\n" "$version_a" "$result" "$version_b" done < versions.txt debian_sanitize_version () { post=$(echo $1 | rev | cut -d '-' -f 1-2 | rev) v=$(echo $1 | rev | cut -d '-' -f 3- | rev) version_good=$(echo $v | grep -c '^[0-9]\+\.[0-9]\+\.[0-9]\+$') version_with_commit=$(echo $v | grep -c '^[0-9]\+\.[0-9]\+\.[0-9]\+\-[0-9]\+\-g[0-9a-fA-f]\+$') if [ $version_good -eq 0 -a $version_with_commit -eq 0 ]; then echo "invalid version $v"; exit 1; fi if [ $version_with_commit -eq 0 ]; then v="${v}-0-g0000000-${post}" else v="${v}-${post}" fi echo $v } echo "" echo "using Debian dpkg to compare versions now:" while read version_a version_b; do version_a=$(debian_sanitize_version $version_a) version_b=$(debian_sanitize_version $version_b) if dpkg --compare-versions "$version_a" lt "$version_b"; then echo "$version_a < $version_b" else echo "$version_a >= $version_b" fi done < versions.txt