diff --git a/check-news.sh b/check-news.sh new file mode 100755 index 0000000000000000000000000000000000000000..24a2ea10b11414b56dcb54cc747c01ca7bfb1de3 --- /dev/null +++ b/check-news.sh @@ -0,0 +1,107 @@ +#!/bin/sh + +# Copyright (C) 2019 Red Hat, Inc. +# Author: Bastien Nocera +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +# Add to your top-level meson.build to check for an updated NEWS file +# when doing a "dist" release, similarly to automake's check-news: +# https://www.gnu.org/software/automake/manual/html_node/List-of-Automake-options.html +# +# Checks NEWS for the version number: +# meson.add_dist_script( +# find_program('check-news.sh').path(), +# '@0@'.format(meson.project_version()) +# ) +# +# Checks NEWS and data/foo.appdata.xml for the version number: +# meson.add_dist_script( +# find_program('check-news.sh').path(), +# '@0@'.format(meson.project_version()), +# 'NEWS', +# 'data/foo.appdata.xml' +# ) + +usage() +{ + echo "$0 VERSION [FILES...]" + exit 1 +} + +check_version() +{ + VERSION=$1 + # Look in the first 15 lines for NEWS files, but look + # everywhere for other types of files + if [ "$2" = "NEWS" ]; then + DATA=`sed 15q $SRC_ROOT/"$2"` + else + DATA=`cat $SRC_ROOT/"$2"` + fi + case "$DATA" in + *"$VERSION"*) + : + ;; + *) + echo "$2 not updated; not releasing" 1>&2; + exit 1 + ;; + esac +} + +has_verify_latest_version() +{ + appstream-util 2>&1 | grep -q get-latest-version + return $? +} + +verify_latest_version() +{ + VERSION=$1 + FILE=$SRC_ROOT/"$2" + LATEST_VERSION=`appstream-util get-latest-version "$FILE" | tr -d '\d'` + if [ "$LATEST_VERSION" != "$VERSION" ] ; then + echo "Expected latest version $VERSION in $FILE, got $LATEST_VERSION" + exit 1 + fi +} + +SRC_ROOT=${MESON_DIST_ROOT:-"./"} + +if [ $# -lt 1 ] ; then usage ; fi + +VERSION=$1 +shift + +if [ $# -eq 0 ] ; then + check_version $VERSION 'NEWS' + exit 0 +fi + +for i in $@ ; do + case "$i" in + *"metainfo"*) + if has_verify_latest_version ; then + verify_latest_version $VERSION "$i" + fi + ;; + esac + + check_version $VERSION "$i" +done + +exit 0 diff --git a/meson.build b/meson.build index b1990a872c8d8b6a81b8e106066872320860d361..c0ab3d224de4abb5890e897d23748d548e2162cf 100644 --- a/meson.build +++ b/meson.build @@ -525,6 +525,23 @@ gnome.post_install( update_desktop_database: true, ) +is_stable = (ev_minor_version != 'alpha' and + ev_minor_version != 'beta' and + ev_minor_version != 'rc') +if is_stable + meson.add_dist_script( + find_program('check-news.sh').full_path(), + '@0@'.format(meson.project_version()), + 'NEWS', + 'org.gnome.Evince.metainfo.xml.in' + ) +else + meson.add_dist_script( + find_program('check-news.sh').full_path(), + '@0@'.format(meson.project_version()), + 'NEWS', + ) +endif summary({'Platform...................': ev_platform, 'Debug mode.................': ev_debug,