Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package mm-common for openSUSE:Factory 
checked in at 2021-03-08 15:18:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mm-common (Old)
 and      /work/SRC/openSUSE:Factory/.mm-common.new.2378 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mm-common"

Mon Mar  8 15:18:19 2021 rev:8 rq:877359 version:1.0.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/mm-common/mm-common.changes      2020-06-11 
10:00:39.882381149 +0200
+++ /work/SRC/openSUSE:Factory/.mm-common.new.2378/mm-common.changes    
2021-03-08 15:20:36.394085845 +0100
@@ -1,0 +2,11 @@
+Thu Mar 04 07:37:41 UTC 2021 - Wang Jun <jgw...@suse.com>
+
+- Update to version 1.0.2:
+  * util/doc-install.pl: Update for Doxygen >= 1.8.16
+    (Kjell Ahlstedt)
+  * doc-reference.py: Don't include DESTDIR in the DevHelp base path
+    (Kjell Ahlstedt) Issue #2 (Mart Raudsepp)
+  * dist-build-scripts.py: Remove files from distribution, if requested
+    (Kjell Ahlstedt)
+
+-------------------------------------------------------------------

Old:
----
  mm-common-1.0.1.tar.xz

New:
----
  mm-common-1.0.2.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mm-common.spec ++++++
--- /var/tmp/diff_new_pack.CWuxlL/_old  2021-03-08 15:20:36.930086238 +0100
+++ /var/tmp/diff_new_pack.CWuxlL/_new  2021-03-08 15:20:36.934086241 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package mm-common
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 # Copyright (c) 2016 Bj??rn Lie, Bryne, Norway.
 #
 # All modifications and additions to the file contributed by third parties
@@ -18,7 +18,7 @@
 
 
 Name:           mm-common
-Version:        1.0.1
+Version:        1.0.2
 Release:        0
 Summary:        Common build files of the GNOME C++ bindings
 License:        GPL-2.0-or-later

++++++ mm-common-1.0.1.tar.xz -> mm-common-1.0.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/ChangeLog 
new/mm-common-1.0.2/ChangeLog
--- old/mm-common-1.0.1/ChangeLog       2020-06-04 19:02:07.421745000 +0200
+++ new/mm-common-1.0.2/ChangeLog       2020-09-25 13:54:04.141054200 +0200
@@ -1,3 +1,55 @@
+2020-09-25  Kjell Ahlstedt  <kjellahlst...@gmail.com>
+
+  1.0.2
+
+2020-09-25  Kjell Ahlstedt  <kjellahlst...@gmail.com>
+
+  Autotools builds: Create only .tar.xz tarballs
+
+  This is what Meson does.
+
+2020-09-25  Kjell Ahlstedt  <kjellahlst...@gmail.com>
+
+  Makefile.am: Remove the name of a removed file
+
+  Should have been fixed when skeletonmm/tools/dist-cmd.py was removed.
+
+2020-09-02  Kjell Ahlstedt  <kjellahlst...@gmail.com>
+
+  Python files: Use the 'with' statement when files are opened
+
+2020-09-02  Kjell Ahlstedt  <kjellahlst...@gmail.com>
+
+  dist-build-scripts.py: Remove files from dist, if requested
+
+  The caller (a meson.build file in e.g. glibmm) can specify git-tracked
+  files and directories that shall not be included in the tarball.
+  They shall be removed from MESON_DIST_ROOT.
+
+2020-07-20  Kjell Ahlstedt  <kjellahlst...@gmail.com>
+
+  doc-reference.py: Fix the DevHelp base path
+
+  The DevHelp base path shall not include DESTDIR. Fixes #2
+
+2020-06-17  Kjell Ahlstedt  <kjellahlst...@gmail.com>
+
+  util/doc-install.pl: Improve the update for Doxygen >= 1.8.16
+
+  * skeletonmm/doc/reference/meson.build:
+  * util/doc-install.pl: Move some code from meson.build to doc-install.pl,
+  where regular expressions can be used.
+
+2020-06-15  Kjell Ahlstedt  <kjellahlst...@gmail.com>
+
+  util/doc-install.pl: Update for Doxygen >= 1.8.16
+
+  Doxygen 1.8.16 and later does not store tag file names in the html files.
+  
+  * skeletonmm/doc/reference/meson.build:
+  * util/doc-install.pl: Modify so that references to other modules are
+  still updated in the html files when they are installed.
+
 2020-06-04  Kjell Ahlstedt  <kjellahlst...@gmail.com>
 
   1.0.1
@@ -1574,63 +1626,3 @@
   Also, refine some of the substitutions performed and add new ones to
   translate entity references to numerical code points.
 
-2009-08-18  Daniel Elstner  <dani...@openismus.com>
-
-  Pass the gmmproc module directory to Perl
-
-  * build/generate-binding.am (gmmproc): Pass -I"$(GMMPROC_DIR)/pm" to
-  the Perl interpreter in the default command line to invoke gmmproc.
-
-2009-08-18  Daniel Elstner  <dani...@openismus.com>
-
-  Do not append slash to DOXYGEN_TAGFILES locations
-
-  * build/doc-reference.am (dist_devhelpDATA_INSTALL): Strip trailing
-  slash from $(htmlrefdir), if there is one.
-  (dh_xsl_params): Strip trailing slash from $(htmlrefpub).
-  * macros/mm-doc.m4 (_MM_ARG_WITH_TAGFILE_DOC): Strip the trailing
-  slash from $mm_htmlrefdir and $mm_htmlrefpub if there is one, instead
-  of appending one.  Do append the slash to the locations listed in the
-  DOCINSTALL_FLAGS output variable, but omit it for DOXYGEN_TAGFILES.
-  Apparently Doxygen is not trying to be smart when it automatically
-  appends a trailing slash to the external documentation base paths.
-  Rather, it just mindlessly appends it no matter what, ending up with
-  a double slash if there already was one.
-
-2009-08-18  Daniel Elstner  <dani...@openismus.com>
-
-  Correct spelling and grammar in README
-
-  * README: Fix typing and spelling mistakes and improve the wording.
-
-2009-08-17  Daniel Elstner  <dani...@openismus.com>
-
-  Write news entry for mm-common 0.5
-
-2009-08-17  Daniel Elstner  <dani...@openismus.com>
-
-  Increment version to mm-common 0.5
-
-2009-08-17  Daniel Elstner  <dani...@openismus.com>
-
-  Put overview documentation into README file
-
-  * README: Compile the overview sent to the gtkmm mailing list into
-  a proper document.  Make the text slightly more formal and provide
-  explanations for some things not covered in the original mail.
-  Mention that the shipped libstdc++.tag file was not created by us.
-
-2009-08-17  Daniel Elstner  <dani...@openismus.com>
-
-  Flesh out AUTHORS file for release
-
-2009-08-17  Daniel Elstner  <dani...@openismus.com>
-
-  Implement generic --disable-deprecated-api macro
-
-  * macros/mm-dietlib.m4: New Autoconf macro file for configuration
-  macros that have the effect of reducing the size of the compiled
-  binding library.
-  (MM_ARG_DISABLE_DEPRECATED_API): New M4 macro for use by C++ bindings
-  in order to allow deprecated API to be omitted from the library build.
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/Makefile.am 
new/mm-common-1.0.2/Makefile.am
--- old/mm-common-1.0.1/Makefile.am     2020-06-04 19:02:07.241744300 +0200
+++ new/mm-common-1.0.2/Makefile.am     2020-09-25 13:54:04.041053300 +0200
@@ -116,7 +116,6 @@
        skeletonmm/untracked/README
 
 skeletonmm_script_files = \
-  skeletonmm/tools/dist-cmd.py \
   skeletonmm/tools/generate_defs_and_docs.sh
 
 skeletonmm_files = $(skeletonmm_script_files) $(skeletonmm_data_files)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/NEWS new/mm-common-1.0.2/NEWS
--- old/mm-common-1.0.1/NEWS    2020-06-04 19:02:07.241744300 +0200
+++ new/mm-common-1.0.2/NEWS    2020-09-25 13:54:04.041053300 +0200
@@ -1,3 +1,13 @@
+mm-common 1.0.2 (2020-09-25)
+
+* util/doc-install.pl: Update for Doxygen >= 1.8.16
+  (Kjell Ahlstedt)
+* doc-reference.py: Don't include DESTDIR in the DevHelp base path
+  (Kjell Ahlstedt) Issue #2 (Mart Raudsepp)
+* dist-build-scripts.py: Remove files from distribution, if requested
+  (Kjell Ahlstedt)
+
+
 mm-common 1.0.1 (2020-06-04)
 
 * Make libstdc++.tag retrieval work for Windows
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/configure.ac 
new/mm-common-1.0.2/configure.ac
--- old/mm-common-1.0.1/configure.ac    2020-06-04 19:02:07.245744500 +0200
+++ new/mm-common-1.0.2/configure.ac    2020-09-25 13:54:04.045053500 +0200
@@ -15,12 +15,12 @@
 ## You should have received a copy of the GNU General Public License
 ## along with mm-common.  If not, see <http://www.gnu.org/licenses/>.
 
-AC_INIT([mm-common], [1.0.1], 
[https://gitlab.gnome.org/GNOME/mm-common/issues/],
+AC_INIT([mm-common], [1.0.2], 
[https://gitlab.gnome.org/GNOME/mm-common/issues/],
         [mm-common], [http://www.gtkmm.org/])
 AC_PREREQ([2.59])
 AC_CONFIG_SRCDIR([util/mm-common-prepare.in])
 
-AM_INIT_AUTOMAKE([1.9 -Wno-portability check-news dist-bzip2 no-define 
std-options])
+AM_INIT_AUTOMAKE([1.9 -Wno-portability check-news no-dist-gzip dist-xz 
no-define std-options])
 # Support silent build rules.
 # Disable by either passing --disable-silent-rules to configure or passing V=1 
to make.
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/meson.build 
new/mm-common-1.0.2/meson.build
--- old/mm-common-1.0.1/meson.build     2020-06-04 19:02:07.245744500 +0200
+++ new/mm-common-1.0.2/meson.build     2020-09-25 13:54:04.045053500 +0200
@@ -1,7 +1,7 @@
 # This file is part of mm-common.
 
 project('mm-common',
-  version: '1.0.1',
+  version: '1.0.2',
   meson_version: '>= 0.50.0', # required for python3.path()
   license: 'GPLv2+'
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/skeletonmm/doc/reference/meson.build 
new/mm-common-1.0.2/skeletonmm/doc/reference/meson.build
--- old/mm-common-1.0.1/skeletonmm/doc/reference/meson.build    2020-06-04 
19:02:07.309744600 +0200
+++ new/mm-common-1.0.2/skeletonmm/doc/reference/meson.build    2020-09-25 
13:54:04.045053500 +0200
@@ -24,10 +24,13 @@
       htmlrefdir = htmlrefpub
     endif
     doxygen_tagfiles += ' "' + doxytagfile + '=' + htmlrefpub + '"'
-    if not htmlrefdir.endswith('/')
-      htmlrefdir += '/'
-    endif
+
+    # Doxygen <= 1.8.15
     docinstall_flags += ['-l', doxytagfile.split('/')[-1] + '@' + htmlrefdir]
+    if htmlrefpub != htmlrefdir
+      # Doxygen >= 1.8.16
+      docinstall_flags += ['-l', 's@' + htmlrefpub + '@' + htmlrefdir]
+    endif
   endif
 endforeach
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mm-common-1.0.1/util/build_scripts/dist-build-scripts.py 
new/mm-common-1.0.2/util/build_scripts/dist-build-scripts.py
--- old/mm-common-1.0.1/util/build_scripts/dist-build-scripts.py        
2020-06-04 19:02:07.313744500 +0200
+++ new/mm-common-1.0.2/util/build_scripts/dist-build-scripts.py        
2020-09-25 13:54:04.049053400 +0200
@@ -2,17 +2,20 @@
 
 # External command, intended to be called with meson.add_dist_script() in 
meson.build
 
-#                         sys.argv[1]      sys.argv[2]
-# dist-build-scripts.py <root_src_dir> <relative_script_dir>
+#                          argv[1]       argv[2]     argv[3:]
+# dist-build-scripts.py <root_src_dir> <script_dir> <no_dist>...
 
-# <relative_script_dir> is the directory with the build scripts, relative to 
<root_source_dir>.
+# <script_dir> The directory with the build scripts, relative to 
<root_source_dir>.
+# <no_dist> Zero or more names (relative to MESON_DIST_ROOT) of files and
+#           directories that shall not be distributed.
 
 import os
 import sys
 import shutil
 
+dist_root = os.getenv('MESON_DIST_ROOT')
 src_script_dir = os.path.join(sys.argv[1], sys.argv[2])
-dist_script_dir = os.path.join(os.getenv('MESON_DIST_ROOT'), sys.argv[2])
+dist_script_dir = os.path.join(dist_root, sys.argv[2])
 
 # Create the distribution script directory, if it does not exist.
 os.makedirs(dist_script_dir, exist_ok=True)
@@ -29,15 +32,26 @@
   shutil.copy(os.path.join(src_script_dir, file), dist_script_dir)
 
 # Don't distribute .gitignore files.
-for dirpath, dirnames, filenames in os.walk(os.getenv('MESON_DIST_ROOT')):
+for dirpath, dirnames, filenames in os.walk(dist_root):
   if '.gitignore' in filenames:
     os.remove(os.path.join(dirpath, '.gitignore'))
 
 # Remove an empty MESON_DIST_ROOT/build directory.
-dist_build_dir = os.path.join(os.getenv('MESON_DIST_ROOT'), 'build')
+dist_build_dir = os.path.join(dist_root, 'build')
 if os.path.isdir(dist_build_dir):
   try:
     os.rmdir(dist_build_dir)
   except OSError:
     # Ignore the error, if not empty.
     pass
+
+# Remove specified files and directories from the MESON_DIST_ROOT directory.
+for rel_path in sys.argv[3:]:
+  abs_path = os.path.join(dist_root, rel_path)
+  if os.path.isfile(abs_path):
+    os.remove(abs_path)
+  elif os.path.isdir(abs_path):
+    shutil.rmtree(abs_path, ignore_errors=True)
+  else:
+    # Ignore non-existent files and directories.
+    print('--- Info:', abs_path, 'not found, not removed.')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/util/build_scripts/dist-changelog.py 
new/mm-common-1.0.2/util/build_scripts/dist-changelog.py
--- old/mm-common-1.0.1/util/build_scripts/dist-changelog.py    2020-06-04 
19:02:07.313744500 +0200
+++ new/mm-common-1.0.2/util/build_scripts/dist-changelog.py    2020-09-25 
13:54:04.049053400 +0200
@@ -2,7 +2,7 @@
 
 # External command, intended to be called with meson.add_dist_script() in 
meson.build
 
-#                      sys.argv[1]
+#                       argv[1]
 # dist-changelog.py <root_source_dir>
 
 import os
@@ -20,7 +20,5 @@
   '--max-count=200',
   '--pretty=tformat:%cd  %an  <%ae>%n%n  %s%n%w(0,0,2)%+b',
 ]
-logfile = open(os.path.join(os.getenv('MESON_DIST_ROOT'), 'ChangeLog'), 
mode='w')
-result = subprocess.run(cmd, stdout=logfile)
-logfile.close()
-sys.exit(result.returncode)
+with open(os.path.join(os.getenv('MESON_DIST_ROOT'), 'ChangeLog'), mode='w') 
as logfile:
+  sys.exit(subprocess.run(cmd, stdout=logfile).returncode)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/util/build_scripts/doc-reference.py 
new/mm-common-1.0.2/util/build_scripts/doc-reference.py
--- old/mm-common-1.0.1/util/build_scripts/doc-reference.py     2020-06-04 
19:02:07.313744500 +0200
+++ new/mm-common-1.0.2/util/build_scripts/doc-reference.py     2020-09-25 
13:54:04.053053400 +0200
@@ -91,13 +91,14 @@
   # <devhelpfile> is a relative or absolute path in the build directory.
   # <htmlrefdir> and <devhelpdir> are installation directories, relative to 
{prefix}.
   devhelpfile = sys.argv[3]
-  devhelpdir = os.path.join(os.getenv('MESON_INSTALL_DESTDIR_PREFIX'), 
sys.argv[4])
-  htmlrefdir = os.path.join(os.getenv('MESON_INSTALL_DESTDIR_PREFIX'), 
sys.argv[5])
+  destdir_devhelpdir = os.path.join(os.getenv('MESON_INSTALL_DESTDIR_PREFIX'), 
sys.argv[4])
+  destdir_htmlrefdir = os.path.join(os.getenv('MESON_INSTALL_DESTDIR_PREFIX'), 
sys.argv[5])
+  prefix_htmlrefdir = os.path.join(os.getenv('MESON_INSTALL_PREFIX'), 
sys.argv[5])
   build_dir = os.path.dirname(devhelpfile)
 
   # Create the installation directories, if they do not exist.
-  os.makedirs(htmlrefdir, exist_ok=True)
-  os.makedirs(devhelpdir, exist_ok=True)
+  os.makedirs(destdir_htmlrefdir, exist_ok=True)
+  os.makedirs(destdir_devhelpdir, exist_ok=True)
 
   # Install html files.
   cmd = [
@@ -107,7 +108,7 @@
     '--verbose',
     '--mode=0644',
   ] + sys.argv[6:] + [
-    '-t', htmlrefdir,
+    '-t', destdir_htmlrefdir,
     '--glob',
     '--',
     os.path.join(build_dir, 'html', '*'),
@@ -122,8 +123,8 @@
     os.path.join(MMDOCTOOLDIR, 'doc-install.pl'),
     '--verbose',
     '--mode=0644',
-    '--book-base=' + htmlrefdir.rstrip('/'),
-    '-t', devhelpdir,
+    '--book-base=' + prefix_htmlrefdir.rstrip('/'),
+    '-t', destdir_devhelpdir,
     '--',
     devhelpfile,
   ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mm-common-1.0.1/util/build_scripts/generate-binding.py 
new/mm-common-1.0.2/util/build_scripts/generate-binding.py
--- old/mm-common-1.0.1/util/build_scripts/generate-binding.py  2020-06-04 
19:02:07.313744500 +0200
+++ new/mm-common-1.0.2/util/build_scripts/generate-binding.py  2020-09-25 
13:54:04.053053400 +0200
@@ -33,10 +33,8 @@
     '--namespace=' + namespace,
     '--parent_dir=' + parent_dir,
   ] + sys.argv[5:]
-  output_file_obj = open(output_file, mode='w')
-  result = subprocess.run(cmd, stdout=output_file_obj)
-  output_file_obj.close()
-  return result.returncode
+  with open(output_file, mode='w') as output_file_obj:
+    return subprocess.run(cmd, stdout=output_file_obj).returncode
 
 # Invoked from custom_target() in meson.build.
 def gmmproc():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/util/doc-install.pl 
new/mm-common-1.0.2/util/doc-install.pl
--- old/mm-common-1.0.1/util/doc-install.pl     2020-06-04 19:02:07.313744500 
+0200
+++ new/mm-common-1.0.2/util/doc-install.pl     2020-09-25 13:54:04.053053400 
+0200
@@ -27,6 +27,7 @@
 # Globals
 my $message_prefix;
 my %tags_hash;
+my %subst_hash;
 my $book_base;
 my $perm_mode;
 my $target_dir;
@@ -57,7 +58,8 @@
 
 Mandatory arguments to long options are mandatory for short options, too.
       --book-base=BASEPATH          use reference BASEPATH for Devhelp book
-  -l, --tag-base=TAGFILE\@BASEPATH   use BASEPATH for references from TAGFILE
+  -l, --tag-base=TAGFILE\@BASEPATH   use BASEPATH for references from TAGFILE 
(Doxygen <= 1.8.15)
+  -l, --tag-base=s\@BASEPUB\@BASEPATH substitute BASEPATH for BASEPUB (Doxygen 
>= 1.8.16)
   -m, --mode=MODE                   override file permission MODE (octal)
   -t, --target-directory=DIRECTORY  copy all SOURCE arguments into DIRECTORY
   -T, --no-target-directory         treat DEST as normal file
@@ -84,6 +86,23 @@
   exit 1;
 }
 
+sub substitute_pub($$)
+{
+  my ($pubpath, $ref_count) = @_;
+  foreach my $key (keys %subst_hash)
+  {
+    # Don't use m// or s/// here. $key may contain characters
+    # that are special in regular expressions.
+    if (substr($pubpath, 0, length($key)) eq $key)
+    {
+      substr($pubpath, 0, length($key)) = $subst_hash{$key};
+      $$ref_count++;
+      last;
+    }
+  }
+  return $pubpath;
+}
+
 # Copy file to destination while translating references on the fly.
 # Sniff the content for the file type, as it is always read in anyway.
 sub install_file ($$$)
@@ -97,16 +116,27 @@
       or error('Failed to read ', $basename, ': ', $!);
   }
 
-  if (%tags_hash and $buf =~ m/\A(?> \s*)(?> (?> <[?!][^<]+ )* )<html[>\s]/sx)
+  if ((%tags_hash or %subst_hash) and $buf =~ m/\A(?> \s*)(?> (?> <[?!][^<]+ 
)* )<html[>\s]/sx)
   {
+    # Doxygen 1.8.15 and earlier stores the tag file name and BASEPATH in the 
html files.
     my $count = 0;
     my $total = $buf =~
       s!(?<= \s) doxygen="((?> [^:"]+)):((?> [^"]*))" # 
doxygen="(TAGFILE):(BASEPATH)"
         (?> \s+) ((?> href|src) =") \2 ((?> [^"]*)")  # 
(href|src=")BASEPATH(RELPATH")
        ! $3 . ((exists $tags_hash{$1}) ? (++$count, $tags_hash{$1}) : $2) . $4
        !egsx;
-    my $change = $total ? "rewrote $count of $total"
-                        : 'no';
+    my $change = $total ? "rewrote $count of $total" : 'no';
+
+    if ($total == 0 and %subst_hash)
+    {
+      # Doxygen 1.8.16 and later does not store the tag file name and BASEPATH 
in the html files.
+      # The previous s!!! expression won't find anything to substitute.
+      $total = $buf =~
+        s!(\s (?:href|src) = ") ([^"]+") # (href|src=")(BASEPUB RELPATH")
+         ! $1 . substitute_pub($2, \$count)
+         !egsx;
+      $change = $total ? "rewrote $count" : 'no';
+    }
     notice('Translating ', $basename, ' (', $change, ' references)');
   }
   elsif (defined($book_base) and $buf =~ m/\A(?> \s*)(?> (?> <[?!][^<]+ )* 
)<book\s/sx)
@@ -132,23 +162,41 @@
     or warning('Failed to set ', $basename, ' permissions: ', $!);
 }
 
-# Split TAGFILE@BASEPATH argument into key/value pair
+# Split TAGFILE@BASEPATH or s@BASEPUB@BASEPATH argument into key/value pair
 sub split_key_value ($)
 {
   my ($mapping) = @_;
   my ($name, $path) = split(m'@', $mapping, 2);
 
-  error('Invalid base path mapping: ', $mapping) unless (defined($name) and 
$name ne '');
+  if ($name ne 's') # Doxygen 1.8.15 and earlier
+  {
+    error('Invalid base path mapping: ', $mapping) unless (defined($name) and 
$name ne '');
 
-  if (defined $path)
+    if (defined $path)
+    {
+      return ($name, $path, 0);
+    }
+    notice('Not changing base path for tag file ', $name);
+    return ();
+  }
+  else # Doxygen 1.8.16 and later
   {
-    notice('Using base path ', $path, ' for tag file ', $name);
-    return ($name, $path);
+    ($name, $path) = split(m'@', $path, 2);
+
+    error('Invalid base path mapping: ', $mapping) unless (defined($name) and 
$name ne '');
+
+    if (defined $path)
+    {
+      return ($name, $path, 1);
+    }
+    notice('Not changing base path for ', $name);
+    return ();
   }
-  notice('Not changing base path for tag file ', $name);
-  return ();
 }
 
+# ======
+# main()
+# ======
 # Define line leader of log messages
 $message_prefix = path_basename($0);
 $message_prefix =~ s/\.[^.]*$//s if (defined $message_prefix);
@@ -170,10 +218,41 @@
     or exit 2;
 
   error('Invalid permission mode: ', $mode) unless ($mode =~ m/^[0-7]+$/s);
-
   $perm_mode = oct($mode);
-  %tags_hash = map(split_key_value($_), @tags);
+
+  foreach my $tag (@tags)
+  {
+    my ($name, $path, $subst) = split_key_value($tag);
+    if (defined($subst))
+    {
+      # Translate a local absolute path to URI.
+      # (If Autotools (not Meson) is used, this translation is
+      # also done in mm-doc.m4 (MM_ARG_WITH_TAGFILE_DOC).
+      # $path will not be changed, if these substitutions have been
+      # performed before.)
+      $path =~ s!\\!/!g;
+      $path =~ s! !%20!g;
+      $path =~ s!^/!file:///!;
+      $path =~ s!^([A-Za-z]:/)!file:///$1!; # Windows: C:/path
+      if ($path !~ m!/$!)
+      {
+        $path .= '/';
+      }
+
+      if (!$subst)
+      {
+        notice('Using base path ', $path, ' for tag file ', $name);
+        $tags_hash{$name} = $path;
+      }
+      else
+      {
+        notice('Using base path ', $path, ' for ', $name);
+        $subst_hash{$name} = $path;
+      }
+    }
+  }
 }
+
 notice('Using base path ', $book_base, ' for Devhelp book') if (defined 
$book_base);
 
 if ($target_nodir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/util/meson_aux/extra-dist-cmd.py 
new/mm-common-1.0.2/util/meson_aux/extra-dist-cmd.py
--- old/mm-common-1.0.1/util/meson_aux/extra-dist-cmd.py        2020-06-04 
19:02:07.313744500 +0200
+++ new/mm-common-1.0.2/util/meson_aux/extra-dist-cmd.py        2020-09-25 
13:54:04.053053400 +0200
@@ -27,9 +27,8 @@
   '--max-count=200',
   '--pretty=tformat:%cd  %an  <%ae>%n%n  %s%n%w(0,0,2)%+b',
 ]
-logfile = open(os.path.join(os.getenv('MESON_DIST_ROOT'), 'ChangeLog'), 
mode='w')
-result = subprocess.run(cmd, stdout=logfile)
-logfile.close()
+with open(os.path.join(os.getenv('MESON_DIST_ROOT'), 'ChangeLog'), mode='w') 
as logfile:
+  result = subprocess.run(cmd, stdout=logfile)
 
 # Distribute the libstdc++.tag file in addition to the files in the local git 
clone.
 # shutil.copy2() copies timestamps and some other file metadata.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mm-common-1.0.1/util/meson_aux/skeletonmm-tarball.py 
new/mm-common-1.0.2/util/meson_aux/skeletonmm-tarball.py
--- old/mm-common-1.0.1/util/meson_aux/skeletonmm-tarball.py    2020-06-04 
19:02:07.313744500 +0200
+++ new/mm-common-1.0.2/util/meson_aux/skeletonmm-tarball.py    2020-09-25 
13:54:04.053053400 +0200
@@ -39,11 +39,10 @@
 else:
   mode = 'w'
 
-tar_file = tarfile.open(output_file, mode=mode)
-os.chdir(source_dir) # Input filenames are relative to source_dir.
-for file in sys.argv[3:]:
-  tar_file.add(file)
-tar_file.close()
+with tarfile.open(output_file, mode=mode) as tar_file:
+  os.chdir(source_dir) # Input filenames are relative to source_dir.
+  for file in sys.argv[3:]:
+    tar_file.add(file)
 # Errors raise exceptions. If an exception is raised, Meson+ninja will notice
 # that the command failed, despite exit(0).
 sys.exit(0)

Reply via email to