Skip to content

Commit

Permalink
meson: set release date from .doap file for releases
Browse files Browse the repository at this point in the history
And fix up DOAP file XML. Parser would complain about
unknown entity ! here.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/743>
  • Loading branch information
tp-m committed Jul 8, 2020
1 parent dcce44f commit 64712fa
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 1 deletion.
2 changes: 1 addition & 1 deletion gst-plugins-base.doap
Expand Up @@ -588,7 +588,7 @@ A wide range of video and audio decoders, encoders, and filters are included.
<Version>
<revision>0.11.90</revision>
<branch>0.11</branch>
<name>Golden bells&excl; What a world of happiness their harmony foretells&excl;</name>
<name>Golden bells! What a world of happiness their harmony foretells!</name>
<created>2012-04-12</created>
<file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.11.90.tar.bz2" />
<file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.11.90.tar.gz" />
Expand Down
14 changes: 14 additions & 0 deletions meson.build
Expand Up @@ -441,6 +441,20 @@ if have_orcc
endif
endif

# Set release date
if gst_version_nano == 0
extract_release_date = find_program('scripts/extract-release-date-from-doap-file.py')
run_result = run_command(extract_release_date, gst_version, files('gst-plugins-base.doap'))
if run_result.returncode() == 0
release_date = run_result.stdout().strip()
core_conf.set_quoted('GST_PACKAGE_RELEASE_DATETIME', release_date)
message('Package release date: ' + release_date)
else
# Error out if our release can't be found in the .doap file
error(run_result.stderr())
endif
endif

# Use core_conf after all subdirs have set values
configure_file(output : 'config.h', configuration : core_conf)

Expand Down
45 changes: 45 additions & 0 deletions scripts/extract-release-date-from-doap-file.py
@@ -0,0 +1,45 @@
#!/usr/bin/env python3
#
# extract-release-date-from-doap-file.py VERSION DOAP-FILE
#
# Extract release date for the given release version from a DOAP file
#
# Copyright (C) 2020 Tim-Philipp Müller <tim centricular com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library 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
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301, USA.

import sys
import xml.etree.ElementTree as ET

if len(sys.argv) != 3:
sys.exit('Usage: {} VERSION DOAP-FILE'.format(sys.argv[0]))

release_version = sys.argv[1]
doap_fn = sys.argv[2]

tree = ET.parse(doap_fn)
root = tree.getroot()

namespaces = {'doap': 'http://usefulinc.com/ns/doap#'}

for v in root.findall('doap:release/doap:Version', namespaces=namespaces):
if v.findtext('doap:revision', namespaces=namespaces) == release_version:
release_date = v.findtext('doap:created', namespaces=namespaces)
if release_date:
print(release_date)
sys.exit(0)

sys.exit('Could not find a release with version {} in {}'.format(release_version, doap_fn))

0 comments on commit 64712fa

Please sign in to comment.