Skip to content

Commit

Permalink
kde-apps/kig: Backport python3 support
Browse files Browse the repository at this point in the history
Package-Manager: Portage-2.3.81, Repoman-2.3.20
Signed-off-by: Andreas Sturmlechner <[email protected]>
  • Loading branch information
a17r committed Dec 15, 2019
1 parent 4c03ac2 commit d165bd9
Show file tree
Hide file tree
Showing 4 changed files with 331 additions and 0 deletions.
161 changes: 161 additions & 0 deletions kde-apps/kig/files/kig-19.08.3-pykig-python3.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
From d72f33a14c22480b28c0f35d53293826f6ec787b Mon Sep 17 00:00:00 2001
From: Antonio Rojas <[email protected]>
Date: Sat, 14 Dec 2019 19:49:09 +0100
Subject: Port pykig to python 3

Differential Revision: https://phabricator.kde.org/D25982
---
pykig/pykig.py | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/pykig/pykig.py b/pykig/pykig.py
index 02f637d..3ee6e97 100644
--- a/pykig/pykig.py
+++ b/pykig/pykig.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#-------------------------------python------------------------pykig.py--#
# #
@@ -170,9 +170,9 @@ class KigDocument(object):
self.of=of
try:
self.outfile = open(outfilename, 'w')
- except IOError, value:
+ except IOError as value:
# print >> sys.stderr, outfilename, 'unwritable'
- print >> sys.stderr, value
+ print(value, file=sys.stderr)
sys.exit(2)
# KigOut._kigdocument=self
KigDOP._kd=self
@@ -212,14 +212,14 @@ class KigDocument(object):
self.outfile.write(" </View>\n</KigDocument>\n")
if self.outfile != sys.stdout:
self.outfile.close()
- except IOError, value:
- print >> sys.stderr, value
+ except IOError as value:
+ print(value, file=sys.stderr)
sys.exit(2)
try:
if self.callkig:
err = os.system('kig ' + self.outfilename)
- except Exception, value:
- print >> sys.stderr, value
+ except Exception as value:
+ print(value, file=sys.stderr)
if not self.of:
os.system('rm ' + self.outfilename)

@@ -501,7 +501,7 @@ def databuild(nomeclasse, nomekig, v="val"):

for d in data:
p1, p2, p3 = d
- exec databuild(p1, p2, p3)
+ exec (databuild(p1, p2, p3))

#####
# Objects
@@ -645,7 +645,7 @@ def objectbuild(nameclass, namekig, params, objparams):

for o in objects:
p1, p2, p3, p4 = o
- exec objectbuild(p1, p2, p3, p4)
+ exec (objectbuild(p1, p2, p3, p4))

#####
# Properties
@@ -688,7 +688,7 @@ def propertybuild(nameclass, namekig, params, objparams):

for p in property:
p1, p2, p3, p4 = p
- exec propertybuild(p1, p2, p3, p4)
+ exec (propertybuild(p1, p2, p3, p4))

#####
# Start of properties definitions as Object's methods
@@ -734,7 +734,7 @@ def methodsbuild(namekig):

for p in methods:
p1, p2, cl = p
- exec methodsbuild(p1)
+ exec (methodsbuild(p1))
for c in cl:
setattr(c, p2, method)

@@ -743,7 +743,7 @@ for p in methods:
#####

def usage(codexit):
- print >> sys.stderr, """
+ print ("""
usage: pykig.py [options...] file ...

Options:
@@ -757,7 +757,7 @@ examples:
$ pykig.py my_file.kpy
$ pykig.py -o output_file.kig my_file.kpy
$ ...
-"""
+""", file=sys.stderr)
sys.exit(codexit)

#####
@@ -776,7 +776,7 @@ def prog():
_opts, _args = getopt.getopt(sys.argv[1:], "hvno:",\
["help", "version", "nokig", "output="])
except getopt.GetoptError:
- print "GetoptError"
+ print ("GetoptError")
usage(2)
_callKig=True
_of=False
@@ -784,7 +784,7 @@ def prog():
if _opt in ("-h", "--help"):
usage(0)
if _opt in ("-v", "--version"):
- print "Version:", version
+ print ("Version:", version)
sys.exit(0)
if _opt in ("-n", "--nokig"):
_callKig=False
@@ -793,19 +793,19 @@ def prog():
_of=True
_callKig=False # if there's an output file, don't call Kig
if len(_args)==0:
- _infilename=raw_input("Input file name: ")
+ _infilename=input("Input file name: ")
if not _infilename:
- print "No input file name."
+ print ("No input file name.")
usage(2)
elif len(_args)==1:
_infilename=_args[0]
else:
- print "No input file name."
+ print ("No input file name.")
usage(2)
try:
_infile = open(_infilename, 'r')
except:
- print >> sys.stderr, _infilename, "input file can't be read."
+ print (_infilename, "input file can't be read.", file=sys.stderr)
sys.exit(2)
if _of:
if _outfilename=="-":
@@ -817,9 +817,9 @@ def prog():
kigdocument=KigDocument(_outfilename, _callKig, _of)
kd=kigdocument
try:
- execfile(_infilename, globals())
+ exec(open(_infilename).read(), globals())
except:
- print >> sys.stderr, 'Syntax error in', _infilename
+ print ('Syntax error in', _infilename, file=sys.stderr)
_info = sys.exc_info() # print out the traceback
traceback.print_exc()
sys.exit(3)
--
cgit v1.1
27 changes: 27 additions & 0 deletions kde-apps/kig/files/kig-19.08.3-scripter-python3.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
From e0dae6b9938963c8f3c30ac7b8182452645e2dbf Mon Sep 17 00:00:00 2001
From: Yuri Chornoivan <[email protected]>
Date: Tue, 22 Oct 2019 20:42:51 +0300
Subject: Try to fix Python 3 build

---
scripting/python_scripter.cc | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/scripting/python_scripter.cc b/scripting/python_scripter.cc
index e60a90c..62a7409 100644
--- a/scripting/python_scripter.cc
+++ b/scripting/python_scripter.cc
@@ -390,7 +390,11 @@ PythonScripter::PythonScripter()
// the newstring stuff is to prevent warnings about conversion from
// const char* to char*..
char* s = newstring( "kig" );
+#if PY_VERSION_HEX >= 0x03000000
+ PyImport_AppendInittab( s, PyInit_kig );
+#else
PyImport_AppendInittab( s, initkig );
+#endif
// we can't delete this yet, since python keeps a pointer to it..
// This means we have a small but harmless memory leak here, but it
// doesn't hurt at all, since it could only be freed at the end of
--
cgit v1.1
72 changes: 72 additions & 0 deletions kde-apps/kig/kig-19.08.3-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

ECM_HANDBOOK="forceoptional"
ECM_TEST="true"
PYTHON_COMPAT=( python3_{6,7,8} )
KFMIN=5.60.0
QTMIN=5.12.3
inherit python-single-r1 ecm kde.org

DESCRIPTION="KDE Interactive Geometry tool"
HOMEPAGE="https://kde.org/applications/education/org.kde.kig
https://edu.kde.org/kig/"

LICENSE="GPL-2" # TODO: CHECK
SLOT="5"
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="geogebra scripting"

REQUIRED_USE="${PYTHON_REQUIRED_USE}"

RDEPEND="${PYTHON_DEPS}
>=dev-qt/qtgui-${QTMIN}:5
>=dev-qt/qtprintsupport-${QTMIN}:5
>=dev-qt/qtsvg-${QTMIN}:5
>=dev-qt/qtwidgets-${QTMIN}:5
>=dev-qt/qtxml-${QTMIN}:5
>=kde-frameworks/karchive-${KFMIN}:5
>=kde-frameworks/kcompletion-${KFMIN}:5
>=kde-frameworks/kconfig-${KFMIN}:5
>=kde-frameworks/kconfigwidgets-${KFMIN}:5
>=kde-frameworks/kcoreaddons-${KFMIN}:5
>=kde-frameworks/kcrash-${KFMIN}:5
>=kde-frameworks/ki18n-${KFMIN}:5
>=kde-frameworks/kiconthemes-${KFMIN}:5
>=kde-frameworks/kparts-${KFMIN}:5
>=kde-frameworks/kservice-${KFMIN}:5
>=kde-frameworks/kwidgetsaddons-${KFMIN}:5
>=kde-frameworks/kxmlgui-${KFMIN}:5
geogebra? ( >=dev-qt/qtxmlpatterns-${QTMIN}:5 )
scripting? ( >=dev-libs/boost-1.48:=[python,${PYTHON_USEDEP}] )
"
DEPEND="${RDEPEND}
>=kde-frameworks/ktexteditor-${KFMIN}:5
"

PATCHES=(
"${FILESDIR}"/${PN}-4.12.0-boostpython.patch
"${FILESDIR}"/${P}-scripter-python3.patch
"${FILESDIR}"/${P}-pykig-python3.patch
)

pkg_setup() {
python-single-r1_pkg_setup
ecm_pkg_setup
}

src_prepare() {
ecm_src_prepare
python_fix_shebang .
}

src_configure() {
local mycmakeargs=(
$(cmake_use_find_package geogebra Qt5XmlPatterns)
$(cmake_use_find_package scripting BoostPython)
)

ecm_src_configure
}
71 changes: 71 additions & 0 deletions kde-apps/kig/kig-19.12.0-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

ECM_HANDBOOK="forceoptional"
ECM_TEST="true"
PYTHON_COMPAT=( python3_{6,7,8} )
KFMIN=5.63.0
QTMIN=5.12.3
inherit python-single-r1 ecm kde.org

DESCRIPTION="KDE Interactive Geometry tool"
HOMEPAGE="https://kde.org/applications/education/org.kde.kig
https://edu.kde.org/kig/"

LICENSE="GPL-2" # TODO: CHECK
SLOT="5"
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="geogebra scripting"

REQUIRED_USE="${PYTHON_REQUIRED_USE}"

RDEPEND="${PYTHON_DEPS}
>=dev-qt/qtgui-${QTMIN}:5
>=dev-qt/qtprintsupport-${QTMIN}:5
>=dev-qt/qtsvg-${QTMIN}:5
>=dev-qt/qtwidgets-${QTMIN}:5
>=dev-qt/qtxml-${QTMIN}:5
>=kde-frameworks/karchive-${KFMIN}:5
>=kde-frameworks/kcompletion-${KFMIN}:5
>=kde-frameworks/kconfig-${KFMIN}:5
>=kde-frameworks/kconfigwidgets-${KFMIN}:5
>=kde-frameworks/kcoreaddons-${KFMIN}:5
>=kde-frameworks/kcrash-${KFMIN}:5
>=kde-frameworks/ki18n-${KFMIN}:5
>=kde-frameworks/kiconthemes-${KFMIN}:5
>=kde-frameworks/kparts-${KFMIN}:5
>=kde-frameworks/kservice-${KFMIN}:5
>=kde-frameworks/kwidgetsaddons-${KFMIN}:5
>=kde-frameworks/kxmlgui-${KFMIN}:5
geogebra? ( >=dev-qt/qtxmlpatterns-${QTMIN}:5 )
scripting? ( >=dev-libs/boost-1.48:=[python,${PYTHON_USEDEP}] )
"
DEPEND="${RDEPEND}
>=kde-frameworks/ktexteditor-${KFMIN}:5
"

PATCHES=(
"${FILESDIR}"/${PN}-4.12.0-boostpython.patch
"${FILESDIR}"/${PN}-19.08.3-pykig-python3.patch
)

pkg_setup() {
python-single-r1_pkg_setup
ecm_pkg_setup
}

src_prepare() {
ecm_src_prepare
python_fix_shebang .
}

src_configure() {
local mycmakeargs=(
$(cmake_use_find_package geogebra Qt5XmlPatterns)
$(cmake_use_find_package scripting BoostPython)
)

ecm_src_configure
}

0 comments on commit d165bd9

Please sign in to comment.