Hello community, here is the log from the commit of package kapidox for openSUSE:Factory checked in at 2020-12-15 14:51:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kapidox (Old) and /work/SRC/openSUSE:Factory/.kapidox.new.2328 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kapidox" Tue Dec 15 14:51:26 2020 rev:84 rq:855407 version:5.77.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kapidox/kapidox.changes 2020-11-23 10:31:37.565435973 +0100 +++ /work/SRC/openSUSE:Factory/.kapidox.new.2328/kapidox.changes 2020-12-15 14:51:28.690745917 +0100 @@ -1,0 +2,10 @@ +Sat Dec 5 18:56:12 UTC 2020 - Christophe Giboudeaux <[email protected]> + +- Update to 5.77.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/kde-frameworks-5.77.0 +- Changes since 5.76.0: + * Add QDoc support for generating documentation with QDoc + +------------------------------------------------------------------- Old: ---- kapidox-5.76.0.tar.xz kapidox-5.76.0.tar.xz.sig New: ---- kapidox-5.77.0.tar.xz kapidox-5.77.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kapidox.spec ++++++ --- /var/tmp/diff_new_pack.2KIYWn/_old 2020-12-15 14:51:29.438746745 +0100 +++ /var/tmp/diff_new_pack.2KIYWn/_new 2020-12-15 14:51:29.442746749 +0100 @@ -18,13 +18,13 @@ # Only needed for the package signature condition %bcond_without lang -%define _tar_path 5.76 +%define _tar_path 5.77 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} Name: kapidox -Version: 5.76.0 +Version: 5.77.0 Release: 0 Summary: Scripts and data for building API documentation License: BSD-2-Clause ++++++ kapidox-5.76.0.tar.xz -> kapidox-5.77.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.76.0/setup.py new/kapidox-5.77.0/setup.py --- old/kapidox-5.76.0/setup.py 2020-10-10 17:35:59.000000000 +0200 +++ new/kapidox-5.77.0/setup.py 2020-12-03 19:12:47.000000000 +0100 @@ -14,7 +14,7 @@ setup( name='kapidox', - version='5.76.0', + version='5.77.0', description='KDE API documentation generation tools', maintainer = 'Olivier Churlaud', maintainer_email = '[email protected]', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/data/global.qdocconf new/kapidox-5.77.0/src/kapidox/data/global.qdocconf --- old/kapidox-5.76.0/src/kapidox/data/global.qdocconf 1970-01-01 01:00:00.000000000 +0100 +++ new/kapidox-5.77.0/src/kapidox/data/global.qdocconf 2020-12-03 19:12:47.000000000 +0100 @@ -0,0 +1,4 @@ +depends += qtcore qtquick qtquickcontrols + +sources.fileextensions = "*.cpp *.qdoc *.qml" +headers.fileextensions = "*.h *.ch *.h++ *.hh *.hpp *.hxx" \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/data/templates/qdoc-sidebar.html new/kapidox-5.77.0/src/kapidox/data/templates/qdoc-sidebar.html --- old/kapidox-5.76.0/src/kapidox/data/templates/qdoc-sidebar.html 1970-01-01 01:00:00.000000000 +0100 +++ new/kapidox-5.77.0/src/kapidox/data/templates/qdoc-sidebar.html 2020-12-03 19:12:47.000000000 +0100 @@ -0,0 +1,63 @@ +<div id="sidebar-header" class="menu-box"> + <div class="menu-title"> + <h2><a href="https://api.kde.org">api.kde.org</a></h2> + </div> + </div> + <div class="menu-box"> + <a name="cp-menu" /> + <div class="menu-content"> + {% if doxygen_menu %} + <ul> + {% for entry in doxygen_menu.entries %} + <li><a href="{{entry.href}}">{{entry.text}}</a></li> + {% endfor %} + </ul> + {% endif %} + </div> + </div> + + {% if class_map %} + <div class="menu_box"> + <div class="menu-title"> + <h2>Class Picker</h2> + </div> + <div class="menu-content"> + <form name="guideform"> + <select class="form-control" name="guidelinks" style="width:80%;margin-left:auto;margin-right:auto;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value"> + <option value="annotated.html">-- Choose --</option> + {% for class in class_map.classes %} + <option value="{{class.filename}}">{{class.classname}}</option> + {% endfor %} + </select> + </form> + </div> + </div> + {% endif %} + + {% if fwinfo %} + {% include "libinfo.html" %} + {% endif %} + + {% if group_menu %} + <div class="menu-box"> + <a name="cp-menu" /> + <div class="menu-title"> + <h2 id="cp-menu-project">{{group_menu.group_title}}</h2> + <a href="#cp-skip-project" class="cp-doNotDisplay">Skip menu "{{group_menu.group_title}}"</a> + </div> + <div class="menu-content"> + <ul> + {% for section in group_menu.sections %} + <li>{{section.title}} + <ul> + {% for member in section.members %} + <li><a href="{{member.href}}">{{member.name}}</a></li> + {% endfor %} + </ul> + </li> + {% endfor %} + </ul> + </div> + </div> + {% endif %} + \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/data/templates/qdoc-wrapper.html new/kapidox-5.77.0/src/kapidox/data/templates/qdoc-wrapper.html --- old/kapidox-5.76.0/src/kapidox/data/templates/qdoc-wrapper.html 1970-01-01 01:00:00.000000000 +0100 +++ new/kapidox-5.77.0/src/kapidox/data/templates/qdoc-wrapper.html 2020-12-03 19:12:47.000000000 +0100 @@ -0,0 +1,13 @@ +{% extends "base.html" %} + +{% block page_title %}{{ title }}{% endblock %} + +{% block content %} + +{{ docs }} + +{% endblock %} + +{% block sidebar %} + {% include "qdoc-sidebar.html" %} +{% endblock %} {# sidebar #} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/generator.py new/kapidox-5.77.0/src/kapidox/generator.py --- old/kapidox-5.76.0/src/kapidox/generator.py 2020-10-10 17:35:59.000000000 +0200 +++ new/kapidox-5.77.0/src/kapidox/generator.py 2020-12-03 19:12:47.000000000 +0100 @@ -12,11 +12,17 @@ import datetime import os import logging +from os import environ import shutil import subprocess import tempfile import sys +import pathlib +from typing import Any, Dict import xml.etree.ElementTree as ET +import re +import glob +from pathlib import Path import jinja2 @@ -25,6 +31,8 @@ import xml.etree.ElementTree as xmlET import json +from jinja2.environment import Template + from kapidox import utils try: from kapidox import depdiagram @@ -73,6 +81,7 @@ 'tagfiles', 'dependency_diagram', 'copyright', + 'is_qdoc', # Output 'outputdir', 'htmldir', @@ -405,6 +414,34 @@ dct['content'] = '\n'.join(body) return dct +def postprocess_internal_qdoc(htmldir: str, tmpl: Template, env: Dict[str, Any]): + """Substitute text in HTML files + + Performs text substitutions on each line in each .html file in a directory. + + Args: + htmldir: (string) the directory containing the .html files. + mapping: (dict) a dict of mappings. + + """ + for path in glob.glob(os.path.join(htmldir, "*.html")): + newpath = f"{path}.new" + + txt = Path(path).read_text() + env['docs'] = txt.partition('body')[2].partition('</body>')[0] + + with codecs.open(newpath, 'w', 'utf-8') as outf: + try: + html = tmpl.render(env) + except BaseException: + logging.error(f"Postprocessing {path} failed") + raise + + outf.write(html) + + os.remove(path) + os.rename(newpath, path) + def postprocess_internal(htmldir, tmpl, mapping): """Substitute text in HTML files @@ -481,10 +518,22 @@ outf.write(txt) return out_path +def generate_apidocs_qdoc(ctx: Context, tmp_dir: str, doxyfile_entries=None, keep_temp_dirs=False): + absolute = pathlib.Path(os.path.join(ctx.outputdir, 'html')).absolute() -def generate_apidocs(ctx, tmp_dir, doxyfile_entries=None, keep_temp_dirs=False): + environ['KAPIDOX_DIR'] = ctx.doxdatadir + + logging.info(f'Running QDoc (qdoc {ctx.fwinfo.path}/.qdocconf --outputdir={absolute}') + ret = subprocess.call(['qdoc', ctx.fwinfo.path + "/.qdocconf", f"--outputdir={absolute}"]) + if ret != 0: + raise Exception("QDoc exited with a non-zero status code") + +def generate_apidocs(ctx: Context, tmp_dir, doxyfile_entries=None, keep_temp_dirs=False): """Generate the API documentation for a single directory""" + if ctx.is_qdoc: + return generate_apidocs_qdoc(ctx, tmp_dir, doxyfile_entries, keep_temp_dirs) + def find_src_subdir(dirlist, deeper_subd=None): returnlist = [] for d in dirlist: @@ -580,26 +629,6 @@ logging.info('Running Doxygen') subprocess.call([ctx.doxygen, doxyfile_path]) - -def postprocess(ctx, classmap, template_mapping=None): - mapping = { - 'doxygencss': 'doxygen.css', - 'resources': ctx.resourcedir, - 'title': ctx.title, - 'fwinfo': ctx.fwinfo, - 'copyright': ctx.copyright, - 'doxygen_menu': {'entries': menu_items(ctx.htmldir, ctx.modulename)}, - 'class_map': {'classes': classmap}, - 'kapidox_version': utils.get_kapidox_version(), - } - if template_mapping: - mapping.update(template_mapping) - logging.info('Postprocessing') - - tmpl = create_jinja_environment(ctx.doxdatadir).get_template('doxygen.html') - postprocess_internal(ctx.htmldir, tmpl, mapping) - - def generate_diagram(png_path, fancyname, dot_files, tmp_dir): """Generate a dependency diagram for a framework. """ @@ -673,6 +702,7 @@ dependency_diagram=lib.dependency_diagram, # Output outputdir=lib.outputdir, + is_qdoc=lib.metainfo['qdoc'], ) @@ -696,54 +726,62 @@ prefix = '../../' return (tagfile, prefix + lib.outputdir + '/html/') +def finish_fw_apidocs_doxygen(ctx: Context, env: Dict[str, Any]): + tmpl = create_jinja_environment(ctx.doxdatadir).get_template('library.html') + postprocess_internal(ctx.htmldir, tmpl, env) + + tmpl2 = create_jinja_environment(ctx.doxdatadir).get_template('search.html') + search_output = ctx.fwinfo.outputdir + "/html/search.html" + with codecs.open(search_output, 'w', 'utf-8') as outf: + outf.write(tmpl2.render(env)) + +def finish_fw_apidocs_qdoc(ctx: Context, env: Dict[str, Any]): + tmpl = create_jinja_environment(ctx.doxdatadir).get_template('qdoc-wrapper.html') + postprocess_internal_qdoc(ctx.htmldir, tmpl, env) -def finish_fw_apidocs(ctx, group_menu): +def gen_template_environment(ctx: Context) -> Dict[str, Any]: classmap = build_classmap(ctx.tagfile) entries = [{ 'href': '../../index.html', 'text': 'KDE API Reference' - }] - if ctx.fwinfo.part_of_group: + }] + + if ctx.fwinfo.part_of_group: entries[0]['href'] = '../' + entries[0]['href'] - entries.append({ - 'href': '../../index.html', - 'text': ctx.fwinfo.product.fancyname - }) - entries.append({ - 'href': 'index.html', - 'text': ctx.fancyname - }) - - template_mapping = { - 'breadcrumbs': { - 'entries': entries - }, - } - copyright = '1996-' + str(datetime.date.today().year) + ' The KDE developers' + entries.append({'href': '../../index.html', 'text': ctx.fwinfo.product.fancyname }) + + entries.append({'href': 'index.html', 'text': ctx.fancyname }) + mapping = { - 'qch': ctx.qhp, - 'doxygencss': 'doxygen.css', - 'resources': ctx.resourcedir, - 'title': ctx.title, - 'fwinfo': ctx.fwinfo, - 'copyright': copyright, - 'doxygen_menu': {'entries': menu_items(ctx.htmldir, ctx.modulename)}, - 'class_map': {'classes': classmap}, - 'kapidox_version': utils.get_kapidox_version(), - } - if template_mapping: - mapping.update(template_mapping) - logging.info('Postprocessing') + 'qch': ctx.qhp, + 'doxygencss': 'doxygen.css', + 'resources': ctx.resourcedir, + 'title': ctx.title, + 'fwinfo': ctx.fwinfo, + 'copyright': f"1996-{datetime.date.today().year} The KDE developers", + 'doxygen_menu': {'entries': menu_items(ctx.htmldir, ctx.modulename)}, + 'class_map': {'classes': classmap}, + 'kapidox_version': utils.get_kapidox_version(), + 'breadcrumbs': { + 'entries': entries + }, + } - tmpl = create_jinja_environment(ctx.doxdatadir).get_template('library.html') - postprocess_internal(ctx.htmldir, tmpl, mapping) + return mapping - tmpl2 = create_jinja_environment(ctx.doxdatadir).get_template('search.html') - search_output = ctx.fwinfo.outputdir + "/html/search.html" - with codecs.open(search_output, 'w', 'utf-8') as outf: - outf.write(tmpl2.render(mapping)) +def finish_fw_apidocs(ctx: Context): + env = gen_template_environment(ctx) + + if ctx.is_qdoc: + logging.info('Postprocessing QtDoc...') + finish_fw_apidocs_qdoc(ctx, env) + + else: + logging.info('Postprocessing Doxygen...') + + finish_fw_apidocs_doxygen(ctx, env) def indexer(lib): """ Create json index from xml @@ -814,6 +852,9 @@ def create_global_index(products): doclist = [] for product in products: + if product.metainfo['qdoc']: + continue + with open(product.outputdir+'/searchdata.json', 'r') as f: prodindex = json.load(f) for proditem in prodindex['libraries']: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/hlfunctions.py new/kapidox-5.77.0/src/kapidox/hlfunctions.py --- old/kapidox-5.76.0/src/kapidox/hlfunctions.py 2020-10-10 17:35:59.000000000 +0200 +++ new/kapidox-5.77.0/src/kapidox/hlfunctions.py 2020-12-03 19:12:47.000000000 +0100 @@ -103,11 +103,14 @@ shutil.rmtree(lib.outputdir) ctx = generator.create_fw_context(args, lib, tagfiles, copyright) generator.gen_fw_apidocs(ctx, tmp_dir) - generator.finish_fw_apidocs(ctx, None) - logging.info('# Generate indexing files') - generator.indexer(lib) + generator.finish_fw_apidocs(ctx) + if not ctx.is_qdoc: + logging.info('# Generate indexing files') + generator.indexer(lib) for product in products: - generator.create_product_index(product) + if not product.metainfo['qdoc']: + generator.create_product_index(product) + if product.logo_url is not None: logodir = os.path.dirname(product.logo_url) if not os.path.isdir(logodir): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/models.py new/kapidox-5.77.0/src/kapidox/models.py --- old/kapidox-5.76.0/src/kapidox/models.py 2020-10-10 17:35:59.000000000 +0200 +++ new/kapidox-5.77.0/src/kapidox/models.py 2020-12-03 19:12:47.000000000 +0100 @@ -78,6 +78,7 @@ self.parent = self.product self.product.libraries.append(self) + self.metainfo = metainfo self.name = metainfo['name'] self.fancyname = metainfo['fancyname'] self.description = metainfo.get('description') @@ -140,6 +141,7 @@ """ + self.metainfo = metainfo self.parent = None # if there is a group, the product is the group # else the product is directly the library diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/preprocessing.py new/kapidox-5.77.0/src/kapidox/preprocessing.py --- old/kapidox-5.76.0/src/kapidox/preprocessing.py 2020-10-10 17:35:59.000000000 +0200 +++ new/kapidox-5.77.0/src/kapidox/preprocessing.py 2020-12-03 19:12:47.000000000 +0100 @@ -10,6 +10,7 @@ import logging import os import sys +from typing import Any, Dict, Optional from urllib.request import Request, urlopen from urllib.error import HTTPError @@ -60,7 +61,7 @@ dct[platform] = note -def create_metainfo(path): +def create_metainfo(path) -> Optional[Dict[str,Any]]: """Look for a `metadata.yaml` file and create a dictionary out it. Args: @@ -70,6 +71,8 @@ did not fulfill some conditions. """ + metainfo: Optional[Dict[str,Any]] + if not os.path.isdir(path): return None @@ -117,6 +120,11 @@ else: repo_id = dirname + qdoc: bool = False + + if 'qdoc' in metainfo: + qdoc = metainfo['qdoc'] + metainfo.update({ 'fancyname': fancyname, 'name': dirname, @@ -124,6 +132,7 @@ 'public_lib': metainfo.get('public_lib', False), 'dependency_diagram': None, 'path': path, + 'qdoc': qdoc, }) # replace legacy platform names _______________________________________________ openSUSE Commits mailing list -- [email protected] To unsubscribe, email [email protected] List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette List Archives: https://lists.opensuse.org/archives/list/[email protected]
