code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import get

WorkDir = "."

def install():
    pisitools.insinto("/usr/share/hunspell", "ru_myspell.dict", "ru_RU.dic")
    pisitools.insinto("/usr/share/hunspell", "ru_RU.koi8r.aff", "ru_RU.aff")

    shelltools.chmod("%s/usr/share/hunspell/*" % get.installDIR(), 0644)

    for lang in ("ru_UA",):
        pisitools.dosym("ru_RU.dic", "/usr/share/hunspell/%s.dic" % lang)
        pisitools.dosym("ru_RU.aff", "/usr/share/hunspell/%s.aff" % lang)

    pisitools.dodoc("readme*", "LICENSE")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>hunspell-dict-ru</Name>
        <Homepage>ftp://ftp.vsu.ru/mirrors/scon155.phys.msu.su/pub/russian/ispell/myspell</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>BSD</License>
        <IsA>locale:ru</IsA>
        <IsA>data</IsA>
        <Summary>Russian hunspell dictionaries</Summary>
        <Description>hunspell-dict-ru includes Russian hunspell dictionaries.</Description>
        <Archive sha1sum="1a1eab7dda00b05cc44a2a0950392643fd0bb395" type="targz">http://pkgs.fedoraproject.org/repo/pkgs/hunspell-ru/rus-myspell-0.99f7.tar.gz/05a7c3a7bea2432410a35d93161b4c0a/rus-myspell-0.99f7.tar.gz</Archive>
    </Source>

    <Package>
        <Name>hunspell-dict-ru</Name>
        <Files>
            <Path fileType="data">/usr/share</Path>
            <Path fileType="doc">/usr/share/doc</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-03-29</Date>
            <Version>0.99f_7</Version>
            <Comment>Rebuild with new toolchain</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>0.99f_7</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2014-02-17</Date>
            <Version>0.99f_7</Version>
            <Comment>First release</Comment>
            <Name>Kamil Atlı</Name>
            <Email>suvarice@gmail.com</Email>
        </Update>
    </History>
</PISI>

repo_name: ayhanyalcinsoy/main


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>hunspell-dict-ru</Name>
        <Summary xml:lang="tr">Rusça hunspell sözlükleri</Summary>
        <Description xml:lang="tr">hunspell-dict-ru Rusça hunspell sözlüklerini içerir.</Description>
    </Source>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools

WorkDir = "."

def setup():
    shelltools.system("unzip -o ooo_swedish_dict_2-40.oxt")

def install():
    pisitools.insinto("/usr/share/hunspell", "dictionaries/*.dic")
    pisitools.insinto("/usr/share/hunspell", "dictionaries/*.aff")

    pisitools.dodoc("LICENSE*")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>hunspell-dict-sv</Name>
        <Homepage>http://dsso.se/</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>LGPLv2</License>
        <IsA>locale:sv</IsA>
        <IsA>data</IsA>
        <Summary>Swedish hunspell dictionaries</Summary>
        <Description>hunspell-dict-sv includes Swedish hunspell dictionaries.</Description>
        <Archive sha1sum="00ffbd1d3950d0eb9e1db1c227397facca23bcd0" type="binary">https://extensions.libreoffice.org/extensions/swedish-spelling-dictionary-den-stora-svenska-ordlistan/2.40/@@download/file/ooo_swedish_dict_2-40.oxt</Archive>
    </Source>

    <Package>
        <Name>hunspell-dict-sv</Name>
        <Files>
            <Path fileType="data">/usr/share</Path>
            <Path fileType="doc">/usr/share/doc</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-04-07</Date>
            <Version>2.40</Version>
            <Comment>Release Bump</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>2.40</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2014-02-17</Date>
            <Version>1.29</Version>
            <Comment>First release</Comment>
            <Name>Osman Erkan</Name>
            <Email>osman.erkan@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>hunspell-dict-sv</Name>
        <Summary xml:lang="tr">İsveççe hunspell sözlükleri</Summary>
        <Description xml:lang="tr">hunspell-dict-sv İsveççe hunspell sözlüklerini içerir.</Description>
    </Source>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import get

import glob

WorkDir="."

def install():
    hunspell_tr = "/usr/lib/libreoffice/share/extensions/hunspell_tr"
    pisitools.dodir(hunspell_tr)
    hunspellfile = glob.glob("*.oxt")[0]
    shelltools.system("unzip %s -d %s/%s" % (hunspellfile, get.installDIR(), hunspell_tr))
    #for other applications
    pisitools.dosym("/usr/lib/libreoffice/share/extensions/hunspell_tr/dictionaries/tr-TR.aff","/usr/share/hunspell/tr-TR.aff")
    pisitools.dosym("/usr/lib/libreoffice/share/extensions/hunspell_tr/dictionaries/tr-TR.dic", "/usr/share/hunspell/tr-TR.dic")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>hunspell-dict-tr</Name>
        <Homepage>http://extensions.libreoffice.org/extension-center/turkish-spellcheck-dictionary/</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>LGPLv2+</License>
        <License>BSD</License>
        <IsA>locale:en</IsA>
        <IsA>data</IsA>
        <Summary>Turkish hunspell dictionaries</Summary>
        <Description>Turkish hunspell dictionaries</Description>
        <Archive sha1sum="dd61b5a603077407218f8f0ff1052cc1f5ade1f1" type="binary">https://extensions.libreoffice.org/extensions/turkish-spellcheck-dictionary/1.2/@@download/file/oo-turkish-dict-v1-2.oxt</Archive>
        <BuildDependencies>
            <Dependency>hunspell</Dependency>
            <!--<Dependency>aspell-tr</Dependency>-->
        </BuildDependencies>
    </Source>

    <Package>
        <Name>hunspell-dict-tr</Name>
        <Files>
            <Path fileType="library">/usr/lib/libreoffice/share/extensions/hunspell_tr/</Path>
            <Path fileType="data">/usr/share/hunspell</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-04-07</Date>
            <Version>1.2</Version>
            <Comment>Version Bump</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>1.1</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2015-10-03</Date>
            <Version>1.1</Version>
            <Comment>First release</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>hunspell-dict-en</Name>
        <Summary xml:lang="tr">İngilizce hunspell sözlükleri</Summary>
        <Description xml:lang="tr">hunspell-dict-en İngilizce (US, UK vs.) hunspell sözlüklerini içerir.</Description>
    </Source>
</PISI>


code:
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get

def setup():
    autotools.configure("--prefix=/usr \
                         --sysconfdir=/etc")

def build():
    autotools.make()

def install():
    autotools.rawInstall("DESTDIR=%s install-sh" % get.installDIR())

    # Move data files and create symlinks for asciidoc to work
    for d in ("dblatex", "docbook-xsl", "images", "javascripts", "stylesheets"):
        pisitools.domove("/etc/asciidoc/%s" % d, "/usr/share/asciidoc")
        pisitools.dosym("/usr/share/asciidoc/%s" % d, "/etc/asciidoc/%s" % d)

    # Python module
    pisitools.insinto("/usr/lib/%s/site-packages" % get.curPYTHON(), "asciidocapi.py")

    # Vim syntax and filetype plugins
    pisitools.insinto("/usr/share/vim/vimfiles/syntax/" , "vim/syntax/asciidoc.vim")

    pisitools.dodoc("BUGS", "CHANGELOG", "COPYING", "README")
    pisitools.dodoc("docbook-xsl/asciidoc-docbook-xsl.txt", "filters/code/code-filter-readme.txt")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>asciidoc</Name>
        <Homepage>http://www.methods.co.nz/asciidoc/</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>GPLv2</License>
        <IsA>app:console</IsA>
        <Summary>Text document format for writing documents</Summary>
        <Description>AsciiDoc is a text document format for writing short documents, articles, books and UNIX man pages. AsciiDoc files can be translated to HTML and DocBook markups using the asciidoc command.</Description>
        <Archive sha1sum="82e574dd061640561fa0560644bc74df71fb7305" type="targz">mirrors://sourceforge/asciidoc/asciidoc-8.6.9.tar.gz</Archive>
        <Patches>
<!--             <Patch level="0">fix_makefile_vimdir.patch</Patch> -->
        </Patches>
    </Source>

    <Package>
        <Name>asciidoc</Name>
        <RuntimeDependencies>
            <Dependency>docbook-xml</Dependency>
            <Dependency>docbook-xsl</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="config">/etc</Path>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="library">/usr/lib/python*</Path>
            <Path fileType="data">/usr/share/asciidoc</Path>
            <Path fileType="data">/usr/share/vim</Path>
            <Path fileType="doc">/usr/share/doc/asciidoc</Path>
            <Path fileType="man">/usr/share/man</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-02-05</Date>
            <Version>8.6.9</Version>
            <Comment>Rebuild</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>8.6.9</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2014-05-18</Date>
            <Version>8.6.9</Version>
            <Comment>First release</Comment>
            <Name>Alihan Öztürk</Name>
            <Email>alihan@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>asciidoc</Name>
        <Summary xml:lang="tr">Belge hazırlamak için metin biçimlendirme sistemi</Summary>
        <Description xml:lang="tr">AsciiDoc, kısa belgeler, makaleler, kitaplar ve kılavuz sayfaları yazmak ve bunları HTML/Docbook'a dönüştürmek için kullanılır.</Description>
    </Source>
</PISI>


code:
<PISI>
    <Name>office.docbook</Name>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 2
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import pisitools
from pisi.actionsapi import get

WorkDir="."

def install():
    pisitools.insinto("/usr/share/sgml/docbook/sgml-dtd-%s" % get.srcVERSION(), "*.dcl")
    pisitools.insinto("/usr/share/sgml/docbook/sgml-dtd-%s" % get.srcVERSION(), "*.dtd")
    pisitools.insinto("/usr/share/sgml/docbook/sgml-dtd-%s" % get.srcVERSION(), "*.mod")
    pisitools.insinto("/usr/share/sgml/docbook/sgml-dtd-%s" % get.srcVERSION(), "docbook.cat", "catalog")

    pisitools.dodoc("README")


code:
#!/usr/bin/python

import os

def postInstall(fromVersion, fromRelease, toVersion, toRelease):
    os.system("/usr/bin/install-catalog --add /etc/sgml/sgml-docbook-4.5.cat \
               /usr/share/sgml/docbook/sgml-dtd-4.5/catalog")
    os.system("/usr/bin/install-catalog --add /etc/sgml/sgml-docbook-4.5.cat \
               /etc/sgml/sgml-docbook.cat")

def preRemove():
    os.system("/usr/bin/install-catalog --remove /etc/sgml/sgml-docbook-4.5.cat \
               /usr/share/sgml/docbook/sgml-dtd-4.5/catalog")
    os.system("/usr/bin/install-catalog --remove /etc/sgml/sgml-docbook-4.5.cat \
               /etc/sgml/sgml-docbook.cat")


code:
--- docbook.cat	2005-01-27 08:59:49.000000000 -0500
+++ docbook.cat-gentoo	2005-07-11 21:12:28.000000000 -0500
@@ -19,6 +19,8 @@
   -- ...................................................................... --
   -- DocBook driver file .................................................. --

+DTDDECL "-//OASIS//DTD DocBook V4.5//EN" "docbook.dcl"
+
 PUBLIC "-//OASIS//DTD DocBook V4.5//EN"
        "docbook.dtd"

@@ -52,65 +54,5 @@
 PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.5//EN"
        "dbcentx.mod"

-  -- ...................................................................... --
-  -- ISO entity sets ...................................................... --
-
-PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN"
-       "iso-dia.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN"
-       "iso-num.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN"
-       "iso-pub.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN"
-       "iso-tech.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN"
-       "iso-lat1.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN"
-       "iso-lat2.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Greek Letters//EN"
-       "iso-grk1.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Monotoniko Greek//EN"
-       "iso-grk2.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Greek Symbols//EN"
-       "iso-grk3.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN"
-       "iso-grk4.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN"
-       "iso-amsa.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN"
-       "iso-amsb.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN"
-       "iso-amsc.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN"
-       "iso-amsn.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN"
-       "iso-amso.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN"
-       "iso-amsr.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Box and Line Drawing//EN"
-       "iso-box.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Russian Cyrillic//EN"
-       "iso-cyr1.gml"
-
-PUBLIC "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN"
-       "iso-cyr2.gml"
-
   -- End of catalog data for DocBook V4.5 ................................. --
   -- ...................................................................... --


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>docbook-sgml4_5</Name>
        <Homepage>http://www.docbook.org/sgml/</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>X11</License>
        <IsA>data</IsA>
        <Summary>Docbook SGML DTD 4.5</Summary>
        <Description>Contains Docbook SGML DTD version 4.5.</Description>
        <Archive sha1sum="5efeb22936ea30cdaf88053337de7966dfda02bd" type="zip">http://www.docbook.org/sgml/4.5/docbook-4.5.zip</Archive>
        <Patches>
            <Patch>catalog.patch</Patch>
        </Patches>
    </Source>

    <Package>
        <Name>docbook-sgml4_5</Name>
        <RuntimeDependencies>
            <Dependency>sgml-common</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="doc">/usr/share/doc/docbook-sgml4_5</Path>
            <Path fileType="data">/usr/share</Path>
        </Files>
        <Provides>
            <COMAR script="package.py">System.Package</COMAR>
        </Provides>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-04-04</Date>
            <Version>4.5</Version>
            <Comment>Rebuild with new toolchain</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>4.5</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2014-05-18</Date>
            <Version>4.5</Version>
            <Comment>First release</Comment>
            <Name>Stefan Gronewold(groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>docbook-sgml4_5</Name>
        <Summary xml:lang="tr">Docbook SGML DTD 4.5</Summary>
        <Description xml:lang="tr">Docbook SGML DTD sürüm 4.5 belgelerini içerir.</Description>
    </Source>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/copyleft/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import get
from pisi.actionsapi import pisitools

def setup():
    autotools.configure("--with-html-xsl \
			 --program-suffix=.pl ")

def build():
    autotools.make()

def install():
    autotools.rawInstall("DESTDIR=%s" % get.installDIR())

    pisitools.dodoc("AUTHORS", "TODO", "ChangeLog", "COPYING", "README", "NEWS", "THANKS")


code:
#! /bin/sh /usr/share/dpatch/dpatch-run
## 05_fix_439214_error_on_missing_refentry.dpatch by Daniel Leidert <daniel.leidert@wgdd.de>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: If there is no refentry element, the manpage stylesheets silently
## DP:   "ignores" this. It has been requested to print at least a
## DP:   warning.
## DP:
## DP: <URL:http://bugs.debian.org/439214>
## DP: <URL:http://lists.gnu.org/archive/html/groff/2007-11/msg00023.html>

@DPATCH@
diff -urNad trunk~/xslt/man/docbook.xsl trunk/xslt/man/docbook.xsl
--- trunk~/xslt/man/docbook.xsl	2006-04-11 21:00:19.000000000 +0200
+++ trunk/xslt/man/docbook.xsl	2008-02-05 03:31:48.000000000 +0100
@@ -111,11 +111,15 @@
     <xsl:when test="child::refentry">
       <xsl:apply-templates />
     </xsl:when>
-
-    <xsl:otherwise>
+    <xsl:when test="descendant-or-self::refentry">
       <manpageset>
         <xsl:apply-templates select="descendant-or-self::refentry" />
       </manpageset>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:message terminate="no">
+        <xsl:text>WARNING: Sorry, but I cannot find a refentry element in your source!</xsl:text>
+      </xsl:message>
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>


code:
#! /bin/sh /usr/share/dpatch/dpatch-run
## 03_fix_420153_filename_whitespace_handling.dpatch by
##     Daniel Leidert (dale) <daniel.leidert@wgdd.de>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Peter Eisentraut reported a regression in the whitespace handling of
## DP: refentrytitle content during filename creation:
## DP: http://bugs.debian.org/420153. The problem is, that upstream first
## DP: replaces all spaces (but not linebreaks btw) with underlines and then
## DP: it tries to normalize the result. This means, that a linebreak with
## DP: additional whitespaces results in manpage names like 'foo_ ____bar.9'.
## DP: So what we basically do in this patch is, that we first normalize the
## DP: refentrytitle and then replace any spaces left with underlines.

@DPATCH@
diff -urNad docbook2x-0.8.8~/xslt/man/manpage.xsl docbook2x-0.8.8/xslt/man/manpage.xsl
--- docbook2x-0.8.8~/xslt/man/manpage.xsl	2006-04-20 15:45:55.000000000 +0200
+++ docbook2x-0.8.8/xslt/man/manpage.xsl	2007-04-20 16:19:28.000000000 +0200
@@ -30,7 +30,7 @@

 <xsl:template name="manpage-filename">
   <xsl:param name="filename" />
-  <xsl:value-of select="normalize-space(translate($filename, " /", "__"))" />
+  <xsl:value-of select="translate(normalize-space($filename), ' /', '__')" />
 </xsl:template>

diff -urNad docbook2x-0.8.8~/xslt/man/refentry.xsl docbook2x-0.8.8/xslt/man/refentry.xsl
--- docbook2x-0.8.8~/xslt/man/refentry.xsl	2006-04-21 04:39:55.000000000 +0200
+++ docbook2x-0.8.8/xslt/man/refentry.xsl	2007-04-20 16:21:53.000000000 +0200
@@ -38,7 +38,11 @@
 <xsl:template name="refentry-filename">
   <xsl:param name="title" />

-  <xsl:variable name="title2" select="translate($title, " /", "__")" />
+  <xsl:variable name="title2">
+    <xsl:call-template name="manpage-filename">
+      <xsl:with-param name="filename" select="$title" />
+    </xsl:call-template>
+  </xsl:variable>

   <!-- not using gentext here since man page names tend not to have
        accented chars / non-Latin chars ...


code:
#! /bin/sh /usr/share/dpatch/dpatch-run
## 04_fix_442782_preprocessor_declaration_syntax.dpatch by Colin Watson <cjwatson@debian.org>.
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Conventionally, preprocessor declarations should start with
## DP:       '\"
## DP:   rather than
## DP:       .\"
## DP:   Current man-db only supports the first (and recommended) syntax. So
## DP:   Colin Watson provided this patch to fix docbook2x.
## DP:
## DP: <URL:http://bugs.debian.org/442782>
## DP: <URL:http://lists.gnu.org/archive/html/groff/2007-11/msg00023.html>

@DPATCH@
diff -urNad trunk~/perl/db2x_manxml.pl trunk/perl/db2x_manxml.pl
--- trunk~/perl/db2x_manxml.pl	2006-04-22 17:21:32.000000000 +0200
+++ trunk/perl/db2x_manxml.pl	2007-11-24 01:27:37.000000000 +0100
@@ -342,6 +342,25 @@
     $self->{line_start} = 1;
 }

+#
+# Print a comment in the output, without causing a break.
+# Params: comment - the comment text.
+#                   May use any characters; they need not be escaped.
+#
+sub comment_nobreak
+{
+    my ($self, $comment) = @_;
+    $self->write("\n") unless $self->{line_start};
+
+    foreach my $line (split(/\n/, $comment)) {
+        $self->write('\'\" ');
+        $self->write($line);
+        $self->write("\n");
+    }
+
+    $self->{line_start} = 1;
+}
+

 #
 # Use a roff "escape" i.e. commands embedded in text starting with \
@@ -510,16 +529,20 @@

     $self->{'adjust-stack'} = [ 'b' ];

-    $self->{rw}->comment($elem->attr('preprocessors'))
-        if($elem->attr('preprocessors') ne '');
-
+    my $preprocessors = $elem->attr('preprocessors');
     # I've dug through the Internet to see if there was any
     # standard way to specify encoding with man pages.
     # The following seems to be a reasonable proposal:
     # <URL:http://mail.nl.linux.org/linux-utf8/2001-04/msg00168.html>
     my $encoding = $self->{options}->{'encoding'};
     $encoding =~ s#//TRANSLIT$##i;
-    $self->{rw}->comment("-*- coding: $encoding -*-");
+    $encoding = "-*- coding: $encoding -*-";
+    if ($preprocessors eq '') {
+        $preprocessors = $encoding;
+    } else {
+        $preprocessors = "$preprocessors $encoding";
+    }
+    $self->{rw}->comment_nobreak($preprocessors);

     # Define escapes for switching to and from monospace fonts (groff only)
     $self->{rw}->request(qw{ .if \n(.g .ds T< \\\\FC});
diff -urNad trunk~/xslt/backend/db2x_manxml.xsl trunk/xslt/backend/db2x_manxml.xsl
--- trunk~/xslt/backend/db2x_manxml.xsl	2006-04-23 16:44:52.000000000 +0200
+++ trunk/xslt/backend/db2x_manxml.xsl	2007-11-24 01:27:37.000000000 +0100
@@ -528,7 +528,7 @@
       <exslt:document method="text"
                       encoding="{$encoding}"
                       href="{$path}">
-        <xsl:text>.\" -*- coding: </xsl:text>
+        <xsl:text>'\" -*- coding: </xsl:text>
         <xsl:value-of select="$encoding" />
         <xsl:text> -*-
</xsl:text>
         <xsl:copy-of select="$content" />
@@ -538,7 +538,7 @@
       <saxon:output method="text"
                     encoding="{$encoding}"
                     href="{$path}">
-        <xsl:text>.\" -*- coding: </xsl:text>
+        <xsl:text>'\" -*- coding: </xsl:text>
         <xsl:value-of select="$encoding" />
         <xsl:text> -*-
</xsl:text>
         <xsl:copy-of select="$content" />


code:
<PISI>
    <Source>
        <Name>docbook2x</Name>
        <Homepage>http://docbook2x.sourceforge.net</Homepage>
        <Packager>
            <Name>Osman Erkan</Name>
            <Email>osman.erkan@pisilinux.org</Email>
        </Packager>
        <License>MIT</License>
        <PartOf>office.docbook</PartOf>
        <IsA>app:gui</IsA>
        <Summary>docbook2X converts DocBook documents to man and Texinfo format.</Summary>
        <Description>docbook2X is a software package that converts DocBook documents into the traditional Unix man page format and the GNU Texinfo format.</Description>
        <Archive sha1sum="7dc34d420f8aae2a0c0cdb39f52146ce005bf902" type="targz">http://downloads.sourceforge.net/project/docbook2x/docbook2x/0.8.8/docbook2X-0.8.8.tar.gz</Archive>
        <BuildDependencies>
            <Dependency>docbook-xml</Dependency>
            <Dependency>libxml2-devel</Dependency>
            <Dependency>libxslt-devel</Dependency>
            <Dependency>perl-XML-SAX</Dependency>
        </BuildDependencies>
        <Patches>
            <Patch level="1">docbook2X-0.8.8-error_on_missing_refentry.patch</Patch>
            <Patch level="1">docbook2X-0.8.8-filename_whitespace_handling.patch</Patch>
            <Patch level="1">docbook2X-0.8.8-preprocessor_declaration_syntax.patch</Patch>
        </Patches>
    </Source>

    <Package>
        <Name>docbook2x</Name>
        <RuntimeDependencies>
            <Dependency>docbook-xml</Dependency>
            <Dependency>libxml2</Dependency>
            <Dependency>libxslt</Dependency>
            <Dependency>perl-XML-SAX</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="man">/usr/share/man</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="data">/usr/share</Path>
        </Files>
    </Package>

    <History>
        <Update release="1">
            <Date>2017-12-12</Date>
            <Version>0.8.8</Version>
            <Comment>First release</Comment>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>docbook2x</Name>
        <Summary xml:lang="en">docbook2X converts DocBook documents to man and Texinfo format.</Summary>
        <Description xml:lang="tr">docbook2X is a software package that converts DocBook documents into the traditional Unix man page format and the GNU Texinfo format.</Description>
    </Source>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/copyleft/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import get

def setup():
    autotools.configure()

def build():
    autotools.make()

def install():
    autotools.rawInstall("DESTDIR=%s" % get.installDIR())


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>itstool</Name>
        <Homepage>http://itstool.org/</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>GPLv3</License>
        <Summary>XML to PO and back again</Summary>
        <Description>XML to PO and back again</Description>
        <Archive sha1sum="5345615becb5c463c6e7f2462e387fdc327f3a35" type="tarbz2">http://files.itstool.org/itstool/itstool-2.0.4.tar.bz2</Archive>
        <Patches/>
    </Source>

    <Package>
        <Name>itstool</Name>
        <Files>
            <Path fileType="data">/usr</Path>
        </Files>
    </Package>

    <History>
        <Update release="4">
            <Date>2018-02-11</Date>
            <Version>2.0.4</Version>
            <Comment>Version Bump.</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="3">
            <Date>2017-02-06</Date>
            <Version>2.0.2</Version>
            <Comment>Rebuild</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>2.0.2</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2014-05-18</Date>
            <Version>2.0.2</Version>
            <Comment>First release</Comment>
            <Name>Serdar Soytetir</Name>
            <Email>kaptan@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import libtools
from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import get

docname = get.srcNAME()

def setup():
    shelltools.export("ALLOWED_FLAGS", "-O -O1 -O2 -pipe -g")
    shelltools.sym("config/configure.in", "configure.in")
    shelltools.export("SGML_PREFIX", "/usr/share/sgml")
    autotools.configure("--enable-http \
                         --enable-default-catalog=/etc/sgml/catalog \
                         --enable-default-search-path=/usr/share/sgml:/usr/share/xml \
                         --disable-static \
                         --enable-splibdir=/usr/lib \
                         --libdir=/usr/lib \
                         --datadir=/usr/share/sgml/%s" % docname)

def build():
    autotools.make()

def install():
    pisitools.dodir("/usr")
    pisitools.dodir("/usr/lib")

    autotools.rawInstall("prefix=%s/usr \
                          libdir=%s/usr/lib \
                          datadir=%s/usr/share/sgml/%s " \
                          % (get.installDIR(), \
                             get.installDIR(), \
                             get.installDIR(), \
                             docname))

    pisitools.dosym("openjade", "/usr/bin/jade")
    pisitools.dosym("onsgmls", "/usr/bin/nsgmls")
    pisitools.dosym("osgmlnorm", "/usr/bin/sgmlnorm")
    pisitools.dosym("ospam", "/usr/bin/spam")
    pisitools.dosym("ospent", "/usr/bin/spent")
    pisitools.dosym("osx", "/usr/bin/sgml2xml")

    pisitools.insinto("/usr/share/sgml/%s" % docname, "dsssl/builtins.dsl")
    for i in ["dsssl/dsssl.dtd", "dsssl/style-sheet.dtd", "dsssl/fot.dtd"]:
        pisitools.insinto("/usr/share/sgml/%s/dsssl" % docname, i)
    pisitools.insinto("/usr/share/sgml/%s/pubtext" % docname, "pubtext/*")

    pisitools.dodoc("COPYING", "NEWS", "README", "VERSION")
    pisitools.dohtml("doc/*.htm")

    pisitools.insinto("/usr/share/doc/%s/jadedoc" % get.srcNAME(), "jadedoc/*.htm")
    pisitools.insinto("/usr/share/doc/%s/jadedoc/images" % get.srcNAME(), "jadedoc/images/*")


code:
#!/usr/bin/python

import os

def postInstall(fromVersion, fromRelease, toVersion, toRelease):
    os.system("/usr/bin/install-catalog --add /etc/sgml/openjade.cat \
               /usr/share/sgml/openjade/catalog")
    os.system("/usr/bin/install-catalog --add /etc/sgml/openjade.cat \
              /usr/share/sgml/openjade/dsssl/catalog")
    os.system("/usr/bin/install-catalog --add /etc/sgml/sgml-docbook.cat \
               /etc/sgml/openjade.cat")

def preRemove():
    os.system("/usr/bin/install-catalog --remove /etc/sgml/openjade.cat \
               /usr/share/sgml/openjade/catalog")
    os.system("/usr/bin/install-catalog --remove /etc/sgml/openjade.cat \
              /usr/share/sgml/openjade/dsssl/catalog")
    os.system("/usr/bin/install-catalog --remove /etc/sgml/sgml-docbook.cat \
               /etc/sgml/openjade.cat")


code:
diff -urNp openjade-1.3.2/grove/Makefile.sub devel/grove/Makefile.sub
--- openjade-1.3.2/grove/Makefile.sub	2002-10-20 23:47:24.000000000 +0200
+++ devel/grove/Makefile.sub	2007-07-23 15:39:23.000000000 +0200
@@ -1,4 +1,4 @@
 LTVERSION=0:1:0
 LIB=ogrove
-DEPLIBS=-lm
+DEPLIBS=-lm -lstdc++
 OBJS=Node.o LocNode.o
diff -urNp openjade-1.3.2/spgrove/Makefile.sub devel/spgrove/Makefile.sub
--- openjade-1.3.2/spgrove/Makefile.sub	2002-11-15 23:46:50.000000000 +0100
+++ devel/spgrove/Makefile.sub	2007-07-23 16:06:13.000000000 +0200
@@ -1,9 +1,10 @@
 LTVERSION=0:1:0
 LIB=ospgrove
 INCLUDE=-I$(srcdir)/../grove
-DEPLIBS=-lm -L$(TOP)/grove -L$(TOP)/grove/.libs \
+DEPLIBS=$(TOP)/grove/libogrove.la \
+       -lm -losp -L$(TOP)/grove/.libs \
 	-L$(TOP)/lib -L$(TOP)/lib/.libs \
-	$(LIB_THREADS)
+	$(LIB_THREADS) -lstdc++
 OBJS=GroveApp.o GroveBuilder.o SdNode.o
 GENSRCS=grove_inst.cxx

diff -urNp openjade-1.3.2/style/Makefile.sub devel/style/Makefile.sub
--- openjade-1.3.2/style/Makefile.sub	2003-04-18 19:18:10.000000000 +0200
+++ devel/style/Makefile.sub	2007-07-23 16:08:26.000000000 +0200
@@ -1,8 +1,8 @@
 LTVERSION=0:1:0
 LIB=ostyle
-DEPLIBS=-lm -L$(TOP)/grove -L$(TOP)/grove/.libs \
-  -L$(TOP)/lib -L$(TOP)/lib/.libs \
-  -L$(TOP)/spgrove -L$(TOP)/spgrove/.libs
+DEPLIBS=$(TOP)/grove/libogrove.la $(TOP)/spgrove/libospgrove.la \
+  -lm -losp -L$(TOP)/lib -L$(TOP)/lib/.libs -L$(TOP)/grove/.libs \
+  -L$(TOP)/spgrove -L$(TOP)/spgrove/.libs -lstdc++
 OBJS=LangObj.o \
   Collector.o \
   DssslApp.o \


code:
Index: openjade-1.3.2/jade/Makefile.sub
===================================================================
--- openjade-1.3.2.orig/jade/Makefile.sub
+++ openjade-1.3.2/jade/Makefile.sub
@@ -4,7 +4,7 @@ OBJS=jade.o SgmlFOTBuilder.o RtfFOTBuild
 INCLUDE=-I$(srcdir)/../grove -I$(srcdir)/../spgrove -I$(srcdir)/../style
 # XLIBS=../style/libostyle.a ../spgrove/libospgrove.a ../grove/libogrove.a \
 #   ../lib/libosp.a
-XLIBS=../style/libostyle.a ../spgrove/libospgrove.a ../grove/libogrove.a $(splibdir)/libosp.a
+XLIBS=../style/libostyle.a ../grove/libogrove.a ../spgrove/libospgrove.a $(splibdir)/libosp.so
 GENSRCS=JadeMessages.h HtmlMessages.h RtfMessages.h TeXMessages.h \
  HtmlFOTBuilder_inst.cxx RtfFOTBuilder_inst.cxx  TeXFOTBuilder_inst.cxx \
  TransformFOTBuilder_inst.cxx MifMessages.h MifFOTBuilder_inst.cxx


code:
See https://bugs.gentoo.org/show_bug.cgi?id=235610

--- config/configure.in
+++ config/configure.in
@@ -53,7 +53,7 @@
 esac
 # On PPC64 libosp is to be found in /usr/lib64; thus
 # fall back to this directory
-test -d ${osplibdir}64 && osplibdir=${osplibdir}64
+test -f ${osplibdir}64/libosp.la && osplibdir=${osplibdir}64
 AC_MSG_CHECKING(location of OpenSP Library)
 AC_ARG_ENABLE(splibdir,
 [  --enable-splibdir=pathlist
--- configure
+++ configure
@@ -1753,7 +1753,7 @@
 esac
 # On PPC64 libosp is to be found in /usr/lib64; thus
 # fall back to this directory
-test -d ${osplibdir}64 && osplibdir=${osplibdir}64
+test -f ${osplibdir}64/libosp.la && osplibdir=${osplibdir}64
 echo "$as_me:$LINENO: checking location of OpenSP Library" >&5
 echo $ECHO_N "checking location of OpenSP Library... $ECHO_C" >&6
 # Check whether --enable-splibdir or --disable-splibdir was given.


code:
Use Getopt::Std in place of getopts.pl.
https://bugs.gentoo.org/show_bug.cgi?id=420083

--- a/msggen.pl
+++ b/msggen.pl
@@ -4,6 +4,7 @@
 # See the file COPYING for copying permission.

 use POSIX;
+use Getopt::Std;

 # Package and version.
 $package = 'openjade';
@@ -18,8 +19,7 @@
 undef $opt_l;
 undef $opt_p;
 undef $opt_t;
-do 'getopts.pl';
-&Getopts('l:p:t:');
+getopts('l:p:t:');
 $module = $opt_l;
 $pot_file = $opt_p;

@@ -72,7 +72,7 @@
     else {
 	$field[0] =~ /^[IWQXE][0-9]$/ || &error("invalid first field");;
 	$type[$num] = substr($field[0], 0, 1);
-	$argc = int(substr($field[0], 1, 1));
+	$argc = substr($field[0], 1, 1);
     }
     $nargs[$num] = $argc;
     $field[1] =~ /^[a-zA-Z_][a-zA-Z0-9_]+$/ || &error("invalid tag");


code:
diff -ru a/Makefile.lib.in b/Makefile.lib.in
--- a/Makefile.lib.in	2002-01-22 05:57:53.000000000 -0600
+++ b/Makefile.lib.in	2009-01-04 16:15:41.000000000 -0600
@@ -23,7 +23,7 @@
 	echo 'LT_OBJS='`echo $(OBJS)|sed 's/\.o/.lo/g'` >Makefile.lt

 lib$(LIB).la: $(LT_OBJS)
-	$(LIBTOOL) --mode=link $(CC) $(LINKFLAGS) -o lib$(LIB).la $(LT_OBJS) \
+	$(LIBTOOL) --mode=link $(CC) $(LDFLAGS) $(LINKFLAGS) -o lib$(LIB).la $(LT_OBJS) \
 	    -rpath $(libdir) -version-info $(LTVERSION) $(DEPLIBS)

 install:


code: SYSTEM "builtins.dsl" "builtins.dsl"


code:
PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd"
PUBLIC "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" "dsssl.dtd"
PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" "style-sheet.dtd"
PUBLIC "-//OpenJade//DTD DSSSL Style Sheet//EN" "style-sheet.dtd"


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>openjade</Name>
        <Homepage>http://openjade.sourceforge.net</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>as-is</License>
        <IsA>app:console</IsA>
        <Summary>An implementation of DSSSL</Summary>
        <Description>OpenJade is an implementation of Document Style Semantics and Specification Language (DSSSL), a style language to format Standard Generalized Markup Language (SGML) or Extensible Markup Language (XML) documents.</Description>
        <Archive sha1sum="54e1999f41450fbd62c5d466002d79d3efca2321" type="targz">http://downloads.sourceforge.net/openjade/openjade-1.3.2.tar.gz</Archive>
        <BuildDependencies>
            <Dependency>sgml-common</Dependency>
            <Dependency>opensp-devel</Dependency>
            <Dependency>libgcc</Dependency>
        </BuildDependencies>
        <Patches>
<!--             <Patch level="1">openjade-1.3.2-deplibs.patch</Patch> -->
            <Patch level="1">openjade-1.3.2-ldflags.patch</Patch>
            <Patch level="1">openjade-1.3.2-respect-ldflags.patch</Patch>
            <Patch level="1">openjade-1.3.2-msggen.pl.patch</Patch>
<!--             <Patch>openjade-1.3.2-lib64-fix.patch</Patch> -->
        </Patches>
    </Source>

    <Package>
        <Name>openjade</Name>
        <RuntimeDependencies>
            <Dependency>sgml-common</Dependency>
            <Dependency>opensp</Dependency>
            <Dependency>libgcc</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="doc">/usr/share/doc/openjade</Path>
            <Path fileType="data">/usr/share/sgml</Path>
        </Files>
        <AdditionalFiles>
            <AdditionalFile owner="root" permission="0644" target="/usr/share/sgml/openjade/dsssl/catalog">openjade-1.3.2.dsssl-catalog</AdditionalFile>
            <AdditionalFile owner="root" permission="0644" target="/usr/share/sgml/openjade/catalog">openjade-1.3.2.catalog</AdditionalFile>
        </AdditionalFiles>
        <Provides>
            <COMAR script="package.py">System.Package</COMAR>
        </Provides>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-02-06</Date>
            <Version>1.3.2</Version>
            <Comment>Rebuild</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>1.3.2</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2014-05-18</Date>
            <Version>1.3.2</Version>
            <Comment>First release</Comment>
            <Name>Serdar Soytetir</Name>
            <Email>kaptan@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>openjade</Name>
        <Summary xml:lang="tr">Bir DSSSL uyarlaması</Summary>
        <Description xml:lang="tr">OpenJade SGML ya da XML belgelerinin biçimlendirilmesine yarayan bir biçem lisanı olan DSSSL'nin bir uyarlamasıdır.</Description>
    </Source>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import get
from pisi.actionsapi import libtools
from pisi.actionsapi import shelltools
from pisi.actionsapi import pisitools

WorkDir = "OpenSP-%s" % get.srcVERSION()

def setup():
    libtools.gnuconfig_update()
    shelltools.export("ALLOWED_FLAGS", "-O -O1 -O2 -pipe -g")
    autotools.configure("--enable-nls \
                         --enable-http \
                         --disable-doc-build \
                         --disable-static \
                         --enable-default-catalog=/etc/sgml/catalog \
                         --enable-default-search-path=/usr/share/sgml:/usr/share/xml \
                         --datadir=/usr/share/sgml")

def build():
    autotools.make("pkgdocdir=/usr/share/doc/%s" % get.srcNAME())

def install():
    autotools.rawInstall('DESTDIR="%s" pkgdocdir=/usr/share/doc/%s' % (get.installDIR(), get.srcNAME()))

    pisitools.dodoc("AUTHORS", "BUGS", "ChangeLog", "NEWS", "README")
    pisitools.domove("/usr/share/sgml/locale", "/usr/share")


code:
--- include/RangeMap.h~	2004-04-22 20:34:13.729541096 +0300
+++ include/RangeMap.h	2004-04-22 20:31:48.473049702 +0300
@@ -8,6 +8,7 @@
 #include "Boolean.h"
 #include "ISet.h"
 #include "types.h"
+#include "constant.h"
 #include <stddef.h>

 #ifdef SP_NAMESPACE


code:
--- OpenSP-1.5.2/lib/ExtendEntityManager.cxx	2005-11-05 10:05:20.000000000 +0100
+++ OpenSP-1.5.2.new/lib/ExtendEntityManager.cxx	2007-06-21 12:56:26.000000000 +0200
@@ -1238,7 +1238,8 @@ StorageObjectSpec::StorageObjectSpec()
 }

 StorageObjectSpec::StorageObjectSpec(const StorageObjectSpec& x)
-: codingSystemName(x.codingSystemName),
+: storageManager(x.storageManager),
+  codingSystemName(x.codingSystemName),
   codingSystem(x.codingSystem),
   specId(x.specId),
   baseId(x.baseId),
@@ -1253,6 +1254,7 @@ StorageObjectSpec::StorageObjectSpec(con
 StorageObjectSpec& StorageObjectSpec::operator=(const StorageObjectSpec& x)
 {
   if (this != &x) {
+    storageManager = x.storageManager;
     codingSystemName = x.codingSystemName;
     codingSystem = x.codingSystem;
     specId = x.specId;


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>opensp</Name>
        <Homepage>http://openjade.sourceforge.net</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>as-is</License>
        <IsA>app:console</IsA>
        A SGML parsing and entity management toolkit
        <Description>OpenSP is a free, object-oriented toolkit for Standard Generalized Markup Language (SGML) parsing and entity management maintained by the OpenJade project.</Description>
        <Archive sha1sum="b4e903e980f8a8b3887396a24e067bef126e97d5" type="targz">mirrors://sourceforge/openjade/OpenSP-1.5.2.tar.gz</Archive>
        <BuildDependencies>
            <Dependency>docbook-xml</Dependency>
            <Dependency>libgcc</Dependency>
        </BuildDependencies>
        <Patches>
            <Patch>opensp-1.5-gcc34.patch</Patch>
            <Patch level="1">opensp-sigsegv.patch</Patch>
        </Patches>
    </Source>

    <Package>
        <Name>opensp</Name>
        <RuntimeDependencies>
            <Dependency>libgcc</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="doc">/usr/share/doc/opensp</Path>
            <Path fileType="man">/usr/share/man</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="localedata">/usr/share/locale</Path>
            <Path fileType="data">/usr/share/sgml</Path>
        </Files>
    </Package>

    <Package>
        <Name>opensp-devel</Name>
        Development files for opensp
        <RuntimeDependencies>
            <Dependency release="current">opensp</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="header">/usr/include</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-02-06</Date>
            <Version>1.5.2</Version>
            <Comment>Rebuild</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>1.5.2</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2014-05-18</Date>
            <Version>1.5.2</Version>
            <Comment>First release</Comment>
            <Name>Serdar Soytetir</Name>
            <Email>kaptan@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>opensp</Name>
        SGML ayrıştırma araç seti
        <Description xml:lang="tr">OpenSP SGML sözdizimsel ayrıştırma ve içerik yönetimi için nesne-odaklı bir araç setidir ve OpenJade projesinin bir parçasıdır.</Description>
    </Source>

    <Package>
        <Name>opensp-devel</Name>
        opensp için geliştirme dosyaları
    </Package>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import get

def setup():
    autotools.configure()

def build():
    autotools.make()

def install():
    autotools.install()


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>homebank</Name>
        <Homepage>http://homebank.free.fr</Homepage>
        <Packager>
            <Name>Stefan Gronewold (groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Packager>
        <License>GPLv2</License>
        <Icon>homebank</Icon>
        <IsA>app:gui</IsA>
        Free, easy, personal accounting for everyone
        <Description>«HomeBank» is free software that will assist you to manage your personal accounting.</Description>
        <Archive sha1sum="6e03e17865c4aeacf4426e2c33e85e20a0964358" type="targz">http://homebank.free.fr/public/homebank-5.1.2.tar.gz</Archive>
        <BuildDependencies>
            <Dependency>cairo-devel</Dependency>
            <Dependency>libofx-devel</Dependency>
            <Dependency>pango-devel</Dependency>
            <Dependency>gdk-pixbuf-devel</Dependency>
            <Dependency>pixman-devel</Dependency>
            <Dependency>gtk3-devel</Dependency>
            <Dependency>glib2-devel</Dependency>
            <Dependency>gettext-devel</Dependency>
            <Dependency>pkgconfig</Dependency>
            <Dependency>libofx-devel</Dependency>
            <Dependency>intltool</Dependency>
            <Dependency>libsoup-devel</Dependency>
            <Dependency>at-spi2-core-devel</Dependency>
        </BuildDependencies>
     </Source>

    <Package>
        <Name>homebank</Name>
     <RuntimeDependencies>
        <Dependency>cairo</Dependency>
        <Dependency>libofx</Dependency>
        <Dependency>pango</Dependency>
        <Dependency>gdk-pixbuf</Dependency>
        <Dependency>gtk3</Dependency>
        <Dependency>glib2</Dependency>
        <Dependency>libsoup</Dependency>
     </RuntimeDependencies>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="data">/usr/share/applications</Path>
            <Path fileType="data">/usr/share/application-registry</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="data">/usr/share</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="localedata">/usr/share/locale</Path>
            <Path fileType="data">/usr/share/icons/hicolor</Path>
        </Files>
    </Package>

    <Package>
         <Name>homebank-data</Name>
         Data Files for Homebank
         <Files>
             <Path fileType="data">/usr/share/homebank/datas</Path>
             <Path fileType="data">/usr/share/mime-info</Path>
         </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-01-21</Date>
            <Version>5.1.2</Version>
            <Comment>Version bump.</Comment>
            <Name>Stefan Gronewold(groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>5.0.5</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2016-01-03</Date>
            <Version>5.0.5</Version>
            <Comment>First release</Comment>
            <Name>Stefan Gronewold (groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>homebank</Name>
        Protein dizi analizi için profil SMM (Saklı Markov Modeli) yazılımı
        <Description xml:lang="tr">HomeBank ("serbest konuşma" olarak ve "bedava bira" gibi) kişisel muhasebe yönetmek için yardımcı olacak ücretsiz bir yazılımdır..</Description>
    </Source>
    <Source>
        <Name>homebank-doc</Name>
        Homebank Dökümanları
        <Description xml:lang="tr">Homebank paketi için dökümantasyon dosyaları.</Description>
    </Source>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-

# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/copyleft/gpl.txt

from pisi.actionsapi import kde5

def setup():
    kde5.configure()

def build():
    kde5.make()

def install():
    kde5.install()


code:
<PISI>
    <Source>
        <Name>kexi</Name>
        <Homepage>http://www.kexi-project.org/</Homepage>
        <Packager>
            <Name>Alihan Öztürk</Name>
            <Email>alihan@pisilinux.org</Email>
        </Packager>
        <License>GPLv2+</License>
        <PartOf>office</PartOf>
        <IsA>app:gui</IsA>
        A visual database applications creator.
        <Description>Kexi is an open source visual database applications creator,a long-awaited competitor for programs like MS Access or Filemaker.</Description>
        <Archive type="tarxz" sha1sum="3fb58f0c11b1d0fbb1556e615b9772b8d3aa2b12">http://download.kde.org/stable/kexi/src/kexi-3.0.2.tar.xz</Archive>
        <BuildDependencies>
            <Dependency>extra-cmake-modules</Dependency>
            <Dependency>kxmlgui-devel</Dependency>
            <Dependency>kwidgetsaddons-devel</Dependency>
            <Dependency>ktextwidgets-devel</Dependency>
            <Dependency>ktexteditor-devel</Dependency>
            <Dependency>kio-devel</Dependency>
            <Dependency>kitemviews-devel</Dependency>
            <Dependency>kiconthemes-devel</Dependency>
            <Dependency>ki18n-devel</Dependency>
            <Dependency>kguiaddons-devel</Dependency>
            <Dependency>kcoreaddons-devel</Dependency>
            <Dependency>kconfigwidgets-devel</Dependency>
            <Dependency>kconfig-devel</Dependency>
            <Dependency>kcompletion-devel</Dependency>
            <Dependency>kcodecs-devel</Dependency>
            <Dependency>karchive-devel</Dependency>
            <Dependency>qt5-base-devel</Dependency>
            <Dependency>kdb-devel</Dependency>
            <Dependency>kreport-devel</Dependency>
            <Dependency>qt5-webkit-devel</Dependency>
            <Dependency>breeze-icons</Dependency>
            <Dependency>marble-devel</Dependency>
            <Dependency>kproperty-devel</Dependency>
            <Dependency>kcrash-devel</Dependency>
            <Dependency>qt5-designer</Dependency>
        </BuildDependencies>
    </Source>

    <Package>
        <Name>kexi</Name>
        A visual database applications creator.
        <RuntimeDependencies>
            <Dependency>kdb</Dependency>
            <Dependency>kio</Dependency>
            <Dependency>glib2</Dependency>
            <Dependency>ki18n</Dependency>
            <Dependency>kcrash</Dependency>
            <Dependency>libgcc</Dependency>
            <Dependency>kcodecs</Dependency>
            <Dependency>kconfig</Dependency>
            <Dependency>kreport</Dependency>
            <Dependency>kxmlgui</Dependency>
            <Dependency>qt5-base</Dependency>
            <Dependency>kproperty</Dependency>
            <Dependency>kguiaddons</Dependency>
            <Dependency>kitemviews</Dependency>
            <Dependency>qt5-webkit</Dependency>
            <Dependency>kcompletion</Dependency>
            <Dependency>kcoreaddons</Dependency>
            <Dependency>kiconthemes</Dependency>
            <Dependency>ktexteditor</Dependency>
            <Dependency>ktextwidgets</Dependency>
            <Dependency>kconfigwidgets</Dependency>
            <Dependency>kwidgetsaddons</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="library">/usr/lib/qt5</Path>
            <Path fileType="data">/usr/share</Path>
            <Path fileType="localedata">/usr/share/locale</Path>
            <Path fileType="data">/usr/share/metainfo</Path>
            <Path fileType="data">/usr/share/kexi</Path>
            <Path fileType="data">/usr/share/applications</Path>
        </Files>
    </Package>

    <History>
        <Update release="2">
            <Date>2017-10-14</Date>
            <Version>3.0.2</Version>
            <Comment>Version bump</Comment>
            <Name>Mustafa Cinasl</Name>
            <Email>muscnsl@gmail.com</Email>
        </Update>
        <Update release="1">
            <Date>2017-01-07</Date>
            <Version>3.0.0</Version>
            <Comment>First release</Comment>
            <Name>Alihan Öztürk</Name>
            <Email>alihan@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<PISI>
    <Source>
        <Name>kexi</Name>
        <Summary xml:lang="tr">Görsel bir veritabanı uygulaması yaratıcısı.</Summary>
        <Description xml:lang="tr">Kexi açık kaynaklı bir görsel veritabanı uygulaması yaratıcısıdır. MS Access  veya Filemaker gibi programlar için uzun süredir beklenen bir rakip.</Description>
    </Source>
</PISI>


code:
<PISI>
    <Name>office.libreoffice</Name>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import get
from pisi.actionsapi import pisitools
from pisi.actionsapi import autotools
from pisi.actionsapi import shelltools

shelltools.export("LC_ALL", "C")

pixmaps = "/usr/share/pixmaps/"
LoVersion = "%s" % get.srcVERSION()
OurWorkDir = "%s/libreoffice-%s" % (get.workDIR(), LoVersion)
#for support all languages.
langall= "am ar ast bg bn bn-IN bo bs ca ca-valencia cs da de dz el en-GB en-US en-ZA eo es et eu fi fr gl gu he hi hr hu id is it ja ka km ko lo lt lv mk nb ne nl nn om pl pt pt-BR ro ru si sid sk sl sq sv ta tg tr ug uk vi zh-CN zh-TW"
#for support some languages.
lang="ar bg ca cs de el en-US es he hu ja kk ko ru tr tt uz zh-CN zh-TW"

# temporarily disable failing tests, don't run broken tests on i686
if get.buildTYPE() == "i686":
    shelltools.system('sed -i "/CppunitTest_sw_ooxmlexport7/d" sw/Module_sw.mk')
    shelltools.system('sed -i -e /CppunitTest_sd_import_tests/d sd/Module_sd.mk')

def setup():
    #shelltools.system('sed -i "s:mdds >= 0.12.0:mdds-1.0 >= 0.12.0:g" configure.ac')
    shelltools.chmod("%s/bin/unpack-sources" % OurWorkDir)
    shelltools.export("LO_PREFIX", "/usr")
    shelltools.export("PYTHON", "python3.6")
    shelltools.cd(OurWorkDir)

    shelltools.touch("autogen.lastrun")
    shelltools.system('sed -e "/distro-install-file-lists/d" -i Makefile.in')
    shelltools.system('./autogen.sh         \
                        --prefix=/usr      \
                        --sysconfdir=/etc               \
                        --with-vendor="Pisi Linux"         \
                        --with-lang="%s"     \
                        --enable-gtk3         \
                        --with-help            \
                        --with-myspell-dicts  \
                        --with-alloc=system      \
                        --with-java                     \
                        --without-system-dicts          \
                        --without-fonts    \
                        --disable-postgresql-sdbc       \
                        --disable-firebird-sdbc     \
                        --disable-coinmp \
                        --disable-systray \
                        --without-system-hsqldb \
                        --enable-release-build=yes      \
                        --enable-python=system          \
                        --with-system-apr           \
                        --with-system-boost             \
                        --with-system-cairo             \
                        --with-system-clucene   \
                        --with-system-cppunit \
                        --with-system-curl              \
                        --with-system-expat             \
                        --with-system-graphite      \
                        --with-system-glm \
                        --with-system-harfbuzz          \
                        --with-system-hunspell \
                        --with-system-icu               \
                        --with-system-jpeg              \
                        --with-jdk-home=/usr/lib/jvm/java \
                        --with-system-lcms2             \
                        --with-system-libcdr \
                        --without-system-libcmis \
                        --with-system-libetonyek     \
                        --with-system-libmspub \
                        --with-system-libodfgen \
                        --with-system-libpagemaker \
                        --with-system-libpng            \
                        --with-system-librevenge \
                        --with-system-libvisio           \
                        --with-system-libwpd  \
                        --with-system-libwpg  \
                        --with-system-libwps  \
                        --with-system-libxml            \
                        --with-system-mdds            \
                        --with-system-liblangtag  \
                        --without-system-libstaroffice \
                        --without-system-libzmf \
                        --with-system-neon          \
                        --with-system-nss               \
                        --with-system-odbc          \
                        --with-system-openldap      \
                        --with-system-openssl           \
                        --without-system-orcus \
                        --with-system-poppler           \
                        --with-system-postgresql    \
                        --with-system-redland  \
                        --with-system-serf          \
                        --without-system-ucpp \
                        --with-system-zlib              \
                        --with-system-libetonyek \
                        --enable-scripting-beanshell    \
                        --enable-scripting-javascript   \
                        --disable-odk                   \
                        --enable-ext-wiki-publisher     \
                        --enable-ext-nlpsolver          \
                        --with-jdk-home=/usr/lib/jvm/java-7-openjdk \
                        --with-external-tar=external/tarballs \
                        --with-gdrive-client-id=413772536636.apps.googleusercontent.com \
                        --with-gdrive-client-secret=0ZChLK6AxeA3Isu96MkwqDR4 \
                        --with-parallelism=%s' % (lang,get.makeJOBS().replace("-j","")))

#--with-system-glew \
def build():
    autotools.make("build-nocheck")

def install():
    autotools.rawInstall("DESTDIR=%s distro-pack-install" % get.installDIR())

    pisitools.remove("gid_Module*")

    pisitools.insinto("/usr/share/appdata/", "sysui/desktop/appstream-appdata/libreoffice-*.xml")

    for pix in ["libreoffice-base.png", "libreoffice-calc.png", "libreoffice-draw.png", "libreoffice-impress.png", "libreoffice-main.png", "libreoffice-math.png", "libreoffice-startcenter.png", "libreoffice-writer.png"]:
        pisitools.dosym("/usr/share/icons/hicolor/32x32/apps/%s" % pix, "/usr/share/pixmaps/%s" %pix)


code:
From c910d1dae1a9fcf0591098244debc863dd59618a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 17 Feb 2017 16:23:28 +0000
Subject: [PATCH] Related: rhbz#1422353 make writer behave like calc and
 impress

and start off by default maximized

Change-Id: I8d464c28b61991d27cdb732da50ebfa61802d001
---
 officecfg/registry/data/org/openoffice/Setup.xcu | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/officecfg/registry/data/org/openoffice/Setup.xcu b/officecfg/registry/data/org/openoffice/Setup.xcu
index 0a936bb..9ab5243 100644
--- a/officecfg/registry/data/org/openoffice/Setup.xcu
+++ officecfg/registry/data/org/openoffice/Setup.xcu
@@ -199,7 +199,7 @@
           <value>private:factory/smath</value>
         </prop>
         <prop oor:name="ooSetupFactoryWindowAttributes">
-          <value/>
+          <value>,,,;4;</value>
         </prop>
         <prop oor:name="ooSetupFactoryIcon">
           <value>13</value>
@@ -243,7 +243,7 @@
           <value>private:factory/swriter/GlobalDocument</value>
         </prop>
         <prop oor:name="ooSetupFactoryWindowAttributes">
-          <value/>
+          <value>,,,;4;</value>
         </prop>
         <prop oor:name="ooSetupFactoryIcon">
           <value>10</value>
@@ -287,7 +287,7 @@
           <value>private:factory/swriter</value>
         </prop>
         <prop oor:name="ooSetupFactoryWindowAttributes">
-          <value/>
+          <value>,,,;4;</value>
         </prop>
         <prop oor:name="ooSetupFactoryIcon">
           <value>2</value>
@@ -401,7 +401,7 @@
           <value>WriterCommands</value>
         </prop>
         <prop oor:name="ooSetupFactoryWindowAttributes">
-          <value/>
+          <value>,,,;4;</value>
         </prop>
         <prop oor:name="ooSetupFactoryIcon">
           <value>2</value>
@@ -437,7 +437,7 @@
           <value>private:factory/swriter/web</value>
         </prop>
         <prop oor:name="ooSetupFactoryWindowAttributes">
-          <value/>
+          <value>,,,;4;</value>
         </prop>
         <prop oor:name="ooSetupFactoryIcon">
           <value>11</value>
@@ -692,7 +692,7 @@
           <value>private:factory/schart</value>
         </prop>
         <prop oor:name="ooSetupFactoryWindowAttributes">
-          <value/>
+          <value>,,,;4;</value>
         </prop>
         <prop oor:name="ooSetupFactoryIcon">
           <value>1</value>
@@ -734,7 +734,7 @@
           <value>private:factory/sdatabase</value>
         </prop>
         <prop oor:name="ooSetupFactoryWindowAttributes">
-          <value/>
+          <value>,,,;4;</value>
         </prop>
         <prop oor:name="ooSetupFactoryIcon">
           <value>12</value>
--
2.9.3


code:
From a74837a0e7c7259e4396aa5f05cf1384e256db35 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Mon, 20 Feb 2017 16:04:58 +0000
Subject: [PATCH] Related: tdf#106100 recover mangled svg in presentations

Change-Id: I77b452aa69a8341aa30e1e93d0d5ee8160533095
---
 svgio/Module_svgio.mk                 |  4 ----
 svgio/source/svgreader/svgsvgnode.cxx | 27 +++------------------------
 2 files changed, 3 insertions(+), 28 deletions(-)

diff --git a/svgio/Module_svgio.mk b/svgio/Module_svgio.mk
index 29ef97d..8b827fc 100644
--- a/svgio/Module_svgio.mk
+++ svgio/Module_svgio.mk
@@ -22,8 +22,4 @@ $(eval $(call gb_Module_add_targets,svgio,\
     Library_svgio \
 ))

-$(eval $(call gb_Module_add_check_targets,svgio,\
-    CppunitTest_svgio \
-))
-
 # vim: set noet ts=4 sw=4:
diff --git a/svgio/source/svgreader/svgsvgnode.cxx b/svgio/source/svgreader/svgsvgnode.cxx
index 7800666..087c621 100644
--- a/svgio/source/svgreader/svgsvgnode.cxx
+++ svgio/source/svgreader/svgsvgnode.cxx
@@ -522,32 +522,11 @@ namespace svgio
                                 }
                                 else
                                 {
-                                    // There exists no parent to resolve relative width or height.
-                                    // Use child size as fallback and expand to aspect ratio given
-                                    // by the viewBox. No mapping.
-                                    // We get viewport >= content, therefore no clipping.
-                                    bNeedsMapping = false;
-                                    const basegfx::B2DRange aChildRange(
-                                        aSequence.getB2DRange(
-                                            drawinglayer::geometry::ViewInformation2D()));
-                                    const double fChildWidth(aChildRange.getWidth());
-                                    const double fChildHeight(aChildRange.getHeight());
-                                    const double fLeft(aChildRange.getMinX());
-                                    const double fTop(aChildRange.getMinY());
-                                    if ( fChildWidth / fViewBoxWidth > fChildHeight / fViewBoxHeight )
-                                    {  // expand y
-                                        fW = fChildWidth;
-                                        fH = fChildWidth / fViewBoxRatio;
-                                    }
-                                    else
-                                    {  // expand x
-                                        fH = fChildHeight;
-                                        fW = fChildHeight * fViewBoxRatio;
-                                    }
-                                    aSvgCanvasRange = basegfx::B2DRange(fLeft, fTop, fLeft + fW, fTop + fH);
+                                    fW = fViewBoxWidth;
+                                    fH = fViewBoxHeight;
+                                    aSvgCanvasRange = basegfx::B2DRange(0.0, 0.0, fW, fH);
                                 }

-
                                 if (bNeedsMapping)
                                 {
                                     // create mapping
--
2.9.3


code:
From 2e5d1e032d353884a1f391d9e55ca1be3f7a0b9d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 14 Feb 2017 08:57:50 +0000
Subject: [PATCH] Resolves: tdf#105998 distort hairline borders to fall inside
 the canvas

if we are a hairline along the very right/bottom edge
of the canvas then distory the polygon inwards one pixel right/bottom so that
the hairline falls inside the paintable area and becomes visible

Change-Id: Ie5713f6916cf5b47fdf14f86f034e38cda9900fd
---
 .../source/processor2d/vclpixelprocessor2d.cxx      | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index b8e9795..216be6b 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -165,6 +165,27 @@ namespace drawinglayer
                 return true;
             }

+            //Resolves: tdf#105998 if we are a hairline along the very right/bottom edge
+            //of the canvas then distory the polygon inwards one pixel right/bottom so that
+            //the hairline falls inside the paintable area and becomes visible
+            Size aSize = mpOutputDevice->GetOutputSize();
+            basegfx::B2DRange aRange = aLocalPolygon.getB2DRange();
+            basegfx::B2DRange aOutputRange = aRange;
+            aOutputRange.transform(maCurrentTransformation);
+            if (std::round(aOutputRange.getMaxX()) == aSize.Width() || std::round(aOutputRange.getMaxY()) == aSize.Height())
+            {
+                basegfx::B2DRange aOnePixel(0, 0, 1, 1);
+                aOnePixel.transform(maCurrentTransformation);
+                double fXOnePixel = 1.0 / aOnePixel.getMaxX();
+                double fYOnePixel = 1.0 / aOnePixel.getMaxY();
+
+                basegfx::B2DPoint aTopLeft(aRange.getMinX(), aRange.getMinY());
+                basegfx::B2DPoint aTopRight(aRange.getMaxX() - fXOnePixel, aRange.getMinY());
+                basegfx::B2DPoint aBottomLeft(aRange.getMinX(), aRange.getMaxY() - fYOnePixel);
+                basegfx::B2DPoint aBottomRight(aRange.getMaxX() - fXOnePixel, aRange.getMaxY() - fYOnePixel);
+                aLocalPolygon = basegfx::tools::distort(aLocalPolygon, aRange, aTopLeft, aTopRight, aBottomLeft, aBottomRight);
+            }
+
             const basegfx::BColor aLineColor(maBColorModifierStack.getModifiedColor(rSource.getBColor()));

             mpOutputDevice->SetFillColor();
--
2.9.3


code:
From ac19024c141448dbc5d89ad943a28875b4504f5c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 25 Nov 2016 14:11:13 +0000
Subject: [PATCH] gtk3: implement opengl support for slideshow
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

all of them work, except "Fall" doesn't look right, but it has
the exact same problem under gtk2/gen to.

Change-Id: I73cb9c0fb8211f727198be78d90d4f80a4f8c7c8
Reviewed-on: https://gerrit.libreoffice.org/31214
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 8bd9db90383ee008777903c35c7a5eb2c5352e71)
---
 include/vcl/opengl/OpenGLContext.hxx               |   2 +
 slideshow/source/engine/opengl/TransitionImpl.cxx  |  73 ++++++------
 slideshow/source/engine/opengl/TransitionImpl.hxx  |   9 +-
 .../source/engine/opengl/TransitionerImpl.cxx      |   7 +-
 vcl/inc/unx/gtk/gtkinst.hxx                        |   1 +
 vcl/source/opengl/OpenGLContext.cxx                |   5 +
 vcl/unx/gtk3/gtk3gtkinst.cxx                       | 127 +++++++++++++++++++++
 7 files changed, 181 insertions(+), 43 deletions(-)

diff --git a/include/vcl/opengl/OpenGLContext.hxx b/include/vcl/opengl/OpenGLContext.hxx
index ffcd816..5796f7e 100644
--- a/include/vcl/opengl/OpenGLContext.hxx
+++ include/vcl/opengl/OpenGLContext.hxx
@@ -129,6 +129,8 @@ public:
     void registerAsCurrent();
     /// reset the GL context so this context is not implicit in subsequent GL calls.
     virtual void resetCurrent();
+    /// unbind the GL_FRAMEBUFFER to its default state, needed for gtk3
+    virtual void restoreDefaultFramebuffer();
     virtual void swapBuffers();
     virtual void sync();
     void show();
diff --git a/slideshow/source/engine/opengl/TransitionImpl.cxx b/slideshow/source/engine/opengl/TransitionImpl.cxx
index 115aaf2..7b9b894 100644
--- a/slideshow/source/engine/opengl/TransitionImpl.cxx
+++ slideshow/source/engine/opengl/TransitionImpl.cxx
@@ -29,6 +29,7 @@
 #include <glm/gtc/matrix_transform.hpp>
 #include <glm/gtc/type_ptr.hpp>
 #include <vcl/opengl/OpenGLHelper.hxx>
+#include <vcl/opengl/OpenGLContext.hxx>

 #include <algorithm>
 #include <array>
@@ -132,7 +133,7 @@ static std::vector<int> uploadPrimitives(const Primitives_t& primitives)
     return indices;
 }

-bool OGLTransitionImpl::prepare( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex )
+bool OGLTransitionImpl::prepare( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext )
 {
     m_nProgramObject = makeShader();
     if (!m_nProgramObject)
@@ -200,7 +201,7 @@ bool OGLTransitionImpl::prepare( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteri
     glBindBuffer(GL_ARRAY_BUFFER, 0);
     CHECK_GL_ERROR();

-    prepareTransition( glLeavingSlideTex, glEnteringSlideTex );
+    prepareTransition( glLeavingSlideTex, glEnteringSlideTex, pContext );
     return true;
 }

@@ -233,7 +234,7 @@ void OGLTransitionImpl::finish( double, double, double, double, double )
 {
 }

-void OGLTransitionImpl::prepareTransition( sal_Int32, sal_Int32 )
+void OGLTransitionImpl::prepareTransition( sal_Int32, sal_Int32, OpenGLContext* )
 {
 }

@@ -241,7 +242,7 @@ void OGLTransitionImpl::finishTransition()
 {
 }

-void OGLTransitionImpl::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale )
+void OGLTransitionImpl::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale, OpenGLContext * )
 {
     CHECK_GL_ERROR();
     applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale );
@@ -257,7 +258,7 @@ void OGLTransitionImpl::displaySlides_( double nTime, sal_Int32 glLeavingSlideTe
 }

 void OGLTransitionImpl::display( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex,
-                                 double SlideWidth, double SlideHeight, double DispWidth, double DispHeight )
+                                 double SlideWidth, double SlideHeight, double DispWidth, double DispHeight, OpenGLContext *pContext )
 {
     const double SlideWidthScale = SlideWidth/DispWidth;
     const double SlideHeightScale = SlideHeight/DispHeight;
@@ -267,7 +268,7 @@ void OGLTransitionImpl::display( double nTime, sal_Int32 glLeavingSlideTex, sal_
     prepare( nTime, SlideWidth, SlideHeight, DispWidth, DispHeight );

     CHECK_GL_ERROR();
-    displaySlides_( nTime, glLeavingSlideTex, glEnteringSlideTex, SlideWidthScale, SlideHeightScale );
+    displaySlides_( nTime, glLeavingSlideTex, glEnteringSlideTex, SlideWidthScale, SlideHeightScale, pContext );
     CHECK_GL_ERROR();
     displayScene( nTime, SlideWidth, SlideHeight, DispWidth, DispHeight );
     CHECK_GL_ERROR();
@@ -534,9 +535,9 @@ public:

 private:
     virtual GLuint makeShader() const override;
-    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale ) override;
+    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale, OpenGLContext *pContext ) override;

-    virtual void prepareTransition( sal_Int32, sal_Int32 ) override {
+    virtual void prepareTransition( sal_Int32, sal_Int32, OpenGLContext* ) override {
         glDisable(GL_CULL_FACE);
     }

@@ -551,7 +552,7 @@ GLuint ReflectionTransition::makeShader() const
 }

 void ReflectionTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex,
-                                              double SlideWidthScale, double SlideHeightScale )
+                                              double SlideWidthScale, double SlideHeightScale, OpenGLContext * )
 {
     CHECK_GL_ERROR();
     applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale );
@@ -598,7 +599,7 @@ public:
 private:
     virtual GLuint makeShader() const override;

-    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale ) override;
+    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale, OpenGLContext *pContext ) override;
 };

 GLuint SimpleTransition::makeShader() const
@@ -607,7 +608,7 @@ GLuint SimpleTransition::makeShader() const
 }

 void SimpleTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex,
-                                              double SlideWidthScale, double SlideHeightScale )
+                                       double SlideWidthScale, double SlideHeightScale, OpenGLContext * )
 {
     CHECK_GL_ERROR();
     applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale );
@@ -857,10 +858,10 @@ public:
     {}

 private:
-    virtual void displaySlides_(double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale) override;
+    virtual void displaySlides_(double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale, OpenGLContext *pContext) override;
 };

-void RochadeTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale )
+void RochadeTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale, OpenGLContext * )
 {
     applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale );

@@ -1195,7 +1196,7 @@ public:
         {}

 private:
-    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale ) override;
+    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale, OpenGLContext *pContext ) override;
 };

 Primitives_t makeLeavingSlide(double nTime)
@@ -1229,7 +1230,7 @@ Primitives_t makeLeavingSlide(double nTime)
 }

 void DiamondTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex,
-                                              double SlideWidthScale, double SlideHeightScale )
+                                        double SlideWidthScale, double SlideHeightScale, OpenGLContext * )
 {
     CHECK_GL_ERROR();
     applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale );
@@ -1411,7 +1412,7 @@ protected:
     {}

     virtual void finishTransition() override;
-    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex ) override;
+    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext ) override;

 private:
     /** various data */
@@ -1488,7 +1489,7 @@ void initPermTexture(GLuint *texID)
     CHECK_GL_ERROR();
 }

-void PermTextureTransition::prepareTransition( sal_Int32, sal_Int32 )
+void PermTextureTransition::prepareTransition( sal_Int32, sal_Int32, OpenGLContext* )
 {
     CHECK_GL_ERROR();
     GLint location = glGetUniformLocation( m_nProgramObject, "permTexture" );
@@ -1629,8 +1630,8 @@ public:
 private:
     virtual void finishTransition() override;
     virtual GLuint makeShader() const override;
-    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex ) override;
-    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale ) override;
+    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext ) override;
+    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale, OpenGLContext *pContext ) override;

     GLint mnSlideLocation = -1;
     GLint mnTileInfoLocation = -1;
@@ -1679,10 +1680,10 @@ glm::mat4 lookAt(const glm::vec3& eye, const glm::vec3& center, const glm::vec3&
                      -glm::dot(s, eye), -glm::dot(u, eye), glm::dot(f, eye), 1);
 }

-void VortexTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex )
+void VortexTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext )
 {
     CHECK_GL_ERROR();
-    PermTextureTransition::prepareTransition( glLeavingSlideTex, glEnteringSlideTex );
+    PermTextureTransition::prepareTransition( glLeavingSlideTex, glEnteringSlideTex, pContext );
     CHECK_GL_ERROR();

     mnSlideLocation = glGetUniformLocation(m_nProgramObject, "slide");
@@ -1783,7 +1784,7 @@ void VortexTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32
         }
     }

-    glBindFramebuffer(GL_FRAMEBUFFER, 0);
+    pContext->restoreDefaultFramebuffer();
     glBindTexture(GL_TEXTURE_2D, 0);

     glActiveTexture( GL_TEXTURE2 );
@@ -1793,7 +1794,7 @@ void VortexTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32
     glActiveTexture( GL_TEXTURE0 );
 }

-void VortexTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale )
+void VortexTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale, OpenGLContext * pContext )
 {
     CHECK_GL_ERROR();
     applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale );
@@ -1815,7 +1816,7 @@ void VortexTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex
     displaySlide( nTime, glEnteringSlideTex, getScene().getEnteringSlide(), SlideWidthScale, SlideHeightScale );

     glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);
-    glBindFramebuffer(GL_FRAMEBUFFER, 0);
+    pContext->restoreDefaultFramebuffer();
     glUniform1f( mnShadowLocation, 0.0 );
     glUniform1f( mnSlideLocation, 0.0 );
     displaySlide( nTime, glLeavingSlideTex, getScene().getLeavingSlide(), SlideWidthScale, SlideHeightScale );
@@ -1877,7 +1878,7 @@ public:

 private:
     virtual GLuint makeShader() const override;
-    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex ) override;
+    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext ) override;
     virtual void prepare( double nTime, double SlideWidth, double SlideHeight, double DispWidth, double DispHeight ) override;

     glm::vec2 maCenter;
@@ -1889,7 +1890,7 @@ GLuint RippleTransition::makeShader() const
     return OpenGLHelper::LoadShaders( "basicVertexShader", "rippleFragmentShader" );
 }

-void RippleTransition::prepareTransition( sal_Int32, sal_Int32 )
+void RippleTransition::prepareTransition( sal_Int32, sal_Int32, OpenGLContext* )
 {
     GLint nCenterLocation = glGetUniformLocation(m_nProgramObject, "center");
     CHECK_GL_ERROR();
@@ -1974,7 +1975,7 @@ public:

 private:
     virtual GLuint makeShader() const override;
-    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex ) override;
+    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext ) override;
     virtual void finish( double nTime, double SlideWidth, double SlideHeight, double DispWidth, double DispHeight ) override;

     GLuint maBuffer = 0;
@@ -1990,10 +1991,10 @@ struct ThreeFloats
     GLfloat x, y, z;
 };

-void GlitterTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex )
+void GlitterTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext )
 {
     CHECK_GL_ERROR();
-    PermTextureTransition::prepareTransition( glLeavingSlideTex, glEnteringSlideTex );
+    PermTextureTransition::prepareTransition( glLeavingSlideTex, glEnteringSlideTex, pContext );
     CHECK_GL_ERROR();

     GLint nNumTilesLocation = glGetUniformLocation(m_nProgramObject, "numTiles");
@@ -2078,8 +2079,8 @@ public:
 private:
     virtual void finishTransition() override;
     virtual GLuint makeShader() const override;
-    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex ) override;
-    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale ) override;
+    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext ) override;
+    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale, OpenGLContext *pContext ) override;

     GLint maHexagonSizeLocation = -1;
     GLint maSelectedTextureLocation = -1;
@@ -2112,10 +2113,10 @@ GLuint HoneycombTransition::makeShader() const
     return OpenGLHelper::LoadShaders( "honeycombVertexShader", "honeycombFragmentShader", "honeycombGeometryShader" );
 }

-void HoneycombTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex )
+void HoneycombTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext )
 {
     CHECK_GL_ERROR();
-    PermTextureTransition::prepareTransition( glLeavingSlideTex, glEnteringSlideTex );
+    PermTextureTransition::prepareTransition( glLeavingSlideTex, glEnteringSlideTex, pContext );

     CHECK_GL_ERROR();
     maHexagonSizeLocation = glGetUniformLocation(m_nProgramObject, "hexagonSize");
@@ -2189,11 +2190,11 @@ void HoneycombTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_In
         return;
     }

-    glBindFramebuffer(GL_FRAMEBUFFER, 0);
+    pContext->restoreDefaultFramebuffer();
 }

 void HoneycombTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex,
-                                              double SlideWidthScale, double SlideHeightScale )
+                                          double SlideWidthScale, double SlideHeightScale, OpenGLContext *pContext )
 {
     CHECK_GL_ERROR();
     applyOverallOperations(nTime, SlideWidthScale, SlideHeightScale);
@@ -2217,7 +2218,7 @@ void HoneycombTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlide

     // The back (entering) slide needs to be drawn before the front (leaving) one in order for blending to work.
     glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);
-    glBindFramebuffer(GL_FRAMEBUFFER, 0);
+    pContext->restoreDefaultFramebuffer();
     glUniform1f(mnShadowLocation, 0.0);
     glUniform1f(maSelectedTextureLocation, 0.0);
     glUniform1f(maHexagonSizeLocation, 1.0f - borderSize);
diff --git a/slideshow/source/engine/opengl/TransitionImpl.hxx b/slideshow/source/engine/opengl/TransitionImpl.hxx
index b739c0c..54b7ba0 100644
--- a/slideshow/source/engine/opengl/TransitionImpl.hxx
+++ slideshow/source/engine/opengl/TransitionImpl.hxx
@@ -36,6 +36,7 @@
 #include <vector>

 class Primitive;
+class OpenGLContext;
 class Operation;
 class SceneObject;
 class TransitionData;
@@ -136,10 +137,10 @@ public:

     /** Prepare transition.
       */
-    bool prepare( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex );
+    bool prepare( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext );
     /** Display a step of the transition.
       */
-    void display( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidth, double SlideHeight, double DispWidth, double DispHeight );
+    void display( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidth, double SlideHeight, double DispWidth, double DispHeight, OpenGLContext *pContext );
     /** Clean up after transition.
       */
     void finish();
@@ -182,7 +183,7 @@ private:
       *
       * Default implementation does nothing.
       */
-    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex );
+    virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, OpenGLContext *pContext );

     /** This function is called when the transition needs to clear after itself, like delete own textures etc.
       *
@@ -195,7 +196,7 @@ private:
       * Default implementation applies overall operations and then
       * displays both slides.
       */
-    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale );
+    virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale, OpenGLContext *pContext );

     /** This function is called in prepare method to create the GL program.
       *
diff --git a/slideshow/source/engine/opengl/TransitionerImpl.cxx b/slideshow/source/engine/opengl/TransitionerImpl.cxx
index 01cd3e5..f2f0b3f 100644
--- slideshow/source/engine/opengl/TransitionerImpl.cxx
+++ slideshow/source/engine/opengl/TransitionerImpl.cxx
@@ -407,7 +407,7 @@ void OGLTransitionerImpl::impl_prepareSlides()
 bool OGLTransitionerImpl::impl_prepareTransition()
 {
     if( mpTransition && mpTransition->getSettings().mnRequiredGLVersion <= mnGLVersion )
-        return mpTransition->prepare( maLeavingSlideGL, maEnteringSlideGL );
+        return mpTransition->prepare( maLeavingSlideGL, maEnteringSlideGL, mpContext.get() );
     return false;
 }

@@ -1046,10 +1046,11 @@ void SAL_CALL OGLTransitionerImpl::update( double nTime ) throw (uno::RuntimeExc
     CHECK_GL_ERROR();

     const GLWindow& rGLWindow(mpContext->getOpenGLWindow());
-    mpTransition->display( nTime, maLeavingSlideGL, maEnteringSlideGL,
+    mpTransition->display(nTime, maLeavingSlideGL, maEnteringSlideGL,
                           maSlideSize.Width, maSlideSize.Height,
                           static_cast<double>(rGLWindow.Width),
-                          static_cast<double>(rGLWindow.Height) );
+                          static_cast<double>(rGLWindow.Height),
+                          mpContext.get());

     mpContext->swapBuffers();

diff --git a/vcl/inc/unx/gtk/gtkinst.hxx b/vcl/inc/unx/gtk/gtkinst.hxx
index 514b13f..e20ca9d 100644
--- vcl/inc/unx/gtk/gtkinst.hxx
+++ vcl/inc/unx/gtk/gtkinst.hxx
@@ -239,6 +239,7 @@ public:
     virtual css::uno::Reference< css::uno::XInterface > CreateClipboard( const css::uno::Sequence< css::uno::Any >& i_rArguments ) override;
     virtual css::uno::Reference< css::uno::XInterface > CreateDragSource() override;
     virtual css::uno::Reference< css::uno::XInterface > CreateDropTarget() override;
+    virtual OpenGLContext* CreateOpenGLContext() override;
 #endif

     virtual const cairo_font_options_t* GetCairoFontOptions() override;
diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
index 1b2893b..d7d7841 100644
--- vcl/source/opengl/OpenGLContext.cxx
+++ vcl/source/opengl/OpenGLContext.cxx
@@ -330,6 +330,11 @@ void OpenGLContext::InitGLDebugging()
 #endif
 }

+void OpenGLContext::restoreDefaultFramebuffer()
+{
+    glBindFramebuffer(GL_FRAMEBUFFER, 0);
+}
+
 void OpenGLContext::setWinPosAndSize(const Point &rPos, const Size& rSize)
 {
     if(m_xWindow)
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 7148882..947bcc9 100644
--- vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -916,4 +916,131 @@ Reference< XInterface > GtkInstance::CreateDragSource()
     return Reference< XInterface >( static_cast<cppu::OWeakObject *>(new GtkDragSource()) );
 }

+class GtkOpenGLContext : public OpenGLContext
+{
+    GLWindow m_aGLWin;
+    GtkWidget *m_pGLArea;
+
+public:
+    GtkOpenGLContext()
+        : OpenGLContext()
+        , m_pGLArea(nullptr)
+    {
+    }
+
+    virtual bool initWindow() override
+    {
+        if( !m_pChildWindow )
+        {
+            SystemWindowData winData = generateWinData(mpWindow, mbRequestLegacyContext);
+            m_pChildWindow = VclPtr<SystemChildWindow>::Create(mpWindow, 0, &winData, false);
+        }
+
+        if (m_pChildWindow)
+        {
+            InitChildWindow(m_pChildWindow.get());
+        }
+
+        return true;
+    }
+
+private:
+    virtual const GLWindow& getOpenGLWindow() const override { return m_aGLWin; }
+    virtual GLWindow& getModifiableOpenGLWindow() override { return m_aGLWin; }
+
+    static void signalDestroy(GtkWidget*, gpointer context)
+    {
+        GtkOpenGLContext* pThis = static_cast<GtkOpenGLContext*>(context);
+        pThis->m_pGLArea = nullptr;
+    }
+
+    virtual bool ImplInit() override
+    {
+#if GTK_CHECK_VERSION(3,16,0)
+        const SystemEnvData* pEnvData = m_pChildWindow->GetSystemData();
+        GtkWidget *pParent = static_cast<GtkWidget*>(pEnvData->pWidget);
+        m_pGLArea = gtk_gl_area_new();
+        g_signal_connect(G_OBJECT(m_pGLArea), "destroy", G_CALLBACK(signalDestroy), this);
+        gtk_gl_area_set_has_depth_buffer(GTK_GL_AREA(m_pGLArea), true);
+        gtk_gl_area_set_auto_render(GTK_GL_AREA(m_pGLArea), false);
+        gtk_widget_set_hexpand(m_pGLArea, true);
+        gtk_widget_set_vexpand(m_pGLArea, true);
+        gtk_container_add(GTK_CONTAINER(pParent), m_pGLArea);
+        gtk_widget_show_all(pParent);
+        gtk_gl_area_make_current(GTK_GL_AREA(m_pGLArea));
+        gtk_gl_area_attach_buffers(GTK_GL_AREA(m_pGLArea));
+#endif
+        bool bRet = InitGL();
+        InitGLDebugging();
+        return bRet;
+    }
+
+    virtual void restoreDefaultFramebuffer() override
+    {
+        OpenGLContext::restoreDefaultFramebuffer();
+#if GTK_CHECK_VERSION(3,16,0)
+        gtk_gl_area_attach_buffers(GTK_GL_AREA(m_pGLArea));
+#endif
+    }
+
+    virtual void makeCurrent() override
+    {
+        if (isCurrent())
+            return;
+
+        clearCurrent();
+
+#if GTK_CHECK_VERSION(3,16,0)
+        if (m_pGLArea)
+            gtk_gl_area_make_current(GTK_GL_AREA(m_pGLArea));
+#endif
+
+        registerAsCurrent();
+    }
+
+    virtual void destroyCurrentContext() override
+    {
+#if GTK_CHECK_VERSION(3,16,0)
+        gdk_gl_context_clear_current();
+#endif
+    }
+
+    virtual bool isCurrent() override
+    {
+#if GTK_CHECK_VERSION(3,16,0)
+        return m_pGLArea && gdk_gl_context_get_current() == gtk_gl_area_get_context(GTK_GL_AREA(m_pGLArea));
+#else
+        return false;
+#endif
+    }
+
+    virtual void sync() override
+    {
+#if GTK_CHECK_VERSION(3,16,0)
+        gtk_gl_area_queue_render(GTK_GL_AREA(m_pGLArea));
+#endif
+    }
+
+    virtual void resetCurrent() override
+    {
+        clearCurrent();
+#if GTK_CHECK_VERSION(3,16,0)
+        gdk_gl_context_clear_current();
+#endif
+    }
+
+    virtual void swapBuffers() override
+    {
+#if GTK_CHECK_VERSION(3,16,0)
+        gtk_gl_area_queue_render(GTK_GL_AREA(m_pGLArea));
+#endif
+        BuffersSwapped();
+    }
+};
+
+OpenGLContext* GtkInstance::CreateOpenGLContext()
+{
+    return new GtkOpenGLContext;
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
--
2.9.3


code:
From cd928ec49d4bcf8f9736c3a07ccd1b3fd5df6ad8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Mon, 25 Sep 2017 11:20:34 +0100
Subject: [PATCH] gtk3 only for >= 3.20

Change-Id: I98008c0028ed5d85fe8770197078360de70010a8
---
 vcl/unx/gtk/gtkinst.cxx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/vcl/unx/gtk/gtkinst.cxx b/vcl/unx/gtk/gtkinst.cxx
index e01a267b..7237b6c 100644
--- a/vcl/unx/gtk/gtkinst.cxx
+++ b/vcl/unx/gtk/gtkinst.cxx
@@ -82,7 +82,7 @@ extern "C"
             XInitThreads();

 #if GTK_CHECK_VERSION(3,0,0)
-        if (gtk_minor_version < 14)
+        if (gtk_minor_version < 20)
         {
             g_warning("require a newer gtk than 3.%d for theme expectations", gtk_minor_version);
             return nullptr;
--
2.9.5