parent
3d1504478b
commit
eb68e47a02
@ -0,0 +1 @@
|
||||
DIST faulthandler-3.0.tar.gz 55577 BLAKE2B 8c4157393eb912d3f0e42ab6b942390a0ba2c068559ab8b66e6e3d961a2f7750f9cab000429feba46c0f9cc0a81ac2c8570d092ead1dcec8ea4e76e555cd1a8b SHA512 9e31682338e572e77e22a510637877c3e27440bc451854a898c5e58238d28a1bbf824cb2b44d1f1f11d8a4f491ddc299982a3d452eebec38bc2a03a824bac392
|
@ -0,0 +1,32 @@
|
||||
# Copyright 1999-2018 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
MY_PN=faulthandler
|
||||
MY_P=$MY_PN-$PV
|
||||
DESCRIPTION="functions to dump Python tracebacks explicitly (on fault, user signal, timeout)"
|
||||
HOMEPAGE="https://github.com/haypo/faulthandler https://pypi.org/project/faulthandler/"
|
||||
SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="amd64 ppc ppc64 x86"
|
||||
IUSE=""
|
||||
RESTRICT="test"
|
||||
|
||||
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
|
||||
RDEPEND="
|
||||
!dev-python/${MY_PN}[python_targets_python2_7]
|
||||
"
|
||||
|
||||
S="${WORKDIR}/${MY_PN}-${PV}"
|
||||
|
||||
python_install_all() {
|
||||
distutils-r1_python_install_all
|
||||
rm -r ${D}/usr/share
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="person">
|
||||
<herd>maintainer-wanted</herd>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<remote-id type="github">haypo/faulthandler</remote-id>
|
||||
<remote-id type="pypi">faulthandler</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
@ -0,0 +1 @@
|
||||
DIST ply-3.11.tar.gz 159130 BLAKE2B 58c50b9dad445ad83a64aaa8174ed4602b36f5c8df33a7d62590a92388c4a21c9800599c1d4e4db6f02630e8dee4c8482611e26498e4aa8ccdb2cf3453ae1db4 SHA512 37e39a4f930874933223be58a3da7f259e155b75135f1edd47069b3b40e5e96af883ebf1c8a1bbd32f914a9e92cfc12e29fec05cf61b518f46c1d37421b20008
|
@ -0,0 +1,24 @@
|
||||
From f50768b0b2176998675e728d84ac05f0eef19614 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Gilbert <floppym@gentoo.org>
|
||||
Date: Sun, 17 May 2015 12:14:16 -0400
|
||||
Subject: [PATCH] Catch/ignore IOError when opening picklefile for reading in
|
||||
yacc.yacc()
|
||||
|
||||
Should resolve #66.
|
||||
---
|
||||
ply/yacc.py | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/ply/yacc.py b/ply/yacc.py
|
||||
index eb02cc2..2835c90 100644
|
||||
--- a/ply/yacc.py
|
||||
+++ b/ply/yacc.py
|
||||
@@ -3265,6 +3265,8 @@ def yacc(method='LALR', debug=yaccdebug, module=None, tabmodule=tab_module, star
|
||||
errorlog.warning(str(e))
|
||||
except ImportError:
|
||||
pass
|
||||
+ except IOError:
|
||||
+ pass
|
||||
|
||||
if debuglog is None:
|
||||
if debug:
|
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<herd>maintainer-wanted</herd>
|
||||
</maintainer>
|
||||
<longdescription>
|
||||
PLY is a Python-only implementation of the popular compiler construction
|
||||
tools lex and yacc. The implementation borrows ideas from a number of
|
||||
previous efforts; most notably John Aycock's SPARK toolkit. However,
|
||||
the overall flavor of the implementation is more closely modeled after
|
||||
the C version of lex and yacc. The other significant feature of PLY is
|
||||
that it provides extensive input validation and error reporting--much
|
||||
more so than other Python parsing tools.
|
||||
</longdescription>
|
||||
<longdescription lang="ja">
|
||||
PLYはLexとYaccの有名なコンパイラ・コンストラクション・ツールのPython言語実装です
|
||||
。この実装は以前の試みから幾つものアイディアを借りています。そのほとんどがJohn AycockのSPARKツールキットからです。しかしながら、実装の全体像はC言語によるLexとYaccにより近いモデルです。PLYの他の重要点は幅広い入力バリデーションとエラー報告を提供する点です。 -- その二点は他のPython言語パーサーより優れています。
|
||||
</longdescription>
|
||||
<upstream>
|
||||
<remote-id type="pypi">ply</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
@ -0,0 +1,32 @@
|
||||
# Copyright 1999-2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
MY_PN=ply
|
||||
MY_P=$MY_PN-$PV
|
||||
DESCRIPTION="Python Lex-Yacc library"
|
||||
HOMEPAGE="http://www.dabeaz.com/ply/ https://pypi.org/project/ply/"
|
||||
SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0/$PV"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
||||
RESTRICT="test"
|
||||
|
||||
PATCHES=( "${FILESDIR}/3.6-picklefile-IOError.patch" )
|
||||
|
||||
RDEPEND="
|
||||
!dev-python/ply[python_targets_python2_7]
|
||||
"
|
||||
|
||||
S="${WORKDIR}/${MY_PN}-${PV}"
|
||||
|
||||
python_install_all() {
|
||||
distutils-r1_python_install_all
|
||||
rm -r ${D}/usr/share
|
||||
}
|
@ -0,0 +1 @@
|
||||
DIST pycairo-1.18.2.tar.gz 200462 BLAKE2B 1f755dc90fe3ee50aa68273a0816752312f144831ff857709e1a4695a58646ffe6be518733480ed37231c213a11d4e5aaf8dfd1cfa68104873bc7d4192435b89 SHA512 279ea80413ba55d493d51455685da09afa1f5c45e2930c3fca3e417a8afe6645a0d8131201f79482de59e5ec56cfef62eac65ed88fe88866bfcc06503dcc59e0
|
@ -0,0 +1,26 @@
|
||||
From 3ecf0a4060d6de3b92a77a393ece663455cf6add Mon Sep 17 00:00:00 2001
|
||||
From: Christoph Reiter <reiter.christoph@gmail.com>
|
||||
Date: Sun, 10 May 2020 11:22:40 +0200
|
||||
Subject: [PATCH] tests: Fix syntax issue with Python 3.9
|
||||
|
||||
https://bugs.python.org/issue40246
|
||||
|
||||
I haven't actually tested with 3.9 yet, so this is just what I found
|
||||
with grep.
|
||||
---
|
||||
tests/test_enums.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/test_enums.py b/tests/test_enums.py
|
||||
index 4bc2e3d..02756d0 100644
|
||||
--- a/tests/test_enums.py
|
||||
+++ b/tests/test_enums.py
|
||||
@@ -79,7 +79,7 @@ def get_prefix(t):
|
||||
# special case..
|
||||
if name == "PathDataType":
|
||||
name = "Path"
|
||||
- return"_".join([s.upper() for s in re.findall('[A-Z][^A-Z]*', name)])
|
||||
+ return "_".join([s.upper() for s in re.findall('[A-Z][^A-Z]*', name)])
|
||||
|
||||
for t in types_:
|
||||
for name in dir(t):
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<herd>maintainer-wanted</herd>
|
||||
</maintainer>
|
||||
</pkgmetadata>
|
@ -0,0 +1,44 @@
|
||||
# Copyright 1999-2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
PYTHON_REQ_USE="threads(+)"
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
MY_PN=pycairo
|
||||
MY_P=$MY_PN-$PV
|
||||
DESCRIPTION="Python bindings for the cairo library"
|
||||
HOMEPAGE="https://www.cairographics.org/pycairo/ https://github.com/pygobject/pycairo"
|
||||
SRC_URI="https://github.com/pygobject/${MY_PN}/releases/download/v${PV}/${MY_P}.tar.gz"
|
||||
|
||||
LICENSE="|| ( LGPL-2.1 MPL-1.1 )"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
|
||||
IUSE=""
|
||||
RESTRICT="test"
|
||||
|
||||
RDEPEND="
|
||||
!dev-python/${MY_PN}[python_targets_python2_7]
|
||||
>=x11-libs/cairo-1.13.1[svg]
|
||||
"
|
||||
DEPEND="${RDEPEND}"
|
||||
S="${WORKDIR}/${MY_PN}-${PV}"
|
||||
|
||||
distutils_enable_sphinx docs \
|
||||
dev-python/sphinx_rtd_theme
|
||||
distutils_enable_tests setup.py
|
||||
|
||||
python_install() {
|
||||
distutils-r1_python_install \
|
||||
install_pkgconfig --pkgconfigdir="${EPREFIX}/usr/$(get_libdir)/pkgconfig"
|
||||
}
|
||||
|
||||
python_install_all() {
|
||||
distutils-r1_python_install_all
|
||||
rm -r ${D}/usr/share
|
||||
rm -r ${D}/usr/lib*/pkgconfig
|
||||
rm -r ${D}/usr/include
|
||||
}
|
@ -0,0 +1 @@
|
||||
DIST pycparser-2.20.tar.gz 161330 BLAKE2B 9a114e4b73e6c3c495bd78c393957146ec425eb5b15d72266cbf424f15e8d2e2e6402ef36d60a9dff41b393aab80fe1356befd25549517f398e129836a76b037 SHA512 ff0853c9f981b43b4f2e879350715c07b02cf9dab223d4980d8fe0a3138c98041b5f848a9355ae4f1cb45e7f137c03a88843008e18d77af9250e0d9c55f5ca1b
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<herd>maintainer-wanted</herd>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<remote-id type="pypi">pycparser</remote-id>
|
||||
<remote-id type="github">eliben/pycparser</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
@ -0,0 +1,55 @@
|
||||
# Copyright 1999-2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
MY_PN=pycparser
|
||||
MY_P=$MY_PN-$PV
|
||||
DESCRIPTION="C parser and AST generator written in Python"
|
||||
HOMEPAGE="https://github.com/eliben/pycparser"
|
||||
SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
||||
RESTRICT="test"
|
||||
S="${WORKDIR}/${MY_PN}-${PV}"
|
||||
|
||||
RDEPEND="
|
||||
!dev-python/${MY_PN}[python_targets_python2_7]
|
||||
dev-python/ply-python2:=[${PYTHON_USEDEP}]"
|
||||
BDEPEND="${RDEPEND}
|
||||
dev-python/setuptools[${PYTHON_USEDEP}]"
|
||||
|
||||
python_prepare_all() {
|
||||
# remove the original files to guarantee their regen
|
||||
rm pycparser/{c_ast,lextab,yacctab}.py || die
|
||||
|
||||
# kill sys.path manipulations to force the tests to use built files
|
||||
sed -i -e '/sys\.path/d' tests/*.py || die
|
||||
|
||||
distutils-r1_python_prepare_all
|
||||
}
|
||||
|
||||
python_compile() {
|
||||
distutils-r1_python_compile
|
||||
|
||||
# note: tables built by py3.5+ are incompatible with older versions
|
||||
# because of 100 group limit of 're' module -- just generate them
|
||||
# separately optimized for each target instead
|
||||
pushd "${BUILD_DIR}"/lib/pycparser > /dev/null || die
|
||||
"${PYTHON}" _build_tables.py || die
|
||||
popd > /dev/null || die
|
||||
}
|
||||
|
||||
python_install() {
|
||||
distutils-r1_python_install
|
||||
|
||||
# setup.py generates {c_ast,lextab,yacctab}.py with bytecode disabled.
|
||||
python_optimize
|
||||
rm -r ${D}/usr/share
|
||||
}
|
@ -0,0 +1 @@
|
||||
DIST PyOpenGL-3.1.0.tar.gz 1172688 BLAKE2B 9865a10e8b5d2756192077b4b079658c680b9f47bdaccb33285fb1942bc678b29f6a69359a1486ec023b1a73d714a7e0209b2f57776fe8b5e4a5e2d0803dba4f SHA512 f748017ab3734c7672c3fdbedcea80df297a91a78b111533e260feb0868ebb02935666c041f77db03841ee8f90057d9c53c53b00b097aae4cf67a52c7fc9c2eb
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<herd>maintainer-wanted</herd>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<remote-id type="pypi">PyOpenGL</remote-id>
|
||||
<remote-id type="sourceforge">pyopengl</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
@ -0,0 +1,33 @@
|
||||
# Copyright 1999-2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=5
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
ORIG_PN=pyopengl
|
||||
MY_PN="PyOpenGL"
|
||||
MY_P="${MY_PN}-${PV}"
|
||||
|
||||
DESCRIPTION="Python OpenGL bindings"
|
||||
HOMEPAGE="http://pyopengl.sourceforge.net/ https://pypi.org/project/PyOpenGL/"
|
||||
SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
|
||||
# mirror://sourceforge/pyopengl/${MY_P}.tar.gz" # broken mirror for this release
|
||||
LICENSE="BSD"
|
||||
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 sparc x86 ~amd64-linux ~x86-linux"
|
||||
RESTRICT="test"
|
||||
IUSE=""
|
||||
|
||||
RDEPEND="
|
||||
!dev-python/${ORIG_PN}[python_targets_python2_7]
|
||||
media-libs/freeglut
|
||||
virtual/opengl
|
||||
x11-libs/libXi
|
||||
x11-libs/libXmu"
|
||||
DEPEND="${RDEPEND}
|
||||
dev-python/setuptools[${PYTHON_USEDEP}]"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
@ -0,0 +1 @@
|
||||
DIST wxPython-src-3.0.2.0.tar.bz2 58304944 BLAKE2B 1144acf2cfa0a18aa2f90aabe81aaeca54d3fe6139818267dbc031accbae38035478a64ec084fe8bb8b89126fb70ff96e68981026df8ad3fc82e81c6d0e22d1a SHA512 a3798e89ff19344253aac7d771971e519f7fa9723e82bd97e98f16fd7f1572e513170b02295b872dae0b1ae3fa95efc4ef34d078045b839694b4fdad3a27c9e4
|
@ -0,0 +1,16 @@
|
||||
Portage preserve-libs removes the linker name (.so) of a library but leaves
|
||||
the soname (.so.4) and realname (.so.4.0) installed. findLib searches for
|
||||
mywxlibname.* and returns true if anything is found. Disaster ensues.
|
||||
|
||||
|
||||
--- a/wxPython/config.py
|
||||
+++ b/wxPython/config.py
|
||||
@@ -612,7 +612,7 @@ def findLib(name, libdirs):
|
||||
dirs = libdirs[:]
|
||||
for d in dirs:
|
||||
p = os.path.join(d, name)
|
||||
- if glob.glob(p+'*') != []:
|
||||
+ if glob.glob(p+'*.so') != []:
|
||||
return True
|
||||
return False
|
||||
|
@ -0,0 +1,48 @@
|
||||
--- a/wxPython/setup.py
|
||||
+++ b/wxPython/setup.py
|
||||
@@ -887,13 +887,6 @@ WX_PKGLIST = [ 'wx',
|
||||
'wx.tools',
|
||||
'wx.tools.XRCed',
|
||||
'wx.tools.XRCed.plugins',
|
||||
- 'wx.tools.Editra',
|
||||
- 'wx.tools.Editra.src',
|
||||
- 'wx.tools.Editra.src.autocomp',
|
||||
- 'wx.tools.Editra.src.eclib',
|
||||
- 'wx.tools.Editra.src.ebmlib',
|
||||
- 'wx.tools.Editra.src.extern',
|
||||
- 'wx.tools.Editra.src.syntax',
|
||||
]
|
||||
|
||||
if not EGGing:
|
||||
@@ -920,7 +913,6 @@ else:
|
||||
opj('scripts/pywrap'),
|
||||
opj('scripts/pywxrc'),
|
||||
opj('scripts/xrced'),
|
||||
- opj('scripts/editra'),
|
||||
]
|
||||
if os.name == 'nt':
|
||||
SCRIPTS.append( opj('scripts/genaxmodule') )
|
||||
@@ -934,15 +926,6 @@ DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc', '*.htb')
|
||||
DATA_FILES += find_data_files('wx/tools/XRCed/plugins', '*.crx')
|
||||
DATA_FILES += find_data_files('wx/tools/XRCed/plugins/bitmaps', '*.png')
|
||||
|
||||
-DATA_FILES += find_data_files('wx/tools/Editra/docs', '*.txt')
|
||||
-DATA_FILES += find_data_files('wx/tools/Editra/locale', '*.mo')
|
||||
-DATA_FILES += find_data_files('wx/tools/Editra/pixmaps',
|
||||
- '*.png', '*.icns', '*.ico', 'README', 'AUTHORS', 'COPYING')
|
||||
-DATA_FILES += find_data_files('wx/tools/Editra/plugins', '*.egg')
|
||||
-DATA_FILES += find_data_files('wx/tools/Editra/src', 'README')
|
||||
-DATA_FILES += find_data_files('wx/tools/Editra/styles', '*.ess')
|
||||
-DATA_FILES += find_data_files('wx/tools/Editra/tests/syntax', '*')
|
||||
-DATA_FILES += find_data_files('wx/tools/Editra', '[A-Z]*', recursive=False)
|
||||
|
||||
|
||||
## import pprint
|
||||
@@ -993,7 +976,6 @@ if EGGing:
|
||||
'pyshell = wx.py.PyShell:main',
|
||||
'pywrap = wx.py.PyWrap:main',
|
||||
'helpviewer = wx.tools.helpviewer:main',
|
||||
- 'editra = wx.tools.Editra.launcher:main',
|
||||
'xrced = wx.tools.XRCed.xrced:main',
|
||||
],
|
||||
},
|
@ -0,0 +1,34 @@
|
||||
From c4072ed7bc923039e544319f52d0761b7a4600a4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
|
||||
Date: Mon, 22 Apr 2013 18:02:37 +0200
|
||||
Subject: [PATCH] Trigger 'EGGing' mode only by 'bdist_egg' and not 'egg_info'.
|
||||
|
||||
We use the 'egg_info' command to explicitly enforce temporary EGG file
|
||||
location outside the source tree on Gentoo. As a result, our build
|
||||
command activates the 'EGGing' mode and wxPython is not installed
|
||||
properly.
|
||||
|
||||
I believe that the 'EGGing' mode should be activated only by an explicit
|
||||
call to 'bdist_egg' command where the expected files are actually
|
||||
created. The 'egg_info' command is a more broad one and is often used
|
||||
implicitly, e.g. by the 'install' command.
|
||||
---
|
||||
config.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/config.py b/config.py
|
||||
index 4fbd83f..b45707d 100644
|
||||
--- a/config.py
|
||||
+++ b/config.py
|
||||
@@ -23,7 +23,7 @@
|
||||
import sys, os, glob, fnmatch, tempfile
|
||||
import subprocess
|
||||
|
||||
-EGGing = 'bdist_egg' in sys.argv or 'egg_info' in sys.argv
|
||||
+EGGing = 'bdist_egg' in sys.argv
|
||||
if not EGGing:
|
||||
from distutils.core import setup, Extension
|
||||
else:
|
||||
--
|
||||
1.8.1.5
|
||||
|
@ -0,0 +1,10 @@
|
||||
--- demo/demo.org
|
||||
+++ demo/demo.py
|
||||
@@ -1,4 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
+
|
||||
import Main
|
||||
Main.main()
|
@ -0,0 +1,211 @@
|
||||
--- a/distrib/PyAlaMode.desktop
|
||||
+++ b/distrib/PyAlaMode.desktop
|
||||
@@ -1,8 +1,8 @@
|
||||
[Desktop Entry]
|
||||
-Name=PyAlaMode
|
||||
+Name=PyAlaMode (3.0)
|
||||
Comment=GUI Python Shell with Filling and editor windows
|
||||
-Exec=pyalamode
|
||||
-Icon=PyCrust
|
||||
+Exec=pyalamode-3.0
|
||||
+Icon=PyCrust-3.0
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Development;
|
||||
--- a/distrib/PyCrust.desktop
|
||||
+++ b/distrib/PyCrust.desktop
|
||||
@@ -1,8 +1,8 @@
|
||||
[Desktop Entry]
|
||||
-Name=PyCrust
|
||||
+Name=PyCrust (3.0)
|
||||
Comment=GUI Python Shell with Filling
|
||||
-Exec=pycrust
|
||||
-Icon=PyCrust
|
||||
+Exec=pycrust-3.0
|
||||
+Icon=PyCrust-3.0
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Development;
|
||||
--- a/distrib/PyShell.desktop
|
||||
+++ b/distrib/PyShell.desktop
|
||||
@@ -1,8 +1,8 @@
|
||||
[Desktop Entry]
|
||||
-Name=PyShell
|
||||
+Name=PyShell (3.0)
|
||||
Comment=GUI Python Shell
|
||||
-Exec=pyshell
|
||||
-Icon=PyCrust
|
||||
+Exec=pyshell-3.0
|
||||
+Icon=PyCrust-3.0
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Development;
|
||||
--- a/distrib/PySlices.desktop
|
||||
+++ b/distrib/PySlices.desktop
|
||||
@@ -1,8 +1,8 @@
|
||||
[Desktop Entry]
|
||||
-Name=PySlices
|
||||
+Name=PySlices (3.0)
|
||||
Comment=GUI Python Shell with Filling
|
||||
-Exec=pyslices
|
||||
-Icon=PySlices
|
||||
+Exec=pyslices-3.0
|
||||
+Icon=PySlices-3.0
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Development;
|
||||
--- a/distrib/PySlicesShell.desktop
|
||||
+++ b/distrib/PySlicesShell.desktop
|
||||
@@ -1,9 +1,8 @@
|
||||
-
|
||||
[Desktop Entry]
|
||||
-Name=PySlicesShell
|
||||
+Name=PySlicesShell (3.0)
|
||||
Comment=GUI Python Shell
|
||||
-Exec=pysliceshell
|
||||
-Icon=PySlices
|
||||
+Exec=pysliceshell-3.0
|
||||
+Icon=PySlices-3.0
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Development;
|
||||
--- a/distrib/XRCed.desktop
|
||||
+++ b/distrib/XRCed.desktop
|
||||
@@ -1,8 +1,8 @@
|
||||
[Desktop Entry]
|
||||
-Name=XRCed
|
||||
+Name=XRCed (3.0)
|
||||
Comment=wxPython XRC resource editor
|
||||
-Exec=xrced
|
||||
-Icon=XRCed
|
||||
+Exec=xrced-3.0
|
||||
+Icon=XRCed-3.0
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Development;
|
||||
--- a/scripts/genaxmodule
|
||||
+++ b/scripts/genaxmodule
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.tools.genaxmodule import main
|
||||
main()
|
||||
--- a/scripts/helpviewer
|
||||
+++ b/scripts/helpviewer
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.tools.helpviewer import main
|
||||
main()
|
||||
--- a/scripts/img2png
|
||||
+++ b/scripts/img2png
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.tools.img2png import main
|
||||
main()
|
||||
--- a/scripts/img2py
|
||||
+++ b/scripts/img2py
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.tools.img2py import main
|
||||
main()
|
||||
--- a/scripts/img2xpm
|
||||
+++ b/scripts/img2xpm
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.tools.img2xpm import main
|
||||
main()
|
||||
--- a/scripts/pyalacarte
|
||||
+++ b/scripts/pyalacarte
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.py.PyAlaCarte import main
|
||||
main()
|
||||
--- a/scripts/pyalamode
|
||||
+++ b/scripts/pyalamode
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.py.PyAlaMode import main
|
||||
main()
|
||||
--- a/scripts/pycrust
|
||||
+++ b/scripts/pycrust
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.py.PyCrust import main
|
||||
main()
|
||||
--- a/scripts/pyshell
|
||||
+++ b/scripts/pyshell
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.py.PyShell import main
|
||||
main()
|
||||
--- a/scripts/pyslices
|
||||
+++ b/scripts/pyslices
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.py.PySlices import main
|
||||
main()
|
||||
--- a/scripts/pysliceshell
|
||||
+++ b/scripts/pysliceshell
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.py.PySlicesShell import main
|
||||
main()
|
||||
--- a/scripts/pywrap
|
||||
+++ b/scripts/pywrap
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.py.PyWrap import main
|
||||
main()
|
||||
--- a/scripts/pywxrc
|
||||
+++ b/scripts/pywxrc
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.tools.pywxrc import main
|
||||
main()
|
||||
--- a/scripts/xrced
|
||||
+++ b/scripts/xrced
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
+import wxversion
|
||||
+wxversion.select("3.0")
|
||||
|
||||
from wx.tools.XRCed.xrced import main
|
||||
main()
|
@ -0,0 +1,27 @@
|
||||
diff -ru wxPython-4.0.5-orig/wscript wxPython-4.0.5/wscript
|
||||
--- wxPython-4.0.5-orig/wscript 2019-05-18 22:03:12.000000000 -0400
|
||||
+++ wxPython-4.0.5/wscript 2019-05-22 07:59:46.522966555 -0400
|
||||
@@ -230,15 +230,6 @@
|
||||
uselib_store='WXGL', mandatory=True,
|
||||
msg='Finding libs for WXGL')
|
||||
|
||||
- if cfg.checkSetup(wxConfigDir, 'wxUSE_WEBVIEW'):
|
||||
- wv_libs = '--libs webview,core,net'
|
||||
- else:
|
||||
- wv_libs = '--libs core,net'
|
||||
- conf.check_cfg(path=conf.options.wx_config, package='',
|
||||
- args='--cxxflags ' + wv_libs + rpath,
|
||||
- uselib_store='WXWEBVIEW', mandatory=True,
|
||||
- msg='Finding libs for WXWEBVIEW')
|
||||
-
|
||||
if isDarwin:
|
||||
conf.check_cfg(path=conf.options.wx_config, package='',
|
||||
args='--cxxflags --libs core,net' + rpath,
|
||||
@@ -591,7 +582,6 @@
|
||||
makeETGRule(bld, 'etg/_stc.py', '_stc', 'WXSTC')
|
||||
makeETGRule(bld, 'etg/_html.py', '_html', 'WXHTML')
|
||||
makeETGRule(bld, 'etg/_glcanvas.py', '_glcanvas', 'WXGL')
|
||||
- makeETGRule(bld, 'etg/_html2.py', '_html2', 'WXWEBVIEW')
|
||||
makeETGRule(bld, 'etg/_xml.py', '_xml', 'WXXML')
|
||||
makeETGRule(bld, 'etg/_xrc.py', '_xrc', 'WXXRC')
|
||||
makeETGRule(bld, 'etg/_richtext.py', '_richtext', 'WXHTML WXRICHTEXT')
|
@ -0,0 +1,91 @@
|
||||
diff -ru wxPython-4.0.6-orig/unittests/test_frame.py wxPython-4.0.6/unittests/test_frame.py
|
||||
--- wxPython-4.0.6-orig/unittests/test_frame.py 2019-05-21 19:12:12.000000000 -0400
|
||||
+++ wxPython-4.0.6/unittests/test_frame.py 2019-05-24 10:15:51.350004356 -0400
|
||||
@@ -50,7 +50,7 @@
|
||||
f.Close()
|
||||
|
||||
|
||||
- def test_frameRestore(self):
|
||||
+ def xtest_frameRestore(self):
|
||||
f = wx.Frame(self.frame, title="Title", pos=(50,50), size=(100,100))
|
||||
f.Show()
|
||||
f.Maximize()
|
||||
diff -ru wxPython-4.0.6-orig/unittests/test_graphics.py wxPython-4.0.6/unittests/test_graphics.py
|
||||
--- wxPython-4.0.6-orig/unittests/test_graphics.py 2019-05-21 19:12:12.000000000 -0400
|
||||
+++ wxPython-4.0.6/unittests/test_graphics.py 2019-05-24 10:16:06.520256643 -0400
|
||||
@@ -23,7 +23,7 @@
|
||||
gc = wx.GraphicsContext.Create(img)
|
||||
self.assertTrue(gc.IsOk())
|
||||
|
||||
- def test_gcCreate4(self):
|
||||
+ def xtest_gcCreate4(self):
|
||||
class MyPanel(wx.Panel):
|
||||
def __init__(self, parent):
|
||||
super(MyPanel, self).__init__(parent)
|
||||
diff -ru wxPython-4.0.6-orig/unittests/test_lib_pubsub_provider.py wxPython-4.0.6/unittests/test_lib_pubsub_provider.py
|
||||
--- wxPython-4.0.6-orig/unittests/test_lib_pubsub_provider.py 2019-05-21 19:12:12.000000000 -0400
|
||||
+++ wxPython-4.0.6/unittests/test_lib_pubsub_provider.py 2019-05-24 10:16:49.649969339 -0400
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
class lib_pubsub_Except(wtc.PubsubTestCase):
|
||||
|
||||
- def test1(self):
|
||||
+ def xtest1(self):
|
||||
|
||||
self.pub.addTopicDefnProvider(my_topics, self.pub.TOPIC_TREE_FROM_CLASS)
|
||||
|
||||
diff -ru wxPython-4.0.6-orig/unittests/test_lib_pubsub_topicmgr.py wxPython-4.0.6/unittests/test_lib_pubsub_topicmgr.py
|
||||
--- wxPython-4.0.6-orig/unittests/test_lib_pubsub_topicmgr.py 2019-05-21 19:12:12.000000000 -0400
|
||||
+++ wxPython-4.0.6/unittests/test_lib_pubsub_topicmgr.py 2019-05-24 10:17:18.276438743 -0400
|
||||
@@ -215,7 +215,7 @@
|
||||
assert 1 == topicMgr.getNumDefnProviders()
|
||||
topicMgr.clearDefnProviders()
|
||||
|
||||
- def test20_UseProvider(self):
|
||||
+ def xtest20_UseProvider(self):
|
||||
#
|
||||
# Test the use of definition providers for topics. We create
|
||||
# two so we can check that more than one can work together.
|
||||
diff -ru wxPython-4.0.6-orig/unittests/test_sizer.py wxPython-4.0.6/unittests/test_sizer.py
|
||||
--- wxPython-4.0.6-orig/unittests/test_sizer.py 2019-05-21 19:12:12.000000000 -0400
|
||||
+++ wxPython-4.0.6/unittests/test_sizer.py 2019-05-24 10:18:03.937181671 -0400
|
||||
@@ -71,7 +71,7 @@
|
||||
self.assertTrue(items[1].IsSpacer())
|
||||
self.assertTrue(items[2].Border == 5)
|
||||
|
||||
- def test_iter(self):
|
||||
+ def xtest_iter(self):
|
||||
bs = wx.BoxSizer()
|
||||
widgetlist = [wx.Panel(self.frame) for _ in range(5)]
|
||||
|
||||
diff -ru wxPython-4.0.6-orig/unittests/test_utils.py wxPython-4.0.6/unittests/test_utils.py
|
||||
--- wxPython-4.0.6-orig/unittests/test_utils.py 2019-05-21 19:12:12.000000000 -0400
|
||||
+++ wxPython-4.0.6/unittests/test_utils.py 2019-05-24 11:14:09.399035368 -0400
|
||||
@@ -34,7 +34,7 @@
|
||||
with wx.BusyCursor():
|
||||
self.myYield()
|
||||
|
||||
- def test_utilsSomeOtherStuff(self):
|
||||
+ def xtest_utilsSomeOtherStuff(self):
|
||||
wx.GetBatteryState()
|
||||
wx.GetPowerType()
|
||||
wx.GetKeyState(wx.WXK_F1)
|
||||
diff -ru wxPython-4.0.6-orig/unittests/test_windowid.py wxPython-4.0.6/unittests/test_windowid.py
|
||||
--- wxPython-4.0.6-orig/unittests/test_windowid.py 2019-05-21 19:12:12.000000000 -0400
|
||||
+++ wxPython-4.0.6/unittests/test_windowid.py 2019-05-24 10:18:24.158508491 -0400
|
||||
@@ -28,12 +28,12 @@
|
||||
assert isinstance(ref, wx.WindowIDRef)
|
||||
|
||||
|
||||
- def test_newIdRef03(self):
|
||||
+ def xtest_newIdRef03(self):
|
||||
"""Check that Auto ID Management is enabled (--enable-autoidman)"""
|
||||
# This test is expected to fail if autoID mangagement is turned on
|
||||
- # because a reference to the ID is not being saved, so it will be
|
||||
+ # because a reference to the ID is not being saved, so it will be
|
||||
# unreserved when the first widget is destroyed.
|
||||
-
|
||||
+
|
||||
id = wx.Window.NewControlId()
|
||||
b = wx.Button(self.frame, id, 'button')
|
||||
b.Destroy()
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<herd>maintainer-wanted</herd>
|
||||
</maintainer>
|
||||
<maintainer type="project">
|
||||
<email>python@gentoo.org</email>
|
||||
<name>Python</name>
|
||||
</maintainer>
|
||||
<use>
|
||||
<flag name="examples">Install interactive demo module browser and sample applets.</flag>
|
||||
</use>
|
||||
<upstream>
|
||||
<remote-id type="github">wxWidgets/Phoenix</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
@ -0,0 +1,141 @@
|
||||
# Copyright 1999-2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=5
|
||||
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
WX_GTK_VER="3.0"
|
||||
|
||||
inherit alternatives distutils-r1 eutils fdo-mime flag-o-matic wxwidgets
|
||||
|
||||
ORIG_PN="wxpython"
|
||||
MY_PN="wxPython-src"
|
||||
|
||||
DESCRIPTION="A blending of the wxWindows C++ class library with Python"
|
||||
HOMEPAGE="http://www.wxpython.org/"
|
||||
SRC_URI="
|
||||
mirror://sourceforge/wxpython/${MY_PN}-${PV}.tar.bz2"
|
||||
|
||||
LICENSE="wxWinLL-3"
|
||||
SLOT="3.0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 ppc ppc64 ~sparc x86"
|
||||
IUSE="cairo libnotify opengl"
|
||||
RESTRICT="test"
|
||||
|
||||
RDEPEND="
|
||||
!dev-python/${ORIG_PN}[python_targets_python2_7]
|
||||
dev-lang/python-exec:2[${PYTHON_USEDEP}]
|
||||
>=x11-libs/wxGTK-${PV}:${WX_GTK_VER}=[libnotify=,opengl?,tiff,X]
|
||||
dev-libs/glib:2
|
||||
dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
media-libs/libpng:0=
|
||||
media-libs/tiff:0
|
||||
virtual/jpeg
|
||||
x11-libs/gtk+:2
|
||||
x11-libs/pango[X]
|
||||
cairo? ( >=dev-python/pycairo-python2-1.8.4[${PYTHON_USEDEP}] )
|
||||
opengl? ( dev-python/pyopengl-python2[${PYTHON_USEDEP}] )"
|
||||
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/pkgconfig"
|
||||
|
||||
S="${WORKDIR}/${MY_PN}-${PV}/wxPython"
|
||||
DOC_S="${WORKDIR}/wxPython-${PV}"
|
||||
|
||||
# The hacky build system seems to be broken with out-of-source builds,
|
||||
# and installs 'wx' package globally.
|
||||
DISTUTILS_IN_SOURCE_BUILD=1
|
||||
|
||||
python_prepare_all() {
|
||||
sed -i "s:cflags.append('-O3'):pass:" config.py || die "sed failed"
|
||||
|
||||
cd "${S}"
|
||||
local PATCHES=(
|
||||
"${FILESDIR}"/${ORIG_PN}-3.0.0.0-wxversion-scripts.patch
|
||||
# drop editra - we have it as a separate package now
|
||||
"${FILESDIR}"/${ORIG_PN}-2.8.11-drop-editra.patch
|
||||
"${FILESDIR}"/${ORIG_PN}-2.8-no-preservatives-added.patch
|
||||
# fix handling egg_info command
|
||||
"${FILESDIR}"/${ORIG_PN}-2.8.12.1-disable-egging-mode.patch
|
||||
)
|
||||
|
||||
distutils-r1_python_prepare_all
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
need-wxwidgets unicode
|
||||
|
||||
mydistutilsargs=(
|
||||
WX_CONFIG="${WX_CONFIG}"
|
||||
WXPORT=gtk2
|
||||
UNICODE=1
|
||||
BUILD_GLCANVAS=$(usex opengl 1 0)
|
||||
)
|
||||
}
|
||||
|
||||
python_compile() {
|
||||
# We need to have separate libdirs due to hackery, bug #455332.
|
||||
distutils-r1_python_compile \
|
||||
build --build-purelib "${BUILD_DIR}"/lib.common
|
||||
}
|
||||
|
||||
python_install() {
|
||||
distutils-r1_python_install \
|
||||
build --build-purelib "${BUILD_DIR}"/lib.common
|
||||
|
||||
# adjust the filenames for wxPython slots.
|
||||
local file
|
||||
for file in "${D}$(python_get_sitedir)"/wx{version.*,.pth}; do
|
||||
mv "${file}" "${file}-${SLOT}" || die
|
||||
done
|
||||
cd "${ED}"usr/lib/python-exec/"${EPYTHON}" || die
|
||||
for file in *; do
|
||||
mv "${file}" "${file}-${SLOT}" || die
|
||||
|
||||
# wrappers are common to all impls, so a parallel run may
|
||||
# move it for us. ln+rm is more failure-proof.
|
||||
ln -fs ../lib/python-exec/python-exec2 "${ED}usr/bin/${file}-${SLOT}" || die
|
||||
rm -f "${ED}usr/bin/${file}"
|
||||
done
|
||||
}
|
||||
|
||||
python_install_all() {
|
||||
dodoc docs/{CHANGES,PyManual,README,wxPackage,wxPythonManual}.txt
|
||||
|
||||
for x in {Py{AlaMode,Crust,Shell},XRCed}; do
|
||||
newmenu distrib/${x}.desktop ${x}-${SLOT}.desktop
|
||||
done
|
||||
newicon wx/py/PyCrust_32.png PyCrust-${SLOT}.png
|
||||
newicon wx/py/PySlices_32.png PySlices-${SLOT}.png
|
||||
newicon wx/tools/XRCed/XRCed_32.png XRCed-${SLOT}.png
|
||||
|
||||
distutils-r1_python_install_all
|
||||
|
||||
rm -r ${D}/usr/share
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
fdo-mime_desktop_database_update
|
||||
|
||||
create_symlinks() {
|
||||
alternatives_auto_makesym "$(python_get_sitedir)/wx.pth" "$(python_get_sitedir)/wx.pth-[0-9].[0-9]"
|
||||
alternatives_auto_makesym "$(python_get_sitedir)/wxversion.py" "$(python_get_sitedir)/wxversion.py-[0-9].[0-9]"
|
||||
}
|
||||
python_foreach_impl create_symlinks
|
||||
|
||||
echo
|
||||
elog "Gentoo uses the Multi-version method for SLOT'ing."
|
||||
elog "Developers, see this site for instructions on using"
|
||||
elog "it with your apps:"
|
||||
elog "http://wiki.wxpython.org/MultiVersionInstalls"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
fdo-mime_desktop_database_update
|
||||
|
||||
update_symlinks() {
|
||||
alternatives_auto_makesym "$(python_get_sitedir)/wx.pth" "$(python_get_sitedir)/wx.pth-[0-9].[0-9]"
|
||||
alternatives_auto_makesym "$(python_get_sitedir)/wxversion.py" "$(python_get_sitedir)/wxversion.py-[0-9].[0-9]"
|
||||
}
|
||||
python_foreach_impl update_symlinks
|
||||
}
|
Loading…
Reference in new issue